From f0dfe8ab97e6919957e371dcb09989fcedaada77 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Mon, 15 Feb 2016 14:13:29 +0100 Subject: testing moving the 6 to the left, having one key more on the right used for hash now feels a bit more natural to me. Need to investigate further. --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 22 +- keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex | 3058 +++++++++++++------------ 2 files changed, 1561 insertions(+), 1519 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 0298cb702..e75187202 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -31,18 +31,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 |CMD-V | |CMD-C | 6 | 7 | 8 | 9 | 0 | ß | + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | |CMD-C | 7 | 8 | 9 | 0 | ß | # | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT| + * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT| * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | ! | ? | | | | | \ | [ | ] | | | # | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | | + * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | * | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | . | ! | | + * | | | | | | | + | - | . | ! | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -106,9 +106,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, - DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS, + DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), LSFT(DE_PLUS), KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, - KC_TRNS,KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, + DE_PLUS, DE_MINS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex index 2c83055b0..8d74fd599 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex +++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex @@ -1,1509 +1,1551 @@ -:100000000C94CA070C940E080C940E080C940E085D -:100010000C940E080C940E080C940E080C940E0808 -:100020000C940E080C940E080C9488130C945A141B -:100030000C940E080C940E080C940E080C940E08E8 -:100040000C940E080C94322D0C940E080C940E088F -:100050000C940E080C942A230C940E080C940E0891 -:100060000C940E080C940E080C940E080C940E08B8 -:100070000C940E080C940E080C940E080C940E08A8 -:100080000C940E080C940E080C940E080C940E0898 -:100090000C940E080C940E080C940E080C940E0888 -:1000A0000C940E080C940E080C940E08C714E91456 -:1000B000D715E914D7152E155115D715A615B9154D -:1000C000001900192F192F197319B119CB1BCB1B4C -:1000D000CA19CB1BCB1ACB1A9F1BCB1BCB1BB61B36 -:1000E00002E002E2012E022E02E10002E002E10241 -:1000F000E20001E001E101E20002E001E3010602A9 -:100100000602E30002E00001E00002E001E3011961 -:10011000021902E30002E00001E0000000F0A1F09B -:10012000A329002B00E200E100358100001E00142D -:100130000004001D7135004D001F001A0016001B41 -:1001400000E1044C00200008000700060050002ACF -:100150000021001500090019004F004A0022001775 -:10016000000A000500000003300130E3000000E257 -:1001700000000002540230E7000000E60000000426 -:100180005423001C000B00110000002E7F240018D7 -:10019000000D00100052004B0025000C000E003630 -:1001A0000051002C00260012000F003700E1082843 -:1001B00000270013003300387130004E002D002F4F -:1001C000003474E5003181000001000100010001EC -:1001D00000010000003A003500310001000100017B -:1001E000003B0035022102350001004C003C001E9E -:1001F0000224062202010001003D002D02240224F7 -:1002000004010001003E000100370011040000015C -:1002100000010001000000010000000100010001D8 -:100220000000000100000001003F0024062402231A -:1002300002000001004000220425023500010001F7 -:100240000041002304260235023700010042002449 -:100250000425041F021E0201004300310026043160 -:1002600002010001004400450001002D02010000D0 -:100270000001000100010001000100000001000177 -:100280000001000100010001000100F400F200FB88 -:1002900000010001000100F000F100FA000100017E -:1002A000000100F500F300FC00010001000100F96D -:1002B00000FA00F60000000100010001000000014A -:1002C0000000000100A80001000000010000000182 -:1002D0000001000100A900AA0000000100010001C6 -:1002E000000100010001000100010001000100AC5B -:1002F000000100B600010001000100AB0050000148 -:1003000000010001000100520051000100AE000197 -:1003100000010001004F0000000100010001000188 -:10032000000100000001000E000B001B7101000124 -:100330000001003700040014000100010001001258 -:10034000000800340001000100010036000C002FFD -:10035000000100010001001D001800330000000131 -:100360000001000100000001000000010001000187 -:100370000000000100000001000100190007000555 -:10038000000000010001000A001700130001000135 -:10039000000100060015001A000100010001000F15 -:1003A00000110010000100010001002D0016000DD9 -:1003B000710100010038001C0009820100010000E9 -:1003C0000001000100010001000100000001000126 -:1003D00000010001000100010001000100500001C6 -:1003E0000001000100010052005100010001000164 -:1003F00000010001004F00010001000100010001A7 -:1004000000010001000000010001000100000001E6 -:1004100000000001000100010000000100000001D7 -:10042000003F005200510023020000010040002460 -:100430000021001E00270001004100250022001FAE -:1004400000370001004200260023002000270001A1 -:100450000043003002300024022E00010044004519 -:100460000001000100010000000A00253031366261 -:10047000003A200025303258000A722F63203031B4 -:1004800032333435363738394142434445460A0021 -:100490000A002530325800626F756E6365213A207C -:1004A000006C6566742073696465206174746163AF -:1004B0006865640A006C6566742073696465206E03 -:1004C0006F7420726573706F6E64696E670A007472 -:1004D0007279696E6720746F207265736574206D20 -:1004E000637032333031380A000A44454255473A86 -:1004F00020656E61626C65642E0A005B735D004B63 -:100500006579626F6172642073746172742E0A007F -:100510005B575D005B535D005B525D005B445D00BB -:100520005B435D0016034500720067006F004400E6 -:100530006F007800200045005A00000016034500B7 -:10054000720067006F0044006F00780020004500D3 -:100550005A0000000403090409028D00050100A0EF -:10056000FA09040000010301010009211101000141 -:10057000223F000705810308000A09040100010366 -:10058000010200092111010001224D00070582032B -:1005900008000A09040200010300000009211101FA -:1005A00000012236000705830308000A090403003E -:1005B00002030000000921110100012220000705AB -:1005C000840320000107050403200001090404003E -:1005D0000103000000092111010001223900070573 -:1005E00085031000011201100100000008EDFE0754 -:1005F0001301000102000105010906A10105071907 -:10060000E029E71500250195087501810205081903 -:100610000129059505750191029501750391010563 -:10062000071900297715002501957875018102C009 -:100630000631FF0974A1010975150025FF95207584 -:100640000881020976150025FF952075089102C0E2 -:1006500005010980A101850216010026B7001A01D3 -:10066000002AB700751095018100C0050C0901A191 -:10067000018503160100269C021A01002A9C0275BE -:100680001095018100C005010902A1010901A10025 -:100690000509190129051500250195057501810236 -:1006A0009501750381010501093009311581257F07 -:1006B00095027508810609381581257F9501750811 -:1006C0008106050C0A38021581257F950175088180 -:1006D00006C0C005010906A101050719E029E715B3 -:1006E00000250195087501810295017508810105B4 -:1006F0000819012905950575019102950175039168 -:10070000010507190029FF150025FF9506750881C9 -:1007100000C00A002530325820006B6579626F6195 -:1007200072645F7265706F72743A20000A0025303F -:100730003258006B6579626F6172645F7365745FD4 -:100740006C65643A200064656C5F6B65795F626913 -:10075000743A2063616E27742064656C3A202530FA -:1007600032580A006164645F6B65795F6269743A4C -:100770002063616E2774206164643A20253032580A -:100780000A00646F6E652E0A00626F6F676D6167A5 -:100790006963207363616E3A202E2E2E2000290A91 -:1007A000002575002F002575005D280025640020B8 -:1007B00000256400200025640020002564007C00E2 -:1007C00025303258006D6F7573656B6579205B62FB -:1007D000746E7C782079207620685D287265702F91 -:1007E00061636C293A205B006D6B5F776865656CAF -:1007F0005F74696D655F746F5F6D6178203D202562 -:10080000640A006D6B5F776865656C5F6D61785F2A -:100810007370656564203D2025640A006D6B5F740C -:10082000696D655F746F5F6D6178203D2025640A96 -:10083000006D6B5F6D61785F7370656564203D204E -:1008400025640A006D6B5F696E74657276616C2059 -:100850003D2025640A006D6B5F64656C6179203D05 -:100860002025640A006D6B5F776865656C5F74694D -:100870006D655F746F5F6D6178203D2025640A00AF -:100880006D6B5F776865656C5F6D61785F737065D0 -:100890006564203D2025640A006D6B5F74696D6599 -:1008A0005F746F5F6D6178203D2025640A006D6B79 -:1008B0005F6D61785F7370656564203D2025640A13 -:1008C000006D6B5F696E74657276616C203D2025EA -:1008D000640A006D6B5F64656C6179203D2025645E -:1008E0000A000A00257500363A20776865656C5F56 -:1008F00074696D655F746F5F6D61783A20000A00FE -:10090000257500353A20776865656C5F6D61785FA5 -:1009100073706565643A20000A00257500343A203A -:1009200074696D655F746F5F6D61783A20000A00CD -:10093000257500333A206D61785F73706565643AA0 -:1009400020000A00257500323A20696E74657276BF -:10095000616C286D73293A20000A00257500313A30 -:100960002064656C6179282A31306D73293A200042 -:100970000A092D2056616C756573202D0A004D3EC5 -:10098000004D25643E20003F007365742064656659 -:1009900061756C740A00433E2000776865726520BB -:1009A00064656C74613A20637572736F723D25647F -:1009B0002C20776865656C3D25640A536565206861 -:1009C0007474703A2F2F656E2E77696B6970656449 -:1009D00069612E6F72672F77696B692F4D6F757321 -:1009E000655F6B6579730A000A092D204D6F757379 -:1009F000656B6579202D0A4553432F713A0971754E -:100A000069740A313A0964656C6179282A31306D5C -:100A100073290A323A09696E74657276616C286DC1 -:100A200073290A333A096D61785F73706565640AEA -:100A3000343A0974696D655F746F5F6D61780A356A -:100A40003A09776865656C5F6D61785F737065659D -:100A5000640A363A09776865656C5F74696D655F2D -:100A6000746F5F6D61780A0A703A097072696E740A -:100A70002076616C7565730A643A09736574206445 -:100A8000656661756C74730A75703A092B310A6476 -:100A90006F776E3A092D310A706775703A092B31FC -:100AA000300A7067646F776E3A092D31300A0A7325 -:100AB00070656564203D2064656C7461202A206D3A -:100AC00061785F7370656564202A2028726570659F -:100AD0006174202F2074696D655F746F5F6D61783C -:100AE000290A003F004D3E2000433E20004C256473 -:100AF0000A000A092D20436F6E736F6C65202D0A62 -:100B00004553432F713A09717569740A6D3A096D3D -:100B10006F7573656B65790A000A092D204D616751 -:100B20006963202D0A643A0964656275670A783A38 -:100B3000096465627567206D61747269780A6B3A41 -:100B4000096465627567206B6579626F6172640A1A -:100B50006D3A096465627567206D6F7573650A7615 -:100B60003A0976657273696F6E0A733A0973746134 -:100B70007475730A633A09636F6E736F6C65206DE9 -:100B80006F64650A302D343A096C61796572302DD5 -:100B900034284631302D4634290A506175733A099C -:100BA000626F6F746C6F616465720A653A0965659E -:100BB00070726F6D0A6E3A094E4B524F0A7A3A09BB -:100BC000736C656570204C454420746573740A002D -:100BD0000A002575002E6E6B726F3A20000A002500 -:100BE00075002E737761705F6261636B736C617304 -:100BF000685F6261636B73706163653A20000A002D -:100C00002575002E737761705F67726176655F6529 -:100C100073633A20000A002575002E6E6F5F6775BA -:100C2000693A20000A002575002E737761705F72A3 -:100C3000616C745F726775693A20000A002575005F -:100C40002E737761705F6C616C745F6C6775693A65 -:100C500020000A002575002E636170736C6F636B52 -:100C60005F746F5F636F6E74726F6C3A20000A007E -:100C70002575002E737761705F636F6E74726F6C91 -:100C80005F636170736C6F636B3A20000A002530FC -:100C90003258006B65796D61705F636F6E6669676E -:100CA0002E7261773A20000A002575002E6D6F754F -:100CB00073653A20000A002575002E6B6579626F16 -:100CC0006172643A20000A002575002E6D6174720D -:100CD00069783A20000A002575002E656E61626C05 -:100CE000653A20000A002530325800646562756755 -:100CF0005F636F6E6669672E7261773A20000A0043 -:100D000025750064656661756C745F6C61796572E8 -:100D10003A20003F004E4B524F3A206F66660A0061 -:100D20004E4B524F3A206F6E0A0074696D65725FC8 -:100D3000636F756E743A202530346C580A006B6509 -:100D400079626F6172645F6E6B726F3A2025580A28 -:100D5000006B6579626F6172645F69646C653A20EB -:100D600025580A006B6579626F6172645F70726FFB -:100D7000746F636F6C3A2025580A00686F73745F54 -:100D80006B6579626F6172645F6C65647328293A80 -:100D90002025580A000A092D2053746174757320A8 -:100DA0002D0A004743433A20342E392E3320415632 -:100DB000522D4C4942433A20312E382E3120415693 -:100DC000525F415243483A20617672350A004F50D3 -:100DD00054494F4E533A204C55464120424F4F54B0 -:100DE0004D41474943204D4F5553454B45592045AB -:100DF000585452414B455920434F4E534F4C452078 -:100E0000434F4D4D414E44204E4B524F20353132D1 -:100E10000A004255494C443A206130383532363563 -:100E20002D6469727479202830393A34343A313774 -:100E3000204A616E2031332032303136290A005683 -:100E400049443A20307846454544284572676F4406 -:100E50006F7820455A29205049443A203078313360 -:100E60003037284572676F446F7820455A292056DD -:100E700045523A203078303030310A0044455343EF -:100E80003A20742E6D2E6B2E206B6579626F617225 -:100E900064206669726D7761726520666F722045A5 -:100EA00072676F646F780A000A092D2056657273A5 -:100EB000696F6E202D0A000A6D6F7573653A206F99 -:100EC00066660A000A6D6F7573653A206F6E0A00D8 -:100ED0000A6B6579626F6172643A206F66660A0018 -:100EE0000A6B6579626F6172643A206F6E0A000A5C -:100EF0006D61747269783A206F66660A000A6D61E6 -:100F0000747269783A206F6E0A000A6465627567C8 -:100F10003A206F6E0A000A64656275673A206F6650 -:100F2000660A000A0A626F6F746C6F616465722EE4 -:100F30002E2E2000433E20006565636F6E66696754 -:100F40003A0A00536C656570204C45442074657303 -:100F5000740A000000000000000000000000010210 -:100F600004060A0F17202C3A4A5D71879DB3C7DA31 -:100F7000E9F5FCFFFCF5E9DAC7B39D87715D4A3AF4 -:100F80002C20170F0A0604020100000000000000D8 -:100F90000000000011241FBECFEFDAE0DEBFCDBF9E -:100FA00004B603FE24C08091FB019091FC01A09146 -:100FB000FD01B091FE018730904BA740B04BB9F4D2 -:100FC0001092FB011092FC011092FD011092FE01A3 -:100FD00014BE84B7877F84BF88E10FB6F8948093EE -:100FE0006000109260000FBEE0E0FFE3099511E0A1 -:100FF000A0E0B1E0E0E0FEE502C005900D92AA336A -:10100000B107D9F711E0AAE3B1E001C01D92AB3FEF -:10101000B107E1F70E94C0100C94FE2E0C94000062 -:10102000FF93EF93E0913A01F0913B01309709F083 -:101030000995EF91FF910895FC018591803011F0A1 -:10104000EFDFFBCF0895FF27E0E230E247FF0CC05F -:10105000419597FF09C0EDE2609570958095909558 -:10106000611D711D811D911D27FF02C0219530E377 -:1010700050E2AA27660F771F881F991FAA1FA4177F -:1010800010F0A41B63955A95A9F7AA3008F0A95F40 -:10109000A05DAF93F395611571058105910541F749 -:1010A000ED3211F4EF93F395F21718F43F93F395A3 -:1010B000FBCF8F91B5DFFA95E1F70895E991F991AA -:1010C0008591803021F0853219F0AADFF9CF08959B -:1010D00020E0E89455915532C1F3503311F46894EF -:1010E00055915A3348F4505390F3220F022E220F99 -:1010F000220F200D250FF4CF0EF42195899199919F -:10110000533619F3533729F1533559F1BC01882768 -:101110009927E8945C3621F48991999168945591C6 -:10112000543639F446EF7EF077FF0DC08FEF9FEF16 -:101130000AC055374AE039F0583540E121F05236BF -:1011400042E009F00895FF93EF937DDFEF91FF9167 -:10115000B7CFFF93EF93FC0181918030B9F360DF4B -:10116000FBCFFF93EF9368DFF1CFDF93CF93CDB742 -:10117000DEB72596A3DFCF91DF910895FC016130A2 -:1011800089F028F0623031F16330E1F153C082819F -:10119000882321F085EE0E949D174CC085EE0E94A9 -:1011A000651848C08281882349F00E94F4229093F8 -:1011B0003D0180933C0188E191E0089580913C01DC -:1011C00090913D010E94002387399105B4F58AE092 -:1011D00091E008958281882349F00E94F42290933F -:1011E0003D0180933C0187E091E0089580913C01AE -:1011F00090913D010E940023873991050CF589EFFC -:1012000090E008958281882349F00E94F42290930F -:101210003D0180933C0182EF90E0089580913C0174 -:1012200090913D010E9400238739910564F480EE7E -:1012300090E0089580E090E0089585E191E00895C0 -:1012400084E091E008958BEE90E008950895609118 -:10125000BE017091BF018091C0019091C1010E94B7 -:101260002D2256985E9825982D9826982E98279886 -:101270002F98823061F018F4813031F00895833076 -:1012800049F0843051F00895259A2D9A0895269AB0 -:101290002E9A0895279A2F9A0895259A2D9A279A7B -:1012A0002F9A089587E299E0892B11F00E9427096F -:1012B00080E090E0089556985E9825982D9826989D -:1012C0002E9827982F988FEF90E090938900809325 -:1012D000880090938B0080938A0090938D00809378 -:1012E0008C00259A2D9A2FEF80E792E021508040C4 -:1012F0009040E1F700C00000269A2E9A2FEF80E779 -:1013000092E0215080409040E1F700C00000279A11 -:101310002F9A2FEF80E792E0215080409040E1F734 -:1013200000C0000025982D982FEF80E792E0215013 -:1013300080409040E1F700C0000026982E982FEFE3 -:1013400080E792E0215080409040E1F700C000002B -:1013500027982F9856985E9825982D9826982E981D -:1013600027982F98089589EA8093800089E08093D8 -:10137000810024982C983F988AB18F748AB96E980E -:10138000479A8BB1806B8BB9769A0E945B0986E293 -:1013900099E0892B11F00E94260980E090E00895E1 -:1013A00080E28093000180913E0181110EC00E9475 -:1013B0001F0A81E080933E012FEF83ED90E32150DF -:1013C00080409040E1F700C0000080E40E94250AC0 -:1013D0008093000181112EC00E944F0A809300016A -:1013E000811128C00E944F0A80930001811122C000 -:1013F0008FE30E944F0A8093000181111BC00E945D -:10140000470A80E40E94250A80930001811112C0DE -:101410008CE00E944F0A8093000181110BC00E9452 -:101420004F0A80930001811105C08FE30E944F0A8B -:10143000809300010E94470A809100010895109254 -:10144000B9008AE08093B800089594EA9093BC00B4 -:101450009091BC0097FFFCCF9091B900987F983095 -:1014600021F0903111F081E008958093BB0084E871 -:101470008093BC008091BC0087FFFCCF8091B900B5 -:10148000887F883111F0803471F780E0089584E915 -:101490008093BC008091BC0084FDFCCF08958093B4 -:1014A000BB0084E88093BC008091BC0087FFFCCF28 -:1014B0009091B900987F81E0983209F480E0089516 -:1014C00084E88093BC008091BC0087FFFCCF8091B2 -:1014D000BB00089580910001811115C080E40E9435 -:1014E000250A8093000181110CC082E10E944F0AFD -:1014F00080930001811105C08FEF0E944F0A8093F5 -:1015000000010E94470A84B1807F84B985B1807F41 -:1015100085B98AB1837F8AB98BB1837F8BB93E98B5 -:10152000469808950E94D009809300010E946A0A9B -:1015300080B38C7080BB81B3836F81BBA0E4B1E0CA -:10154000EEE4F1E08EE08E0F11921D928E13FCCF2F -:1015500083EB99E0892B11F00C94B30908959F92C5 -:10156000AF92BF92CF92DF92EF92FF920F931F93B1 -:10157000CF93DF93809100018823E1F080913F01B8 -:101580008F5F80933F01811115C08FEC94E00E9422 -:101590001C080E94D00980930001882329F085EB64 -:1015A00094E00E941C0806C081EA94E00E941C0896 -:1015B0000E945B0900E411E0C0E0D0E0BB24B394DA -:1015C00082E0A82ECC24C394D12C22E9E22E24E080 -:1015D000F22EC730D10500F580910001811164C061 -:1015E00080E40E94250A80930001811112C082E1EB -:1015F0000E944F0A8093000181110BC0C6010C2E7E -:1016000001C0880F0A94EAF780950E944F0A8093E0 -:1016100000010E94470A48C0CA30A1F028F4C8302F -:1016200059F0C93061F005C0CC3089F070F0CD3090 -:1016300089F0209A289810C0219A29980DC0229AE2 -:101640002A980AC0239A2B9807C0529A01C0539A2D -:101650005B9802C03E9A469890EA9A95F1F79FB13E -:10166000799902C082E001C080E091709B25982B9F -:101670007C9902C084E001C080E0892B7D9902C082 -:1016800038E001C030E0832B7E9902C020E101C028 -:1016900020E0822B9FB19095991F9927991F9295D1 -:1016A000990F907E892B10C080910001811174C028 -:1016B00080E40E94250A80930001882309F459C020 -:1016C000912C0E94470A892DF8019081981739F1D1 -:1016D000808380910101882301F18091D90180FFED -:1016E00004C087E994E00E941C088091D90180FF22 -:1016F0000CC0809101011F928F93FF92EF920E9484 -:10170000B5080F900F900F900F908091D90180FF36 -:1017100004C080E994E00E941C08A09201010E948C -:101720006A0A21960F5F1F4FCE30D10509F051CFC5 -:10173000809101018823B1F08150809301018823B9 -:1017400039F08FE99FE00197F1F700C000000AC06F -:10175000AEE4B1E0E0E4F1E0CF01825F91919D93CE -:101760008E13FCCF82E599E0892BC1F00E945209CB -:1017700015C083E10E944F0A809300018111A0CF20 -:1017800081E40E94250A80930001811199CF0E9473 -:10179000600A982E909495CF80E096CF81E0DF91FB -:1017A000CF911F910F91FF90EF90DF90CF90BF905E -:1017B000AF909F900895E82FF0E0E25BFE4F8081AC -:1017C0000895CF92DF92EF92FF920F931F93CF93E2 -:1017D000DF9389E794E00E941C088EE4E82E81E004 -:1017E000F82EC0E0D0E094E7C92E94E0D92E0BE6A5 -:1017F00014E0DF93CF93DF92CF920E94B50881E788 -:1018000094E00E941C08F70181917F0190E00E9402 -:1018100093229F938F931F930F930E94B50889E69D -:1018200094E00E941C0821968DB79EB708960FB6CB -:10183000F8949EBF0FBE8DBFCE30D105D1F6DF919B -:10184000CF911F910F91FF90EF90DF90CF9008956F -:101850008B3B910578F4883A910540F5853A9105DE -:10186000D0F48430910508F0B1C08130910509F4BD -:10187000ADC06BC0803E910508F467C0883E9105FD -:1018800008F4A4C09C01205F31092031310508F023 -:101890005CC090650895853A910509F459C0863A6F -:1018A000910509F058C082E890E40895883A9105BE -:1018B00009F454C0893A910509F453C08A3A910554 -:1018C00009F452C08B3A910509F451C08C3A910544 -:1018D00009F450C08D3A910509F44FC0803B910541 -:1018E00009F44EC08E3A910509F44DC08F3A910526 -:1018F00009F44CC0813B910509F44BC0823B910532 -:1019000009F44AC0833B910509F449C0843B910521 -:1019100009F448C0853B910509F447C0863B910511 -:1019200009F446C0873B910509F445C0883B910501 -:1019300009F444C0893B910509F443C08A3B9105F1 -:1019400009F442C080E094E4089580E090E00895B6 -:1019500081E890E4089583E890E4089582EE94E4A9 -:10196000089589EE94E408958AEE94E4089585EB51 -:1019700094E4089586EB94E4089587EB94E4089545 -:101980008CEC94E408958DEC94E4089583E895E458 -:1019900008958AE895E4089582E995E4089584E934 -:1019A00095E4089581E296E4089583E296E408952B -:1019B00084E296E4089585E296E4089586E296E44A -:1019C000089587E296E408958AE296E408950895DA -:1019D00096E0799FF001112494E5899FE00DF11DB7 -:1019E0001124E60FF11DEE0FFF1FEF5DFE4F8591F5 -:1019F00094910895880F991FFC01E556F040859158 -:101A000094910895880F991FFC01E55EFE4F859122 -:101A10009491089526E0729FF001112444E5849F7B -:101A2000E00DF11D1124E60FF11DEE0FFF1FEF5D1C -:101A3000FE4F859194919C013A9521154FE1340711 -:101A400008F41EC13F512115304120F49F700E94BF -:101A5000020D08959C0130532115304118F4992747 -:101A6000906C0895811520E5920769F40E94ED1BA2 -:101A70004FEF84E39CE0415080409040E1F700C08C -:101A800000000C944F23813020E5920751F489EE39 -:101A900094E00E941C088091D90181608093D90153 -:101AA00008959C0130552115304108F051C0292F6F -:101AB00033272F70332721303105D9F4AC0143701F -:101AC000552702C0220F331F4A95E2F73C68AC014C -:101AD00064E0440F551F6A95E1F744275370242BA7 -:101AE000352B73E0880F991F7A95E1F78076992757 -:101AF0001DC02230310529F4982F8827816F906A04 -:101B0000089523303105A9F4AC014370552721E035 -:101B100030E002C0220F331F4A95E2F73C6843E0F1 -:101B2000880F991F4A95E1F7807E9770822B932B3F -:101B3000089524303105E1F4AC014370552721E0CC -:101B400030E002C0220F331F4A95E2F73A68E7CF30 -:101B50009C0130572115304118F49F709062089510 -:101B60009C0130582115304118F49F70906A0895F7 -:101B7000803E9105E0F4803C910558F58133910554 -:101B800009F46FC048F48932910509F463C08A32C0 -:101B9000910509F46DC072C089339105E9F082386E -:101BA0009105D1F08533910509F44DC067C0833E9E -:101BB000910581F138F4803E9105B9F0823E91059E -:101BC000D9F05CC0863E910561F1873E9105A1F197 -:101BD00055C00E94FA0C08952091EC0120FD02C02E -:101BE00021FF4CC080EE90E049C08091EC0180FF65 -:101BF000F9CF89E390E042C08091EC0182FF0EC0F2 -:101C00008091EC0184FF03C080E090E037C083EE58 -:101C100090E034C08091EC0182FFF2CF82EE90E040 -:101C20002DC08091EC0183FF0BC08091EC0184FDFD -:101C3000EBCF87EE90E022C08091EC0183FFF5CFDF -:101C400086EE90E01BC08091EC0185FF07C089E221 -:101C500090E014C08091EC0185FFF9CF85E390E01E -:101C60000DC08091EC0186FF07C08AE290E006C0BB -:101C70008091EC0186FFF9CF81E390E00E94280C6F -:101C80000895089580916F0108959FB7F894109278 -:101C90005E019FBF9091F201943009F057C090917E -:101CA000E9009F703091EC00232F217030FD20E877 -:101CB000922B24E02093E9002091EB0020FF43C009 -:101CC0002091EE0027FF3FC020915C01222321F0EC -:101CD0002091E80025FF37C010925C0126E030918A -:101CE000E80035FD15C03091F201343061F53091D6 -:101CF000EB0035FD28C0215021F481E080935C0188 -:101D000022C0EFE9FFE03197F1F700C00000E7CF14 -:101D10008093F1008091E80085FD0AC08091E80081 -:101D200080FFFCCF8091E8008E778093E80006C0AA -:101D30008FB7F89421E020935E018FBF9F7090933E -:101D4000E90080E008959F709093E9008FEF089577 -:101D5000CF93DF9300D01F92CDB7DEB79C01809167 -:101D6000F201843019F593E099833B832A839093A1 -:101D7000E9008FEF9091E800815095FD06C095ED48 -:101D80009A95F1F700008111F5CF8091E80085FF69 -:101D90000DC040E050E063E070E0CE0101960E948B -:101DA00078118091E8008E778093E8000F900F9073 -:101DB0000F90DF91CF910895CF93DF9300D01F92C2 -:101DC000CDB7DEB72091F201243021F522E029833E -:101DD0009B838A8383E08093E9008FEF9091E800F2 -:101DE000815095FD06C095ED9A95F1F7000081119F -:101DF000F5CF8091E80085FF0DC040E050E063E042 -:101E000070E0CE0101960E9478118091E8008E77F3 -:101E10008093E8000F900F900F90DF91CF9108957D -:101E20002091F2012430F1F422E02093E9002FEF19 -:101E30003091E800215035FD06C035ED3A95F1F7B7 -:101E400000002111F5CF2091E80025FF0BC040E0F4 -:101E500050E065E070E00E9478118091E8008E7794 -:101E60008093E8000895CF93DF932091F20124300E -:101E700009F048C0EC0180910C018823E1F08091C9 -:101E80000D018823C1F085E08093E9008FEF9091E8 -:101E9000E800815095FD06C095E19A95F1F70000A4 -:101EA0008111F5CF8091E80085FF2CC040E050E023 -:101EB00060E170E017C081E08093E9008FEF9091BE -:101EC000E800815095FD06C095ED9A95F1F7000068 -:101ED0008111F5CF8091E80085FF14C040E050E00B -:101EE00068E070E0CE010E9478118091E8008E7762 -:101EF0008093E80080E1FE01AFE5B1E001900D9232 -:101F00008A95E1F7DF91CF91089580E295E00E94F4 -:101F10001C088091F101811109C00E940D130E94DB -:101F20006A138091E20084608093E20008958CE15E -:101F300095E00E941C081092F101089588E195E057 -:101F40000C941C0884E195E00E941C080C941F2D41 -:101F500080E195E00E941C080E94E9220E94252D44 -:101F60000E940F160C94410E20915D012F5F822F6D -:101F700062E30E94932E992319F020935D01089546 -:101F800010925D0180915E01882371F18091F201D0 -:101F9000843041F58091E9008F702091EC00922F00 -:101FA000917020FD90E8892B94E09093E900909146 -:101FB000EB0090FF14C09091EE0097FF10C090913D -:101FC000E80095FF03C01092F100F9CF9091E8006E -:101FD00090FF05C09091E8009E779093E8008F7085 -:101FE0008093E90010925E01089542E061EC81E087 -:101FF0000E94871242E061EC82E00E94871242E078 -:1020000061EC83E00E94871242E261EC84E00E946E -:10201000871242E161EC85E00C9487128091F40113 -:10202000833009F455C030F4813071F0823009F406 -:102030008EC008958A3009F47AC08B3009F460C0EC -:10204000893009F09CC020C08091F301813A09F0E9 -:1020500096C08091E800877F8093E8008091F70127 -:102060009091F801892B21F460E18FE591E003C0A4 -:1020700060E080E090E070E00E94C3118091E80091 -:102080008B778093E80008958091F301813209F005 -:1020900076C08091F7019091F801009719F00497AC -:1020A00009F06DC08091E800877F8093E8008091FF -:1020B000E80082FD05C08091F2018111F8CF5FC078 -:1020C0008091F10080936F018091E8008B7753C07D -:1020D0008091F301813A09F052C08091F70190910B -:1020E000F801892B09F04BC08091E800877F80932D -:1020F000E8008091E80080FFFCCF80910C0136C0A1 -:102100008091F3018132D9F58091F7019091F80126 -:10211000892BA9F58091E800877F8093E8000E94D1 -:10212000BC128091F50180930C010C94ED1B809101 -:10213000F301813221F58091E800877F8093E800E8 -:102140000E94BC128091F6018093700108958091E5 -:10215000F301813AA1F48091E800877F8093E80041 -:102160008091E80080FFFCCF809170018093F100A6 -:102170008091E8008E778093E8000C94BC1208955B -:1021800084B7877F84BF88E10FB6F894809360009E -:10219000109260000FBE90E080E80FB6F894809334 -:1021A0006100909361000FBE0E949C160E940D1367 -:1021B0000E946A138091E20084608093E20085E4CB -:1021C0009EE00E94282278940E94EF150E949E169D -:1021D00082E091E00E940A160E940D2D8FEF94E09C -:1021E0000E941C088091F201853089F48BEF94E005 -:1021F0000E941C080E94AD228091F001882391F377 -:102200000E94D522882371F30E946211EBCF0E94B5 -:10221000CC16E8CF292F332723303105C9F064F4D9 -:102220002130310581F02230310509F043C08DE8BD -:1022300090E028E535E042C021323105F1F022324C -:10224000310541F137C082E190E025EE35E036C03E -:1022500099278130910541F08230910541F0892B19 -:1022600049F5E4E5F5E005C0ECE3F5E002C0E4E2A1 -:10227000F5E0849190E09F0121C06530D8F4E62F0D -:10228000F0E0EE0FFF1FEB5DFE4F2081318189E012 -:1022900090E014C0653070F470E0FB01EE0FFF1F9A -:1022A000E55EFE4F20813181FB01EA5EFE4F8081B9 -:1022B00090E004C080E090E020E030E0FA0131835B -:1022C0002083089580E189BD82E189BD09B400FEC3 -:1022D000FDCF8091D8008F7D8093D8008091E00061 -:1022E00082608093E0008091E00081FDFCCF089542 -:1022F000CF92DF92EF92FF920F931F93CF93DF93D2 -:10230000EC018B016A010E94DB12811133C0C11400 -:10231000D10439F0F60180819181081B190BC80F97 -:10232000D91FE12CF12C0115110519F18091E8005C -:1023300085FD16C08091E8008E778093E800C11477 -:10234000D10449F0F60180819181E80EF91EF182F5 -:10235000E08285E00FC00E94DB12882321F30AC0CF -:1023600089918093F10001501109FFEFEF1AFF0AE4 -:10237000DACF80E0DF91CF911F910F91FF90EF9026 -:10238000DF90CF9008952091F9013091FA0126173E -:10239000370748F06115710539F42091E8002E7770 -:1023A0002093E80001C0B90140E061157105A9F171 -:1023B0002091F201222309F443C0253009F442C0E0 -:1023C0002091E80023FD40C02091E80022FD32C0AA -:1023D0002091E80020FFE9CF4091F3002091F20026 -:1023E00030E0342BFC01CF016115710559F0283024 -:1023F000310540F481918093F100615071092F5FA4 -:102400003F4FF1CF41E02830310509F040E0209105 -:10241000E8002E772093E800C8CF4111C9CF0AC049 -:102420008091F201882361F0853061F08091E800AD -:1024300083FD0AC08091E80082FFF2CF80E008951A -:1024400082E0089583E0089581E008952091F901E4 -:102450003091FA012617370748F06115710539F4F4 -:102460002091E8002E772093E80001C0B901FC011B -:1024700020E06115710591F18091F201882309F442 -:1024800040C0853009F43FC08091E80083FD3DC025 -:102490008091E80082FD2FC08091E80080FFE9CFA5 -:1024A0002091F3008091F20090E0922B611571056C -:1024B00059F08830910540F424912093F100319631 -:1024C000615071090196F2CF21E0089709F020E0F0 -:1024D0008091E8008E778093E800CBCF2111CCCF9C -:1024E0000AC08091F201882361F0853061F080910B -:1024F000E80083FD0AC08091E80082FFF2CF80E00F -:10250000089582E0089583E0089581E00895982F6A -:10251000973058F59093E900981739F07091EC00D6 -:102520002091ED005091F00003C0242F762F50E051 -:1025300021FF19C03091EB003E7F3093EB003091CA -:10254000ED003D7F3093ED003091EB003160309332 -:10255000EB007093EC002093ED005093F00020917D -:10256000EE0027FF07C09F5FD3CF8F708093E900F5 -:1025700081E0089580E008958091F30187FF11C004 -:102580008091E80082FD05C08091F2018111F8CFB1 -:1025900011C08091E8008B770BC08091F2018823F5 -:1025A00049F08091E80080FFF8CF8091E8008E77B5 -:1025B0008093E80008952091E4003091E50095E6CD -:1025C0004091EC00842F817040FF22C08091E80090 -:1025D00080FD1CC08091F201882391F0853091F03C -:1025E0008091EB0085FD10C04091E4005091E50022 -:1025F0004217530729F39A01915011F784E0089587 -:1026000082E0089583E0089581E0089580E00895D0 -:102610004091E80042FFDECF08950E947B130E94A4 -:102620008313E0EEF0E0808181608083E8EDF0E0EC -:1026300080818F77808319BCA7EDB0E08C918E7F6D -:102640008C9380818F7E80831092F10108950F9387 -:102650001F93CF93DF930E947B130E948313C8EDD7 -:10266000D0E088818F77888388818068888388819B -:102670008F7D888319BC1092F2011092EE011092A6 -:10268000F0011092EF0100EE10E0F80180818B7FE5 -:10269000808388818160888342E060E080E00E94DE -:1026A0008712E1EEF0E080818E7F8083E2EEF0E041 -:1026B000808181608083808188608083F80180814F -:1026C0008E7F8083888180618883DF91CF911F9185 -:1026D0000F910895E8EDF0E080818F7E8083E7ED33 -:1026E000F0E080818160808384E082BF81E080931C -:1026F000F1010C942713E8EDF0E080818E7F808358 -:102700001092E20008951092DA001092E10008950C -:102710001F920F920FB60F9211242F933F934F9356 -:102720005F936F937F938F939F93AF93BF93EF9339 -:10273000FF938091E10082FF0BC08091E20082FF55 -:1027400007C08091E1008B7F8093E1000E94B40F6D -:102750008091DA0080FF1FC08091D80080FF1BC0ED -:102760008091DA008E7F8093DA008091D90080FF1B -:102770000DC080E189BD82E189BD09B400FEFDCFB5 -:1027800081E08093F2010E94850F05C019BC109270 -:10279000F2010E94970F8091E10080FF19C08091A3 -:1027A000E20080FF15C08091E2008E7F8093E200FE -:1027B0008091E20080618093E2008091D800806285 -:1027C0008093D80019BC85E08093F2010E94A20F8B -:1027D0008091E10084FF30C08091E20084FF2CC032 -:1027E00080E189BD82E189BD09B400FEFDCF809101 -:1027F000D8008F7D8093D8008091E1008F7E8093F8 -:10280000E1008091E2008F7E8093E2008091E200FF -:1028100081608093E2008091EE01882311F084E0D2 -:1028200007C08091E30087FD02C081E001C083E022 -:102830008093F2010E94A80F8091E10083FF29C0DC -:102840008091E20083FF25C08091E100877F809323 -:10285000E10082E08093F2011092EE018091E100AC -:102860008E7F8093E1008091E2008E7F8093E20072 -:102870008091E20080618093E20042E060E080E0CD -:102880000E9487128091F00088608093F0000E947F -:102890009E0FFF91EF91BF91AF919F918F917F918B -:1028A0006F915F914F913F912F910F900FBE0F90BD -:1028B0001F9018951F920F920FB60F9211242F930D -:1028C0003F934F935F936F937F938F939F93AF93B8 -:1028D000BF93CF93DF93EF93FF93C091E900CF7045 -:1028E0008091EC00D82FD17080FDD0E81092E900E3 -:1028F0008091F000877F8093F00078940E949E146E -:102900001092E9008091F00088608093F000CD2B58 -:10291000CF70C093E900FF91EF91DF91CF91BF910C -:10292000AF919F918F917F916F915F914F913F9167 -:102930002F910F900FBE0F901F9018951F93CF935C -:10294000DF93CDB7DEB7AA970FB6F894DEBF0FBE00 -:10295000CDBFE3EFF1E088E08E0F9091F10091930D -:102960008E13FBCF0E940E108091E80083FF1FC1E1 -:102970008091F3019091F401492F50E04A305105C4 -:1029800008F015C1FA01EA5AFF4F0C94B32E8038B3 -:1029900081F0823809F00BC18091F7018F7080932C -:1029A000E9008091EB0085FB882780F91092E9000F -:1029B00006C08091EF019091F00191118260909199 -:1029C000E800977F9093E8008093F1001092F10067 -:1029D000C8C0282F2D7F09F0EAC0882319F0823063 -:1029E00061F0E5C08091F501813009F0E0C09330DD -:1029F00009F080E08093F0012BC08091F5018111F6 -:102A000027C08091F7018F7009F4D1C08093E9004D -:102A10002091EB0020FF1CC0933021F48091EB004B -:102A2000806214C09091EB0090619093EB0021E0E4 -:102A300030E0A90102C0440F551F8A95E2F7409388 -:102A4000EA001092EA008091EB0088608093EB002E -:102A50001092E9008091E800877F86C08111A7C0AD -:102A60001091F5011F778091E3008078812B80938E -:102A7000E3008091E800877F8093E8000E94BC1209 -:102A80008091E80080FFFCCF8091E3008068809314 -:102A9000E300111102C082E001C083E08093F201E3 -:102AA00086C08058823008F082C08091F5019091F4 -:102AB000F6018C3D53E0950779F583E08A838AE23D -:102AC00089834FB7F894DE01139620E03EE051E28F -:102AD000E32FF0E050935700E49120FF03C0E2950C -:102AE000EF703F5FEF708E2F90E0EA3010F0C796E6 -:102AF00001C0C0968D939D932F5F243149F74FBF3E -:102B00008091E800877F8093E8006AE270E0CE0160 -:102B100001960E94C31114C0AE014F5F5F4F6091D8 -:102B2000F7010E940A11BC01892B09F440C0909161 -:102B3000E800977F9093E80089819A810E9426128D -:102B40008091E8008B778093E80031C0803879F578 -:102B50008091E800877F8093E8008091EE01809368 -:102B6000F1008091E8008E778093E8000E94BC120B -:102B70001EC081111CC09091F5019230C0F480916B -:102B8000E800877F8093E8009093EE010E94BC12DA -:102B90008091EE01811106C08091E30087FD02C0A3 -:102BA00081E001C084E08093F2010E94F50F8091E2 -:102BB000E80083FF0AC08091E800877F8093E800E7 -:102BC0008091EB0080628093EB00AA960FB6F89498 -:102BD000DEBF0FBECDBFDF91CF911F910895CF9380 -:102BE0008091F2018823A1F0C091E900CF7090910B -:102BF000EC00892F817090FD80E8C82B1092E900CD -:102C00008091E80083FD0E949E14CF70C093E9007C -:102C1000CF91089590937601809375010895E09186 -:102C20007501F0917601309721F00190F081E02D4F -:102C3000099480E00895EF92FF920F931F93CF9332 -:102C4000DF93E0917501F09176013097B1F18C013D -:102C50000280F381E02D09958091D90182FF2DC07A -:102C600080FF04C08AE197E00E941C08E80110E19F -:102C700084E1E82E87E0F82E8091D90180FF0BC017 -:102C800088811F928F93FF92EF920E94B5080F9058 -:102C90000F900F900F90115021961111EDCF809150 -:102CA000D90180FF0AC082E197E0DF91CF911F91A7 -:102CB0000F91FF90EF900C941C08DF91CF911F9122 -:102CC0000F91FF90EF900895E0917501F0917601DA -:102CD000309721F00480F581E02D0994089520912A -:102CE0007301309174018217930771F0909374010E -:102CF00080937301E0917501F0917601309721F096 -:102D00000680F781E02D099408952091710130919A -:102D100072018217930771F0909372018093710191 -:102D2000E0917501F0917601309721F00084F185F2 -:102D3000E02D0994089508950C949B160E94EB22AF -:102D40000E94920A0C94B123CF93C82F8091D9018D -:102D500082FF1EC080FF04C083E397E00E941C082E -:102D60008091D90180FF0CC01F92CF938EE297E033 -:102D70009F938F930E94B5080F900F900F900F9024 -:102D80008091D90180FF04C08CE297E00E941C086A -:102D90008C2FCF910C94410ECF92DF92EF92FF9245 -:102DA0000F931F93CF93DF93CDB7DEB72B970FB65B -:102DB000F894DEBF0FBECDBF0E94AF0A88E7C82ED1 -:102DC00081E0D82E00E010E0E02E802F0E94DB0B87 -:102DD000F60141916F01F42EF826B1F40F5F1F4FF9 -:102DE0000E30110589F78FEF89838A831B820E9439 -:102DF000F4228160782F9D838C8349815A816B8175 -:102E00008D810E946F1740C09091D90191FF04C03D -:102E10008B870E94E10B8B8520E030E04F2D50E046 -:102E2000922FBA01022E02C0759567950A94E2F7B7 -:102E300060FF24C02E83EF8221E030E0690102C0F0 -:102E4000CC0CDD1C9A95E2F790E08C219D21892B1A -:102E500009F420E028870E94F4228160782F9A8765 -:102E600089874E815F8168858A850E946F17F80186 -:102E7000E858FE4F8081C826C08206C02F5F3F4FB2 -:102E80002630310569F6AACF0E94222710917701DA -:102E90000E940F161817A1F00E940F168093770159 -:102EA0002B960FB6F894DEBF0FBECDBFDF91CF914A -:102EB0001F910F91FF90EF90DF90CF900C94A4168C -:102EC0002B960FB6F894DEBF0FBECDBFDF91CF912A -:102ED0001F910F91FF90EF90DF90CF900895CF93C7 -:102EE000DF93CDB7DEB72B970FB6F894DEBF0FBEDA -:102EF000CDBF4F83588769877A878B87DE0111960C -:102F000086E0FD0111928A95E9F785E0FE0137968A -:102F100001900D928A95E1F749815A816B817C81FC -:102F20008D819E810E94871E2B960FB6F894DEBF7E -:102F30000FBECDBFDF91CF910895CF93882309F4C1 -:102F4000C2C0C82F823859F40E940F1681FDBBC041 -:102F500089E30E9423210E94022289E30CC0833866 -:102F600079F40E940F1680FDAEC083E50E942321F4 -:102F70000E94022283E50E947621CF910C940222C6 -:102F8000843859F40E940F1682FD9DC087E40E9488 -:102F900023210E94022287E4EECF8CEF8C0F813A2E -:102FA00048F48C2F0E94B52B81118DC08C2F0E946C -:102FB0002321E3CF80E28C0F883048F4C77081E092 -:102FC00001C0880FCA95EAF70E94CB21D6CF8BE5C6 -:102FD0008C0F833078F4C53A29F0C63A31F083E893 -:102FE00090E005C081E890E002C082E890E0CF91D7 -:102FF0000C946F1688E58C0F833108F064C0C83AD2 -:1030000039F1C93A41F1CA3A49F1CB3A51F1CC3AD6 -:1030100059F1CD3A61F1C03B69F1CE3A71F1CF3A45 -:1030200079F1C13B81F1C23B89F1C33B91F1C43BD2 -:1030300099F1C53BA1F1C63BA9F1C73BB1F1C83B32 -:10304000B9F1C93BC1F1CA3BC9F180E090E038C099 -:1030500082EE90E035C089EE90E032C08AEE90E0DA -:103060002FC085EB90E02CC086EB90E029C087EB69 -:1030700090E026C08CEC90E023C08DEC90E020C066 -:1030800083E891E01DC08AE891E01AC082E991E0EE -:1030900017C084E991E014C081E292E011C083E29C -:1030A00092E00EC084E292E00BC085E292E008C09C -:1030B00086E292E005C087E292E002C08AE292E0F6 -:1030C000CF910C948516CF910895882309F44BC0B5 -:1030D000823859F40E940F1681FF45C089E30E948F -:1030E00023210E94022289E30CC0833871F40E94DC -:1030F0000F1680FF38C083E50E9423210E94022220 -:1031000083E50E9476210C940222843859F40E94AF -:103110000F1682FF28C087E40E9423210E9402220A -:1031200087E4EFCF9CEF980F913A58F390E2980F15 -:10313000983050F4877091E001C0990F8A95EAF7B2 -:10314000892F0E94D121DFCF9BE5980F933020F487 -:1031500080E090E00C946F16885A833120F480E070 -:1031600090E00C9485160895882321F00E94CB21CD -:103170000C9402220895882321F00E94D1210C94FE -:1031800002220895BF92CF92DF92EF92FF920F93A7 -:103190001F93CF93DF9300D000D000D0CDB7DEB720 -:1031A00025E0FC01DE01119601900D922A95E1F7D0 -:1031B000FC01408131810281258122952F7063813C -:1031C0007481672B09F4E7C23F3F19F44F3F09F4BC -:1031D000E2C27C0149833A8389819A812E830E94CD -:1031E000E220182FB92E0E94E1200E94A81FEB2D8B -:1031F000E295EF70F0E0E05AFF4F2E810C94B32E71 -:103200008B2D807F9B2D9F70F92E882319F0F294CF -:1032100080EFF822002349F0FF2009F469C28F2DC6 -:103220000E94DB210E94022263C2812F0E94651846 -:10323000FF2009F4B0C28F2D0E94E12126960FB61F -:10324000F894DEBF0FBECDBFDF91CF911F910F91DC -:10325000FF90EF90DF90CF90BF900C9402223B2D17 -:10326000307F8B2D8F70303211F08295807F11234B -:1032700019F0113021F12DC00023B9F0222309F4F7 -:10328000A1C1213009F09EC126960FB6F894DEBF89 -:103290000FBECDBFDF91CF911F910F91FF90EF90A7 -:1032A000DF90CF90BF900C94EB21222319F02130B6 -:1032B00009F471C28E830E94EE218E8197C1002392 -:1032C00021F0263008F067C27DC1253008F063C2C6 -:1032D0008DC1002321F0222309F474C109C22223E5 -:1032E00009F484C11AC22B2D26952695237030E04F -:1032F0002115310521F021303105D1F04CC20023D8 -:1033000021F0812F9B2D937002C080E090E02696E3 -:103310000FB6F894DEBF0FBECDBFDF91CF911F91E6 -:103320000F91FF90EF90DF90CF90BF900C946F16AD -:10333000002321F0812F9B2D937002C080E090E04C -:1033400026960FB6F894DEBF0FBECDBFDF91CF91AA -:103350001F910F91FF90EF90DF90CF90BF900C9452 -:103360008516812F002319F00E94A82502C00E9413 -:10337000102626960FB6F894DEBF0FBECDBFDF91A4 -:10338000CF911F910F91FF90EF90DF90CF90BF9062 -:103390000C9495268B2D837009F07BC00111FBC125 -:1033A000812F829586958770880F880F912F9F7047 -:1033B000C92ED12CE12CF12C082E04C0CC0CDD1C24 -:1033C000EE1CFF1C0A94D2F714FF12C04FE050E02D -:1033D00060E070E004C0440F551F661F771F8A9598 -:1033E000D2F7CB01BA01609570958095909503C096 -:1033F00060E070E0CB012B2D269526952370422F9F -:1034000050E042305105D9F04330510569F16C2943 -:103410007D298E299F294130510551F126960FB6FD -:10342000F894DEBF0FBECDBFDF91CF911F910F91FA -:10343000FF90EF90DF90CF90BF900C94CF1F6C293E -:103440007D298E299F2926960FB6F894DEBF0FBEE0 -:10345000CDBFDF91CF911F910F91FF90EF90DF9043 -:10346000CF90BF900C94EB1F0E94CF1FC701B601F5 -:1034700026960FB6F894DEBF0FBECDBFDF91CF9179 -:103480001F910F91FF90EF90DF90CF90BF900C9421 -:10349000B31F002319F08B2D817001C086958823FE -:1034A00009F479C1812F829586958770880F880FDE -:1034B000912F9F70C92ED12CE12CF12C082E04C025 -:1034C000CC0CDD1CEE1CFF1C0A94D2F714FF12C0BA -:1034D0004FE050E060E070E004C0440F551F661FED -:1034E000771F8A95D2F7CB01BA01609570958095C8 -:1034F000909503C060E070E0CB012B2D26952695BA -:103500002370422F50E042305105D9F0433051052D -:1035100069F16C297D298E299F294130510551F18E -:1035200026960FB6F894DEBF0FBECDBFDF91CF91C8 -:103530001F910F91FF90EF90DF90CF90BF900C9470 -:10354000A9206C297D298E299F2926960FB6F894EB -:10355000DEBF0FBECDBFDF91CF911F910F91FF90C6 -:10356000EF90DF90CF90BF900C94C5200E94A920CF -:10357000C701B60126960FB6F894DEBF0FBECDBFC9 -:10358000DF91CF911F910F91FF90EF90DF90CF903F -:10359000BF900C948D20103FD1F118F4103E50F4E0 -:1035A000A2C0123F09F464C008F44DC0133F09F4EF -:1035B00074C099C01F708B2D8F710023A1F00E94E1 -:1035C0002620812F26960FB6F894DEBF0FBECDBF02 -:1035D000DF91CF911F910F91FF90EF90DF90CF90EF -:1035E000BF900C94B4180E944720812F26960FB6E6 -:1035F000F894DEBF0FBECDBFDF91CF911F910F9129 -:10360000FF90EF90DF90CF90BF900C94BB180023F9 -:10361000B1F0253008F0BFC08B2D8F7126960FB604 -:10362000F894DEBF0FBECDBFDF91CF911F910F91F8 -:10363000FF90EF90DF90CF90BF900C946C202630DD -:1036400008F0A9C0E9CF0023A9F08B2D8F71269631 -:103650000FB6F894DEBF0FBECDBFDF91CF911F91A3 -:103660000F91FF90EF90DF90CF90BF900C942620A9 -:10367000002359F38B2D8F7126960FB6F894DEBF79 -:103680000FBECDBFDF91CF911F910F91FF90EF90B3 -:10369000DF90CF90BF900C944720002399F08B2DA2 -:1036A0008F7126960FB6F894DEBF0FBECDBFDF91A7 -:1036B000CF911F910F91FF90EF90DF90CF90BF902F -:1036C0000C94112026960FB6F894DEBF0FBECDBF26 -:1036D000DF91CF911F910F91FF90EF90DF90CF90EE -:1036E000BF900C9407200023A9F0222309F4ADCF4A -:1036F000812F26960FB6F894DEBF0FBECDBFDF91A7 -:10370000CF911F910F91FF90EF90DF90CF90BF90DE -:103710000C949D17222309F4ADCF812F26960FB666 -:10372000F894DEBF0FBECDBFDF91CF911F910F91F7 -:10373000FF90EF90DF90CF90BF900C9465184B2DC9 -:103740004F70612FC7010E94BE0826960FB6F894ED -:10375000DEBF0FBECDBFDF91CF911F910F91FF90C4 -:10376000EF90DF90CF90BF900C942B1F4B2D4F709C -:10377000612FC70126960FB6F894DEBF0FBECDBFEE -:10378000DF91CF911F910F91FF90EF90DF90CF903D -:10379000BF900C94E70C26960FB6F894DEBF0FBED0 -:1037A000CDBFDF91CF911F910F91FF90EF90DF90F0 -:1037B000CF90BF9008950E94E8210E94BD210E94F1 -:1037C00002220E94C8270E94952680E090E00E9475 -:1037D0006F1680E090E00C9485160E94D8210C941E -:1037E000DB1B0E94E220292F22952F7030E02C3025 -:1037F00031054CF42A3031056CF422503109223065 -:10380000310588F407C02C30310549F02F303105DF -:1038100031F009C0803E48F0803F29F406C093FB98 -:10382000882780F9089580E0089581E00895CF9376 -:10383000DF9300D000D01F92CDB7DEB70F900F906E -:103840000F900F900F90DF91CF910895CF93DF935A -:1038500000D000D000D0CDB7DEB726960FB6F894D2 -:10386000DEBF0FBECDBFDF91CF9108951F93CF93E1 -:10387000DF93C091860116E080918701C81799F007 -:10388000D0E01C9FF0011D9FF00D1124E857FE4F62 -:103890004081518162817381848195810E94261CBF -:1038A0002196C770E9CFDF91CF911F910895409184 -:1038B000B8015091B9016091BA017091BB0180913A -:1038C000BC019091BD010C94261C8091BD01829594 -:1038D0008F7009F054C08091BA01882309F44FC059 -:1038E00080918601A09187016091B8017091B90122 -:1038F0004091BB015091BC01B6E08A1709F43FC06A -:1039000090E041155105C1F17F3F11F46F3FA1F1E6 -:10391000B89FF001B99FF00D1124E857FE4F2181A7 -:1039200072132AC02081621327C02281211124C072 -:10393000238134812417350710F421503109241BC9 -:10394000350B283C3105C0F42091BD012F7020615A -:103950002093BD0126E0289FF001299FF00D11243E -:10396000E357FE4F80818F708061808388EB91E008 -:103970000E94C2180C94361C01968770BECF089521 -:10398000CF92DF92EF92FF920F931F93CF93DF932B -:10399000CDB7DEB762970FB6F894DEBF0FBECDBFCE -:1039A0008C0185E0F801DE011D9601900D928A954B -:1039B000E1F7D8014C9111965C91119712966C9198 -:1039C00012971396CD90DC9014973091B8017091B6 -:1039D000B9018091BB019091BC01009709F46BC1C2 -:1039E0007F3F19F43F3F09F466C1E090BA01EE2031 -:1039F00009F4C0C02091BD01C816D90628F0F6010F -:103A0000E81BF90BCF0104C0809590958C0D9D1D8E -:103A1000FF24F394883C910578F0F12C207F09F085 -:103A2000C6C07C2DD98AC88A89890E94171C88EB58 -:103A300091E00E94C218B1C0822F807F09F046C079 -:103A4000751314C0341312C0611110C02F7020619F -:103A50002093BD010E94571C88EB91E00E94C21880 -:103A60008091BD01D80115968C932EC0CD2819F1F7 -:103A70005F3F11F44F3FF9F0F62E61111CC08091A9 -:103A800086012091870136E0821709F45AC090E040 -:103A9000389FF001399FF00D1124E857FE4F7181D6 -:103AA000571306C07081471303C07281711103C0A0 -:103AB00001968770E9CFF62E662309F418C180912C -:103AC000BD0181608093BD01F12C11C1751308C047 -:103AD000341306C0611104C08091BD01D801C3C078 -:103AE0004D875E878D859E856A8B0E94F11B6A8952 -:103AF0008823E1F16623D1F12091BD01822F8295C7 -:103B00008F7090E0029774F08091B8019091B901A4 -:103B100098878F831986DB86CA862C87CE01079605 -:103B20000E94C21886E0F801A8EBB1E001900D9266 -:103B30008A95E1F70E94651C0E94571CFF24F394AC -:103B4000D6C04D875E878D859E850E94E220292FF5 -:103B500022952F7030E0223031050CF0BCC09F70F0 -:103B600009F0B6C0805E883008F4C1C0C8010E9468 -:103B7000C218E4CFC816D90608F453C0F601E81BF2 -:103B8000F90BCF01883C910508F450C0F12C7C2D35 -:103B9000D98AC88A89890E94171CE8EBF1E086E07F -:103BA000DF011D928A95E9F70E94571CA0C075138A -:103BB00014C0341312C0611110C08091BD01F8010E -:103BC0008583C8010E94C21886E0E8EBF1E0DF01BE -:103BD0001D928A95E9F7FE2C8AC04D875E878D85F8 -:103BE0009E856A8B0E94F11B6A89882309F4BECFE7 -:103BF000662309F4BBCF2091BD01822F82958F707F -:103C000090E002970CF48ECF8091B8019091B901A9 -:103C10009A8389831B82DD82CC822E83CE0101961A -:103C20007FCF809590958C0D9D1DACCFF62E662391 -:103C300009F49CCF75132EC034132CC02091BD0104 -:103C400020FD1FC0822F82958F70D9F0D801159664 -:103C50002C9315978F3049F08F5F982F9295907F16 -:103C6000822F8F70892B15968C93C8010E94C218E1 -:103C700086E0F801A8EBB1E001900D928A95E1F79A -:103C800093CF86E0F801A8EBB1E001900D928A9500 -:103C9000E1F72DC04D875E878D859E850E94F11BC3 -:103CA000811140CF8091BD0181608093BD01C80129 -:103CB0000E94C2181CC0662309F458CF4D875E8746 -:103CC0008D859E850E94F11B882309F44FCF2ACF52 -:103CD000811148CF0CC0243031050CF047CF9F70C4 -:103CE00009F440CFF8019581907F09F03BCF8F2DEB -:103CF00062960FB6F894DEBF0FBECDBFDF91CF91B5 -:103D00001F910F91FF90EF90DF90CF9008951F9338 -:103D1000CF93DF93CDB7DEB72C970FB6F894DEBF05 -:103D20000FBECDBF4F83588769877A878B879C8763 -:103D3000CE0107960E94C01C882369F08F81988568 -:103D40002A853B85232BF1F19F3F09F063C08F3F0C -:103D500009F060C037C086E0FE013796DE0111969B -:103D600001900D928A95E1F76F817885EA85FB8550 -:103D7000309741F17F3F11F46F3F21F1209187018E -:103D800030E0C9010196877099274091860150E083 -:103D90008417950709F447C069837A83FD83EC8310 -:103DA00096E0929FD001939FB00D1124A857BE4F6B -:103DB000FE01319601900D929A95E1F7809387016B -:103DC0000E94361C16E08091860190918701891728 -:103DD000C1F1189FC001112488579E4F0E94C01C3A -:103DE000882379F1E09186011E9FF0011124E857A4 -:103DF000FE4F4081518162817381848195810E944F -:103E0000261C8091860190E0019687709927809307 -:103E10008601D9CF4F81588569857A858B859C85A8 -:103E20000E94261CCFCF0E94ED1B1092870110929A -:103E30008601E8EBF1E086E0DF011D928A95E9F763 -:103E4000C1CF2C960FB6F894DEBF0FBECDBFDF9169 -:103E5000CF911F910895EF92FF920F931F93CF93ED -:103E6000DF938C01892B09F46CC0F12CEE24E394D0 -:103E7000E8012196F8018491843740F4843008F0F9 -:103E800051C0813081F0823019F15BC0853709F46F -:103E900044C0A8F19CE7980F903708F052C08F7784 -:103EA0000E94651841C00E5F1F4FFE01C49180E261 -:103EB0008C0F883048F4C7708E2D01C0880FCA95CA -:103EC000EAF70E94DB2114C08C2F0E949D172DC0A1 -:103ED0000E5F1F4FFE01C49180E28C0F883058F4B2 -:103EE000C7708E2D01C0880FCA95EAF70E94E121A4 -:103EF0000E9402221AC08C2F0E94651816C00E5F05 -:103F00001F4FFE01C491CC2381F08FE99FE0019700 -:103F1000F1F700C00000C150F6CF0E5F1F4FFE0149 -:103F2000F49003C00E949D178E018F2D882309F401 -:103F30009FCFEFE9FFE03197F1F700C0000081501B -:103F4000F5CFDF91CF911F910F91FF90EF900895E2 -:103F500008956093C2017093C3018093C40190934C -:103F6000C5010C94DB1B0F931F930091C2011091AC -:103F7000C3012091C4013091C501DC01CB01802B2C -:103F8000912BA22BB32B8093C2019093C301A093DA -:103F9000C401B093C5011F910F910C94DB1B0F93CB -:103FA0001F930091C2011091C3012091C40130916F -:103FB000C501DC01CB0180239123A223B32380938D -:103FC000C2019093C301A093C401B093C5011F9196 -:103FD0000F910C94DB1B0F931F930091C201109162 -:103FE000C3012091C4013091C501DC01CB018027C0 -:103FF0009127A227B3278093C2019093C301A09376 -:10400000C401B093C5011F910F910C94DB1B10925A -:10401000BE011092BF011092C0011092C1010C9418 -:10402000DB1B41E050E060E070E004C0440F551F2E -:10403000661F771F8A95D2F74093BE015093BF0148 -:104040006093C0017093C1010C94DB1B41E050E010 -:1040500060E070E004C0440F551F661F771F8A950B -:10406000D2F78091BE019091BF01A091C001B091A3 -:10407000C101482B592B6A2B7B2B4093BE015093D7 -:10408000BF016093C0017093C1010C94DB1B41E040 -:1040900050E060E070E004C0440F551F661F771FBA -:1040A0008A95D2F740955095609570958091BE01A4 -:1040B0009091BF01A091C001B091C1014823592343 -:1040C0006A237B234093BE015093BF016093C001DC -:1040D0007093C1010C94DB1B41E050E060E070E0A4 -:1040E00004C0440F551F661F771F8A95D2F7809131 -:1040F000BE019091BF01A091C001B091C1014827BC -:1041000059276A277B274093BE015093BF016093D4 -:10411000C0017093C1010C94DB1B0F931F9300919E -:10412000BE011091BF012091C0013091C101DC019D -:10413000CB01802B912BA22BB32B8093BE019093AC -:10414000BF01A093C001B093C1011F910F910C94C6 -:10415000DB1B0F931F930091BE011091BF012091B3 -:10416000C0013091C101DC01CB0180239123A22346 -:10417000B3238093BE019093BF01A093C001B0937D -:10418000C1011F910F910C94DB1B0F931F930091A2 -:10419000BE011091BF012091C0013091C101DC012D -:1041A000CB0180279127A227B3278093BE0190934C -:1041B000BF01A093C001B093C1011F910F910C9456 -:1041C000DB1B0895CF92DF92EF92FF920F931F9324 -:1041D000CF93DF938C01C090C201D090C301E090D7 -:1041E000C401F090C5014091BE015091BF016091A2 -:1041F000C0017091C101C42AD52AE62AF72ACFE16D -:10420000D0E0D701C6010C2E04C0B695A7959795AE -:1042100087950A94D2F780FF07C0B8018C2F0E94BF -:104220000A0D8130910531F4219758F7B80180E0EB -:104230000E940A0DDF91CF911F910F91FF90EF9097 -:10424000DF90CF90089590910C01992321F09091E7 -:104250000D01911109C020910E0130910F01F9015A -:1042600032969FEF40E030C0982F969596959695A0 -:104270009F30A0F4E0910E01F0910F01E90FF11DC4 -:10428000877021E030E0A90102C0440F551F8A95D4 -:10429000E2F7CA019181892B818308959091D90118 -:1042A00090FF23C01F928F9384E697E09F938F9394 -:1042B0000E94B5080F900F900F900F9008959F3FA8 -:1042C00039F04F5F4E3041F051915813F8CF0DC087 -:1042D0005111F7CF942FF5CF9F3F39F0F901E90F36 -:1042E000F11D97FDFA9582830895089590910C0130 -:1042F000992321F090910D01911109C020910E0197 -:1043000030910F01F9013296205F3F4F30C0982F56 -:104310009695969596959F30A8F4E0910E01F091B0 -:104320000F01E90FF11D877021E030E0A90102C003 -:10433000440F551F8A95E2F7CA0180959181892320 -:10434000818308959091D90190FF16C01F928F9399 -:1043500086E497E09F938F930E94B5080F900F908B -:104360000F900F9008953196E217F30729F090818E -:104370009813F9CF1082F7CF089581E090E0E09193 -:104380000E01F0910F01E80FF91F108201968031A4 -:104390009105A9F708959091D801892B8093D801B0 -:1043A000089580959091D80189238093D80108952C -:1043B0001092D80108959091D701892B8093D7014D -:1043C000089580959091D70189238093D70108950E -:1043D0001092D70108958093C60108951092C601E6 -:1043E000089580910E0190910F01FC0131969C017E -:1043F000205F3F4F80E0919191118F5FE217F307AB -:10440000D1F70895E0910E01F0910F018091D8014C -:104410008083E0910E01F0910F0190818091D7018E -:10442000892B80838091C601882361F0E0910E0181 -:10443000F0910F019081892B80830E94F1218111DD -:104440001092C60180910E0190910F010C941B16E1 -:1044500090933B0180933A010895CF92DF92EF92BF -:10446000FF926C01EE24FF24C114D104E104F10495 -:1044700021F0C701B60120E101C020E0C72ED82EEF -:10448000E92EFF24C114D104E104F10419F0285FDE -:10449000C701B6016B017C0154E0F694E794D79410 -:1044A000C7945A95D1F7C114D104E104F10419F06D -:1044B0002C5FC701B6016B017C0142E0F694E794E2 -:1044C000D794C7944A95D1F7C114D104E104F104FB -:1044D00019F02E5FC701B601DC01CB01B695A79597 -:1044E00097958795892B8A2B8B2B09F02F5F822F2D -:1044F000FF90EF90DF90CF9008958295982F9C7C4D -:10450000392F36953695282F237344E0249FC00118 -:104510001124932F982B292F2A7A2695892F857578 -:10452000880F822B08951F93CF93DF931F92CDB7EF -:10453000DEB799830E947D22182F9981892F0E94CE -:104540007D22212F30E0322F2227A901482BCA01DA -:104550000F90DF91CF911F9108958091F2018430E7 -:1045600009F11092DA0120E488E190E00FB6F894A6 -:10457000A895809360000FBE2093600083B7817F71 -:10458000846083BF83B7816083BF7894889583B745 -:104590008E7F83BF88E10FB6F894809360001092FD -:1045A00060000FBE089508950895CF930E94D3220E -:1045B0000E94AF0A0E94D422C0E08C2F0E94DB0B25 -:1045C000811104C0CF5FCE30C1F701C081E0CF912F -:1045D00008950C94ED1B82E084BD93E095BD9AEFA5 -:1045E00097BD80936E0008952FB7F8948091DB01FA -:1045F0009091DC01A091DD01B091DE012FBF089503 -:10460000CF92DF92EF92FF920F931F932FB7F89400 -:104610004091DB015091DC016091DD017091DE0180 -:104620002FBF6A017B01EE24FF248C0120E030E0E3 -:10463000C016D106E206F30610F4415051099A0162 -:10464000281B390BC9011F910F91FF90EF90DF904C -:10465000CF9008951F920F920FB60F9211248F934F -:104660009F93AF93BF938091DB019091DC01A09168 -:10467000DD01B091DE010196A11DB11D8093DB012A -:104680009093DC01A093DD01B093DE01BF91AF9167 -:104690009F918F910F900FBE0F901F9018950E94C1 -:1046A0000D13F8942FEF87EA91E621508040904057 -:1046B000E1F700C0000087E090EBDC018093FB0194 -:1046C0009093FC01A093FD01B093FE019CE088E172 -:1046D0000FB6F894A895809360000FBE9093600089 -:1046E000FFCFEF92FF920F931F93CF93DF93D82FBB -:1046F000C0E08C2F0E94DB0B00E010E0E82EF12CD4 -:10470000C701002E02C0959587950A94E2F780FDB7 -:1047100006C00F5F1F4F0630110591F709C0602FCB -:104720007C2F80E00E94E80CD813F3CF81E004C016 -:10473000CF5FCE30F1F680E0DF91CF911F910F91E6 -:10474000FF90EF900895CF93C82F8CE20E947123C1 -:10475000882321F08C2FCF910C94712380E0CF918E -:104760000895CF930E940025811102C00E94E62483 -:1047700089E897E00E941C08C5E6C15049F00E94F4 -:10478000AF0A8FE39CE90197F1F700C00000F5CF75 -:1047900082E897E00E941C0889E20E94A32381110D -:1047A00013C18AE20E94A32381110E94E62485E0BE -:1047B0000E94A32381110E944F230E940B25809306 -:1047C000D90187E00E94A3238823A9F18BE10E94ED -:1047D000A323882351F08091D90181FB222720F95E -:1047E00091E0922790FB81F90EC08EE00E94A323F6 -:1047F000882361F08091D90182FB222720F991E082 -:10480000922790FB82F98093D90115C080E10E9424 -:10481000A3239091D901882341F093FB222720F90B -:1048200081E0822780FB93F904C0892F809580FB6B -:1048300090F99093D9018091D9010E940F250E948F -:104840001D258093EC0180EE0E94A323882341F074 -:104850008091EC01982F909590FB80F98093EC016A -:1048600089E30E94A323882359F08091EC0181FB06 -:10487000222720F991E0922790FB81F98093EC01A7 -:1048800082EE0E94A323882359F08091EC0182FBE1 -:10489000222720F991E0922790FB82F98093EC0186 -:1048A00086EE0E94A323882359F08091EC0183FBBC -:1048B000222720F991E0922790FB83F98093EC0165 -:1048C00083EE0E94A323882359F08091EC0184FB9E -:1048D000222720F991E0922790FB84F98093EC0144 -:1048E00085E30E94A323882359F08091EC0185FB86 -:1048F000222720F991E0922790FB85F98093EC0123 -:1049000081E30E94A323882359F08091EC0186FB68 -:10491000222720F991E0922790FB86F98093EC0101 -:1049200081E10E94A323882359F08091EC0187FB49 -:10493000222720F991E0922790FB87F98093EC01E0 -:104940008091EC010E9421258091EC0187FB882752 -:1049500080F980930D0187E20E94A323C82F8EE186 -:104960000E94A3238111C2608FE10E94A3238111C1 -:10497000C46080E20E94A3238111C86081E20E948A -:10498000A3238111C06182E20E94A3238111C0622E -:1049900083E20E94A3238111C06484E20E94A323C6 -:1049A000882311F0C06802C0CC2329F08C2F0E940C -:1049B00018256C2F03C00E941425682F70E080E03A -:1049C00090E0CF910C94A91FCF9108956DEE7EEFEA -:1049D00080E090E00E94E92E60E082E090E00E949A -:1049E000DB2E60E083E090E00E94DB2E60E084E05C -:1049F00090E00E94DB2E60E085E090E00C94DB2EDE -:104A000080E090E00E94D52E21E08D3E9E4F09F07F -:104A100020E0822F089582E090E00C94CD2E682F44 -:104A200082E090E00C94DB2E83E090E00C94CD2E9D -:104A3000682F83E090E00C94DB2E84E090E00C94EF -:104A4000CD2E682F84E090E00C94DB2E8091E10164 -:104A500080FF0BC06091130185E0689FB0011124B5 -:104A600075956795759567952BC081FF09C0609115 -:104A7000130185E0689FB00111247595679520C0EA -:104A800082FF07C06091130185E0689FB001112487 -:104A900017C09091E2019923D1F06091120196170D -:104AA00088F72091130185E0289F90011124929F9F -:104AB000A001939F500D112470E0CA010E949F2E07 -:104AC0006038710540F46115710539F002C065E088 -:104AD00070E0862F08958FE7089581E00895809112 -:104AE000E10180FF08C06091110170E07595679544 -:104AF0007595679521C081FF06C06091110170E036 -:104B00007595679519C082FF04C06091110170E02E -:104B100010C09091E2019923C1F0609110019617A5 -:104B2000A0F780911101899FC001112470E00E94BB -:104B30009F2E6038710528F46115710521F0862FCC -:104B400008958FE7089581E0089561E070E0F4CF63 -:104B5000803F21F40E942625819504C0813F29F4DD -:104B60000E9426258093E5010895823F21F40E944A -:104B70002625819504C0833F29F40E942625809331 -:104B8000E4010895893F19F40E946F2505C08A3F0A -:104B900031F40E946F2581958093E60108958B3F43 -:104BA00021F40E946F25819504C08C3F29F40E9456 -:104BB0006F258093E7010895843F21F48091E301FC -:104BC000816017C0853F21F48091E301826011C0AC -:104BD000863F21F48091E30184600BC0873F21F47C -:104BE0008091E301886005C0883F31F48091E30142 -:104BF00080618093E30108958D3F21F48091E1016C -:104C000081600BC08E3F21F48091E101826005C07C -:104C10008F3F29F48091E10184608093E101089540 -:104C2000803F39F48091E50187FF6CC01092E50167 -:104C300069C0813F29F48091E5011816BCF362C078 -:104C40009091E401823F29F497FF5CC01092E40147 -:104C500059C0833F19F41916CCF354C0893F41F46D -:104C60008091E60118160CF04DC01092E6014AC082 -:104C70008A3F29F48091E60187FF44C0F6CF8B3F3D -:104C800039F48091E70187FF3DC01092E7013AC0F7 -:104C90008C3F29F48091E7011816BCF333C0843FA0 -:104CA00021F48091E3018E7F17C0853F21F480912C -:104CB000E3018D7F11C0863F21F48091E3018B7F5A -:104CC0000BC0873F21F48091E301877F05C0883FB7 -:104CD00031F48091E3018F7E8093E30113C08D3F17 -:104CE00021F48091E1018E7F0BC08E3F21F48091F1 -:104CF000E1018D7F05C08F3F29F48091E1018B7F19 -:104D00008093E1018091E40181110EC08091E50161 -:104D100081110AC08091E601811106C08091E701EE -:104D2000811102C01092E20108958091D90183FFA0 -:104D30007EC085EC97E00E941C088091E3011F92E1 -:104D40008F9380EC97E09F938F930E94B5088EEB32 -:104D500097E00E941C088091E401282F332727FD4B -:104D600030953F938F938BEB97E09F938F930E94A7 -:104D7000B50889EB97E00E941C088091E501282F77 -:104D8000332727FD30953F938F9386EB97E09F93D2 -:104D90008F930E94B50884EB97E00E941C088091D5 -:104DA000E601282F332727FD30953F938F9381EB22 -:104DB00097E09F938F930E94B5088FEA97E00E9437 -:104DC0001C088091E701282F332727FD30953F935A -:104DD0008F938CEA97E09F938F930E94B50889EA9E -:104DE00097E00E941C088091E2011F928F9386EA4F -:104DF00097E09F938F930E94B50884EA97E00E9402 -:104E00001C088091E1011F928F9381EA97E09F93A4 -:104E10008F930E94B5088EE997E00E941C088DB719 -:104E20009EB74C960FB6F8949EBF0FBE8DBF83EE13 -:104E300091E00E9464160E94F4229093E001809316 -:104E4000DF0108951F93CF93DF938091DF0190914D -:104E5000E0010E940023AC019091E201992321F02E -:104E60002091140130E006C0209115018AE0289FAE -:104E7000900111244217530708F486C08091E40181 -:104E8000C091E501D091E6011091E701811107C0C1 -:104E9000C11176C0D11174C0111172C075C09F3F8D -:104EA00019F09F5F9093E201181624F40E942625C2 -:104EB0008093E4018091E40187FF05C00E942625CC -:104EC00081958093E4011C1624F40E94262580938A -:104ED000E5018091E50187FF05C00E9426258195A7 -:104EE0008093E5016091E401662339F1C091E50109 -:104EF000CC2319F1772767FD7095872F972F0E9494 -:104F0000A42D23E333E343E35FE30E94082E0E94D2 -:104F1000712D6093E4016C2F772767FD7095872FC3 -:104F2000972F0E94A42D23E333E343E35FE30E9422 -:104F3000082E0E94712D6093E5011D1624F40E9435 -:104F40006F258093E6018091E60187FF05C00E94EE -:104F50006F2581958093E601111624F40E946F2538 -:104F60008093E7018091E70187FF05C00E946F25CC -:104F700081958093E701DF91CF911F910C94952645 -:104F80009F3F09F08ECF96CFDF91CF911F9108956B -:104F9000E3EEF1E085E0DF011D928A95E9F71092DA -:104FA000E2011092E101089588EE99E00E941C0848 -:104FB0001F9281E08F931F9285E08F938AE999E099 -:104FC0009F938F930E94B5080F900F900F900F90B2 -:104FD0000F900F9008958330E9F128F4813061F04B -:104FE000823009F10895853009F462C008F449C09F -:104FF000863009F474C0089580911501262F30E0A1 -:10500000280F311D2F3F310524F4680F60931501DF -:1050100003C08FEF80931501809115011F928F932C -:1050200083ED98E072C080911401262F30E0280FA4 -:10503000311D2F3F310524F4680F6093140103C024 -:105040008FEF80931401809114011F928F9381EC54 -:1050500098E05BC080911301262F30E0280F311DAE -:105060002F3F310524F4680F6093130103C08FEFC5 -:1050700080931301809113011F928F938EEA98E021 -:1050800044C080911201262F30E0280F311D2F3FA0 -:10509000310524F4680F6093120103C08FEF8093F1 -:1050A0001201809112011F928F9389E998E02DC01F -:1050B00080911101262F30E0280F311D2F3F31053F -:1050C00024F4680F6093110103C08FEF80931101E6 -:1050D000809111011F928F9380E898E016C0809113 -:1050E0001001262F30E0280F311D2F3F310524F409 -:1050F000680F6093100103C08FEF809310018091BF -:1051000010011F928F9385E698E09F938F930E94E2 -:10511000B5080F900F900F900F900895833081F194 -:1051200028F4813059F08230D1F00895853009F4A7 -:1051300049C0B8F1863009F456C008958091150130 -:10514000681720F4861B8093150102C01092150188 -:10515000809115011F928F9386E598E054C080914D -:105160001401681720F4861B8093140102C010926A -:105170001401809114011F928F9384E498E043C03E -:1051800080911301681720F4861B8093130102C0DD -:1051900010921301809113011F928F9381E398E085 -:1051A00032C080911201681720F4861B809312018F -:1051B00002C010921201809112011F928F938CE114 -:1051C00098E021C080911101681720F4861B80931C -:1051D000110102C010921101809111011F928F9351 -:1051E00083E098E010C080911001681720F4861BBE -:1051F0008093100102C010921001809110011F9243 -:105200008F9388EE97E09F938F930E94B5080F903D -:105210000F900F900F900895CF93C82F1F928F93E8 -:105220008DEE9AE09F938F930E94B50881E090E005 -:10523000A0E0B0E0BC01CD0104C0660F771F881F5D -:10524000991FCA95D2F70E94A91F0F900F900F9037 -:105250000F90CF910C94ED1BCF938D3109F465C065 -:10526000B0F58E3009F4CCC100F5873009F49BC14C -:10527000A8F4863009F06DC28091D901817F8E7FBC -:105280008093D90182EF9AE00E941C0884E39FE09A -:105290000E941C0881E08093E90180C1883009F4F4 -:1052A0004FC08B3009F47CC154C2863109F4F0C17F -:1052B00038F4803109F4B8C1813109F430C249C2EF -:1052C000893109F4CEC18B3109F486C142C28533DC -:1052D00009F437C248F4873209F433C208F433C200 -:1052E000893209F42EC235C2833438F48A3308F087 -:1052F0002CC2883309F454C12CC2833409F421C26E -:10530000883409F026C20E94ED1B83E29FE00E94D0 -:105310001C089FEF23ED80E3915020408040E1F78F -:1053200000C000000E944F2339C183E49FE00E9427 -:105330001C080E942B2D0E940F160E94410E2EC1A8 -:1053400088E39FE00E941C0883E09DE00E941C0807 -:105350000E9414251F928F9380E09DE09F938F936E -:105360000E94B5088EEF9CE00E941C080E940B254D -:10537000C82F8BEE9CE00E941C081F92CF9386EEF4 -:105380009CE09F938F930E94B50884EE9CE00E945E -:105390001C088AED9CE00E941C088C2F81701F92D3 -:1053A0008F9387ED9CE09F938F930E94B50885EDC6 -:1053B0009CE00E941C088BEC9CE00E941C08C1FB36 -:1053C000882780F91F928F9388EC9CE09F938F939E -:1053D0000E94B50886EC9CE00E941C088AEB9CE0C9 -:1053E0000E941C08C2FB882780F91F928F9387EBCD -:1053F0009CE09F938F930E94B50885EB9CE00E94F0 -:105400001C088CEA9CE00E941C08C3FBCC27C0F956 -:105410001F92CF9389EA9CE09F938F930E94B508D7 -:1054200087EA9CE00E941C080E941D25C82F83E982 -:105430009CE00E941C081F92CF938EE89CE09F93F3 -:105440008F930E94B5088CE89CE00E941C0883E7BB -:105450009CE00E941C088C2F81701F928F9380E724 -:105460009CE09F938F930E94B5088DB79EB780965E -:105470000FB6F8949EBF0FBE8DBF8EE69CE00E94D3 -:105480001C0887E59CE00E941C08C1FB882780F966 -:105490001F928F9384E59CE09F938F930E94B508A1 -:1054A00082E59CE00E941C0880E49CE00E941C08AD -:1054B000C2FB882780F91F928F938DE39CE09F9316 -:1054C0008F930E94B5088BE39CE00E941C0889E240 -:1054D0009CE00E941C08C3FB882780F91F928F93D1 -:1054E00086E29CE09F938F930E94B50884E29CE043 -:1054F0000E941C088AE19CE00E941C08C4FB8827CB -:1055000080F91F928F9387E19CE09F938F930E9475 -:10551000B50885E19CE00E941C0883E09CE00E94A5 -:105520001C08C5FB882780F91F928F9380E09CE0C0 -:105530009F938F930E94B5088EEF9BE00E941C08FA -:1055400082EE9BE00E941C08C6FB882780F91F9210 -:105550008F938FED9BE09F938F930E94B5088DED05 -:105560009BE00E941C0885ED9BE00E941C08C7FB85 -:10557000CC27C0F91F92CF9382ED9BE09F938F932E -:105580000E94B50880ED9BE00E941C088DB79EB775 -:105590004C960FB6F8949EBF0FBE8DBFC1E0DEC023 -:1055A00089E19BE05BC08091D901C82FC17080FF69 -:1055B00009C086E19FE00E941C088091D901817F8B -:1055C0008E7F47C08AE09FE00E941C088091D9012D -:1055D00081608093D901E2CF9091D90191FBCC27D2 -:1055E000C0F981E0C827892FC0FB81F98093D901D8 -:1055F000CC2319F08DEF9EE027C08FEE9EE02EC0E9 -:105600009091D90192FBCC27C0F981E0C827892F5E -:10561000C0FB82F98093D901CC2319F080EE9EE083 -:1056200013C080ED9EE01AC09091D90193FBCC2766 -:10563000C0F981E0C827892FC0FB83F98093D90185 -:10564000CC2351F084EC9EE00E941C088091D9018B -:1056500081608093D90182C087EB9EE00E941C0884 -:105660009DCF88EA9EE00E941C088CE79EE00E9485 -:105670001C088FE39EE00E941C0882E19EE00E94CD -:105680001C088EEC9DE00E941C0883EA9DE0E6CF9A -:1056900085E99DE00E941C080E940F161F928F93BF -:1056A0008BE79DE09F938F930E94B50880910C013A -:1056B0001F928F9384E69DE09F938F930E94B5087D -:1056C000809170011F928F9381E59DE09F938F934E -:1056D0000E94B50880910D011F928F938EE39DE08B -:1056E0009F938F930E94B5088091DB019091DC011C -:1056F000A091DD01B091DE01BF93AF939F938F9393 -:105700008AE29DE09F938F930E94B5088DB79EB764 -:1057100046960FB6F8949EBF0FBE8DBF3FCF0E9436 -:10572000ED1BC0910D0181E0C827C0930D01CC2372 -:1057300029F080E29DE00E941C0810C085E19DE0F8 -:105740008DCF80E003C08D5101C089530E940C2988 -:1057500025CF83E19DE00E941C08C0E08C2FCF91F3 -:10576000089580E0089580E00895CF93C82F809138 -:10577000E901813081F020F0823009F44FC045C149 -:10578000E0910E01F0910F018081813169F0823248 -:1057900009F03DC109C0E0910E01F0910F01808137 -:1057A000813111F0823261F48C2F0E94B12B811172 -:1057B00004C08C2F0E942C292FC081E090E02CC0C7 -:1057C0008C2F0E94B32B811126C0C431E1F070F4FC -:1057D000CB3081F0C031D1F40E94D42785EE9AE01D -:1057E0000E941C0882E08093E90115C0C93259F07B -:1057F000C83361F482EF9AE00E941C0889EE9AE0B7 -:105800000E941C0808C01092E90103C183EE9AE0CF -:105810000E941C08FEC081E08170FDC0C43220F5EA -:10582000CE3108F0C0C0CB3099F1C8F4C73009F0D0 -:10583000D2C08AE08093150194E19093140193E023 -:10584000909313018093120188E08093110188E204 -:105850008093100189E899E00E941C08BFC0C33101 -:1058600049F1C431C1F0B7C0CB3409F4A9C028F460 -:10587000C93289F0C83361F0AEC0C13509F49EC0A9 -:10588000C23509F499C0CE3409F0A5C06AE09EC0C3 -:105890000E94D427A3C08091E801882319F01092B8 -:1058A000E8019CC086E999E00E941C0881E0809391 -:1058B000E901B1C080E799E00E941C088EE599E0FB -:1058C0000E941C08809115011F928F938BE599E02F -:1058D0009F938F930E94B50889E599E00E941C0868 -:1058E00087E499E00E941C08809114011F928F9315 -:1058F00084E499E09F938F930E94B50882E499E035 -:105900000E941C0883E399E00E941C088091130107 -:105910001F928F9380E399E09F938F930E94B50825 -:105920008EE299E00E941C088DE199E00E941C081B -:10593000809112011F928F938AE199E09F938F9338 -:105940000E94B50888E199E00E941C0883E099E074 -:105950000E941C08809111011F928F9380E099E0B2 -:105960009F938F930E94B5088EEF98E00E941C08C9 -:1059700087EE98E00E941C08809110011F928F937F -:1059800084EE98E09F938F930E94B50882EE98E092 -:105990000E941C088DB79EB748960FB6F8949EBF1C -:1059A0000FBE8DBF1BC0CE51EC2FF0E0E15DFE4F6E -:1059B00080818093E80112C061E003C061E006C00D -:1059C0006AE08091E8010E94EB2708C08091E8011D -:1059D0000E948E2803C087E899E013C08091E801F7 -:1059E000882369F01F928F9381E899E09F938F93AA -:1059F0000E94B5080F900F900F900F9004C08EE793 -:105A000099E00E941C0881E006C01092E90180E044 -:105A100002C080E001CFCF910895E1E8F0E08081FD -:105A2000886080838081816080838FB7F89493E061 -:105A30009093890090ED909388008FBF0895EFE6D2 -:105A4000F0E08081826080830895EFE6F0E080815D -:105A50008D7F80830895EFE6F0E0908182E08927D2 -:105A6000808308951F920F920FB60F9211242F93E7 -:105A70003F934F935F936F937F938F939F93AF93D6 -:105A8000BF93EF93FF938091EA019091EB01019610 -:105A90009093EB018093EA01811103C082E00E94A0 -:105AA000410EE091EB01E695E695F0E0ED5AF04FFE -:105AB000E4918091EA018E1303C080E00E94410EC0 -:105AC000FF91EF91BF91AF919F918F917F916F91D6 -:105AD0005F914F913F912F910F900FBE0F901F90AC -:105AE000189504D06894B1118DC0089570D088F0D5 -:105AF0009F5790F0B92F9927B751A0F0D1F0660FBA -:105B0000771F881F991F1AF0BA95C9F712C0B130D4 -:105B100081F077D0B1E0089574C0672F782F88277F -:105B2000B85F39F0B93FCCF3869577956795B39513 -:105B3000D9F73EF490958095709561957F4F8F4F82 -:105B40009F4F0895E89409C097FB3EF49095809587 -:105B5000709561957F4F8F4F9F4F9923A9F0F92F33 -:105B600096E9BB279395F695879577956795B795B1 -:105B7000F111F8CFFAF4BB0F11F460FF1BC06F5F97 -:105B80007F4F8F4F9F4F16C0882311F096E911C0A9 -:105B9000772321F09EE8872F762F05C0662371F0CA -:105BA00096E8862F70E060E02AF09A95660F771FDE -:105BB000881FDAF7880F9695879597F9089557FD0E -:105BC0009058440F551F59F05F3F71F04795880F6B -:105BD00097FB991F61F09F3F79F087950895121602 -:105BE00013061406551FF2CF4695F1DF08C01616AE -:105BF00017061806991FF1CF86957105610508945F -:105C00000895E894BB2766277727CB0197F9089575 -:105C10000BD078C069D028F06ED018F0952309F029 -:105C20005AC05FC01124EECFCADFA0F3959FD1F315 -:105C3000950F50E0551F629FF001729FBB27F00D3A -:105C4000B11D639FAA27F00DB11DAA1F649F66278F -:105C5000B00DA11D661F829F2227B00DA11D621FDE -:105C6000739FB00DA11D621F839FA00D611D221F98 -:105C7000749F3327A00D611D231F849F600D211D7C -:105C8000822F762F6A2F11249F5750408AF0E1F01F -:105C900088234AF0EE0FFF1FBB1F661F771F881F68 -:105CA00091505040A9F79E3F510570F014C0AACF03 -:105CB0005F3FECF3983EDCF3869577956795B79553 -:105CC000F795E7959F5FC1F7FE2B880F911D96957D -:105CD000879597F9089597F99F6780E870E060E0ED -:105CE00008959FEF80EC089500240A941616170675 -:105CF00018060906089500240A94121613061406BD -:105D000005060895092E0394000C11F4882352F01F -:105D1000BB0F40F4BF2B11F460FF04C06F5F7F4FD7 -:105D20008F4F9F4F0895991B79E004C0991F9617D4 -:105D300008F0961B881F7A95C9F78095089597FB00 -:105D4000072E16F4009407D077FD09D00E94B92ED3 -:105D500007FC05D03EF4909581959F4F089570956E -:105D600061957F4F0895EE0FFF1F0590F491E02D90 -:105D70000994AA1BBB1B51E107C0AA1FBB1FA61792 -:105D8000B70710F0A61BB70B881F991F5A95A9F7E4 -:105D900080959095BC01CD010895F999FECF92BDF3 -:105DA00081BDF89A992780B50895A8E1B0E042E056 -:105DB00050E00C94F02E262FF999FECF1FBA92BD19 -:105DC00081BD20BD0FB6F894FA9AF99A0FBE0196DC -:105DD00008950E94DB2E272F0C94DC2EDC01CB01D2 -:105DE000FC01F999FECF06C0F2BDE1BDF89A3196EB -:105DF00000B40D9241505040B8F70895F894FFCF89 -:105E00002002420E330F100FDC0EA80E0101C70155 -:105E100028080A03140A3F4D362039D30686065057 -:105E2000063006F7056A0583059C05B505D505010D -:0A5E3000020304050607080900003C +:100000000C948E080C94D2080C94D2080C94D2084C +:100010000C94D2080C94D2080C94D2080C94D208F8 +:100020000C94D2080C94D2080C94D1140C94A315FF +:100030000C94D2080C94D2080C94D2080C94D208D8 +:100040000C94D2080C947D2E0C94D2080C94D208F7 +:100050000C94D2080C9475240C94D2080C94D208F9 +:100060000C94D2080C94D2080C94D2080C94D208A8 +:100070000C94D2080C94D2080C94D2080C94D20898 +:100080000C94D2080C94D2080C94D2080C94D20888 +:100090000C94D2080C94D2080C94D2080C94D20878 +:1000A0000C94D2080C94D2080C94D20890099A09A6 +:1000B000B209CA09120A180A390A1E0A340A2A0A97 +:1000C0002F0A240AFA09E2093E0A101632162017EE +:1000D0003216201777169A162017EF160217491AAC +:1000E000491A781A781ABB1AF91A121D121D121B16 +:1000F000121D131C131CE61C121D121DFD1C01E118 +:100100000137023702E10138023801E201250225F8 +:1001100002E20001E10137023702E1013802380151 +:10012000E10130023002E10001E10137023702E172 +:100130000138023801E10107020702E1000135023E +:1001400035012002200001E10137023702E10138C8 +:10015000023801E10125022502E10001E101360238 +:100160003602E10138023801E10125022502E100F1 +:1001700001E10136023602E10138023801E10126CF +:10018000022602E10001E10137023702E1013802F3 +:100190003801E10126022602E10002E002E201301C +:1001A00002300002E002E20001E001E20002E002AF +:1001B000E3016402640002E002E30001E001E30005 +:1001C00002E002E2012E022E02E10002E002E10260 +:1001D000E20001E001E101E20002E001E3010602C8 +:1001E0000602E30002E00001E00002E001E3011981 +:1001F000021902E30002E00001E0000000F0A1F0BB +:10020000A329002B00E200E100358100001E00144C +:100210000004001D710D304D831F001A0016001BD5 +:10022000000C304C002000080007000600E1042A02 +:10023000002100150009001900E1084A00220017FA +:10024000000A000500000003300130E3000000E276 +:1002500000000002540230E7000000E60000000445 +:100260005423001C000B00110000002E7F240018F6 +:10027000000D00100050004B0025000C000E003651 +:100280000052002C00260012000F003700510028F9 +:100290000027001300330038714F004E002D002F4F +:1002A000003474E50031810000010001000100010B +:1002B00000010000003A003500310001000100019A +:1002C000003B0035022102350001004C003C001EBD +:1002D0000224062202010001003D002D0224022416 +:1002E00004010001003E000100370011040000017C +:1002F000000100010000000100000001000E3001BB +:100300000000000100000001003F00240624022339 +:100310000200000100400022042502350001000116 +:100320000041002304260235023700010042002468 +:100330000425041F021E020100430031002604317F +:1003400002010001004400450001002D02010000EF +:100350000001000100010001000100000001000196 +:100360000001000100010001000100F400F200FBA7 +:1003700000010001000100F000F100FA000100019D +:10038000000100F500F300FC00010001000100F98C +:1003900000FA00F600000001000100010000000169 +:1003A0000000000100A800010000000100000001A1 +:1003B0000001000100A900AA0000000100010001E5 +:1003C000000100010001000100010001000100AC7A +:1003D000000100B600010001000100AB0050000167 +:1003E00000010001000100520051000100AE0001B7 +:1003F00000010001004F00000001000100010001A8 +:1004000000010000000100010001000100010001E5 +:1004100000010001000100010001000100010001D4 +:1004200000010001000100010001000100010001C4 +:1004300000010001000100010001000100000001B5 +:100440000001000100000001000000010004300173 +:1004500000000001000000010005300630093001F5 +:1004600000000001000A300B3008300100010001DB +:10047000000100073001000100010001000100013E +:100480000001000100010001000100010001000164 +:100490000001000100010001000100010001000055 +:1004A0000001000100010001000100000001000145 +:1004B00000010001000100010001000100500001E5 +:1004C0000001000100010052005100010001000183 +:1004D00000010001004F00010001000100010001C6 +:1004E0000001000100000001000100010000000106 +:1004F00000000001000100010000000100000001F7 +:10050000003F00520051002302000001004000247F +:100510000021001E00270001004100250022001FCD +:1005200000370001004200260023002000270001C0 +:10053000004300300230002402270201004400453D +:1005400000380001000100000001000100E100018D +:1005500000E0000000010001000100010001003D79 +:100560000001000100010001000100E000010001A4 +:10057000000100010001002C000100010001000148 +:100580000001003C00010001000100010000003AF0 +:1005900000010001000000010000003B000E3001DE +:1005A0000000000100000001000100010001000145 +:1005B0000000000100010001000100010001000134 +:1005C0000001000100010001000100010001000123 +:1005D0000001000100010001000100010001000113 +:1005E0000001000100010001000100010001000004 +:1005F000000A002530313662003A2000253032589A +:10060000000A722F632030313233343536373839AF +:100610004142434445460A000A00253032580062F0 +:100620006F756E6365213A20006C6566742073698E +:1006300064652061747461636865640A006C656652 +:10064000742073696465206E6F7420726573706FB7 +:100650006E64696E670A00747279696E6720746FE0 +:10066000207265736574206D637032333031380ADF +:10067000000A44454255473A20656E61626C6564E4 +:100680002E0A005B735D004B6579626F61726420B6 +:1006900073746172742E0A005B575D005B535D00DA +:1006A0005B525D005B445D005B435D0016034500EB +:1006B000720067006F0044006F0078002000450062 +:1006C0005A00000016034500720067006F004400E6 +:1006D0006F007800200045005A0000000403090460 +:1006E00009028D00050100A0FA09040000010301C0 +:1006F0000100092111010001223F000705810308C3 +:10070000000A09040100010301020009211101008E +:1007100001224D000705820308000A0904020001B6 +:1007200003000000092111010001223600070583A2 +:100730000308000A09040300020300000009211154 +:1007400001000122200007058403200001070504A1 +:100750000320000109040400010300000009211125 +:100760000100012239000705850310000112011064 +:100770000100000008EDFE07130100010200010561 +:10078000010906A101050719E029E71500250195D2 +:100790000875018102050819012905950575019162 +:1007A00002950175039101050719002977150025A8 +:1007B00001957875018102C00631FF0974A1010914 +:1007C00075150025FF95207508810209761500250D +:1007D000FF952075089102C005010980A1018502DD +:1007E00016010026B7001A01002AB70075109501FE +:1007F0008100C0050C0901A1018503160100269C9A +:10080000021A01002A9C02751095018100C00501A1 +:100810000902A1010901A100050919012905150015 +:100820002501950575018102950175038101050179 +:10083000093009311581257F95027508810609382F +:100840001581257F950175088106050C0A3802156A +:1008500081257F950175088106C0C005010906A1A3 +:1008600001050719E029E7150025019508750181A3 +:10087000029501750881010508190129059505757D +:100880000191029501750391010507190029FF15D2 +:100890000025FF950675088100C00A0025303258F2 +:1008A00020006B6579626F6172645F7265706F7250 +:1008B000743A20000A0025303258006B6579626F67 +:1008C0006172645F7365745F6C65643A200064658F +:1008D0006C5F6B65795F6269743A2063616E27743F +:1008E0002064656C3A20253032580A006164645FE8 +:1008F0006B65795F6269743A2063616E2774206169 +:1009000064643A20253032580A00646F6E652E0AFE +:1009100000626F6F676D61676963207363616E3A30 +:10092000202E2E2E2000290A002575002F00257567 +:10093000005D280025640020002564002000256457 +:100940000020002564007C0025303258006D6F7552 +:1009500073656B6579205B62746E7C782079207694 +:1009600020685D287265702F61636C293A205B00F6 +:100970006D6B5F776865656C5F74696D655F746FDB +:100980005F6D6178203D2025640A006D6B5F77689C +:1009900065656C5F6D61785F7370656564203D208F +:1009A00025640A006D6B5F74696D655F746F5F6DC0 +:1009B0006178203D2025640A006D6B5F6D61785F72 +:1009C0007370656564203D2025640A006D6B5F6966 +:1009D0006E74657276616C203D2025640A006D6B33 +:1009E0005F64656C6179203D2025640A006D6B5F52 +:1009F000776865656C5F74696D655F746F5F6D6165 +:100A000078203D2025640A006D6B5F776865656C12 +:100A10005F6D61785F7370656564203D2025640AB1 +:100A2000006D6B5F74696D655F746F5F6D617820D9 +:100A30003D2025640A006D6B5F6D61785F737065A2 +:100A40006564203D2025640A006D6B5F696E7465E6 +:100A50007276616C203D2025640A006D6B5F6465D1 +:100A60006C6179203D2025640A000A002575003656 +:100A70003A20776865656C5F74696D655F746F5F58 +:100A80006D61783A20000A00257500353A207768B4 +:100A900065656C5F6D61785F73706565643A2000B1 +:100AA0000A00257500343A2074696D655F746F5FC4 +:100AB0006D61783A20000A00257500333A206D6197 +:100AC000785F73706565643A20000A00257500320E +:100AD0003A20696E74657276616C286D73293A20CC +:100AE000000A00257500313A2064656C6179282A76 +:100AF00031306D73293A20000A092D2056616C753A +:100B00006573202D0A004D3E004D25643E20003FB8 +:100B1000007365742064656661756C740A00433EF9 +:100B2000200077686572652064656C74613A2063A3 +:100B30007572736F723D25642C20776865656C3D16 +:100B400025640A53656520687474703A2F2F656EAA +:100B50002E77696B6970656469612E6F72672F7794 +:100B6000696B692F4D6F7573655F6B6579730A00EB +:100B70000A092D204D6F7573656B6579202D0A4527 +:100B800053432F713A09717569740A313A096465E2 +:100B90006C6179282A31306D73290A323A09696EFD +:100BA00074657276616C286D73290A333A096D6138 +:100BB000785F73706565640A343A0974696D655FBE +:100BC000746F5F6D61780A353A09776865656C5FA7 +:100BD0006D61785F73706565640A363A0977686598 +:100BE000656C5F74696D655F746F5F6D61780A0A2B +:100BF000703A097072696E742076616C7565730A5B +:100C0000643A097365742064656661756C74730A6F +:100C100075703A092B310A646F776E3A092D310AE3 +:100C2000706775703A092B31300A7067646F776EA0 +:100C30003A092D31300A0A7370656564203D2064DD +:100C4000656C7461202A206D61785F7370656564DE +:100C5000202A2028726570656174202F2074696DC8 +:100C6000655F746F5F6D6178290A003F004D3E201B +:100C700000433E20004C25640A000A092D20436FE2 +:100C80006E736F6C65202D0A4553432F713A0971BD +:100C90007569740A6D3A096D6F7573656B65790ACC +:100CA000000A092D204D61676963202D0A643A0905 +:100CB00064656275670A783A096465627567206DD4 +:100CC00061747269780A6B3A096465627567206BB2 +:100CD0006579626F6172640A6D3A0964656275676D +:100CE000206D6F7573650A763A0976657273696F60 +:100CF0006E0A733A097374617475730A633A09630F +:100D00006F6E736F6C65206D6F64650A302D343AB9 +:100D1000096C61796572302D34284631302D4634A6 +:100D2000290A506175733A09626F6F746C6F616460 +:100D300065720A653A09656570726F6D0A6E3A09E7 +:100D40004E4B524F0A7A3A09736C656570204C45D8 +:100D50004420746573740A000A002575002E6E6BBA +:100D6000726F3A20000A002575002E737761705F5C +:100D70006261636B736C6173685F6261636B7370F4 +:100D80006163653A20000A002575002E7377617053 +:100D90005F67726176655F6573633A20000A0025BC +:100DA00075002E6E6F5F6775693A20000A00257521 +:100DB000002E737761705F72616C745F7267756922 +:100DC0003A20000A002575002E737761705F6C6110 +:100DD0006C745F6C6775693A20000A002575002EF7 +:100DE000636170736C6F636B5F746F5F636F6E745E +:100DF000726F6C3A20000A002575002E73776170BF +:100E00005F636F6E74726F6C5F636170736C6F633E +:100E10006B3A20000A0025303258006B65796D610D +:100E2000705F636F6E6669672E7261773A20000AA1 +:100E3000002575002E6D6F7573653A20000A002538 +:100E400075002E6B6579626F6172643A20000A004A +:100E50002575002E6D61747269783A20000A0025AC +:100E600075002E656E61626C653A20000A002530BF +:100E700032580064656275675F636F6E6669672EDE +:100E80007261773A20000A00257500646566617515 +:100E90006C745F6C617965723A20003F004E4B5272 +:100EA0004F3A206F66660A004E4B524F3A206F6EE3 +:100EB0000A0074696D65725F636F756E743A202500 +:100EC00030346C580A006B6579626F6172645F6ED2 +:100ED0006B726F3A2025580A006B6579626F6172F8 +:100EE000645F69646C653A2025580A006B65796215 +:100EF0006F6172645F70726F746F636F6C3A2025FC +:100F0000580A00686F73745F6B6579626F61726411 +:100F10005F6C65647328293A2025580A000A092D58 +:100F200020537461747573202D0A004743433A209F +:100F3000342E392E33204156522D4C4942433A200B +:100F4000312E382E31204156525F415243483A20CB +:100F5000617672350A004F5054494F4E533A204C37 +:100F600055464120424F4F544D41474943204D4F34 +:100F70005553454B45592045585452414B455920EE +:100F8000434F4E534F4C4520434F4D4D414E44200F +:100F90004E4B524F203531320A004255494C443AAB +:100FA00020666437326134362D6469727479202882 +:100FB00032313A35313A3231204A616E20323420B2 +:100FC00032303136290A005649443A2030784645B5 +:100FD0004544284572676F446F7820455A29205050 +:100FE00049443A20307831333037284572676F44AE +:100FF0006F7820455A29205645523A2030783030B3 +:1010000030310A00444553433A20742E6D2E6B2E26 +:10101000206B6579626F617264206669726D7761B9 +:10102000726520666F72204572676F646F780A0080 +:101030000A092D2056657273696F6E202D0A000A09 +:101040006D6F7573653A206F66660A000A6D6F757D +:1010500073653A206F6E0A000A6B6579626F617280 +:10106000643A206F66660A000A6B6579626F617286 +:10107000643A206F6E0A000A6D61747269783A20D2 +:101080006F66660A000A6D61747269783A206F6E45 +:101090000A000A64656275673A206F6E0A000A6486 +:1010A000656275673A206F66660A000A0A626F6FAA +:1010B000746C6F616465722E2E2E2000433E2000FA +:1010C0006565636F6E6669673A0A00536C656570A3 +:1010D000204C454420746573740A00000000000031 +:1010E000000000000000010204060A0F17202C3A3D +:1010F0004A5D71879DB3C7DAE9F5FCFFFCF5E9DAD3 +:10110000C7B39D87715D4A3A2C20170F0A06040267 +:1011100001000000000000000000000011241FBEBC +:10112000CFEFDAE0DEBFCDBF04B603FE24C080916E +:10113000FB019091FC01A091FD01B091FE0187306F +:10114000904BA740B04BB9F41092FB011092FC01F8 +:101150001092FD011092FE0114BE84B7877F84BFF8 +:1011600088E10FB6F89480936000109260000FBE83 +:10117000E0E0FFE3099511E0A0E0B1E0E6E9F0E688 +:1011800002C005900D92AA33B107D9F711E0AAE386 +:10119000B1E001C01D92AB3FB107E1F70E94091217 +:1011A0000C9449300C940000FF93EF93E0913A01C6 +:1011B000F0913B01309709F00995EF91FF91089567 +:1011C000FC018591803011F0EFDFFBCF0895FF2700 +:1011D000E0E230E247FF0CC0419597FF09C0EDE225 +:1011E0006095709580959095611D711D811D911D73 +:1011F00027FF02C0219530E350E2AA27660F771F30 +:10120000881F991FAA1FA41710F0A41B63955A9555 +:10121000A9F7AA3008F0A95FA05DAF93F395611517 +:1012200071058105910541F7ED3211F4EF93F395C6 +:10123000F21718F43F93F395FBCF8F91B5DFFA9532 +:10124000E1F70895E991F9918591803021F0853297 +:1012500019F0AADFF9CF089520E0E89455915532AE +:10126000C1F3503311F4689455915A3348F45053F4 +:1012700090F3220F022E220F220F200D250FF4CF04 +:101280000EF4219589919991533619F3533729F129 +:10129000533559F1BC0188279927E8945C3621F42D +:1012A0008991999168945591543639F446EF7EF0BE +:1012B00077FF0DC08FEF9FEF0AC055374AE039F036 +:1012C000583540E121F0523642E009F00895FF938D +:1012D000EF937DDFEF91FF91B7CFFF93EF93FC0189 +:1012E00081918030B9F360DFFBCFFF93EF9368DF2C +:1012F000F1CFDF93CF93CDB7DEB72596A3DFCF91A4 +:10130000DF910895462F50E04F30510508F0DEC0C0 +:10131000DC01FA01EA5AFF4F12968C910C94FE2FD1 +:10132000882321F085EE0E94E618D0C085EE0E9449 +:10133000AE19CCC0882349F00E943F2490933D0110 +:1013400080933C0188EF91E0089580913C01909159 +:101350003D010E944B24873991050CF0A8C08AEE0C +:1013600091E00895882349F00E943F2490933D0125 +:1013700080933C0187EE91E0089580913C0190912B +:101380003D010E944B24873991050CF093C089EDF3 +:1013900091E00895882349F00E943F2490933D01F5 +:1013A00080933C0182ED91E0089580913C01909101 +:1013B0003D010E944B24873991050CF07EC080ECE2 +:1013C00091E00895882349F00E943F2490933D01C5 +:1013D00080933C018BEB91E0089580913C019091CA +:1013E0003D010E944B24873991050CF069C08DEABC +:1013F00091E00895882349F00E943F2490933D0195 +:1014000080933C0188EA91E0089580913C0190919D +:101410003D010E944B24873991050CF054C08AE9A4 +:1014200091E00895882309F451C085E891E008957A +:10143000882309F44BC080E791E00895882309F4DC +:1014400045C08BE591E00895882309F43FC086E408 +:1014500091E008958823D1F18DE391E008958823E8 +:10146000A9F188E291E00895882381F183E191E078 +:101470000895882359F18EEF90E00895882331F183 +:101480008091BE019091BF01A091C001B091C101B6 +:1014900020E2822780729927AA27BB278093BE016A +:1014A0009093BF01A093C001B093C1010FC085EF1D +:1014B00091E0089584EE91E008958BEC91E0089519 +:1014C00086EB91E0089583EA91E0089580E090E052 +:1014D000089508956091BE017091BF018091C0018F +:1014E0009091C1010E94742356985E9825982D987A +:1014F00026982E9827982F98833099F028F48130D9 +:1015000041F0823049F00895843049F0853061F02F +:101510000895259A2D9A0895269A2E9A0895259A27 +:101520002D9A279A2F9A0895259A2D9A269A2E9ABF +:10153000279A2F9A08958AE69AE0892B11F00E9443 +:101540006A0A80E090E0089556985E9825982D9854 +:1015500026982E9827982F988FEF90E090938900E7 +:101560008093880090938B0080938A0090938D00E5 +:1015700080938C00259A2D9A2FEF80E792E02150DE +:1015800080409040E1F700C00000269A2E9A2FEF8D +:1015900080E792E0215080409040E1F700C00000D9 +:1015A000279A2F9A2FEF80E792E0215080409040B9 +:1015B000E1F700C0000025982D982FEF80E792E01A +:1015C000215080409040E1F700C0000026982E98FE +:1015D0002FEF80E792E0215080409040E1F700C07B +:1015E000000027982F9856985E9825982D98269851 +:1015F0002E9827982F98089589EA8093800089E093 +:101600008093810024982C983F988AB18F748AB96E +:101610006E98479A8BB1806B8BB9769A0E94A40A18 +:1016200089E69AE0892B11F00E94690A80E090E037 +:10163000089580E28093000180913E0181110EC0E7 +:101640000E94680B81E080933E012FEF83ED90E3D1 +:10165000215080409040E1F700C0000080E40E94EB +:101660006E0B8093000181112EC00E94980B809315 +:101670000001811128C00E94980B80930001811104 +:1016800022C08FE30E94980B8093000181111BC040 +:101690000E94900B80E40E946E0B809300018111E8 +:1016A00012C08CE00E94980B8093000181110BC046 +:1016B0000E94980B80930001811105C08FE30E9466 +:1016C000980B809300010E94900B80910001089577 +:1016D0001092B9008AE08093B800089594EA90933C +:1016E000BC009091BC0097FFFCCF9091B900987F0F +:1016F000983021F0903111F081E008958093BB0083 +:1017000084E88093BC008091BC0087FFFCCF80916F +:10171000B900887F883111F0803471F780E0089536 +:1017200084E98093BC008091BC0084FDFCCF0895C7 +:101730008093BB0084E88093BC008091BC0087FF4D +:10174000FCCF9091B900987F81E0983209F480E055 +:10175000089584E88093BC008091BC0087FFFCCF93 +:101760008091BB00089580910001811115C080E433 +:101770000E946E0B8093000181110CC082E10E94D7 +:10178000980B80930001811105C08FEF0E94980B88 +:10179000809300010E94900B84B1807F84B985B151 +:1017A000807F85B98AB1837F8AB98BB1837F8BB9FA +:1017B0003E98469808950E94190B809300010E945C +:1017C000B30B80B38C7080BB81B3836F81BBA0E40B +:1017D000B1E0EEE4F1E08EE08E0F11921D928E13D7 +:1017E000FCCF8CEF9AE0892B11F00C94FC0A089541 +:1017F0009F92AF92BF92CF92DF92EF92FF920F93A0 +:101800001F93CF93DF93809100018823E1F08091B3 +:101810003F018F5F80933F01811115C087E596E0FE +:101820000E94E0080E94190B80930001882329F090 +:101830008DE396E00E94E00806C089E296E00E94EF +:10184000E0080E94A40A00E411E0C0E0D0E0BB245C +:10185000B39482E0A82ECC24C394D12C2AE1E22EAA +:1018600026E0F22EC730D10500F5809100018111EC +:1018700064C080E40E946E0B80930001811112C04D +:1018800082E10E94980B8093000181110BC0C60178 +:101890000C2E01C0880F0A94EAF780950E94980BDD +:1018A000809300010E94900B48C0CA30A1F028F438 +:1018B000C83059F0C93061F005C0CC3089F070F003 +:1018C000CD3089F0209A289810C0219A29980DC00F +:1018D000229A2A980AC0239A2B9807C0529A01C0CC +:1018E000539A5B9802C03E9A469890EA9A95F1F70F +:1018F0009FB1799902C082E001C080E091709B2580 +:10190000982B7C9902C084E001C080E0892B7D99EE +:1019100002C038E001C030E0832B7E9902C020E194 +:1019200001C020E0822B9FB19095991F9927991FA4 +:101930009295990F907E892B10C0809100018111A2 +:1019400074C080E40E946E0B80930001882309F428 +:1019500059C0912C0E94900B892DF8019081981705 +:1019600039F1808380910101882301F18091D901AF +:1019700080FF04C08FE196E00E94E0088091D901C9 +:1019800080FF0CC0809101011F928F93FF92EF9214 +:101990000E9479090F900F900F900F908091D901BC +:1019A00080FF04C088E196E00E94E008A092010157 +:1019B0000E94B30B21960F5F1F4FCE30D10509F067 +:1019C00051CF809101018823B1F0815080930101B2 +:1019D000882339F08FE99FE00197F1F700C00000FC +:1019E0000AC0AEE4B1E0E0E4F1E0CF01825F9191A2 +:1019F0009D938E13FCCF8BE99AE0892BC1F00E9456 +:101A00009B0A15C083E10E94980B8093000181110D +:101A1000A0CF81E40E946E0B80930001811199CFC9 +:101A20000E94A90B982E909495CF80E096CF81E0EC +:101A3000DF91CF911F910F91FF90EF90DF90CF90AA +:101A4000BF90AF909F900895E82FF0E0E25BFE4FCB +:101A500080810895CF92DF92EF92FF920F931F93B0 +:101A6000CF93DF9381E096E00E94E0088EE4E82EB9 +:101A700081E0F82EC0E0D0E09CEFC92E95E0D92E91 +:101A800003EF15E0DF93CF93DF92CF920E947909A5 +:101A900089EF95E00E94E008F70181917F0190E0D5 +:101AA0000E94DA239F938F931F930F930E947909CB +:101AB00081EF95E00E94E00821968DB79EB70896C9 +:101AC0000FB6F8949EBF0FBE8DBFCE30D105D1F6B4 +:101AD000DF91CF911F910F91FF90EF90DF90CF900A +:101AE00008958B3B910578F4883A910540F5853A45 +:101AF0009105D0F48430910508F0B1C08130910592 +:101B000009F4ADC06BC0803E910508F467C0883E03 +:101B1000910508F4A4C09C01205F310920313105F2 +:101B200008F05CC090650895853A910509F459C0A4 +:101B3000863A910509F058C082E890E40895883A01 +:101B4000910509F454C0893A910509F453C08A3AC1 +:101B5000910509F452C08B3A910509F451C08C3AB1 +:101B6000910509F450C08D3A910509F44FC0803BAE +:101B7000910509F44EC08E3A910509F44DC08F3A93 +:101B8000910509F44CC0813B910509F44BC0823B9F +:101B9000910509F44AC0833B910509F449C0843B8F +:101BA000910509F448C0853B910509F447C0863B7F +:101BB000910509F446C0873B910509F445C0883B6F +:101BC000910509F444C0893B910509F443C08A3B5F +:101BD000910509F442C080E094E4089580E090E02B +:101BE000089581E890E4089583E890E4089582EEF2 +:101BF00094E4089589EE94E408958AEE94E40895B7 +:101C000085EB94E4089586EB94E4089587EB94E4DF +:101C100008958CEC94E408958DEC94E4089583E8A1 +:101C200095E408958AE895E4089582E995E4089595 +:101C300084E995E4089581E296E4089583E296E4C8 +:101C4000089584E296E4089585E296E4089586E294 +:101C500096E4089587E296E408958AE296E408956A +:101C6000089596E0799FF001112494E5899FE00D95 +:101C7000F11D1124E60FF11DEE0FFF1FEF5FFD4F69 +:101C8000859194910895880F991FFC01E558FF4FA5 +:101C9000859194910895880F991FFC01E550FE4F9E +:101CA00085919491089526E0729FF001112444E5F6 +:101CB000849FE00DF11D1124E60FF11DEE0FFF1FB3 +:101CC000EF5FFD4F859194919C013A9521154FE16D +:101CD000340708F41EC13F512115304120F49F7094 +:101CE0000E944B0E08959C0130532115304118F489 +:101CF0009927906C0895811520E5920769F40E9458 +:101D0000341D4FEF84E39CE0415080409040E1F768 +:101D100000C000000C949A24813020E5920751F411 +:101D200081E796E00E94E0088091D901816080936C +:101D3000D90108959C0130552115304108F051C05A +:101D4000292F33272F70332721303105D9F4AC01E7 +:101D50004370552702C0220F331F4A95E2F73C68B3 +:101D6000AC0164E0440F551F6A95E1F744275370B6 +:101D7000242B352B73E0880F991F7A95E1F7807635 +:101D800099271DC02230310529F4982F8827816FAB +:101D9000906A089523303105A9F4AC0143705527AA +:101DA00021E030E002C0220F331F4A95E2F73C6881 +:101DB00043E0880F991F4A95E1F7807E9770822B48 +:101DC000932B089524303105E1F4AC01437055277D +:101DD00021E030E002C0220F331F4A95E2F73A6853 +:101DE000E7CF9C0130572115304118F49F70906265 +:101DF00008959C0130582115304118F49F70906A65 +:101E00000895803E9105E0F4803C910558F58133BA +:101E1000910509F46FC048F48932910509F463C053 +:101E20008A32910509F46DC072C089339105E9F0D9 +:101E300082389105D1F08533910509F44DC067C012 +:101E4000833E910581F138F4803E9105B9F0823EE0 +:101E50009105D9F05CC0863E910561F1873E910500 +:101E6000A1F155C00E94430E08952091EC0120FD80 +:101E700002C021FF4CC080EE90E049C08091EC018F +:101E800080FFF9CF89E390E042C08091EC0182FFAE +:101E90000EC08091EC0184FF03C080E090E037C069 +:101EA00083EE90E034C08091EC0182FFF2CF82EEAD +:101EB00090E02DC08091EC0183FF0BC08091EC017C +:101EC00084FDEBCF87EE90E022C08091EC0183FF90 +:101ED000F5CF86EE90E01BC08091EC0185FF07C036 +:101EE00089E290E014C08091EC0185FFF9CF85E391 +:101EF00090E00DC08091EC0186FF07C08AE290E07F +:101F000006C08091EC0186FFF9CF81E390E00E944A +:101F1000710D0895089580916F0108959FB7F89409 +:101F200010925E019FBF9091F201943009F057C06A +:101F30009091E9009F703091EC00232F217030FDCB +:101F400020E8922B24E02093E9002091EB0020FF71 +:101F500043C02091EE0027FF3FC020915C01222367 +:101F600021F02091E80025FF37C010925C0126E0A7 +:101F70003091E80035FD15C03091F201343061F543 +:101F80003091EB0035FD28C0215021F481E0809391 +:101F90005C0122C0EFE9FFE03197F1F700C00000DB +:101FA000E7CF8093F1008091E80085FD0AC0809121 +:101FB000E80080FFFCCF8091E8008E778093E800F6 +:101FC00006C08FB7F89421E020935E018FBF9F7009 +:101FD0009093E90080E008959F709093E9008FEF5F +:101FE0000895CF93DF9300D01F92CDB7DEB79C0149 +:101FF0008091F201843019F593E099833B832A8321 +:102000009093E9008FEF9091E800815095FD06C014 +:1020100095ED9A95F1F700008111F5CF8091E800D8 +:1020200085FF0DC040E050E063E070E0CE01019616 +:102030000E94C1128091E8008E778093E8000F9093 +:102040000F900F90DF91CF910895CF93DF9300D041 +:102050001F92CDB7DEB72091F201243021F522E0A6 +:1020600029839B838A8383E08093E9008FEF90919B +:10207000E800815095FD06C095ED9A95F1F70000B6 +:102080008111F5CF8091E80085FF0DC040E050E060 +:1020900063E070E0CE0101960E94C1128091E800D9 +:1020A0008E778093E8000F900F900F90DF91CF9183 +:1020B00008952091F2012430F1F422E02093E90008 +:1020C0002FEF3091E800215035FD06C035ED3A95EF +:1020D000F1F700002111F5CF2091E80025FF0BC09A +:1020E00040E050E065E070E00E94C1128091E8009D +:1020F0008E778093E8000895CF93DF932091F201CB +:10210000243009F048C0EC0180910C018823E1F0F3 +:1021100080910D018823C1F085E08093E9008FEF65 +:102120009091E800815095FD06C095E19A95F1F7F0 +:1021300000008111F5CF8091E80085FF2CC040E0C0 +:1021400050E060E170E017C081E08093E9008FEF1C +:102150009091E800815095FD06C095ED9A95F1F7B4 +:1021600000008111F5CF8091E80085FF14C040E0A8 +:1021700050E068E070E0CE010E94C1128091E8005A +:102180008E778093E80080E1FE01AFE5B1E0019039 +:102190000D928A95E1F7DF91CF91089588EA96E054 +:1021A0000E94E0088091F101811109C00E9456143B +:1021B0000E94B3148091E20084608093E20008954D +:1021C00084EA96E00E94E0081092F101089580EA06 +:1021D00096E00C94E0088CE996E00E94E0080C94EC +:1021E0006A2E88E996E00E94E0080E9430240E944E +:1021F000702E0E9458170C948A0F20915D012F5F5A +:10220000822F62E30E94DE2F992319F020935D0153 +:10221000089510925D0180915E01882371F1809193 +:10222000F201843041F58091E9008F702091EC003B +:10223000922F917020FD90E8892B94E09093E90013 +:102240009091EB0090FF14C09091EE0097FF10C0AA +:102250009091E80095FF03C01092F100F9CF9091A2 +:10226000E80090FF05C09091E8009E779093E80009 +:102270008F708093E90010925E01089542E061EC56 +:1022800081E00E94D01342E061EC82E00E94D01312 +:1022900042E061EC83E00E94D01342E261EC84E012 +:1022A0000E94D01342E161EC85E00C94D013809140 +:1022B000F401833009F455C030F4813071F082307C +:1022C00009F48EC008958A3009F47AC08B3009F47D +:1022D00060C0893009F09CC020C08091F301813A30 +:1022E00009F096C08091E800877F8093E800809194 +:1022F000F7019091F801892B21F460E18FE591E0DD +:1023000003C060E080E090E070E00E940C138091D8 +:10231000E8008B778093E80008958091F301813283 +:1023200009F076C08091F7019091F801009719F0BB +:10233000049709F06DC08091E800877F8093E800E2 +:102340008091E80082FD05C08091F2018111F8CFF3 +:102350005FC08091F10080936F018091E8008B77DE +:1023600053C08091F301813A09F052C08091F70186 +:102370009091F801892B09F04BC08091E800877F8C +:102380008093E8008091E80080FFFCCF80910C01F1 +:1023900036C08091F3018132D9F58091F701909197 +:1023A000F801892BA9F58091E800877F8093E800E8 +:1023B0000E9405148091F50180930C010C94341D4A +:1023C0008091F301813221F58091E800877F80932D +:1023D000E8000E9405148091F60180937001089531 +:1023E0008091F301813AA1F48091E800877F809386 +:1023F000E8008091E80080FFFCCF8091700180931D +:10240000F1008091E8008E778093E8000C94051429 +:10241000089584B7877F84BF88E10FB6F8948093CE +:102420006000109260000FBE90E080E80FB6F89454 +:1024300080936100909361000FBE0E94E5170E9497 +:1024400056140E94B3148091E20084608093E200ED +:102450008EE89FE00E946F2378940E9438170E94B4 +:10246000E71782E091E00E9453170E94582E87E8F8 +:1024700096E00E94E0088091F201853089F483E8BB +:1024800096E00E94E0080E94F4238091F0018823E6 +:1024900091F30E941C24882371F30E94AB12EBCFAE +:1024A0000E941518E8CF292F332723303105C9F0B2 +:1024B00064F42130310581F02230310509F043C048 +:1024C0008DE890E020EE36E042C021323105F1F097 +:1024D0002232310541F137C082E190E02DE637E04C +:1024E00036C099278130910541F08230910541F045 +:1024F000892B49F5ECEDF6E005C0E4ECF6E002C00E +:10250000ECEAF6E0849190E09F0121C06530D8F4B8 +:10251000E62FF0E0EE0FFF1FEB5DFE4F20813181D3 +:1025200089E090E014C0653070F470E0FB01EE0FBC +:10253000FF1FE55EFE4F20813181FB01EA5EFE4F09 +:10254000808190E004C080E090E020E030E0FA017B +:1025500031832083089580E189BD82E189BD09B47A +:1025600000FEFDCF8091D8008F7D8093D8008091B0 +:10257000E00082608093E0008091E00081FDFCCF6C +:102580000895CF92DF92EF92FF920F931F93CF9314 +:10259000DF93EC018B016A010E942414811133C086 +:1025A000C114D10439F0F60180819181081B190B07 +:1025B000C80FD91FE12CF12C0115110519F18091DB +:1025C000E80085FD16C08091E8008E778093E800D2 +:1025D000C114D10449F0F60180819181E80EF91E01 +:1025E000F182E08285E00FC00E942414882321F349 +:1025F0000AC089918093F10001501109FFEFEF1A91 +:10260000FF0ADACF80E0DF91CF911F910F91FF9009 +:10261000EF90DF90CF9008952091F9013091FA0169 +:102620002617370748F06115710539F42091E80045 +:102630002E772093E80001C0B90140E061157105D3 +:10264000A9F12091F201222309F443C0253009F4B5 +:1026500042C02091E80023FD40C02091E80022FD07 +:1026600032C02091E80020FFE9CF4091F300209193 +:10267000F20030E0342BFC01CF016115710559F0F7 +:102680002830310540F481918093F1006150710947 +:102690002F5F3F4FF1CF41E02830310509F040E096 +:1026A0002091E8002E772093E800C8CF4111C9CFD0 +:1026B0000AC08091F201882361F0853061F0809139 +:1026C000E80083FD0AC08091E80082FFF2CF80E03D +:1026D000089582E0089583E0089581E008952091AF +:1026E000F9013091FA012617370748F06115710595 +:1026F00039F42091E8002E772093E80001C0B90159 +:10270000FC0120E06115710591F18091F2018823AF +:1027100009F440C0853009F43FC08091E80083FD92 +:102720003DC08091E80082FD2FC08091E80080FFCD +:10273000E9CF2091F3008091F20090E0922B611597 +:10274000710559F08830910540F424912093F100EF +:102750003196615071090196F2CF21E0089709F096 +:1027600020E08091E8008E778093E800CBCF2111A4 +:10277000CCCF0AC08091F201882361F0853061F0EE +:102780008091E80083FD0AC08091E80082FFF2CFCB +:1027900080E0089582E0089583E0089581E008953F +:1027A000982F973058F59093E900981739F0709169 +:1027B000EC002091ED005091F00003C0242F762F03 +:1027C00050E021FF19C03091EB003E7F3093EB00C9 +:1027D0003091ED003D7F3093ED003091EB003160A2 +:1027E0003093EB007093EC002093ED005093F000D9 +:1027F0002091EE0027FF07C09F5FD3CF8F7080939B +:10280000E90081E0089580E008958091F30187FF59 +:1028100011C08091E80082FD05C08091F201811114 +:10282000F8CF11C08091E8008B770BC08091F20146 +:10283000882349F08091E80080FFF8CF8091E8007C +:102840008E778093E80008952091E4003091E500B0 +:1028500095E64091EC00842F817040FF22C080916A +:10286000E80080FD1CC08091F201882391F0853042 +:1028700091F08091EB0085FD10C04091E4005091F3 +:10288000E5004217530729F39A01915011F784E0AC +:10289000089582E0089583E0089581E0089580E03E +:1028A00008954091E80042FFDECF08950E94C414CD +:1028B0000E94CC14E0EEF0E0808181608083E8ED3E +:1028C000F0E080818F77808319BCA7EDB0E08C9118 +:1028D0008E7F8C9380818F7E80831092F10108958A +:1028E0000F931F93CF93DF930E94C4140E94CC14C4 +:1028F000C8EDD0E088818F7788838881806888835D +:1029000088818F7D888319BC1092F2011092EE01AC +:102910001092F0011092EF0100EE10E0F8018081BA +:102920008B7F808388818160888342E060E080E0E3 +:102930000E94D013E1EEF0E080818E7F8083E2EE92 +:10294000F0E0808181608083808188608083F801ED +:1029500080818E7F8083888180618883DF91CF91A1 +:102960001F910F910895E8EDF0E080818F7E8083C4 +:10297000E7EDF0E080818160808384E082BF81E0C8 +:102980008093F1010C947014E8EDF0E080818E7F6B +:1029900080831092E20008951092DA001092E10014 +:1029A00008951F920F920FB60F9211242F933F9309 +:1029B0004F935F936F937F938F939F93AF93BF9347 +:1029C000EF93FF938091E10082FF0BC08091E200C2 +:1029D00082FF07C08091E1008B7F8093E1000E941D +:1029E000FD108091DA0080FF1FC08091D80080FF29 +:1029F0001BC08091DA008E7F8093DA008091D9002D +:102A000080FF0DC080E189BD82E189BD09B400FE6F +:102A1000FDCF81E08093F2010E94CE1005C019BC69 +:102A20001092F2010E94E0108091E10080FF19C035 +:102A30008091E20080FF15C08091E2008E7F80933C +:102A4000E2008091E20080618093E2008091D800F2 +:102A500080628093D80019BC85E08093F2010E94C7 +:102A6000EB108091E10084FF30C08091E20084FF90 +:102A70002CC080E189BD82E189BD09B400FEFDCF93 +:102A80008091D8008F7D8093D8008091E1008F7E67 +:102A90008093E1008091E2008F7E8093E20080913C +:102AA000E20081608093E2008091EE01882311F0C2 +:102AB00084E007C08091E30087FD02C081E001C08F +:102AC00083E08093F2010E94F1108091E10083FF86 +:102AD00029C08091E20083FF25C08091E100877FBB +:102AE0008093E10082E08093F2011092EE018091E8 +:102AF000E1008E7F8093E1008091E2008E7F8093E1 +:102B0000E2008091E20080618093E20042E060E0B8 +:102B100080E00E94D0138091F00088608093F000E4 +:102B20000E94E710FF91EF91BF91AF919F918F911C +:102B30007F916F915F914F913F912F910F900FBEB9 +:102B40000F901F9018951F920F920FB60F9211249D +:102B50002F933F934F935F936F937F938F939F93A5 +:102B6000AF93BF93CF93DF93EF93FF93C091E900AF +:102B7000CF708091EC00D82FD17080FDD0E81092FA +:102B8000E9008091F000877F8093F00078940E94A4 +:102B9000E7151092E9008091F00088608093F000C2 +:102BA000CD2BCF70C093E900FF91EF91DF91CF91D2 +:102BB000BF91AF919F918F917F916F915F914F9155 +:102BC0003F912F910F900FBE0F901F9018951F935C +:102BD000CF93DF93CDB7DEB7AA970FB6F894DEBFD9 +:102BE0000FBECDBFE3EFF1E088E08E0F9091F100D2 +:102BF00091938E13FBCF0E9457118091E80083FFC1 +:102C00001FC18091F3019091F401492F50E04A30A7 +:102C1000510508F015C1FA01EB59FF4F0C94FE2F36 +:102C2000803881F0823809F00BC18091F7018F70F4 +:102C30008093E9008091EB0085FB882780F9109252 +:102C4000E90006C08091EF019091F001911182603E +:102C50009091E800977F9093E8008093F1001092A4 +:102C6000F100C8C0282F2D7F09F0EAC0882319F091 +:102C7000823061F0E5C08091F501813009F0E0C05B +:102C8000933009F080E08093F0012BC08091F50132 +:102C9000811127C08091F7018F7009F4D1C0809312 +:102CA000E9002091EB0020FF1CC0933021F48091BB +:102CB000EB00806214C09091EB0090619093EB0068 +:102CC00021E030E0A90102C0440F551F8A95E2F7C8 +:102CD0004093EA001092EA008091EB0088608093B4 +:102CE000EB001092E9008091E800877F86C0811197 +:102CF000A7C01091F5011F778091E3008078812BA8 +:102D00008093E3008091E800877F8093E8000E9431 +:102D100005148091E80080FFFCCF8091E30080687B +:102D20008093E300111102C082E001C083E0809330 +:102D3000F20186C08058823008F082C08091F5018F +:102D40009091F6018C3D53E0950779F583E08A83F5 +:102D50008AE289834FB7F894DE01139620E03EE0C3 +:102D600051E2E32FF0E050935700E49120FF03C0BD +:102D7000E295EF703F5FEF708E2F90E0EA3010F039 +:102D8000C79601C0C0968D939D932F5F243149F75C +:102D90004FBF8091E800877F8093E8006AE270E08F +:102DA000CE0101960E940C1314C0AE014F5F5F4F1D +:102DB0006091F7010E945312BC01892B09F440C0B5 +:102DC0009091E800977F9093E80089819A810E9412 +:102DD0006F138091E8008B778093E80031C08038D2 +:102DE00079F58091E800877F8093E8008091EE017B +:102DF0008093F1008091E8008E778093E8000E9434 +:102E000005141EC081111CC09091F5019230C0F4D0 +:102E10008091E800877F8093E8009093EE010E9404 +:102E200005148091EE01811106C08091E30087FDB9 +:102E300002C081E001C084E08093F2010E943E1153 +:102E40008091E80083FF0AC08091E800877F80932B +:102E5000E8008091EB0080628093EB00AA960FB6A9 +:102E6000F894DEBF0FBECDBFDF91CF911F910895C3 +:102E7000CF938091F2018823A1F0C091E900CF7037 +:102E80009091EC00892F817090FD80E8C82B109202 +:102E9000E9008091E80083FD0E94E715CF70C093A0 +:102EA000E900CF910895909376018093750108957C +:102EB000E0917501F0917601309721F00190F08159 +:102EC000E02D099480E00895EF92FF920F931F93F5 +:102ED000CF93DF93E0917501F09176013097B1F1D6 +:102EE0008C010280F381E02D09958091D90182FF48 +:102EF0002DC080FF04C082EA98E00E94E008E8014B +:102F000010E18CE9E82E88E0F82E8091D90180FF4D +:102F10000BC088811F928F93FF92EF920E947909D4 +:102F20000F900F900F900F90115021961111EDCF2F +:102F30008091D90180FF0AC08AE998E0DF91CF91A2 +:102F40001F910F91FF90EF900C94E008DF91CF91CB +:102F50001F910F91FF90EF900895E0917501F0910E +:102F60007601309721F00480F581E02D09940895D1 +:102F700020917301309174018217930771F090933F +:102F8000740180937301E0917501F091760130979F +:102F900021F00680F781E02D0994089520917101B8 +:102FA000309172018217930771F0909372018093B0 +:102FB0007101E0917501F0917601309721F0008464 +:102FC000F185E02D0994089508950C94E4170E946A +:102FD00036240E94DB0B0C94FC24CF93C82F8091E5 +:102FE000D90182FF1EC080FF04C08BEB98E00E94D5 +:102FF000E0088091D90180FF0CC01F92CF9386EB2F +:1030000098E09F938F930E9479090F900F900F90F3 +:103010000F908091D90180FF04C084EB98E00E945A +:10302000E0088C2FCF910C948A0FCF92DF92EF9211 +:10303000FF920F931F93CF93DF93CDB7DEB72B97FC +:103040000FB6F894DEBF0FBECDBF0E94F80B88E725 +:10305000C82E81E0D82E00E010E0E02E802F0E94E4 +:10306000240DF60141916F01F42EF826B1F40F5FA3 +:103070001F4F0E30110589F78FEF89838A831B82DA +:103080000E943F248160782F9D838C8349815A81DF +:103090006B818D810E94B81840C09091D90191FF39 +:1030A00004C08B870E942A0D8B8520E030E04F2DD5 +:1030B00050E0922FBA01022E02C0759567950A94CE +:1030C000E2F760FF24C02E83EF8221E030E0690147 +:1030D00002C0CC0CDD1C9A95E2F790E08C219D217A +:1030E000892B09F420E028870E943F248160782FF3 +:1030F0009A8789874E815F8168858A850E94B81882 +:10310000F801E858FE4F8081C826C08206C02F5FB4 +:103110003F4F2630310569F6AACF0E946D281091E5 +:1031200077010E9458171817A1F00E945817809332 +:1031300077012B960FB6F894DEBF0FBECDBFDF919F +:10314000CF911F910F91FF90EF90DF90CF900C9453 +:10315000ED172B960FB6F894DEBF0FBECDBFDF91F3 +:10316000CF911F910F91FF90EF90DF90CF90089536 +:10317000CF93DF93CDB7DEB72B970FB6F894DEBFB2 +:103180000FBECDBF4F83588769877A878B87DE0153 +:10319000119686E0FD0111928A95E9F785E0FE011E +:1031A000379601900D928A95E1F749815A816B819A +:1031B0007C818D819E810E94CE1F2B960FB6F89444 +:1031C000DEBF0FBECDBFDF91CF910895CF9388238F +:1031D00009F4C2C0C82F823859F40E94581781FDE3 +:1031E000BBC089E30E946A220E94492389E30CC084 +:1031F000833879F40E94581780FDAEC083E50E94A1 +:103200006A220E94492383E50E94BD22CF910C943B +:103210004923843859F40E94581782FD9DC087E4E1 +:103220000E946A220E94492387E4EECF8CEF8C0F24 +:10323000813A48F48C2F0E94002D81118DC08C2F73 +:103240000E946A22E3CF80E28C0F883048F4C77076 +:1032500081E001C0880FCA95EAF70E941223D6CFF9 +:103260008BE58C0F833078F4C53A29F0C63A31F0FB +:1032700083E890E005C081E890E002C082E890E039 +:10328000CF910C94B81788E58C0F833108F064C097 +:10329000C83A39F1C93A41F1CA3A49F1CB3A51F148 +:1032A000CC3A59F1CD3A61F1C03B69F1CE3A71F1B6 +:1032B000CF3A79F1C13B81F1C23B89F1C33B91F136 +:1032C000C43B99F1C53BA1F1C63BA9F1C73BB1F1A4 +:1032D000C83BB9F1C93BC1F1CA3BC9F180E090E0FC +:1032E00038C082EE90E035C089EE90E032C08AEEC0 +:1032F00090E02FC085EB90E02CC086EB90E029C0D9 +:1033000087EB90E026C08CEC90E023C08DEC90E041 +:1033100020C083E891E01DC08AE891E01AC082E9EC +:1033200091E017C084E991E014C081E292E011C0FD +:1033300083E292E00EC084E292E00BC085E292E06C +:1033400008C086E292E005C087E292E002C08AE20D +:1033500092E0CF910C94CE17CF910895882309F471 +:103360004BC0823859F40E94581781FF45C089E349 +:103370000E946A220E94492389E30CC0833871F4B9 +:103380000E94581780FF38C083E50E946A220E947D +:10339000492383E50E94BD220C944923843859F4C3 +:1033A0000E94581782FF28C087E40E946A220E9468 +:1033B000492387E4EFCF9CEF980F913A58F390E2BE +:1033C000980F983050F4877091E001C0990F8A955A +:1033D000EAF7892F0E941823DFCF9BE5980F9330DF +:1033E00020F480E090E00C94B817885A833120F4E0 +:1033F00080E090E00C94CE170895882321F00E947D +:1034000012230C9449230895882321F00E94182345 +:103410000C9449230895BF92CF92DF92EF92FF92CE +:103420000F931F93CF93DF9300D000D000D0CDB780 +:10343000DEB725E0FC01DE01119601900D922A9580 +:10344000E1F7FC01408131810281258122952F70B5 +:1034500063817481672B09F4E5C23F3F19F44F3F44 +:1034600009F4E0C27C0149833A8389819A812E83E1 +:103470000E942922182FB92E0E9428220E94EF2094 +:10348000EB2DE295EF70F0E0E159FF4F2E810C94A7 +:10349000FE2F8B2D807F9B2D9F70F92E882319F096 +:1034A000F29480EFF822002349F0FF2009F467C26C +:1034B0008F2D0E9422230E94492361C2812F0E94E6 +:1034C000AE19FF2009F4AEC28F2D0E942823269644 +:1034D0000FB6F894DEBF0FBECDBFDF91CF911F9125 +:1034E0000F91FF90EF90DF90CF90BF900C94492305 +:1034F0003B2D307F8B2D8F70303211F08295807F85 +:10350000112319F0113021F12CC00023B9F022232E +:1035100009F4A0C1213009F09DC126960FB6F89498 +:10352000DEBF0FBECDBFDF91CF911F910F91FF90F6 +:10353000EF90DF90CF90BF900C943223222319F0AC +:10354000213009F46FC28E830E9435238E8196C18B +:10355000002321F0223008F065C27CC1211162C233 +:103560008DC1002321F0222309F474C108C2222353 +:1035700009F484C119C22B2D26952695237030E0BD +:103580002115310521F021303105D1F04BC2002346 +:1035900021F0812F9B2D937002C080E090E0269651 +:1035A0000FB6F894DEBF0FBECDBFDF91CF911F9154 +:1035B0000F91FF90EF90DF90CF90BF900C94B817D1 +:1035C000002321F0812F9B2D937002C080E090E0BA +:1035D00026960FB6F894DEBF0FBECDBFDF91CF9118 +:1035E0001F910F91FF90EF90DF90CF90BF900C94C0 +:1035F000CE17812F002319F00E94F32602C00E94EB +:103600005B2726960FB6F894DEBF0FBECDBFDF91C5 +:10361000CF911F910F91FF90EF90DF90CF90BF90CF +:103620000C94E0278B2D837009F07BC00111FAC147 +:10363000812F829586958770880F880F912F9F70B4 +:10364000C92ED12CE12CF12C082E04C0CC0CDD1C91 +:10365000EE1CFF1C0A94D2F714FF12C04FE050E09A +:1036600060E070E004C0440F551F661F771F8A9505 +:10367000D2F7CB01BA01609570958095909503C003 +:1036800060E070E0CB012B2D269526952370422F0C +:1036900050E042305105D9F04330510569F16C29B1 +:1036A0007D298E299F294130510551F126960FB66B +:1036B000F894DEBF0FBECDBFDF91CF911F910F9168 +:1036C000FF90EF90DF90CF90BF900C9416216C2963 +:1036D0007D298E299F2926960FB6F894DEBF0FBE4E +:1036E000CDBFDF91CF911F910F91FF90EF90DF90B1 +:1036F000CF90BF900C9432210E941621C701B601D1 +:1037000026960FB6F894DEBF0FBECDBFDF91CF91E6 +:103710001F910F91FF90EF90DF90CF90BF900C948E +:10372000FA20002319F08B2D817001C08695882323 +:1037300009F478C1812F829586958770880F880F4C +:10374000912F9F70C92ED12CE12CF12C082E04C092 +:10375000CC0CDD1CEE1CFF1C0A94D2F714FF12C027 +:103760004FE050E060E070E004C0440F551F661F5A +:10377000771F8A95D2F7CB01BA0160957095809535 +:10378000909503C060E070E0CB012B2D2695269527 +:103790002370422F50E042305105D9F0433051059B +:1037A00069F16C297D298E299F294130510551F1FC +:1037B00026960FB6F894DEBF0FBECDBFDF91CF9136 +:1037C0001F910F91FF90EF90DF90CF90BF900C94DE +:1037D000F0216C297D298E299F2926960FB6F89411 +:1037E000DEBF0FBECDBFDF91CF911F910F91FF9034 +:1037F000EF90DF90CF90BF900C940C220E94F021AC +:10380000C701B60126960FB6F894DEBF0FBECDBF36 +:10381000DF91CF911F910F91FF90EF90DF90CF90AC +:10382000BF900C94D421103FD1F118F4103E50F405 +:10383000A1C0123F09F463C008F44CC0133F09F45F +:1038400073C098C01F708B2D8F710023A1F00E9450 +:103850006D21812F26960FB6F894DEBF0FBECDBF27 +:10386000DF91CF911F910F91FF90EF90DF90CF905C +:10387000BF900C94FD190E948E21812F26960FB6C1 +:10388000F894DEBF0FBECDBFDF91CF911F910F9196 +:10389000FF90EF90DF90CF90BF900C94041A00231C +:1038A000A9F02111BFC08B2D8F7126960FB6F89409 +:1038B000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1038C000EF90DF90CF90BF900C94B321223008F09E +:1038D000A9C0E9CF0023A9F08B2D8F7126960FB6D2 +:1038E000F894DEBF0FBECDBFDF91CF911F910F9136 +:1038F000FF90EF90DF90CF90BF900C946D2100234C +:1039000059F38B2D8F7126960FB6F894DEBF0FBE3C +:10391000CDBFDF91CF911F910F91FF90EF90DF907E +:10392000CF90BF900C948E21002399F08B2D8F7136 +:1039300026960FB6F894DEBF0FBECDBFDF91CF91B4 +:103940001F910F91FF90EF90DF90CF90BF900C945C +:10395000582126960FB6F894DEBF0FBECDBFDF917B +:10396000CF911F910F91FF90EF90DF90CF90BF907C +:103970000C944E210023A9F0222309F4ADCF812F0E +:1039800026960FB6F894DEBF0FBECDBFDF91CF9164 +:103990001F910F91FF90EF90DF90CF90BF900C940C +:1039A000E618222309F4ADCF812F26960FB6F8949E +:1039B000DEBF0FBECDBFDF91CF911F910F91FF9062 +:1039C000EF90DF90CF90BF900C94AE194B2D4F70BD +:1039D000612FC7010E94820926960FB6F894DEBFB8 +:1039E0000FBECDBFDF91CF911F910F91FF90EF9050 +:1039F000DF90CF90BF900C9472204B2D4F70612FB1 +:103A0000C70126960FB6F894DEBF0FBECDBFDF917B +:103A1000CF911F910F91FF90EF90DF90CF90BF90CB +:103A20000C94300E26960FB6F894DEBF0FBECDBFB5 +:103A3000DF91CF911F910F91FF90EF90DF90CF908A +:103A4000BF9008950E942F230E9404230E944923BF +:103A50000E9413290E94E02780E090E00E94B8179E +:103A600080E090E00C94CE170E941F230C94221D3E +:103A70000E942922292F22952F7030E02C30310509 +:103A80004CF42A3031056CF42250310922303105D2 +:103A900088F407C02C30310549F02F30310531F062 +:103AA00009C0803E48F0803F29F406C093FB882778 +:103AB00080F9089580E0089581E00895CF93DF9321 +:103AC00000D000D01F92CDB7DEB70F900F900F90AF +:103AD0000F900F90DF91CF910895CF93DF9300D097 +:103AE00000D000D0CDB7DEB726960FB6F894DEBF73 +:103AF0000FBECDBFDF91CF9108951F93CF93DF937A +:103B0000C091860116E080918701C81799F0D0E036 +:103B10001C9FF0011D9FF00D1124E857FE4F4081BE +:103B2000518162817381848195810E946D1D2196EE +:103B3000C770E9CFDF91CF911F9108954091B801EF +:103B40005091B9016091BA017091BB018091BC01A3 +:103B50009091BD010C946D1D8091BD0182958F7077 +:103B600009F054C08091BA01882309F44FC08091B4 +:103B70008601A09187016091B8017091B9014091CF +:103B8000BB015091BC01B6E08A1709F43FC090E038 +:103B900041155105C1F17F3F11F46F3FA1F1B89F6D +:103BA000F001B99FF00D1124E857FE4F21817213E7 +:103BB0002AC02081621327C02281211124C02381C1 +:103BC00034812417350710F421503109241B350B9B +:103BD000283C3105C0F42091BD012F702061209355 +:103BE000BD0126E0289FF001299FF00D1124E35725 +:103BF000FE4F80818F708061808388EB91E00E940E +:103C00000B1A0C947D1D01968770BECF0895CF923C +:103C1000DF92EF92FF920F931F93CF93DF93CDB775 +:103C2000DEB762970FB6F894DEBF0FBECDBF8C0132 +:103C300085E0F801DE011D9601900D928A95E1F76D +:103C4000D8014C9111965C91119712966C91129734 +:103C50001396CD90DC9014973091B8017091B90112 +:103C60008091BB019091BC01009709F46BC17F3F2B +:103C700019F43F3F09F466C1E090BA01EE2009F45F +:103C8000C0C02091BD01C816D90628F0F601E81B76 +:103C9000F90BCF0104C0809590958C0D9D1DFF24DC +:103CA000F394883C910578F0F12C207F09F0C6C090 +:103CB0007C2DD98AC88A89890E945E1D88EB91E093 +:103CC0000E940B1AB1C0822F807F09F046C0751385 +:103CD00014C0341312C0611110C02F7020612093E2 +:103CE000BD010E949E1D88EB91E00E940B1A8091FD +:103CF000BD01D80115968C932EC0CD2819F15F3FD8 +:103D000011F44F3FF9F0F62E61111CC0809186012D +:103D10002091870136E0821709F45AC090E0389F5D +:103D2000F001399FF00D1124E857FE4F71815713B0 +:103D300006C07081471303C07281711103C00196E0 +:103D40008770E9CFF62E662309F418C18091BD0172 +:103D500081608093BD01F12C11C1751308C034132B +:103D600006C0611104C08091BD01D801C3C04D8758 +:103D70005E878D859E856A8B0E94381D6A8988239F +:103D8000E1F16623D1F12091BD01822F82958F70E0 +:103D900090E0029774F08091B8019091B9019887F2 +:103DA0008F831986DB86CA862C87CE0107960E94F0 +:103DB0000B1A86E0F801A8EBB1E001900D928A950C +:103DC000E1F70E94AC1D0E949E1DFF24F394D6C013 +:103DD0004D875E878D859E850E942922292F2295F9 +:103DE0002F7030E0223031050CF0BCC09F7009F01C +:103DF000B6C0805E883008F4C1C0C8010E940B1AAA +:103E0000E4CFC816D90608F453C0F601E81BF90B35 +:103E1000CF01883C910508F450C0F12C7C2DD98A43 +:103E2000C88A89890E945E1DE8EBF1E086E0DF0127 +:103E30001D928A95E9F70E949E1DA0C0751314C0BB +:103E4000341312C0611110C08091BD01F801858347 +:103E5000C8010E940B1A86E0E8EBF1E0DF011D9239 +:103E60008A95E9F7FE2C8AC04D875E878D859E85F1 +:103E70006A8B0E94381D6A89882309F4BECF6623A5 +:103E800009F4BBCF2091BD01822F82958F7090E005 +:103E900002970CF48ECF8091B8019091B9019A836A +:103EA00089831B82DD82CC822E83CE0101967FCF57 +:103EB000809590958C0D9D1DACCFF62E662309F450 +:103EC0009CCF75132EC034132CC02091BD0120FD52 +:103ED0001FC0822F82958F70D9F0D80115962C9330 +:103EE00015978F3049F08F5F982F9295907F822F92 +:103EF0008F70892B15968C93C8010E940B1A86E04F +:103F0000F801A8EBB1E001900D928A95E1F793CF0B +:103F100086E0F801A8EBB1E001900D928A95E1F7F7 +:103F20002DC04D875E878D859E850E94381D81112D +:103F300040CF8091BD0181608093BD01C8010E9486 +:103F40000B1A1CC0662309F458CF4D875E878D85F8 +:103F50009E850E94381D882309F44FCF2ACF8111F6 +:103F600048CF0CC0243031050CF047CF9F7009F4C6 +:103F700040CFF8019581907F09F03BCF8F2D62965D +:103F80000FB6F894DEBF0FBECDBFDF91CF911F916A +:103F90000F91FF90EF90DF90CF9008951F93CF93F4 +:103FA000DF93CDB7DEB72C970FB6F894DEBF0FBE08 +:103FB000CDBF4F83588769877A878B879C87CE01CF +:103FC00007960E94071E882369F08F8198852A85AD +:103FD0003B85232BF1F19F3F09F063C08F3F09F030 +:103FE00060C037C086E0FE013796DE011196019071 +:103FF0000D928A95E1F76F817885EA85FB85309788 +:1040000041F17F3F11F46F3F21F12091870130E0B2 +:10401000C9010196877099274091860150E0841765 +:10402000950709F447C069837A83FD83EC8396E0A2 +:10403000929FD001939FB00D1124A857BE4FFE014F +:10404000319601900D929A95E1F7809387010E9435 +:104050007D1D16E080918601909187018917C1F13D +:10406000189FC001112488579E4F0E94071E882365 +:1040700079F1E09186011E9FF0011124E857FE4F6F +:104080004081518162817381848195810E946D1D7F +:104090008091860190E00196877099278093860130 +:1040A000D9CF4F81588569857A858B859C850E94FB +:1040B0006D1DCFCF0E94341D109287011092860192 +:1040C000E8EBF1E086E0DF011D928A95E9F7C1CFC8 +:1040D0002C960FB6F894DEBF0FBECDBFDF91CF9107 +:1040E0001F910895EF92FF920F931F93CF93DF9349 +:1040F0008C01892B09F46CC0F12CEE24E394E801C7 +:104100002196F8018491843740F4843008F051C03E +:10411000813081F0823019F15BC0853709F444C0E9 +:10412000A8F19CE7980F903708F052C08F770E9453 +:10413000AE1941C00E5F1F4FFE01C49180E28C0F8B +:10414000883048F4C7708E2D01C0880FCA95EAF7F1 +:104150000E94222314C08C2F0E94E6182DC00E5FEF +:104160001F4FFE01C49180E28C0F883058F4C77055 +:104170008E2D01C0880FCA95EAF70E9428230E945D +:1041800049231AC08C2F0E94AE1916C00E5F1F4F14 +:10419000FE01C491CC2381F08FE99FE00197F1F7F4 +:1041A00000C00000C150F6CF0E5F1F4FFE01F4901B +:1041B00003C00E94E6188E018F2D882309F49FCF3B +:1041C000EFE9FFE03197F1F700C000008150F5CF33 +:1041D000DF91CF911F910F91FF90EF900895089577 +:1041E0006093C2017093C3018093C4019093C50191 +:1041F0000C94221D0F931F930091C2011091C301D3 +:104200002091C4013091C501DC01CB01802B912BA1 +:10421000A22BB32B8093C2019093C301A093C4013E +:10422000B093C5011F910F910C94221D0F931F9302 +:104230000091C2011091C3012091C4013091C501C8 +:10424000DC01CB0180239123A223B3238093C201FD +:104250009093C301A093C401B093C5011F910F9126 +:104260000C94221D0F931F930091C2011091C30162 +:104270002091C4013091C501DC01CB018027912739 +:10428000A227B3278093C2019093C301A093C401D6 +:10429000B093C5011F910F910C94221D1092BE0185 +:1042A0001092BF011092C0011092C1010C94221D06 +:1042B00041E050E060E070E004C0440F551F661F0D +:1042C000771F8A95D2F74093BE015093BF01609348 +:1042D000C0017093C1010C94221D41E050E060E0E8 +:1042E00070E004C0440F551F661F771F8A95D2F7F0 +:1042F0008091BE019091BF01A091C001B091C10118 +:10430000482B592B6A2B7B2B4093BE015093BF0146 +:104310006093C0017093C1010C94221D41E050E0F4 +:1043200060E070E004C0440F551F661F771F8A9538 +:10433000D2F740955095609570958091BE0190910F +:10434000BF01A091C001B091C101482359236A2344 +:104350007B234093BE015093BF016093C0017093D3 +:10436000C1010C94221D41E050E060E070E004C007 +:10437000440F551F661F771F8A95D2F78091BE01A3 +:104380009091BF01A091C001B091C1014827592768 +:104390006A277B274093BE015093BF016093C00101 +:1043A0007093C1010C94221D0F931F930091BE01C5 +:1043B0001091BF012091C0013091C101DC01CB01FE +:1043C000802B912BA22BB32B8093BE019093BF0126 +:1043D000A093C001B093C1011F910F910C94221DB5 +:1043E0000F931F930091BE011091BF012091C00156 +:1043F0003091C101DC01CB0180239123A223B3239F +:104400008093BE019093BF01A093C001B093C101FE +:104410001F910F910C94221D0F931F930091BE01C9 +:104420001091BF012091C0013091C101DC01CB018D +:1044300080279127A227B3278093BE019093BF01C5 +:10444000A093C001B093C1011F910F910C94221D44 +:104450000895CF92DF92EF92FF920F931F93CF9325 +:10446000DF938C01C090C201D090C301E090C401E1 +:10447000F090C5014091BE015091BF016091C00113 +:104480007091C101C42AD52AE62AF72ACFE1D0E0EB +:10449000D701C6010C2E04C0B695A79597958795B0 +:1044A0000A94D2F780FF07C0B8018C2F0E94530EE8 +:1044B0008130910531F4219758F7B80180E00E94CE +:1044C000530EDF91CF911F910F91FF90EF90DF90EE +:1044D000CF90089590910C01992321F090910D01B6 +:1044E000911109C020910E0130910F01F90132960E +:1044F0009FEF40E030C0982F9695969596959F3007 +:10450000A0F4E0910E01F0910F01E90FF11D877009 +:1045100021E030E0A90102C0440F551F8A95E2F75F +:10452000CA019181892B818308959091D90190FFCF +:1045300023C01F928F938CEE98E09F938F930E94DD +:1045400079090F900F900F900F9008959F3F39F0C9 +:104550004F5F4E3041F051915813F8CF0DC05111BB +:10456000F7CF942FF5CF9F3F39F0F901E90FF11DF7 +:1045700097FDFA9582830895089590910C019923EF +:1045800021F090910D01911109C020910E013091FF +:104590000F01F9013296205F3F4F30C0982F96955A +:1045A000969596959F30A8F4E0910E01F0910F0139 +:1045B000E90FF11D877021E030E0A90102C0440F2E +:1045C000551F8A95E2F7CA018095918189238183DD +:1045D00008959091D90190FF16C01F928F938EEC91 +:1045E00098E09F938F930E9479090F900F900F90FE +:1045F0000F9008953196E217F30729F090819813F0 +:10460000F9CF1082F7CF089581E090E0E0910E019C +:10461000F0910F01E80FF91F10820196803191058A +:10462000A9F708959091D801892B8093D801089516 +:1046300080959091D80189238093D8010895109294 +:10464000D80108959091D701892B8093D7010895BF +:1046500080959091D70189238093D7010895109276 +:10466000D70108958093C60108951092C601089558 +:1046700080910E0190910F01FC0131969C01205F09 +:104680003F4F80E0919191118F5FE217F307D1F7CF +:104690000895E0910E01F0910F018091D80180837F +:1046A000E0910E01F0910F0190818091D701892B4B +:1046B00080838091C601882361F0E0910E01F09122 +:1046C0000F019081892B80830E94382381111092E1 +:1046D000C60180910E0190910F010C946417909384 +:1046E0003B0180933A010895CF92DF92EF92FF92BF +:1046F0006C01EE24FF24C114D104E104F10421F083 +:10470000C701B60120E101C020E0C72ED82EE92E56 +:10471000FF24C114D104E104F10419F0285FC7019A +:10472000B6016B017C0154E0F694E794D794C794EA +:104730005A95D1F7C114D104E104F10419F02C5FAA +:10474000C701B6016B017C0142E0F694E794D7946F +:10475000C7944A95D1F7C114D104E104F10419F0CA +:104760002E5FC701B601DC01CB01B695A7959795E1 +:104770008795892B8A2B8B2B09F02F5F822FFF9037 +:10478000EF90DF90CF9008958295982F9C7C392FE1 +:1047900036953695282F237344E0249FC0011124B9 +:1047A000932F982B292F2A7A2695892F8575880F84 +:1047B000822B08951F93CF93DF931F92CDB7DEB75F +:1047C00099830E94C423182F9981892F0E94C423A2 +:1047D000212F30E0322F2227A901482BCA010F9048 +:1047E000DF91CF911F9108958091F201843009F1FA +:1047F0001092DA0120E488E190E00FB6F894A895D1 +:10480000809360000FBE2093600083B7817F846037 +:1048100083BF83B7816083BF7894889583B78E7F89 +:1048200083BF88E10FB6F894809360001092600017 +:104830000FBE089508950895CF930E941A240E94F0 +:10484000F80B0E941B24C0E08C2F0E94240D8111C4 +:1048500004C0CF5FCE30C1F701C081E0CF91089591 +:104860000E94341D0E9458170C948A0F82E084BD68 +:1048700093E095BD9AEF97BD80936E0008952FB792 +:10488000F8948091DB019091DC01A091DD01B09161 +:10489000DE012FBF0895CF92DF92EF92FF920F9328 +:1048A0001F932FB7F8944091DB015091DC01609188 +:1048B000DD017091DE012FBF6A017B01EE24FF2430 +:1048C0008C0120E030E0C016D106E206F30610F4B9 +:1048D000415051099A01281B390BC9011F910F91B1 +:1048E000FF90EF90DF90CF9008951F920F920FB638 +:1048F0000F9211248F939F93AF93BF938091DB010D +:104900009091DC01A091DD01B091DE010196A11D25 +:10491000B11D8093DB019093DC01A093DD01B09386 +:10492000DE01BF91AF919F918F910F900FBE0F90BD +:104930001F9018950E945614F8942FEF87EA91E67D +:10494000215080409040E1F700C0000087E090EBEC +:10495000DC018093FB019093FC01A093FD01B093D7 +:10496000FE019CE088E10FB6F894A8958093600062 +:104970000FBE90936000FFCFEF92FF920F931F93B3 +:10498000CF93DF93D82FC0E08C2F0E94240D00E03E +:1049900010E0E82EF12CC701002E02C095958795F6 +:1049A0000A94E2F780FD06C00F5F1F4F0630110525 +:1049B00091F709C0602F7C2F80E00E94310ED81340 +:1049C000F3CF81E004C0CF5FCE30F1F680E0DF911D +:1049D000CF911F910F91FF90EF900895CF93C82F23 +:1049E0008CE20E94BC24882321F08C2FCF910C9460 +:1049F000BC2480E0CF910895CF930E944B26811173 +:104A000002C00E94312681E199E00E94E008C5E6DB +:104A1000C15049F00E94F80B8FE39CE90197F1F730 +:104A200000C00000F5CF8AE099E00E94E00889E22A +:104A30000E94EE24811113C18AE20E94EE248111AA +:104A40000E94312685E00E94EE2481110E949A2462 +:104A50000E9456268093D90187E00E94EE24882385 +:104A6000A9F18BE10E94EE24882351F08091D901B5 +:104A700081FB222720F991E0922790FB81F90EC05B +:104A80008EE00E94EE24882361F08091D90182FBA0 +:104A9000222720F991E0922790FB82F98093D90197 +:104AA00015C080E10E94EE249091D901882341F045 +:104AB00093FB222720F981E0822780FB93F904C031 +:104AC000892F809580FB90F99093D9018091D9012D +:104AD0000E945A260E9468268093EC0180EE0E9474 +:104AE000EE24882341F08091EC01982F909590FB63 +:104AF00080F98093EC0189E30E94EE24882359F029 +:104B00008091EC0181FB222720F991E0922790FB14 +:104B100081F98093EC0182EE0E94EE24882359F003 +:104B20008091EC0182FB222720F991E0922790FBF3 +:104B300082F98093EC0186EE0E94EE24882359F0DE +:104B40008091EC0183FB222720F991E0922790FBD2 +:104B500083F98093EC0183EE0E94EE24882359F0C0 +:104B60008091EC0184FB222720F991E0922790FBB1 +:104B700084F98093EC0185E30E94EE24882359F0A8 +:104B80008091EC0185FB222720F991E0922790FB90 +:104B900085F98093EC0181E30E94EE24882359F08B +:104BA0008091EC0186FB222720F991E0922790FB6F +:104BB00086F98093EC0181E10E94EE24882359F06C +:104BC0008091EC0187FB222720F991E0922790FB4E +:104BD00087F98093EC018091EC010E946C26809112 +:104BE000EC0187FB882780F980930D0187E20E9402 +:104BF000EE24C82F8EE10E94EE248111C2608FE165 +:104C00000E94EE248111C46080E20E94EE24811192 +:104C1000C86081E20E94EE248111C06182E20E949C +:104C2000EE248111C06283E20E94EE248111C064EF +:104C300084E20E94EE24882311F0C06802C0CC23D5 +:104C400029F08C2F0E9463266C2F03C00E945F26E0 +:104C5000682F70E080E090E0CF910C94F020CF912D +:104C600008956DEE7EEF80E090E00E94343060E0C9 +:104C700082E090E00E94263060E083E090E00E94B5 +:104C8000263060E084E090E00E94263060E085E01D +:104C900090E00C94263080E090E00E94203021E0EB +:104CA0008D3E9E4F09F020E0822F089582E090E033 +:104CB0000C941830682F82E090E00C94263083E04A +:104CC00090E00C941830682F83E090E00C9426302C +:104CD00084E090E00C941830682F84E090E00C940D +:104CE00026308091E10180FF0BC06091130185E0C7 +:104CF000689FB001112475956795759567952BC0D0 +:104D000081FF09C06091130185E0689FB001112403 +:104D10007595679520C082FF07C06091130185E0FB +:104D2000689FB001112417C09091E2019923D1F03E +:104D300060911201961788F72091130185E0289F52 +:104D400090011124929FA001939F500D112470E0B7 +:104D5000CA010E94EA2F6038710540F4611571059F +:104D600039F002C065E070E0862F08958FE708955E +:104D700081E008958091E10180FF08C060911101F8 +:104D800070E0759567957595679521C081FF06C0A0 +:104D90006091110170E07595679519C082FF04C09C +:104DA0006091110170E010C09091E2019923C1F06F +:104DB000609110019617A0F780911101899FC001A1 +:104DC000112470E00E94EA2F6038710528F4611503 +:104DD000710521F0862F08958FE7089581E00895E9 +:104DE00061E070E0F4CF803F21F40E94712681954C +:104DF00004C0813F29F40E9471268093E501089543 +:104E0000823F21F40E947126819504C0833F29F4DA +:104E10000E9471268093E4010895893F19F40E944D +:104E2000BA2605C08A3F31F40E94BA268195809344 +:104E3000E60108958B3F21F40E94BA26819504C0B3 +:104E40008C3F29F40E94BA268093E7010895843F9D +:104E500021F48091E301816017C0853F21F48091A6 +:104E6000E301826011C0863F21F48091E3018460F8 +:104E70000BC0873F21F48091E301886005C0883F23 +:104E800031F48091E30180618093E30108958D3FC7 +:104E900021F48091E10181600BC08E3F21F480916B +:104EA000E101826005C08F3F29F48091E1018460B7 +:104EB0008093E1010895803F39F48091E50187FFF7 +:104EC0006CC01092E50169C0813F29F48091E50131 +:104ED0001816BCF362C09091E401823F29F497FF59 +:104EE0005CC01092E40159C0833F19F41916CCF349 +:104EF00054C0893F41F48091E60118160CF04DC072 +:104F00001092E6014AC08A3F29F48091E60187FFAA +:104F100044C0F6CF8B3F39F48091E70187FF3DC055 +:104F20001092E7013AC08C3F29F48091E7011816EE +:104F3000BCF333C0843F21F48091E3018E7F17C01E +:104F4000853F21F48091E3018D7F11C0863F21F4DC +:104F50008091E3018B7F0BC0873F21F48091E301B7 +:104F6000877F05C0883F31F48091E3018F7E809375 +:104F7000E30113C08D3F21F48091E1018E7F0BC0CE +:104F80008E3F21F48091E1018D7F05C08F3F29F490 +:104F90008091E1018B7F8093E1018091E401811197 +:104FA0000EC08091E50181110AC08091E601811156 +:104FB00006C08091E701811102C01092E2010895BC +:104FC0008091D90183FF7EC08DE499E00E94E008C2 +:104FD0008091E3011F928F9388E499E09F938F93D0 +:104FE0000E94790986E499E00E94E0088091E4013A +:104FF000282F332727FD30953F938F9383E499E043 +:105000009F938F930E94790981E499E00E94E008C0 +:105010008091E501282F332727FD30953F938F930B +:105020008EE399E09F938F930E9479098CE399E036 +:105030000E94E0088091E601282F332727FD309554 +:105040003F938F9389E399E09F938F930E9479090F +:1050500087E399E00E94E0088091E701282F332739 +:1050600027FD30953F938F9384E399E09F938F932F +:105070000E94790981E399E00E94E0088091E201B1 +:105080001F928F938EE299E09F938F930E947909EC +:105090008CE299E00E94E0088091E1011F928F93D9 +:1050A00089E299E09F938F930E94790986E299E0C3 +:1050B0000E94E0088DB79EB74C960FB6F8949EBF3D +:1050C0000FBE8DBF83EE91E00E94AD170E943F247A +:1050D0009093E0018093DF0108951F93CF93DF93B6 +:1050E0008091DF019091E0010E944B24AC019091EE +:1050F000E201992321F02091140130E006C02091B3 +:1051000015018AE0289F900111244217530708F4E3 +:1051100086C08091E401C091E501D091E601109133 +:10512000E701811107C0C11176C0D11174C01111FE +:1051300072C075C09F3F19F09F5F9093E2011816EF +:1051400024F40E9471268093E4018091E40187FF9A +:1051500005C00E94712681958093E4011C1624F4F9 +:105160000E9471268093E5018091E50187FF05C0CB +:105170000E94712681958093E5016091E401662388 +:1051800039F1C091E501CC2319F1772767FD7095BE +:10519000872F972F0E94EF2E23E333E343E35FE350 +:1051A0000E94532F0E94BC2E6093E4016C2F77273E +:1051B00067FD7095872F972F0E94EF2E23E333E32F +:1051C00043E35FE30E94532F0E94BC2E6093E501EE +:1051D0001D1624F40E94BA268093E6018091E60110 +:1051E00087FF05C00E94BA2681958093E6011116BB +:1051F00024F40E94BA268093E7018091E70187FF9B +:1052000005C00E94BA2681958093E701DF91CF9176 +:105210001F910C94E0279F3F09F08ECF96CFDF912E +:10522000CF911F910895E3EEF1E085E0DF011D923B +:105230008A95E9F71092E2011092E101089580E762 +:105240009BE00E94E0081F9281E08F931F9285E00F +:105250008F9382E29BE09F938F930E9479090F9036 +:105260000F900F900F900F900F9008958330E9F1F9 +:1052700028F4813061F0823009F10895853009F415 +:1052800062C008F449C0863009F474C00895809162 +:105290001501262F30E0280F311D2F3F310524F452 +:1052A000680F6093150103C08FEF80931501809103 +:1052B00015011F928F938BE59AE072C080911401C3 +:1052C000262F30E0280F311D2F3F310524F4680FC1 +:1052D0006093140103C08FEF809314018091140137 +:1052E0001F928F9389E49AE05BC080911301262F6F +:1052F00030E0280F311D2F3F310524F4680F6093F3 +:10530000130103C08FEF80931301809113011F924B +:105310008F9386E39AE044C080911201262F30E0FB +:10532000280F311D2F3F310524F4680F60931201BF +:1053300003C08FEF80931201809112011F928F930F +:1053400081E29AE02DC080911101262F30E0280FD4 +:10535000311D2F3F310524F4680F6093110103C004 +:105360008FEF80931101809111011F928F9388E03C +:105370009AE016C080911001262F30E0280F311DD1 +:105380002F3F310524F4680F6093100103C08FEFA5 +:1053900080931001809110011F928F938DEE99E000 +:1053A0009F938F930E9479090F900F900F900F9009 +:1053B0000895833081F128F4813059F08230D1F0A2 +:1053C0000895853009F449C0B8F1863009F456C013 +:1053D000089580911501681720F4861B80931501AC +:1053E00002C010921501809115011F928F938EEDCE +:1053F00099E054C080911401681720F4861B8093B3 +:10540000140102C010921401809114011F928F9315 +:105410008CEC99E043C080911301681720F4861B3F +:105420008093130102C010921301809113011F9207 +:105430008F9389EB99E032C080911201681720F4B4 +:10544000861B8093120102C01092120180911201FA +:105450001F928F9384EA99E021C08091110168170F +:1054600020F4861B8093110102C0109211018091DB +:1054700011011F928F938BE899E010C08091100169 +:10548000681720F4861B8093100102C0109210014F +:10549000809110011F928F9380E799E09F938F93E3 +:1054A0000E9479090F900F900F900F900895CF935D +:1054B000C82F1F928F9385E79CE09F938F930E9444 +:1054C000790981E090E0A0E0B0E0BC01CD0104C02A +:1054D000660F771F881F991FCA95D2F70E94F02088 +:1054E0000F900F900F900F90CF910C94341DCF938D +:1054F0008D3109F465C0B0F58E3009F4CCC100F5EA +:10550000873009F49BC1A8F4863009F06DC2809100 +:10551000D901817F8E7F8093D9018AE79CE00E9428 +:10552000E0088CEB90E10E94E00881E08093E901C3 +:1055300080C1883009F44FC08B3009F47CC154C25B +:10554000863109F4F0C138F4803109F4B8C18131F1 +:1055500009F430C249C2893109F4CEC18B3109F452 +:1055600086C142C2853309F437C248F4873209F450 +:1055700033C208F433C2893209F42EC235C28334EF +:1055800038F48A3308F02CC2883309F454C12CC291 +:10559000833409F421C2883409F026C20E94341DE4 +:1055A0008BEA90E10E94E0089FEF23ED80E39150A9 +:1055B00020408040E1F700C000000E949A2439C1D9 +:1055C0008BEC90E10E94E0080E94762E0E94581712 +:1055D0000E948A0F2EC180EC90E10E94E0088BE8C7 +:1055E0009EE00E94E0080E945F261F928F9388E849 +:1055F0009EE09F938F930E94790986E89EE00E9427 +:10560000E0080E945626C82F83E79EE00E94E0082B +:105610001F92CF938EE69EE09F938F930E9479090D +:105620008CE69EE00E94E00882E69EE00E94E00890 +:105630008C2F81701F928F938FE59EE09F938F93A5 +:105640000E9479098DE59EE00E94E00883E59EE0D6 +:105650000E94E008C1FB882780F91F928F9380E5A4 +:105660009EE09F938F930E9479098EE49EE00E94B2 +:10567000E00882E49EE00E94E008C2FB882780F9EF +:105680001F928F938FE39EE09F938F930E947909DF +:105690008DE39EE00E94E00884E39EE00E94E00823 +:1056A000C3FBCC27C0F91F92CF9381E39EE09F9369 +:1056B0008F930E9479098FE29EE00E94E0080E9489 +:1056C0006826C82F8BE19EE00E94E0081F92CF93CE +:1056D00086E19EE09F938F930E94790984E19EE08A +:1056E0000E94E0088BEF9DE00E94E0088C2F817003 +:1056F0001F928F9388EF9DE09F938F930E9479096B +:105700008DB79EB780960FB6F8949EBF0FBE8DBF23 +:1057100086EF9DE00E94E0088FED9DE00E94E0088A +:10572000C1FB882780F91F928F938CED9DE09F939A +:105730008F930E9479098AED9DE00E94E00888EC31 +:105740009DE00E94E008C2FB882780F91F928F939A +:1057500085EC9DE09F938F930E94790983EC9DE0F7 +:105760000E94E00881EB9DE00E94E008C3FB8827CF +:1057700080F91F928F938EEA9DE09F938F930E94F2 +:1057800079098CEA9DE00E94E00882EA9DE00E948F +:10579000E008C4FB882780F91F928F938FE99DE072 +:1057A0009F938F930E9479098DE99DE00E94E00804 +:1057B0008BE89DE00E94E008C5FB882780F91F92D6 +:1057C0008F9388E89DE09F938F930E94790986E8E4 +:1057D0009DE00E94E0088AE69DE00E94E008C6FB8A +:1057E000882780F91F928F9387E69DE09F938F9380 +:1057F0000E94790985E69DE00E94E0088DE59DE024 +:105800000E94E008C7FBCC27C0F91F92CF938AE51E +:105810009DE09F938F930E94790988E59DE00E9407 +:10582000E0088DB79EB74C960FB6F8949EBF0FBE9A +:105830008DBFC1E0DEC081EA9CE05BC08091D901F0 +:10584000C82FC17080FF09C08EE990E10E94E00876 +:105850008091D901817F8E7F47C082E990E10E94CB +:10586000E0088091D90181608093D901E2CF9091C5 +:10587000D90191FBCC27C0F981E0C827892FC0FB53 +:1058800081F98093D901CC2319F085E890E127C0F4 +:1058900087E790E12EC09091D90192FBCC27C0F907 +:1058A00081E0C827892FC0FB82F98093D901CC23DE +:1058B00019F088E690E113C088E590E11AC0909154 +:1058C000D90193FBCC27C0F981E0C827892FC0FB01 +:1058D00083F98093D901CC2351F08CE490E10E94AC +:1058E000E0088091D90181608093D90182C08FE363 +:1058F00090E10E94E0089DCF80E390E10E94E008E3 +:1059000084E090E10E94E00887EC9FE00E94E008BC +:105910008AE99FE00E94E00886E59FE00E94E00897 +:105920008BE29FE0E6CF8DE19FE00E94E0080E94BD +:1059300058171F928F9383E09FE09F938F930E944D +:10594000790980910C011F928F938CEE9EE09F93BA +:105950008F930E947909809170011F928F9389ED36 +:105960009EE09F938F930E94790980910D011F9271 +:105970008F9386EC9EE09F938F930E94790980918C +:10598000DB019091DC01A091DD01B091DE01BF93BC +:10599000AF939F938F9382EB9EE09F938F930E9490 +:1059A00079098DB79EB746960FB6F8949EBF0FBE85 +:1059B0008DBF3FCF0E94341DC0910D0181E0C827EB +:1059C000C0930D01CC2329F088EA9EE00E94E008F4 +:1059D00010C08DE99EE08DCF80E003C08D5101C0E5 +:1059E00089530E94572A25CF8BE99EE00E94E00848 +:1059F000C0E08C2FCF91089580E0089580E0089555 +:105A0000CF93C82F8091E901813081F020F082305E +:105A100009F44FC045C1E0910E01F0910F01808162 +:105A2000813169F0823209F03DC109C0E0910E0177 +:105A3000F0910F018081813111F0823261F48C2F5D +:105A40000E94FC2C811104C08C2F0E94772A2FC049 +:105A500081E090E02CC08C2F0E94FE2C811126C08A +:105A6000C431E1F070F4CB3081F0C031D1F40E9448 +:105A70001F298DE69CE00E94E00882E08093E90106 +:105A800015C0C93259F0C83361F48AE79CE00E941E +:105A9000E00881E79CE00E94E00808C01092E9015C +:105AA00003C18BE69CE00E94E008FEC081E08170AB +:105AB000FDC0C43220F5CE3108F0C0C0CB3099F122 +:105AC000C8F4C73009F0D2C08AE08093150194E190 +:105AD0009093140193E0909313018093120188E056 +:105AE0008093110188E28093100181E19BE00E9484 +:105AF000E008BFC0C33149F1C431C1F0B7C0CB34F5 +:105B000009F4A9C028F4C93289F0C83361F0AEC0E5 +:105B1000C13509F49EC0C23509F499C0CE3409F0EC +:105B2000A5C06AE09EC00E941F29A3C08091E80121 +:105B3000882319F01092E8019CC08EE19BE00E943E +:105B4000E00881E08093E901B1C088EF9AE00E940B +:105B5000E00886EE9AE00E94E008809115011F920D +:105B60008F9383EE9AE09F938F930E94790981EE41 +:105B70009AE00E94E0088FEC9AE00E94E008809191 +:105B800014011F928F938CEC9AE09F938F930E9445 +:105B900079098AEC9AE00E94E0088BEB9AE00E9477 +:105BA000E008809113011F928F9388EB9AE09F93F6 +:105BB0008F930E94790986EB9AE00E94E00885EABB +:105BC0009AE00E94E008809112011F928F9382EA6E +:105BD0009AE09F938F930E94790980EA9AE00E944D +:105BE000E0088BE89AE00E94E008809111011F9282 +:105BF0008F9388E89AE09F938F930E94790986E8B3 +:105C00009AE00E94E0088FE69AE00E94E008809106 +:105C100010011F928F938CE69AE09F938F930E94BE +:105C200079098AE69AE00E94E0088DB79EB7489607 +:105C30000FB6F8949EBF0FBE8DBF1BC0CE51EC2F88 +:105C4000F0E0E15DFE4F80818093E80112C061E0E9 +:105C500003C061E006C06AE08091E8010E94362935 +:105C600008C08091E8010E94D92903C08FE09BE021 +:105C700013C08091E801882369F01F928F9389E017 +:105C80009BE09F938F930E9479090F900F900F9044 +:105C90000F9004C086E09BE00E94E00881E006C00F +:105CA0001092E90180E002C080E001CFCF91089519 +:105CB000E1E8F0E08081886080838081816080837A +:105CC0008FB7F89493E09093890090ED90938800BB +:105CD0008FBF0895EFE6F0E08081826080830895B1 +:105CE000EFE6F0E080818D7F80830895EFE6F0E0BD +:105CF000908182E08927808308951F920F920FB6CA +:105D00000F9211242F933F934F935F936F937F9341 +:105D10008F939F93AF93BF93EF93FF938091EA018B +:105D20009091EB0101969093EB018093EA01811130 +:105D300003C082E00E948A0FE091EB01E695E695B0 +:105D4000F0E0E552FF4EE4918091EA018E1303C02A +:105D500080E00E948A0FFF91EF91BF91AF919F91D8 +:105D60008F917F916F915F914F913F912F910F9004 +:105D70000FBE0F901F90189504D06894B1118DC07C +:105D8000089570D088F09F5790F0B92F9927B75198 +:105D9000A0F0D1F0660F771F881F991F1AF0BA95EF +:105DA000C9F712C0B13081F077D0B1E0089574C066 +:105DB000672F782F8827B85F39F0B93FCCF38695E5 +:105DC00077956795B395D9F73EF490958095709542 +:105DD00061957F4F8F4F9F4F0895E89409C097FBBF +:105DE0003EF490958095709561957F4F8F4F9F4FB2 +:105DF0009923A9F0F92F96E9BB279395F6958795F6 +:105E000077956795B795F111F8CFFAF4BB0F11F4B8 +:105E100060FF1BC06F5F7F4F8F4F9F4F16C088235F +:105E200011F096E911C0772321F09EE8872F762F95 +:105E300005C0662371F096E8862F70E060E02AF0D6 +:105E40009A95660F771F881FDAF7880F96958795C2 +:105E500097F9089557FD9058440F551F59F05F3F2B +:105E600071F04795880F97FB991F61F09F3F79F07C +:105E700087950895121613061406551FF2CF4695FE +:105E8000F1DF08C0161617061806991FF1CF869580 +:105E90007105610508940895E894BB276627772764 +:105EA000CB0197F908950BD078C069D028F06ED057 +:105EB00018F0952309F05AC05FC01124EECFCADF55 +:105EC000A0F3959FD1F3950F50E0551F629FF0010D +:105ED000729FBB27F00DB11D639FAA27F00DB11D66 +:105EE000AA1F649F6627B00DA11D661F829F2227EF +:105EF000B00DA11D621F739FB00DA11D621F839F76 +:105F0000A00D611D221F749F3327A00D611D231F4B +:105F1000849F600D211D822F762F6A2F11249F5799 +:105F200050408AF0E1F088234AF0EE0FFF1FBB1FBC +:105F3000661F771F881F91505040A9F79E3F51055B +:105F400070F014C0AACF5F3FECF3983EDCF3869567 +:105F500077956795B795F795E7959F5FC1F7FE2B06 +:105F6000880F911D9695879597F9089597F99F67E2 +:105F700080E870E060E008959FEF80EC08950024D1 +:105F80000A941616170618060906089500240A949E +:105F900012161306140605060895092E0394000C24 +:105FA00011F4882352F0BB0F40F4BF2B11F460FFB3 +:105FB00004C06F5F7F4F8F4F9F4F0895991B79E00B +:105FC00004C0991F961708F0961B881F7A95C9F789 +:105FD0008095089597FB072E16F4009407D077FD5F +:105FE00009D00E94043007FC05D03EF490958195BD +:105FF0009F4F0895709561957F4F0895EE0FFF1F95 +:106000000590F491E02D0994AA1BBB1B51E107C038 +:10601000AA1FBB1FA617B70710F0A61BB70B881F38 +:10602000991F5A95A9F780959095BC01CD010895C7 +:10603000F999FECF92BD81BDF89A992780B5089550 +:10604000A8E1B0E042E050E00C943B30262FF999F3 +:10605000FECF1FBA92BD81BD20BD0FB6F894FA9A4B +:10606000F99A0FBE019608950E942630272F0C94AE +:106070002730DC01CB01FC01F999FECF06C0F2BD4F +:10608000E1BDF89A319600B40D9241505040B8F7F6 +:066090000895F894FFCF13 +:1060960020028B0F7C1059102510F10F0101C7014A +:1060A60028080A03140A3F4D3620395B080E08D823 +:1060B60007B8077F07F2060B0724073D075D0701B0 +:0A60C60002030405060708090000A4 :00000001FF -- cgit v1.2.3-24-g4f1b From fbfb034337a7b612bfcce00c62c0bdf4cec0d8c2 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Wed, 2 Mar 2016 08:40:38 +0100 Subject: updated version, changed F-Key-Layout, minor change in code layer --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 14 +- keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex | 2946 ++++++++++++------------- 2 files changed, 1479 insertions(+), 1481 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index e75187202..4e88376e4 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -74,15 +74,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | L5 | F6 | F7 | F8 | F9 | F10 | F11 | + * | | F1 | F2 | F3 | F4 | F5 | F6 | | L5 | F7 | F8 | F9 | F10 | F11 | F12 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | F12 | + * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | ! | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | * | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? | + * | | | ^ | % | | | ~ | | | | & | < | > | " | ' | ? | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | + | - | . | ! | | + * | | | | | | | + | - | . | ; | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -104,11 +104,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS,KC_DEL,KC_TRNS, // right hand - M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, + M(M_TOGGLE_5), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, DE_EXLM, DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), LSFT(DE_PLUS), KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, - DE_PLUS, DE_MINS, KC_DOT, KC_EXLM, KC_TRNS, + DE_PLUS, DE_MINS, KC_DOT, LSFT(DE_COMM), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex index 8d74fd599..5346f1bdf 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex +++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex @@ -1,19 +1,19 @@ -:100000000C948E080C94D2080C94D2080C94D2084C -:100010000C94D2080C94D2080C94D2080C94D208F8 -:100020000C94D2080C94D2080C94D1140C94A315FF -:100030000C94D2080C94D2080C94D2080C94D208D8 -:100040000C94D2080C947D2E0C94D2080C94D208F7 -:100050000C94D2080C9475240C94D2080C94D208F9 -:100060000C94D2080C94D2080C94D2080C94D208A8 -:100070000C94D2080C94D2080C94D2080C94D20898 -:100080000C94D2080C94D2080C94D2080C94D20888 -:100090000C94D2080C94D2080C94D2080C94D20878 -:1000A0000C94D2080C94D2080C94D20890099A09A6 -:1000B000B209CA09120A180A390A1E0A340A2A0A97 -:1000C0002F0A240AFA09E2093E0A101632162017EE -:1000D0003216201777169A162017EF160217491AAC -:1000E000491A781A781ABB1AF91A121D121D121B16 -:1000F000121D131C131CE61C121D121DFD1C01E118 +:100000000C9485080C94C9080C94C9080C94C90870 +:100010000C94C9080C94C9080C94C9080C94C9081C +:100020000C94C9080C94C9080C94C4140C9496152B +:100030000C94C9080C94C9080C94C9080C94C908FC +:100040000C94C9080C94702E0C94C9080C94C9081F +:100050000C94C9080C9468240C94C9080C94C90821 +:100060000C94C9080C94C9080C94C9080C94C908CC +:100070000C94C9080C94C9080C94C9080C94C908BC +:100080000C94C9080C94C9080C94C9080C94C908AC +:100090000C94C9080C94C9080C94C9080C94C9089C +:1000A0000C94C9080C94C9080C94C90887099109D3 +:1000B000A909C109090A0F0A300A150A2B0A210ADF +:1000C000260A1B0AF109D909350A03162516131742 +:1000D000251613176A168D161317E216F5163C1A15 +:1000E0003C1A6B1A6B1AAE1AEC1A051D051D051B7E +:1000F000051D061C061CD91C051D051DF01C01E173 :100100000137023702E10138023801E201250225F8 :1001100002E20001E10137023702E1013802380151 :10012000E10130023002E10001E10137023702E172 @@ -34,23 +34,23 @@ :100210000004001D710D304D831F001A0016001BD5 :10022000000C304C002000080007000600E1042A02 :10023000002100150009001900E1084A00220017FA -:10024000000A000500000003300130E3000000E276 +:10024000000A000500000003302300E3000000E284 :1002500000000002540230E7000000E60000000445 -:100260005423001C000B00110000002E7F240018F6 -:10027000000D00100050004B0025000C000E003651 -:100280000052002C00260012000F003700510028F9 -:100290000027001300330038714F004E002D002F4F -:1002A000003474E50031810000010001000100010B +:100260005424001C000B00110000002E7F250018F4 +:10027000000D00100050004B0026000C000E003650 +:100280000052002C00270012000F003700510028F8 +:10029000002D001300330038714F004E0031002F45 +:1002A000003474E50030810000010001000100010C :1002B00000010000003A003500310001000100019A :1002C000003B0035022102350001004C003C001EBD :1002D0000224062202010001003D002D0224022416 :1002E00004010001003E000100370011040000017C :1002F000000100010000000100000001000E3001BB -:100300000000000100000001003F00240624022339 -:100310000200000100400022042502350001000116 -:100320000041002304260235023700010042002468 -:100330000425041F021E020100430031002604317F -:1003400002010001004400450001002D02010000EF +:100300000000000100000001004000240624022338 +:1003100002000001004100220425023500300001E6 +:100320000042002304260235023800010043002465 +:100330000425041F02370001004400310026043167 +:10034000023602010045001E0230022D02010000AB :100350000001000100010001000100000001000196 :100360000001000100010001000100F400F200FBA7 :1003700000010001000100F000F100FA000100019D @@ -101,1451 +101,1449 @@ :10064000742073696465206E6F7420726573706FB7 :100650006E64696E670A00747279696E6720746FE0 :10066000207265736574206D637032333031380ADF -:10067000000A44454255473A20656E61626C6564E4 -:100680002E0A005B735D004B6579626F61726420B6 -:1006900073746172742E0A005B575D005B535D00DA -:1006A0005B525D005B445D005B435D0016034500EB -:1006B000720067006F0044006F0078002000450062 -:1006C0005A00000016034500720067006F004400E6 -:1006D0006F007800200045005A0000000403090460 -:1006E00009028D00050100A0FA09040000010301C0 -:1006F0000100092111010001223F000705810308C3 -:10070000000A09040100010301020009211101008E -:1007100001224D000705820308000A0904020001B6 -:1007200003000000092111010001223600070583A2 -:100730000308000A09040300020300000009211154 -:1007400001000122200007058403200001070504A1 -:100750000320000109040400010300000009211125 -:100760000100012239000705850310000112011064 -:100770000100000008EDFE07130100010200010561 -:10078000010906A101050719E029E71500250195D2 -:100790000875018102050819012905950575019162 -:1007A00002950175039101050719002977150025A8 -:1007B00001957875018102C00631FF0974A1010914 -:1007C00075150025FF95207508810209761500250D -:1007D000FF952075089102C005010980A1018502DD -:1007E00016010026B7001A01002AB70075109501FE -:1007F0008100C0050C0901A1018503160100269C9A -:10080000021A01002A9C02751095018100C00501A1 -:100810000902A1010901A100050919012905150015 -:100820002501950575018102950175038101050179 -:10083000093009311581257F95027508810609382F -:100840001581257F950175088106050C0A3802156A -:1008500081257F950175088106C0C005010906A1A3 -:1008600001050719E029E7150025019508750181A3 -:10087000029501750881010508190129059505757D -:100880000191029501750391010507190029FF15D2 -:100890000025FF950675088100C00A0025303258F2 -:1008A00020006B6579626F6172645F7265706F7250 -:1008B000743A20000A0025303258006B6579626F67 -:1008C0006172645F7365745F6C65643A200064658F -:1008D0006C5F6B65795F6269743A2063616E27743F -:1008E0002064656C3A20253032580A006164645FE8 -:1008F0006B65795F6269743A2063616E2774206169 -:1009000064643A20253032580A00646F6E652E0AFE -:1009100000626F6F676D61676963207363616E3A30 -:10092000202E2E2E2000290A002575002F00257567 -:10093000005D280025640020002564002000256457 -:100940000020002564007C0025303258006D6F7552 -:1009500073656B6579205B62746E7C782079207694 -:1009600020685D287265702F61636C293A205B00F6 -:100970006D6B5F776865656C5F74696D655F746FDB -:100980005F6D6178203D2025640A006D6B5F77689C -:1009900065656C5F6D61785F7370656564203D208F -:1009A00025640A006D6B5F74696D655F746F5F6DC0 -:1009B0006178203D2025640A006D6B5F6D61785F72 -:1009C0007370656564203D2025640A006D6B5F6966 -:1009D0006E74657276616C203D2025640A006D6B33 -:1009E0005F64656C6179203D2025640A006D6B5F52 -:1009F000776865656C5F74696D655F746F5F6D6165 -:100A000078203D2025640A006D6B5F776865656C12 -:100A10005F6D61785F7370656564203D2025640AB1 -:100A2000006D6B5F74696D655F746F5F6D617820D9 -:100A30003D2025640A006D6B5F6D61785F737065A2 -:100A40006564203D2025640A006D6B5F696E7465E6 -:100A50007276616C203D2025640A006D6B5F6465D1 -:100A60006C6179203D2025640A000A002575003656 -:100A70003A20776865656C5F74696D655F746F5F58 -:100A80006D61783A20000A00257500353A207768B4 -:100A900065656C5F6D61785F73706565643A2000B1 -:100AA0000A00257500343A2074696D655F746F5FC4 -:100AB0006D61783A20000A00257500333A206D6197 -:100AC000785F73706565643A20000A00257500320E -:100AD0003A20696E74657276616C286D73293A20CC -:100AE000000A00257500313A2064656C6179282A76 -:100AF00031306D73293A20000A092D2056616C753A -:100B00006573202D0A004D3E004D25643E20003FB8 -:100B1000007365742064656661756C740A00433EF9 -:100B2000200077686572652064656C74613A2063A3 -:100B30007572736F723D25642C20776865656C3D16 -:100B400025640A53656520687474703A2F2F656EAA -:100B50002E77696B6970656469612E6F72672F7794 -:100B6000696B692F4D6F7573655F6B6579730A00EB -:100B70000A092D204D6F7573656B6579202D0A4527 -:100B800053432F713A09717569740A313A096465E2 -:100B90006C6179282A31306D73290A323A09696EFD -:100BA00074657276616C286D73290A333A096D6138 -:100BB000785F73706565640A343A0974696D655FBE -:100BC000746F5F6D61780A353A09776865656C5FA7 -:100BD0006D61785F73706565640A363A0977686598 -:100BE000656C5F74696D655F746F5F6D61780A0A2B -:100BF000703A097072696E742076616C7565730A5B -:100C0000643A097365742064656661756C74730A6F -:100C100075703A092B310A646F776E3A092D310AE3 -:100C2000706775703A092B31300A7067646F776EA0 -:100C30003A092D31300A0A7370656564203D2064DD -:100C4000656C7461202A206D61785F7370656564DE -:100C5000202A2028726570656174202F2074696DC8 -:100C6000655F746F5F6D6178290A003F004D3E201B -:100C700000433E20004C25640A000A092D20436FE2 -:100C80006E736F6C65202D0A4553432F713A0971BD -:100C90007569740A6D3A096D6F7573656B65790ACC -:100CA000000A092D204D61676963202D0A643A0905 -:100CB00064656275670A783A096465627567206DD4 -:100CC00061747269780A6B3A096465627567206BB2 -:100CD0006579626F6172640A6D3A0964656275676D -:100CE000206D6F7573650A763A0976657273696F60 -:100CF0006E0A733A097374617475730A633A09630F -:100D00006F6E736F6C65206D6F64650A302D343AB9 -:100D1000096C61796572302D34284631302D4634A6 -:100D2000290A506175733A09626F6F746C6F616460 -:100D300065720A653A09656570726F6D0A6E3A09E7 -:100D40004E4B524F0A7A3A09736C656570204C45D8 -:100D50004420746573740A000A002575002E6E6BBA -:100D6000726F3A20000A002575002E737761705F5C -:100D70006261636B736C6173685F6261636B7370F4 -:100D80006163653A20000A002575002E7377617053 -:100D90005F67726176655F6573633A20000A0025BC -:100DA00075002E6E6F5F6775693A20000A00257521 -:100DB000002E737761705F72616C745F7267756922 -:100DC0003A20000A002575002E737761705F6C6110 -:100DD0006C745F6C6775693A20000A002575002EF7 -:100DE000636170736C6F636B5F746F5F636F6E745E -:100DF000726F6C3A20000A002575002E73776170BF -:100E00005F636F6E74726F6C5F636170736C6F633E -:100E10006B3A20000A0025303258006B65796D610D -:100E2000705F636F6E6669672E7261773A20000AA1 -:100E3000002575002E6D6F7573653A20000A002538 -:100E400075002E6B6579626F6172643A20000A004A -:100E50002575002E6D61747269783A20000A0025AC -:100E600075002E656E61626C653A20000A002530BF -:100E700032580064656275675F636F6E6669672EDE -:100E80007261773A20000A00257500646566617515 -:100E90006C745F6C617965723A20003F004E4B5272 -:100EA0004F3A206F66660A004E4B524F3A206F6EE3 -:100EB0000A0074696D65725F636F756E743A202500 -:100EC00030346C580A006B6579626F6172645F6ED2 -:100ED0006B726F3A2025580A006B6579626F6172F8 -:100EE000645F69646C653A2025580A006B65796215 -:100EF0006F6172645F70726F746F636F6C3A2025FC -:100F0000580A00686F73745F6B6579626F61726411 -:100F10005F6C65647328293A2025580A000A092D58 -:100F200020537461747573202D0A004743433A209F -:100F3000342E392E33204156522D4C4942433A200B -:100F4000312E382E31204156525F415243483A20CB -:100F5000617672350A004F5054494F4E533A204C37 -:100F600055464120424F4F544D41474943204D4F34 -:100F70005553454B45592045585452414B455920EE -:100F8000434F4E534F4C4520434F4D4D414E44200F -:100F90004E4B524F203531320A004255494C443AAB -:100FA00020666437326134362D6469727479202882 -:100FB00032313A35313A3231204A616E20323420B2 -:100FC00032303136290A005649443A2030784645B5 -:100FD0004544284572676F446F7820455A29205050 -:100FE00049443A20307831333037284572676F44AE -:100FF0006F7820455A29205645523A2030783030B3 -:1010000030310A00444553433A20742E6D2E6B2E26 -:10101000206B6579626F617264206669726D7761B9 -:10102000726520666F72204572676F646F780A0080 -:101030000A092D2056657273696F6E202D0A000A09 -:101040006D6F7573653A206F66660A000A6D6F757D -:1010500073653A206F6E0A000A6B6579626F617280 -:10106000643A206F66660A000A6B6579626F617286 -:10107000643A206F6E0A000A6D61747269783A20D2 -:101080006F66660A000A6D61747269783A206F6E45 -:101090000A000A64656275673A206F6E0A000A6486 -:1010A000656275673A206F66660A000A0A626F6FAA -:1010B000746C6F616465722E2E2E2000433E2000FA -:1010C0006565636F6E6669673A0A00536C656570A3 -:1010D000204C454420746573740A00000000000031 -:1010E000000000000000010204060A0F17202C3A3D -:1010F0004A5D71879DB3C7DAE9F5FCFFFCF5E9DAD3 -:10110000C7B39D87715D4A3A2C20170F0A06040267 -:1011100001000000000000000000000011241FBEBC -:10112000CFEFDAE0DEBFCDBF04B603FE24C080916E -:10113000FB019091FC01A091FD01B091FE0187306F -:10114000904BA740B04BB9F41092FB011092FC01F8 -:101150001092FD011092FE0114BE84B7877F84BFF8 -:1011600088E10FB6F89480936000109260000FBE83 -:10117000E0E0FFE3099511E0A0E0B1E0E6E9F0E688 -:1011800002C005900D92AA33B107D9F711E0AAE386 -:10119000B1E001C01D92AB3FB107E1F70E94091217 -:1011A0000C9449300C940000FF93EF93E0913A01C6 -:1011B000F0913B01309709F00995EF91FF91089567 -:1011C000FC018591803011F0EFDFFBCF0895FF2700 -:1011D000E0E230E247FF0CC0419597FF09C0EDE225 -:1011E0006095709580959095611D711D811D911D73 -:1011F00027FF02C0219530E350E2AA27660F771F30 -:10120000881F991FAA1FA41710F0A41B63955A9555 -:10121000A9F7AA3008F0A95FA05DAF93F395611517 -:1012200071058105910541F7ED3211F4EF93F395C6 -:10123000F21718F43F93F395FBCF8F91B5DFFA9532 -:10124000E1F70895E991F9918591803021F0853297 -:1012500019F0AADFF9CF089520E0E89455915532AE -:10126000C1F3503311F4689455915A3348F45053F4 -:1012700090F3220F022E220F220F200D250FF4CF04 -:101280000EF4219589919991533619F3533729F129 -:10129000533559F1BC0188279927E8945C3621F42D -:1012A0008991999168945591543639F446EF7EF0BE -:1012B00077FF0DC08FEF9FEF0AC055374AE039F036 -:1012C000583540E121F0523642E009F00895FF938D -:1012D000EF937DDFEF91FF91B7CFFF93EF93FC0189 -:1012E00081918030B9F360DFFBCFFF93EF9368DF2C -:1012F000F1CFDF93CF93CDB7DEB72596A3DFCF91A4 -:10130000DF910895462F50E04F30510508F0DEC0C0 -:10131000DC01FA01EA5AFF4F12968C910C94FE2FD1 -:10132000882321F085EE0E94E618D0C085EE0E9449 -:10133000AE19CCC0882349F00E943F2490933D0110 -:1013400080933C0188EF91E0089580913C01909159 -:101350003D010E944B24873991050CF0A8C08AEE0C -:1013600091E00895882349F00E943F2490933D0125 -:1013700080933C0187EE91E0089580913C0190912B -:101380003D010E944B24873991050CF093C089EDF3 -:1013900091E00895882349F00E943F2490933D01F5 -:1013A00080933C0182ED91E0089580913C01909101 -:1013B0003D010E944B24873991050CF07EC080ECE2 -:1013C00091E00895882349F00E943F2490933D01C5 -:1013D00080933C018BEB91E0089580913C019091CA -:1013E0003D010E944B24873991050CF069C08DEABC -:1013F00091E00895882349F00E943F2490933D0195 -:1014000080933C0188EA91E0089580913C0190919D -:101410003D010E944B24873991050CF054C08AE9A4 -:1014200091E00895882309F451C085E891E008957A -:10143000882309F44BC080E791E00895882309F4DC -:1014400045C08BE591E00895882309F43FC086E408 -:1014500091E008958823D1F18DE391E008958823E8 -:10146000A9F188E291E00895882381F183E191E078 -:101470000895882359F18EEF90E00895882331F183 -:101480008091BE019091BF01A091C001B091C101B6 -:1014900020E2822780729927AA27BB278093BE016A -:1014A0009093BF01A093C001B093C1010FC085EF1D -:1014B00091E0089584EE91E008958BEC91E0089519 -:1014C00086EB91E0089583EA91E0089580E090E052 -:1014D000089508956091BE017091BF018091C0018F -:1014E0009091C1010E94742356985E9825982D987A -:1014F00026982E9827982F98833099F028F48130D9 -:1015000041F0823049F00895843049F0853061F02F -:101510000895259A2D9A0895269A2E9A0895259A27 -:101520002D9A279A2F9A0895259A2D9A269A2E9ABF -:10153000279A2F9A08958AE69AE0892B11F00E9443 -:101540006A0A80E090E0089556985E9825982D9854 -:1015500026982E9827982F988FEF90E090938900E7 -:101560008093880090938B0080938A0090938D00E5 -:1015700080938C00259A2D9A2FEF80E792E02150DE -:1015800080409040E1F700C00000269A2E9A2FEF8D -:1015900080E792E0215080409040E1F700C00000D9 -:1015A000279A2F9A2FEF80E792E0215080409040B9 -:1015B000E1F700C0000025982D982FEF80E792E01A -:1015C000215080409040E1F700C0000026982E98FE -:1015D0002FEF80E792E0215080409040E1F700C07B -:1015E000000027982F9856985E9825982D98269851 -:1015F0002E9827982F98089589EA8093800089E093 -:101600008093810024982C983F988AB18F748AB96E -:101610006E98479A8BB1806B8BB9769A0E94A40A18 -:1016200089E69AE0892B11F00E94690A80E090E037 -:10163000089580E28093000180913E0181110EC0E7 -:101640000E94680B81E080933E012FEF83ED90E3D1 -:10165000215080409040E1F700C0000080E40E94EB -:101660006E0B8093000181112EC00E94980B809315 -:101670000001811128C00E94980B80930001811104 -:1016800022C08FE30E94980B8093000181111BC040 -:101690000E94900B80E40E946E0B809300018111E8 -:1016A00012C08CE00E94980B8093000181110BC046 -:1016B0000E94980B80930001811105C08FE30E9466 -:1016C000980B809300010E94900B80910001089577 -:1016D0001092B9008AE08093B800089594EA90933C -:1016E000BC009091BC0097FFFCCF9091B900987F0F -:1016F000983021F0903111F081E008958093BB0083 -:1017000084E88093BC008091BC0087FFFCCF80916F -:10171000B900887F883111F0803471F780E0089536 -:1017200084E98093BC008091BC0084FDFCCF0895C7 -:101730008093BB0084E88093BC008091BC0087FF4D -:10174000FCCF9091B900987F81E0983209F480E055 -:10175000089584E88093BC008091BC0087FFFCCF93 -:101760008091BB00089580910001811115C080E433 -:101770000E946E0B8093000181110CC082E10E94D7 -:10178000980B80930001811105C08FEF0E94980B88 -:10179000809300010E94900B84B1807F84B985B151 -:1017A000807F85B98AB1837F8AB98BB1837F8BB9FA -:1017B0003E98469808950E94190B809300010E945C -:1017C000B30B80B38C7080BB81B3836F81BBA0E40B -:1017D000B1E0EEE4F1E08EE08E0F11921D928E13D7 -:1017E000FCCF8CEF9AE0892B11F00C94FC0A089541 -:1017F0009F92AF92BF92CF92DF92EF92FF920F93A0 -:101800001F93CF93DF93809100018823E1F08091B3 -:101810003F018F5F80933F01811115C087E596E0FE -:101820000E94E0080E94190B80930001882329F090 -:101830008DE396E00E94E00806C089E296E00E94EF -:10184000E0080E94A40A00E411E0C0E0D0E0BB245C -:10185000B39482E0A82ECC24C394D12C2AE1E22EAA -:1018600026E0F22EC730D10500F5809100018111EC -:1018700064C080E40E946E0B80930001811112C04D -:1018800082E10E94980B8093000181110BC0C60178 -:101890000C2E01C0880F0A94EAF780950E94980BDD -:1018A000809300010E94900B48C0CA30A1F028F438 -:1018B000C83059F0C93061F005C0CC3089F070F003 -:1018C000CD3089F0209A289810C0219A29980DC00F -:1018D000229A2A980AC0239A2B9807C0529A01C0CC -:1018E000539A5B9802C03E9A469890EA9A95F1F70F -:1018F0009FB1799902C082E001C080E091709B2580 -:10190000982B7C9902C084E001C080E0892B7D99EE -:1019100002C038E001C030E0832B7E9902C020E194 -:1019200001C020E0822B9FB19095991F9927991FA4 -:101930009295990F907E892B10C0809100018111A2 -:1019400074C080E40E946E0B80930001882309F428 -:1019500059C0912C0E94900B892DF8019081981705 -:1019600039F1808380910101882301F18091D901AF -:1019700080FF04C08FE196E00E94E0088091D901C9 -:1019800080FF0CC0809101011F928F93FF92EF9214 -:101990000E9479090F900F900F900F908091D901BC -:1019A00080FF04C088E196E00E94E008A092010157 -:1019B0000E94B30B21960F5F1F4FCE30D10509F067 -:1019C00051CF809101018823B1F0815080930101B2 -:1019D000882339F08FE99FE00197F1F700C00000FC -:1019E0000AC0AEE4B1E0E0E4F1E0CF01825F9191A2 -:1019F0009D938E13FCCF8BE99AE0892BC1F00E9456 -:101A00009B0A15C083E10E94980B8093000181110D -:101A1000A0CF81E40E946E0B80930001811199CFC9 -:101A20000E94A90B982E909495CF80E096CF81E0EC -:101A3000DF91CF911F910F91FF90EF90DF90CF90AA -:101A4000BF90AF909F900895E82FF0E0E25BFE4FCB -:101A500080810895CF92DF92EF92FF920F931F93B0 -:101A6000CF93DF9381E096E00E94E0088EE4E82EB9 -:101A700081E0F82EC0E0D0E09CEFC92E95E0D92E91 -:101A800003EF15E0DF93CF93DF92CF920E947909A5 -:101A900089EF95E00E94E008F70181917F0190E0D5 -:101AA0000E94DA239F938F931F930F930E947909CB -:101AB00081EF95E00E94E00821968DB79EB70896C9 -:101AC0000FB6F8949EBF0FBE8DBFCE30D105D1F6B4 -:101AD000DF91CF911F910F91FF90EF90DF90CF900A -:101AE00008958B3B910578F4883A910540F5853A45 -:101AF0009105D0F48430910508F0B1C08130910592 -:101B000009F4ADC06BC0803E910508F467C0883E03 -:101B1000910508F4A4C09C01205F310920313105F2 -:101B200008F05CC090650895853A910509F459C0A4 -:101B3000863A910509F058C082E890E40895883A01 -:101B4000910509F454C0893A910509F453C08A3AC1 -:101B5000910509F452C08B3A910509F451C08C3AB1 -:101B6000910509F450C08D3A910509F44FC0803BAE -:101B7000910509F44EC08E3A910509F44DC08F3A93 -:101B8000910509F44CC0813B910509F44BC0823B9F -:101B9000910509F44AC0833B910509F449C0843B8F -:101BA000910509F448C0853B910509F447C0863B7F -:101BB000910509F446C0873B910509F445C0883B6F -:101BC000910509F444C0893B910509F443C08A3B5F -:101BD000910509F442C080E094E4089580E090E02B -:101BE000089581E890E4089583E890E4089582EEF2 -:101BF00094E4089589EE94E408958AEE94E40895B7 -:101C000085EB94E4089586EB94E4089587EB94E4DF -:101C100008958CEC94E408958DEC94E4089583E8A1 -:101C200095E408958AE895E4089582E995E4089595 -:101C300084E995E4089581E296E4089583E296E4C8 -:101C4000089584E296E4089585E296E4089586E294 -:101C500096E4089587E296E408958AE296E408956A -:101C6000089596E0799FF001112494E5899FE00D95 -:101C7000F11D1124E60FF11DEE0FFF1FEF5FFD4F69 -:101C8000859194910895880F991FFC01E558FF4FA5 -:101C9000859194910895880F991FFC01E550FE4F9E -:101CA00085919491089526E0729FF001112444E5F6 -:101CB000849FE00DF11D1124E60FF11DEE0FFF1FB3 -:101CC000EF5FFD4F859194919C013A9521154FE16D -:101CD000340708F41EC13F512115304120F49F7094 -:101CE0000E944B0E08959C0130532115304118F489 -:101CF0009927906C0895811520E5920769F40E9458 -:101D0000341D4FEF84E39CE0415080409040E1F768 -:101D100000C000000C949A24813020E5920751F411 -:101D200081E796E00E94E0088091D901816080936C -:101D3000D90108959C0130552115304108F051C05A -:101D4000292F33272F70332721303105D9F4AC01E7 -:101D50004370552702C0220F331F4A95E2F73C68B3 -:101D6000AC0164E0440F551F6A95E1F744275370B6 -:101D7000242B352B73E0880F991F7A95E1F7807635 -:101D800099271DC02230310529F4982F8827816FAB -:101D9000906A089523303105A9F4AC0143705527AA -:101DA00021E030E002C0220F331F4A95E2F73C6881 -:101DB00043E0880F991F4A95E1F7807E9770822B48 -:101DC000932B089524303105E1F4AC01437055277D -:101DD00021E030E002C0220F331F4A95E2F73A6853 -:101DE000E7CF9C0130572115304118F49F70906265 -:101DF00008959C0130582115304118F49F70906A65 -:101E00000895803E9105E0F4803C910558F58133BA -:101E1000910509F46FC048F48932910509F463C053 -:101E20008A32910509F46DC072C089339105E9F0D9 -:101E300082389105D1F08533910509F44DC067C012 -:101E4000833E910581F138F4803E9105B9F0823EE0 -:101E50009105D9F05CC0863E910561F1873E910500 -:101E6000A1F155C00E94430E08952091EC0120FD80 -:101E700002C021FF4CC080EE90E049C08091EC018F -:101E800080FFF9CF89E390E042C08091EC0182FFAE -:101E90000EC08091EC0184FF03C080E090E037C069 -:101EA00083EE90E034C08091EC0182FFF2CF82EEAD -:101EB00090E02DC08091EC0183FF0BC08091EC017C -:101EC00084FDEBCF87EE90E022C08091EC0183FF90 -:101ED000F5CF86EE90E01BC08091EC0185FF07C036 -:101EE00089E290E014C08091EC0185FFF9CF85E391 -:101EF00090E00DC08091EC0186FF07C08AE290E07F -:101F000006C08091EC0186FFF9CF81E390E00E944A -:101F1000710D0895089580916F0108959FB7F89409 -:101F200010925E019FBF9091F201943009F057C06A -:101F30009091E9009F703091EC00232F217030FDCB -:101F400020E8922B24E02093E9002091EB0020FF71 -:101F500043C02091EE0027FF3FC020915C01222367 -:101F600021F02091E80025FF37C010925C0126E0A7 -:101F70003091E80035FD15C03091F201343061F543 -:101F80003091EB0035FD28C0215021F481E0809391 -:101F90005C0122C0EFE9FFE03197F1F700C00000DB -:101FA000E7CF8093F1008091E80085FD0AC0809121 -:101FB000E80080FFFCCF8091E8008E778093E800F6 -:101FC00006C08FB7F89421E020935E018FBF9F7009 -:101FD0009093E90080E008959F709093E9008FEF5F -:101FE0000895CF93DF9300D01F92CDB7DEB79C0149 -:101FF0008091F201843019F593E099833B832A8321 -:102000009093E9008FEF9091E800815095FD06C014 -:1020100095ED9A95F1F700008111F5CF8091E800D8 -:1020200085FF0DC040E050E063E070E0CE01019616 -:102030000E94C1128091E8008E778093E8000F9093 -:102040000F900F90DF91CF910895CF93DF9300D041 -:102050001F92CDB7DEB72091F201243021F522E0A6 -:1020600029839B838A8383E08093E9008FEF90919B -:10207000E800815095FD06C095ED9A95F1F70000B6 -:102080008111F5CF8091E80085FF0DC040E050E060 -:1020900063E070E0CE0101960E94C1128091E800D9 -:1020A0008E778093E8000F900F900F90DF91CF9183 -:1020B00008952091F2012430F1F422E02093E90008 -:1020C0002FEF3091E800215035FD06C035ED3A95EF -:1020D000F1F700002111F5CF2091E80025FF0BC09A -:1020E00040E050E065E070E00E94C1128091E8009D -:1020F0008E778093E8000895CF93DF932091F201CB -:10210000243009F048C0EC0180910C018823E1F0F3 -:1021100080910D018823C1F085E08093E9008FEF65 -:102120009091E800815095FD06C095E19A95F1F7F0 -:1021300000008111F5CF8091E80085FF2CC040E0C0 -:1021400050E060E170E017C081E08093E9008FEF1C -:102150009091E800815095FD06C095ED9A95F1F7B4 -:1021600000008111F5CF8091E80085FF14C040E0A8 -:1021700050E068E070E0CE010E94C1128091E8005A -:102180008E778093E80080E1FE01AFE5B1E0019039 -:102190000D928A95E1F7DF91CF91089588EA96E054 -:1021A0000E94E0088091F101811109C00E9456143B -:1021B0000E94B3148091E20084608093E20008954D -:1021C00084EA96E00E94E0081092F101089580EA06 -:1021D00096E00C94E0088CE996E00E94E0080C94EC -:1021E0006A2E88E996E00E94E0080E9430240E944E -:1021F000702E0E9458170C948A0F20915D012F5F5A -:10220000822F62E30E94DE2F992319F020935D0153 -:10221000089510925D0180915E01882371F1809193 -:10222000F201843041F58091E9008F702091EC003B -:10223000922F917020FD90E8892B94E09093E90013 -:102240009091EB0090FF14C09091EE0097FF10C0AA -:102250009091E80095FF03C01092F100F9CF9091A2 -:10226000E80090FF05C09091E8009E779093E80009 -:102270008F708093E90010925E01089542E061EC56 -:1022800081E00E94D01342E061EC82E00E94D01312 -:1022900042E061EC83E00E94D01342E261EC84E012 -:1022A0000E94D01342E161EC85E00C94D013809140 -:1022B000F401833009F455C030F4813071F082307C -:1022C00009F48EC008958A3009F47AC08B3009F47D -:1022D00060C0893009F09CC020C08091F301813A30 -:1022E00009F096C08091E800877F8093E800809194 -:1022F000F7019091F801892B21F460E18FE591E0DD -:1023000003C060E080E090E070E00E940C138091D8 -:10231000E8008B778093E80008958091F301813283 -:1023200009F076C08091F7019091F801009719F0BB -:10233000049709F06DC08091E800877F8093E800E2 -:102340008091E80082FD05C08091F2018111F8CFF3 -:102350005FC08091F10080936F018091E8008B77DE -:1023600053C08091F301813A09F052C08091F70186 -:102370009091F801892B09F04BC08091E800877F8C -:102380008093E8008091E80080FFFCCF80910C01F1 -:1023900036C08091F3018132D9F58091F701909197 -:1023A000F801892BA9F58091E800877F8093E800E8 -:1023B0000E9405148091F50180930C010C94341D4A -:1023C0008091F301813221F58091E800877F80932D -:1023D000E8000E9405148091F60180937001089531 -:1023E0008091F301813AA1F48091E800877F809386 -:1023F000E8008091E80080FFFCCF8091700180931D -:10240000F1008091E8008E778093E8000C94051429 -:10241000089584B7877F84BF88E10FB6F8948093CE -:102420006000109260000FBE90E080E80FB6F89454 -:1024300080936100909361000FBE0E94E5170E9497 -:1024400056140E94B3148091E20084608093E200ED -:102450008EE89FE00E946F2378940E9438170E94B4 -:10246000E71782E091E00E9453170E94582E87E8F8 -:1024700096E00E94E0088091F201853089F483E8BB -:1024800096E00E94E0080E94F4238091F0018823E6 -:1024900091F30E941C24882371F30E94AB12EBCFAE -:1024A0000E941518E8CF292F332723303105C9F0B2 -:1024B00064F42130310581F02230310509F043C048 -:1024C0008DE890E020EE36E042C021323105F1F097 -:1024D0002232310541F137C082E190E02DE637E04C -:1024E00036C099278130910541F08230910541F045 -:1024F000892B49F5ECEDF6E005C0E4ECF6E002C00E -:10250000ECEAF6E0849190E09F0121C06530D8F4B8 -:10251000E62FF0E0EE0FFF1FEB5DFE4F20813181D3 -:1025200089E090E014C0653070F470E0FB01EE0FBC -:10253000FF1FE55EFE4F20813181FB01EA5EFE4F09 -:10254000808190E004C080E090E020E030E0FA017B -:1025500031832083089580E189BD82E189BD09B47A -:1025600000FEFDCF8091D8008F7D8093D8008091B0 -:10257000E00082608093E0008091E00081FDFCCF6C -:102580000895CF92DF92EF92FF920F931F93CF9314 -:10259000DF93EC018B016A010E942414811133C086 -:1025A000C114D10439F0F60180819181081B190B07 -:1025B000C80FD91FE12CF12C0115110519F18091DB -:1025C000E80085FD16C08091E8008E778093E800D2 -:1025D000C114D10449F0F60180819181E80EF91E01 -:1025E000F182E08285E00FC00E942414882321F349 -:1025F0000AC089918093F10001501109FFEFEF1A91 -:10260000FF0ADACF80E0DF91CF911F910F91FF9009 -:10261000EF90DF90CF9008952091F9013091FA0169 -:102620002617370748F06115710539F42091E80045 -:102630002E772093E80001C0B90140E061157105D3 -:10264000A9F12091F201222309F443C0253009F4B5 -:1026500042C02091E80023FD40C02091E80022FD07 -:1026600032C02091E80020FFE9CF4091F300209193 -:10267000F20030E0342BFC01CF016115710559F0F7 -:102680002830310540F481918093F1006150710947 -:102690002F5F3F4FF1CF41E02830310509F040E096 -:1026A0002091E8002E772093E800C8CF4111C9CFD0 -:1026B0000AC08091F201882361F0853061F0809139 -:1026C000E80083FD0AC08091E80082FFF2CF80E03D -:1026D000089582E0089583E0089581E008952091AF -:1026E000F9013091FA012617370748F06115710595 -:1026F00039F42091E8002E772093E80001C0B90159 -:10270000FC0120E06115710591F18091F2018823AF -:1027100009F440C0853009F43FC08091E80083FD92 -:102720003DC08091E80082FD2FC08091E80080FFCD -:10273000E9CF2091F3008091F20090E0922B611597 -:10274000710559F08830910540F424912093F100EF -:102750003196615071090196F2CF21E0089709F096 -:1027600020E08091E8008E778093E800CBCF2111A4 -:10277000CCCF0AC08091F201882361F0853061F0EE -:102780008091E80083FD0AC08091E80082FFF2CFCB -:1027900080E0089582E0089583E0089581E008953F -:1027A000982F973058F59093E900981739F0709169 -:1027B000EC002091ED005091F00003C0242F762F03 -:1027C00050E021FF19C03091EB003E7F3093EB00C9 -:1027D0003091ED003D7F3093ED003091EB003160A2 -:1027E0003093EB007093EC002093ED005093F000D9 -:1027F0002091EE0027FF07C09F5FD3CF8F7080939B -:10280000E90081E0089580E008958091F30187FF59 -:1028100011C08091E80082FD05C08091F201811114 -:10282000F8CF11C08091E8008B770BC08091F20146 -:10283000882349F08091E80080FFF8CF8091E8007C -:102840008E778093E80008952091E4003091E500B0 -:1028500095E64091EC00842F817040FF22C080916A -:10286000E80080FD1CC08091F201882391F0853042 -:1028700091F08091EB0085FD10C04091E4005091F3 -:10288000E5004217530729F39A01915011F784E0AC -:10289000089582E0089583E0089581E0089580E03E -:1028A00008954091E80042FFDECF08950E94C414CD -:1028B0000E94CC14E0EEF0E0808181608083E8ED3E -:1028C000F0E080818F77808319BCA7EDB0E08C9118 -:1028D0008E7F8C9380818F7E80831092F10108958A -:1028E0000F931F93CF93DF930E94C4140E94CC14C4 -:1028F000C8EDD0E088818F7788838881806888835D -:1029000088818F7D888319BC1092F2011092EE01AC -:102910001092F0011092EF0100EE10E0F8018081BA -:102920008B7F808388818160888342E060E080E0E3 -:102930000E94D013E1EEF0E080818E7F8083E2EE92 -:10294000F0E0808181608083808188608083F801ED -:1029500080818E7F8083888180618883DF91CF91A1 -:102960001F910F910895E8EDF0E080818F7E8083C4 -:10297000E7EDF0E080818160808384E082BF81E0C8 -:102980008093F1010C947014E8EDF0E080818E7F6B -:1029900080831092E20008951092DA001092E10014 -:1029A00008951F920F920FB60F9211242F933F9309 -:1029B0004F935F936F937F938F939F93AF93BF9347 -:1029C000EF93FF938091E10082FF0BC08091E200C2 -:1029D00082FF07C08091E1008B7F8093E1000E941D -:1029E000FD108091DA0080FF1FC08091D80080FF29 -:1029F0001BC08091DA008E7F8093DA008091D9002D -:102A000080FF0DC080E189BD82E189BD09B400FE6F -:102A1000FDCF81E08093F2010E94CE1005C019BC69 -:102A20001092F2010E94E0108091E10080FF19C035 -:102A30008091E20080FF15C08091E2008E7F80933C -:102A4000E2008091E20080618093E2008091D800F2 -:102A500080628093D80019BC85E08093F2010E94C7 -:102A6000EB108091E10084FF30C08091E20084FF90 -:102A70002CC080E189BD82E189BD09B400FEFDCF93 -:102A80008091D8008F7D8093D8008091E1008F7E67 -:102A90008093E1008091E2008F7E8093E20080913C -:102AA000E20081608093E2008091EE01882311F0C2 -:102AB00084E007C08091E30087FD02C081E001C08F -:102AC00083E08093F2010E94F1108091E10083FF86 -:102AD00029C08091E20083FF25C08091E100877FBB -:102AE0008093E10082E08093F2011092EE018091E8 -:102AF000E1008E7F8093E1008091E2008E7F8093E1 -:102B0000E2008091E20080618093E20042E060E0B8 -:102B100080E00E94D0138091F00088608093F000E4 -:102B20000E94E710FF91EF91BF91AF919F918F911C -:102B30007F916F915F914F913F912F910F900FBEB9 -:102B40000F901F9018951F920F920FB60F9211249D -:102B50002F933F934F935F936F937F938F939F93A5 -:102B6000AF93BF93CF93DF93EF93FF93C091E900AF -:102B7000CF708091EC00D82FD17080FDD0E81092FA -:102B8000E9008091F000877F8093F00078940E94A4 -:102B9000E7151092E9008091F00088608093F000C2 -:102BA000CD2BCF70C093E900FF91EF91DF91CF91D2 -:102BB000BF91AF919F918F917F916F915F914F9155 -:102BC0003F912F910F900FBE0F901F9018951F935C -:102BD000CF93DF93CDB7DEB7AA970FB6F894DEBFD9 -:102BE0000FBECDBFE3EFF1E088E08E0F9091F100D2 -:102BF00091938E13FBCF0E9457118091E80083FFC1 -:102C00001FC18091F3019091F401492F50E04A30A7 -:102C1000510508F015C1FA01EB59FF4F0C94FE2F36 -:102C2000803881F0823809F00BC18091F7018F70F4 -:102C30008093E9008091EB0085FB882780F9109252 -:102C4000E90006C08091EF019091F001911182603E -:102C50009091E800977F9093E8008093F1001092A4 -:102C6000F100C8C0282F2D7F09F0EAC0882319F091 -:102C7000823061F0E5C08091F501813009F0E0C05B -:102C8000933009F080E08093F0012BC08091F50132 -:102C9000811127C08091F7018F7009F4D1C0809312 -:102CA000E9002091EB0020FF1CC0933021F48091BB -:102CB000EB00806214C09091EB0090619093EB0068 -:102CC00021E030E0A90102C0440F551F8A95E2F7C8 -:102CD0004093EA001092EA008091EB0088608093B4 -:102CE000EB001092E9008091E800877F86C0811197 -:102CF000A7C01091F5011F778091E3008078812BA8 -:102D00008093E3008091E800877F8093E8000E9431 -:102D100005148091E80080FFFCCF8091E30080687B -:102D20008093E300111102C082E001C083E0809330 -:102D3000F20186C08058823008F082C08091F5018F -:102D40009091F6018C3D53E0950779F583E08A83F5 -:102D50008AE289834FB7F894DE01139620E03EE0C3 -:102D600051E2E32FF0E050935700E49120FF03C0BD -:102D7000E295EF703F5FEF708E2F90E0EA3010F039 -:102D8000C79601C0C0968D939D932F5F243149F75C -:102D90004FBF8091E800877F8093E8006AE270E08F -:102DA000CE0101960E940C1314C0AE014F5F5F4F1D -:102DB0006091F7010E945312BC01892B09F440C0B5 -:102DC0009091E800977F9093E80089819A810E9412 -:102DD0006F138091E8008B778093E80031C08038D2 -:102DE00079F58091E800877F8093E8008091EE017B -:102DF0008093F1008091E8008E778093E8000E9434 -:102E000005141EC081111CC09091F5019230C0F4D0 -:102E10008091E800877F8093E8009093EE010E9404 -:102E200005148091EE01811106C08091E30087FDB9 -:102E300002C081E001C084E08093F2010E943E1153 -:102E40008091E80083FF0AC08091E800877F80932B -:102E5000E8008091EB0080628093EB00AA960FB6A9 -:102E6000F894DEBF0FBECDBFDF91CF911F910895C3 -:102E7000CF938091F2018823A1F0C091E900CF7037 -:102E80009091EC00892F817090FD80E8C82B109202 -:102E9000E9008091E80083FD0E94E715CF70C093A0 -:102EA000E900CF910895909376018093750108957C -:102EB000E0917501F0917601309721F00190F08159 -:102EC000E02D099480E00895EF92FF920F931F93F5 -:102ED000CF93DF93E0917501F09176013097B1F1D6 -:102EE0008C010280F381E02D09958091D90182FF48 -:102EF0002DC080FF04C082EA98E00E94E008E8014B -:102F000010E18CE9E82E88E0F82E8091D90180FF4D -:102F10000BC088811F928F93FF92EF920E947909D4 -:102F20000F900F900F900F90115021961111EDCF2F -:102F30008091D90180FF0AC08AE998E0DF91CF91A2 -:102F40001F910F91FF90EF900C94E008DF91CF91CB -:102F50001F910F91FF90EF900895E0917501F0910E -:102F60007601309721F00480F581E02D09940895D1 -:102F700020917301309174018217930771F090933F -:102F8000740180937301E0917501F091760130979F -:102F900021F00680F781E02D0994089520917101B8 -:102FA000309172018217930771F0909372018093B0 -:102FB0007101E0917501F0917601309721F0008464 -:102FC000F185E02D0994089508950C94E4170E946A -:102FD00036240E94DB0B0C94FC24CF93C82F8091E5 -:102FE000D90182FF1EC080FF04C08BEB98E00E94D5 -:102FF000E0088091D90180FF0CC01F92CF9386EB2F -:1030000098E09F938F930E9479090F900F900F90F3 -:103010000F908091D90180FF04C084EB98E00E945A -:10302000E0088C2FCF910C948A0FCF92DF92EF9211 -:10303000FF920F931F93CF93DF93CDB7DEB72B97FC -:103040000FB6F894DEBF0FBECDBF0E94F80B88E725 -:10305000C82E81E0D82E00E010E0E02E802F0E94E4 -:10306000240DF60141916F01F42EF826B1F40F5FA3 -:103070001F4F0E30110589F78FEF89838A831B82DA -:103080000E943F248160782F9D838C8349815A81DF -:103090006B818D810E94B81840C09091D90191FF39 -:1030A00004C08B870E942A0D8B8520E030E04F2DD5 -:1030B00050E0922FBA01022E02C0759567950A94CE -:1030C000E2F760FF24C02E83EF8221E030E0690147 -:1030D00002C0CC0CDD1C9A95E2F790E08C219D217A -:1030E000892B09F420E028870E943F248160782FF3 -:1030F0009A8789874E815F8168858A850E94B81882 -:10310000F801E858FE4F8081C826C08206C02F5FB4 -:103110003F4F2630310569F6AACF0E946D281091E5 -:1031200077010E9458171817A1F00E945817809332 -:1031300077012B960FB6F894DEBF0FBECDBFDF919F -:10314000CF911F910F91FF90EF90DF90CF900C9453 -:10315000ED172B960FB6F894DEBF0FBECDBFDF91F3 -:10316000CF911F910F91FF90EF90DF90CF90089536 -:10317000CF93DF93CDB7DEB72B970FB6F894DEBFB2 -:103180000FBECDBF4F83588769877A878B87DE0153 -:10319000119686E0FD0111928A95E9F785E0FE011E -:1031A000379601900D928A95E1F749815A816B819A -:1031B0007C818D819E810E94CE1F2B960FB6F89444 -:1031C000DEBF0FBECDBFDF91CF910895CF9388238F -:1031D00009F4C2C0C82F823859F40E94581781FDE3 -:1031E000BBC089E30E946A220E94492389E30CC084 -:1031F000833879F40E94581780FDAEC083E50E94A1 -:103200006A220E94492383E50E94BD22CF910C943B -:103210004923843859F40E94581782FD9DC087E4E1 -:103220000E946A220E94492387E4EECF8CEF8C0F24 -:10323000813A48F48C2F0E94002D81118DC08C2F73 -:103240000E946A22E3CF80E28C0F883048F4C77076 -:1032500081E001C0880FCA95EAF70E941223D6CFF9 -:103260008BE58C0F833078F4C53A29F0C63A31F0FB -:1032700083E890E005C081E890E002C082E890E039 -:10328000CF910C94B81788E58C0F833108F064C097 -:10329000C83A39F1C93A41F1CA3A49F1CB3A51F148 -:1032A000CC3A59F1CD3A61F1C03B69F1CE3A71F1B6 -:1032B000CF3A79F1C13B81F1C23B89F1C33B91F136 -:1032C000C43B99F1C53BA1F1C63BA9F1C73BB1F1A4 -:1032D000C83BB9F1C93BC1F1CA3BC9F180E090E0FC -:1032E00038C082EE90E035C089EE90E032C08AEEC0 -:1032F00090E02FC085EB90E02CC086EB90E029C0D9 -:1033000087EB90E026C08CEC90E023C08DEC90E041 -:1033100020C083E891E01DC08AE891E01AC082E9EC -:1033200091E017C084E991E014C081E292E011C0FD -:1033300083E292E00EC084E292E00BC085E292E06C -:1033400008C086E292E005C087E292E002C08AE20D -:1033500092E0CF910C94CE17CF910895882309F471 -:103360004BC0823859F40E94581781FF45C089E349 -:103370000E946A220E94492389E30CC0833871F4B9 -:103380000E94581780FF38C083E50E946A220E947D -:10339000492383E50E94BD220C944923843859F4C3 -:1033A0000E94581782FF28C087E40E946A220E9468 -:1033B000492387E4EFCF9CEF980F913A58F390E2BE -:1033C000980F983050F4877091E001C0990F8A955A -:1033D000EAF7892F0E941823DFCF9BE5980F9330DF -:1033E00020F480E090E00C94B817885A833120F4E0 -:1033F00080E090E00C94CE170895882321F00E947D -:1034000012230C9449230895882321F00E94182345 -:103410000C9449230895BF92CF92DF92EF92FF92CE -:103420000F931F93CF93DF9300D000D000D0CDB780 -:10343000DEB725E0FC01DE01119601900D922A9580 -:10344000E1F7FC01408131810281258122952F70B5 -:1034500063817481672B09F4E5C23F3F19F44F3F44 -:1034600009F4E0C27C0149833A8389819A812E83E1 -:103470000E942922182FB92E0E9428220E94EF2094 -:10348000EB2DE295EF70F0E0E159FF4F2E810C94A7 -:10349000FE2F8B2D807F9B2D9F70F92E882319F096 -:1034A000F29480EFF822002349F0FF2009F467C26C -:1034B0008F2D0E9422230E94492361C2812F0E94E6 -:1034C000AE19FF2009F4AEC28F2D0E942823269644 -:1034D0000FB6F894DEBF0FBECDBFDF91CF911F9125 -:1034E0000F91FF90EF90DF90CF90BF900C94492305 -:1034F0003B2D307F8B2D8F70303211F08295807F85 -:10350000112319F0113021F12CC00023B9F022232E -:1035100009F4A0C1213009F09DC126960FB6F89498 -:10352000DEBF0FBECDBFDF91CF911F910F91FF90F6 -:10353000EF90DF90CF90BF900C943223222319F0AC -:10354000213009F46FC28E830E9435238E8196C18B -:10355000002321F0223008F065C27CC1211162C233 -:103560008DC1002321F0222309F474C108C2222353 -:1035700009F484C119C22B2D26952695237030E0BD -:103580002115310521F021303105D1F04BC2002346 -:1035900021F0812F9B2D937002C080E090E0269651 -:1035A0000FB6F894DEBF0FBECDBFDF91CF911F9154 -:1035B0000F91FF90EF90DF90CF90BF900C94B817D1 -:1035C000002321F0812F9B2D937002C080E090E0BA -:1035D00026960FB6F894DEBF0FBECDBFDF91CF9118 -:1035E0001F910F91FF90EF90DF90CF90BF900C94C0 -:1035F000CE17812F002319F00E94F32602C00E94EB -:103600005B2726960FB6F894DEBF0FBECDBFDF91C5 -:10361000CF911F910F91FF90EF90DF90CF90BF90CF -:103620000C94E0278B2D837009F07BC00111FAC147 -:10363000812F829586958770880F880F912F9F70B4 -:10364000C92ED12CE12CF12C082E04C0CC0CDD1C91 -:10365000EE1CFF1C0A94D2F714FF12C04FE050E09A -:1036600060E070E004C0440F551F661F771F8A9505 -:10367000D2F7CB01BA01609570958095909503C003 -:1036800060E070E0CB012B2D269526952370422F0C -:1036900050E042305105D9F04330510569F16C29B1 -:1036A0007D298E299F294130510551F126960FB66B -:1036B000F894DEBF0FBECDBFDF91CF911F910F9168 -:1036C000FF90EF90DF90CF90BF900C9416216C2963 -:1036D0007D298E299F2926960FB6F894DEBF0FBE4E -:1036E000CDBFDF91CF911F910F91FF90EF90DF90B1 -:1036F000CF90BF900C9432210E941621C701B601D1 -:1037000026960FB6F894DEBF0FBECDBFDF91CF91E6 -:103710001F910F91FF90EF90DF90CF90BF900C948E -:10372000FA20002319F08B2D817001C08695882323 -:1037300009F478C1812F829586958770880F880F4C -:10374000912F9F70C92ED12CE12CF12C082E04C092 -:10375000CC0CDD1CEE1CFF1C0A94D2F714FF12C027 -:103760004FE050E060E070E004C0440F551F661F5A -:10377000771F8A95D2F7CB01BA0160957095809535 -:10378000909503C060E070E0CB012B2D2695269527 -:103790002370422F50E042305105D9F0433051059B -:1037A00069F16C297D298E299F294130510551F1FC -:1037B00026960FB6F894DEBF0FBECDBFDF91CF9136 -:1037C0001F910F91FF90EF90DF90CF90BF900C94DE -:1037D000F0216C297D298E299F2926960FB6F89411 -:1037E000DEBF0FBECDBFDF91CF911F910F91FF9034 -:1037F000EF90DF90CF90BF900C940C220E94F021AC -:10380000C701B60126960FB6F894DEBF0FBECDBF36 -:10381000DF91CF911F910F91FF90EF90DF90CF90AC -:10382000BF900C94D421103FD1F118F4103E50F405 -:10383000A1C0123F09F463C008F44CC0133F09F45F -:1038400073C098C01F708B2D8F710023A1F00E9450 -:103850006D21812F26960FB6F894DEBF0FBECDBF27 -:10386000DF91CF911F910F91FF90EF90DF90CF905C -:10387000BF900C94FD190E948E21812F26960FB6C1 -:10388000F894DEBF0FBECDBFDF91CF911F910F9196 -:10389000FF90EF90DF90CF90BF900C94041A00231C -:1038A000A9F02111BFC08B2D8F7126960FB6F89409 -:1038B000DEBF0FBECDBFDF91CF911F910F91FF9063 -:1038C000EF90DF90CF90BF900C94B321223008F09E -:1038D000A9C0E9CF0023A9F08B2D8F7126960FB6D2 -:1038E000F894DEBF0FBECDBFDF91CF911F910F9136 -:1038F000FF90EF90DF90CF90BF900C946D2100234C -:1039000059F38B2D8F7126960FB6F894DEBF0FBE3C -:10391000CDBFDF91CF911F910F91FF90EF90DF907E -:10392000CF90BF900C948E21002399F08B2D8F7136 -:1039300026960FB6F894DEBF0FBECDBFDF91CF91B4 -:103940001F910F91FF90EF90DF90CF90BF900C945C -:10395000582126960FB6F894DEBF0FBECDBFDF917B -:10396000CF911F910F91FF90EF90DF90CF90BF907C -:103970000C944E210023A9F0222309F4ADCF812F0E -:1039800026960FB6F894DEBF0FBECDBFDF91CF9164 -:103990001F910F91FF90EF90DF90CF90BF900C940C -:1039A000E618222309F4ADCF812F26960FB6F8949E -:1039B000DEBF0FBECDBFDF91CF911F910F91FF9062 -:1039C000EF90DF90CF90BF900C94AE194B2D4F70BD -:1039D000612FC7010E94820926960FB6F894DEBFB8 -:1039E0000FBECDBFDF91CF911F910F91FF90EF9050 -:1039F000DF90CF90BF900C9472204B2D4F70612FB1 -:103A0000C70126960FB6F894DEBF0FBECDBFDF917B -:103A1000CF911F910F91FF90EF90DF90CF90BF90CB -:103A20000C94300E26960FB6F894DEBF0FBECDBFB5 -:103A3000DF91CF911F910F91FF90EF90DF90CF908A -:103A4000BF9008950E942F230E9404230E944923BF -:103A50000E9413290E94E02780E090E00E94B8179E -:103A600080E090E00C94CE170E941F230C94221D3E -:103A70000E942922292F22952F7030E02C30310509 -:103A80004CF42A3031056CF42250310922303105D2 -:103A900088F407C02C30310549F02F30310531F062 -:103AA00009C0803E48F0803F29F406C093FB882778 -:103AB00080F9089580E0089581E00895CF93DF9321 -:103AC00000D000D01F92CDB7DEB70F900F900F90AF -:103AD0000F900F90DF91CF910895CF93DF9300D097 -:103AE00000D000D0CDB7DEB726960FB6F894DEBF73 -:103AF0000FBECDBFDF91CF9108951F93CF93DF937A -:103B0000C091860116E080918701C81799F0D0E036 -:103B10001C9FF0011D9FF00D1124E857FE4F4081BE -:103B2000518162817381848195810E946D1D2196EE -:103B3000C770E9CFDF91CF911F9108954091B801EF -:103B40005091B9016091BA017091BB018091BC01A3 -:103B50009091BD010C946D1D8091BD0182958F7077 -:103B600009F054C08091BA01882309F44FC08091B4 -:103B70008601A09187016091B8017091B9014091CF -:103B8000BB015091BC01B6E08A1709F43FC090E038 -:103B900041155105C1F17F3F11F46F3FA1F1B89F6D -:103BA000F001B99FF00D1124E857FE4F21817213E7 -:103BB0002AC02081621327C02281211124C02381C1 -:103BC00034812417350710F421503109241B350B9B -:103BD000283C3105C0F42091BD012F702061209355 -:103BE000BD0126E0289FF001299FF00D1124E35725 -:103BF000FE4F80818F708061808388EB91E00E940E -:103C00000B1A0C947D1D01968770BECF0895CF923C -:103C1000DF92EF92FF920F931F93CF93DF93CDB775 -:103C2000DEB762970FB6F894DEBF0FBECDBF8C0132 -:103C300085E0F801DE011D9601900D928A95E1F76D -:103C4000D8014C9111965C91119712966C91129734 -:103C50001396CD90DC9014973091B8017091B90112 -:103C60008091BB019091BC01009709F46BC17F3F2B -:103C700019F43F3F09F466C1E090BA01EE2009F45F -:103C8000C0C02091BD01C816D90628F0F601E81B76 -:103C9000F90BCF0104C0809590958C0D9D1DFF24DC -:103CA000F394883C910578F0F12C207F09F0C6C090 -:103CB0007C2DD98AC88A89890E945E1D88EB91E093 -:103CC0000E940B1AB1C0822F807F09F046C0751385 -:103CD00014C0341312C0611110C02F7020612093E2 -:103CE000BD010E949E1D88EB91E00E940B1A8091FD -:103CF000BD01D80115968C932EC0CD2819F15F3FD8 -:103D000011F44F3FF9F0F62E61111CC0809186012D -:103D10002091870136E0821709F45AC090E0389F5D -:103D2000F001399FF00D1124E857FE4F71815713B0 -:103D300006C07081471303C07281711103C00196E0 -:103D40008770E9CFF62E662309F418C18091BD0172 -:103D500081608093BD01F12C11C1751308C034132B -:103D600006C0611104C08091BD01D801C3C04D8758 -:103D70005E878D859E856A8B0E94381D6A8988239F -:103D8000E1F16623D1F12091BD01822F82958F70E0 -:103D900090E0029774F08091B8019091B9019887F2 -:103DA0008F831986DB86CA862C87CE0107960E94F0 -:103DB0000B1A86E0F801A8EBB1E001900D928A950C -:103DC000E1F70E94AC1D0E949E1DFF24F394D6C013 -:103DD0004D875E878D859E850E942922292F2295F9 -:103DE0002F7030E0223031050CF0BCC09F7009F01C -:103DF000B6C0805E883008F4C1C0C8010E940B1AAA -:103E0000E4CFC816D90608F453C0F601E81BF90B35 -:103E1000CF01883C910508F450C0F12C7C2DD98A43 -:103E2000C88A89890E945E1DE8EBF1E086E0DF0127 -:103E30001D928A95E9F70E949E1DA0C0751314C0BB -:103E4000341312C0611110C08091BD01F801858347 -:103E5000C8010E940B1A86E0E8EBF1E0DF011D9239 -:103E60008A95E9F7FE2C8AC04D875E878D859E85F1 -:103E70006A8B0E94381D6A89882309F4BECF6623A5 -:103E800009F4BBCF2091BD01822F82958F7090E005 -:103E900002970CF48ECF8091B8019091B9019A836A -:103EA00089831B82DD82CC822E83CE0101967FCF57 -:103EB000809590958C0D9D1DACCFF62E662309F450 -:103EC0009CCF75132EC034132CC02091BD0120FD52 -:103ED0001FC0822F82958F70D9F0D80115962C9330 -:103EE00015978F3049F08F5F982F9295907F822F92 -:103EF0008F70892B15968C93C8010E940B1A86E04F -:103F0000F801A8EBB1E001900D928A95E1F793CF0B -:103F100086E0F801A8EBB1E001900D928A95E1F7F7 -:103F20002DC04D875E878D859E850E94381D81112D -:103F300040CF8091BD0181608093BD01C8010E9486 -:103F40000B1A1CC0662309F458CF4D875E878D85F8 -:103F50009E850E94381D882309F44FCF2ACF8111F6 -:103F600048CF0CC0243031050CF047CF9F7009F4C6 -:103F700040CFF8019581907F09F03BCF8F2D62965D -:103F80000FB6F894DEBF0FBECDBFDF91CF911F916A -:103F90000F91FF90EF90DF90CF9008951F93CF93F4 -:103FA000DF93CDB7DEB72C970FB6F894DEBF0FBE08 -:103FB000CDBF4F83588769877A878B879C87CE01CF -:103FC00007960E94071E882369F08F8198852A85AD -:103FD0003B85232BF1F19F3F09F063C08F3F09F030 -:103FE00060C037C086E0FE013796DE011196019071 -:103FF0000D928A95E1F76F817885EA85FB85309788 -:1040000041F17F3F11F46F3F21F12091870130E0B2 -:10401000C9010196877099274091860150E0841765 -:10402000950709F447C069837A83FD83EC8396E0A2 -:10403000929FD001939FB00D1124A857BE4FFE014F -:10404000319601900D929A95E1F7809387010E9435 -:104050007D1D16E080918601909187018917C1F13D -:10406000189FC001112488579E4F0E94071E882365 -:1040700079F1E09186011E9FF0011124E857FE4F6F -:104080004081518162817381848195810E946D1D7F -:104090008091860190E00196877099278093860130 -:1040A000D9CF4F81588569857A858B859C850E94FB -:1040B0006D1DCFCF0E94341D109287011092860192 -:1040C000E8EBF1E086E0DF011D928A95E9F7C1CFC8 -:1040D0002C960FB6F894DEBF0FBECDBFDF91CF9107 -:1040E0001F910895EF92FF920F931F93CF93DF9349 -:1040F0008C01892B09F46CC0F12CEE24E394E801C7 -:104100002196F8018491843740F4843008F051C03E -:10411000813081F0823019F15BC0853709F444C0E9 -:10412000A8F19CE7980F903708F052C08F770E9453 -:10413000AE1941C00E5F1F4FFE01C49180E28C0F8B -:10414000883048F4C7708E2D01C0880FCA95EAF7F1 -:104150000E94222314C08C2F0E94E6182DC00E5FEF -:104160001F4FFE01C49180E28C0F883058F4C77055 -:104170008E2D01C0880FCA95EAF70E9428230E945D -:1041800049231AC08C2F0E94AE1916C00E5F1F4F14 -:10419000FE01C491CC2381F08FE99FE00197F1F7F4 -:1041A00000C00000C150F6CF0E5F1F4FFE01F4901B -:1041B00003C00E94E6188E018F2D882309F49FCF3B -:1041C000EFE9FFE03197F1F700C000008150F5CF33 -:1041D000DF91CF911F910F91FF90EF900895089577 -:1041E0006093C2017093C3018093C4019093C50191 -:1041F0000C94221D0F931F930091C2011091C301D3 -:104200002091C4013091C501DC01CB01802B912BA1 -:10421000A22BB32B8093C2019093C301A093C4013E -:10422000B093C5011F910F910C94221D0F931F9302 -:104230000091C2011091C3012091C4013091C501C8 -:10424000DC01CB0180239123A223B3238093C201FD -:104250009093C301A093C401B093C5011F910F9126 -:104260000C94221D0F931F930091C2011091C30162 -:104270002091C4013091C501DC01CB018027912739 -:10428000A227B3278093C2019093C301A093C401D6 -:10429000B093C5011F910F910C94221D1092BE0185 -:1042A0001092BF011092C0011092C1010C94221D06 -:1042B00041E050E060E070E004C0440F551F661F0D -:1042C000771F8A95D2F74093BE015093BF01609348 -:1042D000C0017093C1010C94221D41E050E060E0E8 -:1042E00070E004C0440F551F661F771F8A95D2F7F0 -:1042F0008091BE019091BF01A091C001B091C10118 -:10430000482B592B6A2B7B2B4093BE015093BF0146 -:104310006093C0017093C1010C94221D41E050E0F4 -:1043200060E070E004C0440F551F661F771F8A9538 -:10433000D2F740955095609570958091BE0190910F -:10434000BF01A091C001B091C101482359236A2344 -:104350007B234093BE015093BF016093C0017093D3 -:10436000C1010C94221D41E050E060E070E004C007 -:10437000440F551F661F771F8A95D2F78091BE01A3 -:104380009091BF01A091C001B091C1014827592768 -:104390006A277B274093BE015093BF016093C00101 -:1043A0007093C1010C94221D0F931F930091BE01C5 -:1043B0001091BF012091C0013091C101DC01CB01FE -:1043C000802B912BA22BB32B8093BE019093BF0126 -:1043D000A093C001B093C1011F910F910C94221DB5 -:1043E0000F931F930091BE011091BF012091C00156 -:1043F0003091C101DC01CB0180239123A223B3239F -:104400008093BE019093BF01A093C001B093C101FE -:104410001F910F910C94221D0F931F930091BE01C9 -:104420001091BF012091C0013091C101DC01CB018D -:1044300080279127A227B3278093BE019093BF01C5 -:10444000A093C001B093C1011F910F910C94221D44 -:104450000895CF92DF92EF92FF920F931F93CF9325 -:10446000DF938C01C090C201D090C301E090C401E1 -:10447000F090C5014091BE015091BF016091C00113 -:104480007091C101C42AD52AE62AF72ACFE1D0E0EB -:10449000D701C6010C2E04C0B695A79597958795B0 -:1044A0000A94D2F780FF07C0B8018C2F0E94530EE8 -:1044B0008130910531F4219758F7B80180E00E94CE -:1044C000530EDF91CF911F910F91FF90EF90DF90EE -:1044D000CF90089590910C01992321F090910D01B6 -:1044E000911109C020910E0130910F01F90132960E -:1044F0009FEF40E030C0982F9695969596959F3007 -:10450000A0F4E0910E01F0910F01E90FF11D877009 -:1045100021E030E0A90102C0440F551F8A95E2F75F -:10452000CA019181892B818308959091D90190FFCF -:1045300023C01F928F938CEE98E09F938F930E94DD -:1045400079090F900F900F900F9008959F3F39F0C9 -:104550004F5F4E3041F051915813F8CF0DC05111BB -:10456000F7CF942FF5CF9F3F39F0F901E90FF11DF7 -:1045700097FDFA9582830895089590910C019923EF -:1045800021F090910D01911109C020910E013091FF -:104590000F01F9013296205F3F4F30C0982F96955A -:1045A000969596959F30A8F4E0910E01F0910F0139 -:1045B000E90FF11D877021E030E0A90102C0440F2E -:1045C000551F8A95E2F7CA018095918189238183DD -:1045D00008959091D90190FF16C01F928F938EEC91 -:1045E00098E09F938F930E9479090F900F900F90FE -:1045F0000F9008953196E217F30729F090819813F0 -:10460000F9CF1082F7CF089581E090E0E0910E019C -:10461000F0910F01E80FF91F10820196803191058A -:10462000A9F708959091D801892B8093D801089516 -:1046300080959091D80189238093D8010895109294 -:10464000D80108959091D701892B8093D7010895BF -:1046500080959091D70189238093D7010895109276 -:10466000D70108958093C60108951092C601089558 -:1046700080910E0190910F01FC0131969C01205F09 -:104680003F4F80E0919191118F5FE217F307D1F7CF -:104690000895E0910E01F0910F018091D80180837F -:1046A000E0910E01F0910F0190818091D701892B4B -:1046B00080838091C601882361F0E0910E01F09122 -:1046C0000F019081892B80830E94382381111092E1 -:1046D000C60180910E0190910F010C946417909384 -:1046E0003B0180933A010895CF92DF92EF92FF92BF -:1046F0006C01EE24FF24C114D104E104F10421F083 -:10470000C701B60120E101C020E0C72ED82EE92E56 -:10471000FF24C114D104E104F10419F0285FC7019A -:10472000B6016B017C0154E0F694E794D794C794EA -:104730005A95D1F7C114D104E104F10419F02C5FAA -:10474000C701B6016B017C0142E0F694E794D7946F -:10475000C7944A95D1F7C114D104E104F10419F0CA -:104760002E5FC701B601DC01CB01B695A7959795E1 -:104770008795892B8A2B8B2B09F02F5F822FFF9037 -:10478000EF90DF90CF9008958295982F9C7C392FE1 -:1047900036953695282F237344E0249FC0011124B9 -:1047A000932F982B292F2A7A2695892F8575880F84 -:1047B000822B08951F93CF93DF931F92CDB7DEB75F -:1047C00099830E94C423182F9981892F0E94C423A2 -:1047D000212F30E0322F2227A901482BCA010F9048 -:1047E000DF91CF911F9108958091F201843009F1FA -:1047F0001092DA0120E488E190E00FB6F894A895D1 -:10480000809360000FBE2093600083B7817F846037 -:1048100083BF83B7816083BF7894889583B78E7F89 -:1048200083BF88E10FB6F894809360001092600017 -:104830000FBE089508950895CF930E941A240E94F0 -:10484000F80B0E941B24C0E08C2F0E94240D8111C4 -:1048500004C0CF5FCE30C1F701C081E0CF91089591 -:104860000E94341D0E9458170C948A0F82E084BD68 -:1048700093E095BD9AEF97BD80936E0008952FB792 -:10488000F8948091DB019091DC01A091DD01B09161 -:10489000DE012FBF0895CF92DF92EF92FF920F9328 -:1048A0001F932FB7F8944091DB015091DC01609188 -:1048B000DD017091DE012FBF6A017B01EE24FF2430 -:1048C0008C0120E030E0C016D106E206F30610F4B9 -:1048D000415051099A01281B390BC9011F910F91B1 -:1048E000FF90EF90DF90CF9008951F920F920FB638 -:1048F0000F9211248F939F93AF93BF938091DB010D -:104900009091DC01A091DD01B091DE010196A11D25 -:10491000B11D8093DB019093DC01A093DD01B09386 -:10492000DE01BF91AF919F918F910F900FBE0F90BD -:104930001F9018950E945614F8942FEF87EA91E67D -:10494000215080409040E1F700C0000087E090EBEC -:10495000DC018093FB019093FC01A093FD01B093D7 -:10496000FE019CE088E10FB6F894A8958093600062 -:104970000FBE90936000FFCFEF92FF920F931F93B3 -:10498000CF93DF93D82FC0E08C2F0E94240D00E03E -:1049900010E0E82EF12CC701002E02C095958795F6 -:1049A0000A94E2F780FD06C00F5F1F4F0630110525 -:1049B00091F709C0602F7C2F80E00E94310ED81340 -:1049C000F3CF81E004C0CF5FCE30F1F680E0DF911D -:1049D000CF911F910F91FF90EF900895CF93C82F23 -:1049E0008CE20E94BC24882321F08C2FCF910C9460 -:1049F000BC2480E0CF910895CF930E944B26811173 -:104A000002C00E94312681E199E00E94E008C5E6DB -:104A1000C15049F00E94F80B8FE39CE90197F1F730 -:104A200000C00000F5CF8AE099E00E94E00889E22A -:104A30000E94EE24811113C18AE20E94EE248111AA -:104A40000E94312685E00E94EE2481110E949A2462 -:104A50000E9456268093D90187E00E94EE24882385 -:104A6000A9F18BE10E94EE24882351F08091D901B5 -:104A700081FB222720F991E0922790FB81F90EC05B -:104A80008EE00E94EE24882361F08091D90182FBA0 -:104A9000222720F991E0922790FB82F98093D90197 -:104AA00015C080E10E94EE249091D901882341F045 -:104AB00093FB222720F981E0822780FB93F904C031 -:104AC000892F809580FB90F99093D9018091D9012D -:104AD0000E945A260E9468268093EC0180EE0E9474 -:104AE000EE24882341F08091EC01982F909590FB63 -:104AF00080F98093EC0189E30E94EE24882359F029 -:104B00008091EC0181FB222720F991E0922790FB14 -:104B100081F98093EC0182EE0E94EE24882359F003 -:104B20008091EC0182FB222720F991E0922790FBF3 -:104B300082F98093EC0186EE0E94EE24882359F0DE -:104B40008091EC0183FB222720F991E0922790FBD2 -:104B500083F98093EC0183EE0E94EE24882359F0C0 -:104B60008091EC0184FB222720F991E0922790FBB1 -:104B700084F98093EC0185E30E94EE24882359F0A8 -:104B80008091EC0185FB222720F991E0922790FB90 -:104B900085F98093EC0181E30E94EE24882359F08B -:104BA0008091EC0186FB222720F991E0922790FB6F -:104BB00086F98093EC0181E10E94EE24882359F06C -:104BC0008091EC0187FB222720F991E0922790FB4E -:104BD00087F98093EC018091EC010E946C26809112 -:104BE000EC0187FB882780F980930D0187E20E9402 -:104BF000EE24C82F8EE10E94EE248111C2608FE165 -:104C00000E94EE248111C46080E20E94EE24811192 -:104C1000C86081E20E94EE248111C06182E20E949C -:104C2000EE248111C06283E20E94EE248111C064EF -:104C300084E20E94EE24882311F0C06802C0CC23D5 -:104C400029F08C2F0E9463266C2F03C00E945F26E0 -:104C5000682F70E080E090E0CF910C94F020CF912D -:104C600008956DEE7EEF80E090E00E94343060E0C9 -:104C700082E090E00E94263060E083E090E00E94B5 -:104C8000263060E084E090E00E94263060E085E01D -:104C900090E00C94263080E090E00E94203021E0EB -:104CA0008D3E9E4F09F020E0822F089582E090E033 -:104CB0000C941830682F82E090E00C94263083E04A -:104CC00090E00C941830682F83E090E00C9426302C -:104CD00084E090E00C941830682F84E090E00C940D -:104CE00026308091E10180FF0BC06091130185E0C7 -:104CF000689FB001112475956795759567952BC0D0 -:104D000081FF09C06091130185E0689FB001112403 -:104D10007595679520C082FF07C06091130185E0FB -:104D2000689FB001112417C09091E2019923D1F03E -:104D300060911201961788F72091130185E0289F52 -:104D400090011124929FA001939F500D112470E0B7 -:104D5000CA010E94EA2F6038710540F4611571059F -:104D600039F002C065E070E0862F08958FE708955E -:104D700081E008958091E10180FF08C060911101F8 -:104D800070E0759567957595679521C081FF06C0A0 -:104D90006091110170E07595679519C082FF04C09C -:104DA0006091110170E010C09091E2019923C1F06F -:104DB000609110019617A0F780911101899FC001A1 -:104DC000112470E00E94EA2F6038710528F4611503 -:104DD000710521F0862F08958FE7089581E00895E9 -:104DE00061E070E0F4CF803F21F40E94712681954C -:104DF00004C0813F29F40E9471268093E501089543 -:104E0000823F21F40E947126819504C0833F29F4DA -:104E10000E9471268093E4010895893F19F40E944D -:104E2000BA2605C08A3F31F40E94BA268195809344 -:104E3000E60108958B3F21F40E94BA26819504C0B3 -:104E40008C3F29F40E94BA268093E7010895843F9D -:104E500021F48091E301816017C0853F21F48091A6 -:104E6000E301826011C0863F21F48091E3018460F8 -:104E70000BC0873F21F48091E301886005C0883F23 -:104E800031F48091E30180618093E30108958D3FC7 -:104E900021F48091E10181600BC08E3F21F480916B -:104EA000E101826005C08F3F29F48091E1018460B7 -:104EB0008093E1010895803F39F48091E50187FFF7 -:104EC0006CC01092E50169C0813F29F48091E50131 -:104ED0001816BCF362C09091E401823F29F497FF59 -:104EE0005CC01092E40159C0833F19F41916CCF349 -:104EF00054C0893F41F48091E60118160CF04DC072 -:104F00001092E6014AC08A3F29F48091E60187FFAA -:104F100044C0F6CF8B3F39F48091E70187FF3DC055 -:104F20001092E7013AC08C3F29F48091E7011816EE -:104F3000BCF333C0843F21F48091E3018E7F17C01E -:104F4000853F21F48091E3018D7F11C0863F21F4DC -:104F50008091E3018B7F0BC0873F21F48091E301B7 -:104F6000877F05C0883F31F48091E3018F7E809375 -:104F7000E30113C08D3F21F48091E1018E7F0BC0CE -:104F80008E3F21F48091E1018D7F05C08F3F29F490 -:104F90008091E1018B7F8093E1018091E401811197 -:104FA0000EC08091E50181110AC08091E601811156 -:104FB00006C08091E701811102C01092E2010895BC -:104FC0008091D90183FF7EC08DE499E00E94E008C2 -:104FD0008091E3011F928F9388E499E09F938F93D0 -:104FE0000E94790986E499E00E94E0088091E4013A -:104FF000282F332727FD30953F938F9383E499E043 -:105000009F938F930E94790981E499E00E94E008C0 -:105010008091E501282F332727FD30953F938F930B -:105020008EE399E09F938F930E9479098CE399E036 -:105030000E94E0088091E601282F332727FD309554 -:105040003F938F9389E399E09F938F930E9479090F -:1050500087E399E00E94E0088091E701282F332739 -:1050600027FD30953F938F9384E399E09F938F932F -:105070000E94790981E399E00E94E0088091E201B1 -:105080001F928F938EE299E09F938F930E947909EC -:105090008CE299E00E94E0088091E1011F928F93D9 -:1050A00089E299E09F938F930E94790986E299E0C3 -:1050B0000E94E0088DB79EB74C960FB6F8949EBF3D -:1050C0000FBE8DBF83EE91E00E94AD170E943F247A -:1050D0009093E0018093DF0108951F93CF93DF93B6 -:1050E0008091DF019091E0010E944B24AC019091EE -:1050F000E201992321F02091140130E006C02091B3 -:1051000015018AE0289F900111244217530708F4E3 -:1051100086C08091E401C091E501D091E601109133 -:10512000E701811107C0C11176C0D11174C01111FE -:1051300072C075C09F3F19F09F5F9093E2011816EF -:1051400024F40E9471268093E4018091E40187FF9A -:1051500005C00E94712681958093E4011C1624F4F9 -:105160000E9471268093E5018091E50187FF05C0CB -:105170000E94712681958093E5016091E401662388 -:1051800039F1C091E501CC2319F1772767FD7095BE -:10519000872F972F0E94EF2E23E333E343E35FE350 -:1051A0000E94532F0E94BC2E6093E4016C2F77273E -:1051B00067FD7095872F972F0E94EF2E23E333E32F -:1051C00043E35FE30E94532F0E94BC2E6093E501EE -:1051D0001D1624F40E94BA268093E6018091E60110 -:1051E00087FF05C00E94BA2681958093E6011116BB -:1051F00024F40E94BA268093E7018091E70187FF9B -:1052000005C00E94BA2681958093E701DF91CF9176 -:105210001F910C94E0279F3F09F08ECF96CFDF912E -:10522000CF911F910895E3EEF1E085E0DF011D923B -:105230008A95E9F71092E2011092E101089580E762 -:105240009BE00E94E0081F9281E08F931F9285E00F -:105250008F9382E29BE09F938F930E9479090F9036 -:105260000F900F900F900F900F9008958330E9F1F9 -:1052700028F4813061F0823009F10895853009F415 -:1052800062C008F449C0863009F474C00895809162 -:105290001501262F30E0280F311D2F3F310524F452 -:1052A000680F6093150103C08FEF80931501809103 -:1052B00015011F928F938BE59AE072C080911401C3 -:1052C000262F30E0280F311D2F3F310524F4680FC1 -:1052D0006093140103C08FEF809314018091140137 -:1052E0001F928F9389E49AE05BC080911301262F6F -:1052F00030E0280F311D2F3F310524F4680F6093F3 -:10530000130103C08FEF80931301809113011F924B -:105310008F9386E39AE044C080911201262F30E0FB -:10532000280F311D2F3F310524F4680F60931201BF -:1053300003C08FEF80931201809112011F928F930F -:1053400081E29AE02DC080911101262F30E0280FD4 -:10535000311D2F3F310524F4680F6093110103C004 -:105360008FEF80931101809111011F928F9388E03C -:105370009AE016C080911001262F30E0280F311DD1 -:105380002F3F310524F4680F6093100103C08FEFA5 -:1053900080931001809110011F928F938DEE99E000 -:1053A0009F938F930E9479090F900F900F900F9009 -:1053B0000895833081F128F4813059F08230D1F0A2 -:1053C0000895853009F449C0B8F1863009F456C013 -:1053D000089580911501681720F4861B80931501AC -:1053E00002C010921501809115011F928F938EEDCE -:1053F00099E054C080911401681720F4861B8093B3 -:10540000140102C010921401809114011F928F9315 -:105410008CEC99E043C080911301681720F4861B3F -:105420008093130102C010921301809113011F9207 -:105430008F9389EB99E032C080911201681720F4B4 -:10544000861B8093120102C01092120180911201FA -:105450001F928F9384EA99E021C08091110168170F -:1054600020F4861B8093110102C0109211018091DB -:1054700011011F928F938BE899E010C08091100169 -:10548000681720F4861B8093100102C0109210014F -:10549000809110011F928F9380E799E09F938F93E3 -:1054A0000E9479090F900F900F900F900895CF935D -:1054B000C82F1F928F9385E79CE09F938F930E9444 -:1054C000790981E090E0A0E0B0E0BC01CD0104C02A -:1054D000660F771F881F991FCA95D2F70E94F02088 -:1054E0000F900F900F900F90CF910C94341DCF938D -:1054F0008D3109F465C0B0F58E3009F4CCC100F5EA -:10550000873009F49BC1A8F4863009F06DC2809100 -:10551000D901817F8E7F8093D9018AE79CE00E9428 -:10552000E0088CEB90E10E94E00881E08093E901C3 -:1055300080C1883009F44FC08B3009F47CC154C25B -:10554000863109F4F0C138F4803109F4B8C18131F1 -:1055500009F430C249C2893109F4CEC18B3109F452 -:1055600086C142C2853309F437C248F4873209F450 -:1055700033C208F433C2893209F42EC235C28334EF -:1055800038F48A3308F02CC2883309F454C12CC291 -:10559000833409F421C2883409F026C20E94341DE4 -:1055A0008BEA90E10E94E0089FEF23ED80E39150A9 -:1055B00020408040E1F700C000000E949A2439C1D9 -:1055C0008BEC90E10E94E0080E94762E0E94581712 -:1055D0000E948A0F2EC180EC90E10E94E0088BE8C7 -:1055E0009EE00E94E0080E945F261F928F9388E849 -:1055F0009EE09F938F930E94790986E89EE00E9427 -:10560000E0080E945626C82F83E79EE00E94E0082B -:105610001F92CF938EE69EE09F938F930E9479090D -:105620008CE69EE00E94E00882E69EE00E94E00890 -:105630008C2F81701F928F938FE59EE09F938F93A5 -:105640000E9479098DE59EE00E94E00883E59EE0D6 -:105650000E94E008C1FB882780F91F928F9380E5A4 -:105660009EE09F938F930E9479098EE49EE00E94B2 -:10567000E00882E49EE00E94E008C2FB882780F9EF -:105680001F928F938FE39EE09F938F930E947909DF -:105690008DE39EE00E94E00884E39EE00E94E00823 -:1056A000C3FBCC27C0F91F92CF9381E39EE09F9369 -:1056B0008F930E9479098FE29EE00E94E0080E9489 -:1056C0006826C82F8BE19EE00E94E0081F92CF93CE -:1056D00086E19EE09F938F930E94790984E19EE08A -:1056E0000E94E0088BEF9DE00E94E0088C2F817003 -:1056F0001F928F9388EF9DE09F938F930E9479096B -:105700008DB79EB780960FB6F8949EBF0FBE8DBF23 -:1057100086EF9DE00E94E0088FED9DE00E94E0088A -:10572000C1FB882780F91F928F938CED9DE09F939A -:105730008F930E9479098AED9DE00E94E00888EC31 -:105740009DE00E94E008C2FB882780F91F928F939A -:1057500085EC9DE09F938F930E94790983EC9DE0F7 -:105760000E94E00881EB9DE00E94E008C3FB8827CF -:1057700080F91F928F938EEA9DE09F938F930E94F2 -:1057800079098CEA9DE00E94E00882EA9DE00E948F -:10579000E008C4FB882780F91F928F938FE99DE072 -:1057A0009F938F930E9479098DE99DE00E94E00804 -:1057B0008BE89DE00E94E008C5FB882780F91F92D6 -:1057C0008F9388E89DE09F938F930E94790986E8E4 -:1057D0009DE00E94E0088AE69DE00E94E008C6FB8A -:1057E000882780F91F928F9387E69DE09F938F9380 -:1057F0000E94790985E69DE00E94E0088DE59DE024 -:105800000E94E008C7FBCC27C0F91F92CF938AE51E -:105810009DE09F938F930E94790988E59DE00E9407 -:10582000E0088DB79EB74C960FB6F8949EBF0FBE9A -:105830008DBFC1E0DEC081EA9CE05BC08091D901F0 -:10584000C82FC17080FF09C08EE990E10E94E00876 -:105850008091D901817F8E7F47C082E990E10E94CB -:10586000E0088091D90181608093D901E2CF9091C5 -:10587000D90191FBCC27C0F981E0C827892FC0FB53 -:1058800081F98093D901CC2319F085E890E127C0F4 -:1058900087E790E12EC09091D90192FBCC27C0F907 -:1058A00081E0C827892FC0FB82F98093D901CC23DE -:1058B00019F088E690E113C088E590E11AC0909154 -:1058C000D90193FBCC27C0F981E0C827892FC0FB01 -:1058D00083F98093D901CC2351F08CE490E10E94AC -:1058E000E0088091D90181608093D90182C08FE363 -:1058F00090E10E94E0089DCF80E390E10E94E008E3 -:1059000084E090E10E94E00887EC9FE00E94E008BC -:105910008AE99FE00E94E00886E59FE00E94E00897 -:105920008BE29FE0E6CF8DE19FE00E94E0080E94BD -:1059300058171F928F9383E09FE09F938F930E944D -:10594000790980910C011F928F938CEE9EE09F93BA -:105950008F930E947909809170011F928F9389ED36 -:105960009EE09F938F930E94790980910D011F9271 -:105970008F9386EC9EE09F938F930E94790980918C -:10598000DB019091DC01A091DD01B091DE01BF93BC -:10599000AF939F938F9382EB9EE09F938F930E9490 -:1059A00079098DB79EB746960FB6F8949EBF0FBE85 -:1059B0008DBF3FCF0E94341DC0910D0181E0C827EB -:1059C000C0930D01CC2329F088EA9EE00E94E008F4 -:1059D00010C08DE99EE08DCF80E003C08D5101C0E5 -:1059E00089530E94572A25CF8BE99EE00E94E00848 -:1059F000C0E08C2FCF91089580E0089580E0089555 -:105A0000CF93C82F8091E901813081F020F082305E -:105A100009F44FC045C1E0910E01F0910F01808162 -:105A2000813169F0823209F03DC109C0E0910E0177 -:105A3000F0910F018081813111F0823261F48C2F5D -:105A40000E94FC2C811104C08C2F0E94772A2FC049 -:105A500081E090E02CC08C2F0E94FE2C811126C08A -:105A6000C431E1F070F4CB3081F0C031D1F40E9448 -:105A70001F298DE69CE00E94E00882E08093E90106 -:105A800015C0C93259F0C83361F48AE79CE00E941E -:105A9000E00881E79CE00E94E00808C01092E9015C -:105AA00003C18BE69CE00E94E008FEC081E08170AB -:105AB000FDC0C43220F5CE3108F0C0C0CB3099F122 -:105AC000C8F4C73009F0D2C08AE08093150194E190 -:105AD0009093140193E0909313018093120188E056 -:105AE0008093110188E28093100181E19BE00E9484 -:105AF000E008BFC0C33149F1C431C1F0B7C0CB34F5 -:105B000009F4A9C028F4C93289F0C83361F0AEC0E5 -:105B1000C13509F49EC0C23509F499C0CE3409F0EC -:105B2000A5C06AE09EC00E941F29A3C08091E80121 -:105B3000882319F01092E8019CC08EE19BE00E943E -:105B4000E00881E08093E901B1C088EF9AE00E940B -:105B5000E00886EE9AE00E94E008809115011F920D -:105B60008F9383EE9AE09F938F930E94790981EE41 -:105B70009AE00E94E0088FEC9AE00E94E008809191 -:105B800014011F928F938CEC9AE09F938F930E9445 -:105B900079098AEC9AE00E94E0088BEB9AE00E9477 -:105BA000E008809113011F928F9388EB9AE09F93F6 -:105BB0008F930E94790986EB9AE00E94E00885EABB -:105BC0009AE00E94E008809112011F928F9382EA6E -:105BD0009AE09F938F930E94790980EA9AE00E944D -:105BE000E0088BE89AE00E94E008809111011F9282 -:105BF0008F9388E89AE09F938F930E94790986E8B3 -:105C00009AE00E94E0088FE69AE00E94E008809106 -:105C100010011F928F938CE69AE09F938F930E94BE -:105C200079098AE69AE00E94E0088DB79EB7489607 -:105C30000FB6F8949EBF0FBE8DBF1BC0CE51EC2F88 -:105C4000F0E0E15DFE4F80818093E80112C061E0E9 -:105C500003C061E006C06AE08091E8010E94362935 -:105C600008C08091E8010E94D92903C08FE09BE021 -:105C700013C08091E801882369F01F928F9389E017 -:105C80009BE09F938F930E9479090F900F900F9044 -:105C90000F9004C086E09BE00E94E00881E006C00F -:105CA0001092E90180E002C080E001CFCF91089519 -:105CB000E1E8F0E08081886080838081816080837A -:105CC0008FB7F89493E09093890090ED90938800BB -:105CD0008FBF0895EFE6F0E08081826080830895B1 -:105CE000EFE6F0E080818D7F80830895EFE6F0E0BD -:105CF000908182E08927808308951F920F920FB6CA -:105D00000F9211242F933F934F935F936F937F9341 -:105D10008F939F93AF93BF93EF93FF938091EA018B -:105D20009091EB0101969093EB018093EA01811130 -:105D300003C082E00E948A0FE091EB01E695E695B0 -:105D4000F0E0E552FF4EE4918091EA018E1303C02A -:105D500080E00E948A0FFF91EF91BF91AF919F91D8 -:105D60008F917F916F915F914F913F912F910F9004 -:105D70000FBE0F901F90189504D06894B1118DC07C -:105D8000089570D088F09F5790F0B92F9927B75198 -:105D9000A0F0D1F0660F771F881F991F1AF0BA95EF -:105DA000C9F712C0B13081F077D0B1E0089574C066 -:105DB000672F782F8827B85F39F0B93FCCF38695E5 -:105DC00077956795B395D9F73EF490958095709542 -:105DD00061957F4F8F4F9F4F0895E89409C097FBBF -:105DE0003EF490958095709561957F4F8F4F9F4FB2 -:105DF0009923A9F0F92F96E9BB279395F6958795F6 -:105E000077956795B795F111F8CFFAF4BB0F11F4B8 -:105E100060FF1BC06F5F7F4F8F4F9F4F16C088235F -:105E200011F096E911C0772321F09EE8872F762F95 -:105E300005C0662371F096E8862F70E060E02AF0D6 -:105E40009A95660F771F881FDAF7880F96958795C2 -:105E500097F9089557FD9058440F551F59F05F3F2B -:105E600071F04795880F97FB991F61F09F3F79F07C -:105E700087950895121613061406551FF2CF4695FE -:105E8000F1DF08C0161617061806991FF1CF869580 -:105E90007105610508940895E894BB276627772764 -:105EA000CB0197F908950BD078C069D028F06ED057 -:105EB00018F0952309F05AC05FC01124EECFCADF55 -:105EC000A0F3959FD1F3950F50E0551F629FF0010D -:105ED000729FBB27F00DB11D639FAA27F00DB11D66 -:105EE000AA1F649F6627B00DA11D661F829F2227EF -:105EF000B00DA11D621F739FB00DA11D621F839F76 -:105F0000A00D611D221F749F3327A00D611D231F4B -:105F1000849F600D211D822F762F6A2F11249F5799 -:105F200050408AF0E1F088234AF0EE0FFF1FBB1FBC -:105F3000661F771F881F91505040A9F79E3F51055B -:105F400070F014C0AACF5F3FECF3983EDCF3869567 -:105F500077956795B795F795E7959F5FC1F7FE2B06 -:105F6000880F911D9695879597F9089597F99F67E2 -:105F700080E870E060E008959FEF80EC08950024D1 -:105F80000A941616170618060906089500240A949E -:105F900012161306140605060895092E0394000C24 -:105FA00011F4882352F0BB0F40F4BF2B11F460FFB3 -:105FB00004C06F5F7F4F8F4F9F4F0895991B79E00B -:105FC00004C0991F961708F0961B881F7A95C9F789 -:105FD0008095089597FB072E16F4009407D077FD5F -:105FE00009D00E94043007FC05D03EF490958195BD -:105FF0009F4F0895709561957F4F0895EE0FFF1F95 -:106000000590F491E02D0994AA1BBB1B51E107C038 -:10601000AA1FBB1FA617B70710F0A61BB70B881F38 -:10602000991F5A95A9F780959095BC01CD010895C7 -:10603000F999FECF92BD81BDF89A992780B5089550 -:10604000A8E1B0E042E050E00C943B30262FF999F3 -:10605000FECF1FBA92BD81BD20BD0FB6F894FA9A4B -:10606000F99A0FBE019608950E942630272F0C94AE -:106070002730DC01CB01FC01F999FECF06C0F2BD4F -:10608000E1BDF89A319600B40D9241505040B8F7F6 -:066090000895F894FFCF13 -:1060960020028B0F7C1059102510F10F0101C7014A -:1060A60028080A03140A3F4D3620395B080E08D823 -:1060B60007B8077F07F2060B0724073D075D0701B0 -:0A60C60002030405060708090000A4 +:10067000005B735D004B6579626F61726420737417 +:100680006172742E0A005B575D005B535D005B5224 +:100690005D005B445D005B435D0016034500720036 +:1006A00067006F0044006F007800200045005A008A +:1006B000000016034500720067006F0044006F00E1 +:1006C0007800200045005A000000040309040902D4 +:1006D0008D00050100A0FA090400000103010100DA +:1006E000092111010001223F000705810308000ACA +:1006F0000904010001030102000921110100012286 +:100700004D000705820308000A09040200010300E6 +:1007100000000921110100012236000705830308AA +:10072000000A09040300020300000009211101006E +:10073000012220000705840320000107050403208F +:100740000001090404000103000000092111010057 +:100750000122390007058503100001120110010074 +:10076000000008EDFE071301000102000105010968 +:1007700006A101050719E029E7150025019508756F +:100780000181020508190129059505750191029558 +:1007900001750391010507190029771500250195B9 +:1007A0007875018102C00631FF0974A10109751530 +:1007B0000025FF9520750881020976150025FF9513 +:1007C0002075089102C005010980A101850216016A +:1007D0000026B7001A01002AB700751095018100A4 +:1007E000C0050C0901A1018503160100269C021A0F +:1007F00001002A9C02751095018100C005010902C3 +:10080000A1010901A100050919012905150025010A +:100810009505750181029501750381010501093076 +:1008200009311581257F95027508810609381581E2 +:10083000257F950175088106050C0A38021581256A +:100840007F950175088106C0C005010906A1010553 +:100850000719E029E7150025019508750181029522 +:100860000175088101050819012905950575019192 +:10087000029501750391010507190029FF1500254F +:10088000FF950675088100C00A0025303258200007 +:100890006B6579626F6172645F7265706F72743AD2 +:1008A00020000A0025303258006B6579626F617252 +:1008B000645F7365745F6C65643A200064656C5FA7 +:1008C0006B65795F6269743A2063616E2774206496 +:1008D000656C3A20253032580A006164645F6B65AC +:1008E000795F6269743A2063616E27742061646481 +:1008F0003A20253032580A00646F6E652E0A006275 +:100900006F6F676D61676963207363616E3A202E54 +:100910002E2E2000290A002575002F002575005D68 +:1009200028002564002000256400200025640020A4 +:10093000002564007C0025303258006D6F757365AA +:100940006B6579205B62746E7C78207920762068F4 +:100950005D287265702F61636C293A205B006D6BB6 +:100960005F776865656C5F74696D655F746F5F6DF7 +:100970006178203D2025640A006D6B5F77686565AE +:100980006C5F6D61785F7370656564203D202564E0 +:100990000A006D6B5F74696D655F746F5F6D617880 +:1009A000203D2025640A006D6B5F6D61785F737078 +:1009B000656564203D2025640A006D6B5F696E7477 +:1009C000657276616C203D2025640A006D6B5F6462 +:1009D000656C6179203D2025640A006D6B5F776846 +:1009E00065656C5F74696D655F746F5F6D617820BC +:1009F0003D2025640A006D6B5F776865656C5F6DEF +:100A000061785F7370656564203D2025640A006D20 +:100A10006B5F74696D655F746F5F6D6178203D20F9 +:100A200025640A006D6B5F6D61785F737065656446 +:100A3000203D2025640A006D6B5F696E74657276D7 +:100A4000616C203D2025640A006D6B5F64656C61FC +:100A500079203D2025640A000A00257500363A20D9 +:100A6000776865656C5F74696D655F746F5F6D61F4 +:100A7000783A20000A00257500353A2077686565C8 +:100A80006C5F6D61785F73706565643A20000A0081 +:100A9000257500343A2074696D655F746F5F6D6110 +:100AA000783A20000A00257500333A206D61785F9E +:100AB00073706565643A20000A00257500323A209B +:100AC000696E74657276616C286D73293A20000A2C +:100AD00000257500313A2064656C6179282A31302F +:100AE0006D73293A20000A092D2056616C756573D3 +:100AF000202D0A004D3E004D25643E20003F00732E +:100B000065742064656661756C740A00433E20005C +:100B100077686572652064656C74613A20637572EC +:100B2000736F723D25642C20776865656C3D256484 +:100B30000A53656520687474703A2F2F656E2E779E +:100B4000696B6970656469612E6F72672F77696B75 +:100B5000692F4D6F7573655F6B6579730A000A09BC +:100B60002D204D6F7573656B6579202D0A455343B4 +:100B70002F713A09717569740A313A0964656C61BB +:100B800079282A31306D73290A323A09696E746501 +:100B90007276616C286D73290A333A096D61785F4A +:100BA00073706565640A343A0974696D655F746FC2 +:100BB0005F6D61780A353A09776865656C5F6D61CC +:100BC000785F73706565640A363A09776865656CA5 +:100BD0005F74696D655F746F5F6D61780A0A703A62 +:100BE000097072696E742076616C7565730A643A77 +:100BF000097365742064656661756C74730A757039 +:100C00003A092B310A646F776E3A092D310A706701 +:100C100075703A092B31300A7067646F776E3A0944 +:100C20002D31300A0A7370656564203D2064656C5F +:100C30007461202A206D61785F7370656564202A75 +:100C40002028726570656174202F2074696D655F5E +:100C5000746F5F6D6178290A003F004D3E200043AC +:100C60003E20004C25640A000A092D20436F6E7354 +:100C70006F6C65202D0A4553432F713A09717569D0 +:100C8000740A6D3A096D6F7573656B65790A000AB0 +:100C9000092D204D61676963202D0A643A09646556 +:100CA0006275670A783A096465627567206D6174D8 +:100CB0007269780A6B3A096465627567206B6579B9 +:100CC000626F6172640A6D3A096465627567206DCE +:100CD0006F7573650A763A0976657273696F6E0A85 +:100CE000733A097374617475730A633A09636F6EBA +:100CF000736F6C65206D6F64650A302D343A096C32 +:100D000061796572302D34284631302D4634290AF8 +:100D1000506175733A09626F6F746C6F61646572CC +:100D20000A653A09656570726F6D0A6E3A094E4B35 +:100D3000524F0A7A3A09736C656570204C4544201D +:100D4000746573740A000A002575002E6E6B726F4D +:100D50003A20000A002575002E737761705F62618A +:100D6000636B736C6173685F6261636B7370616303 +:100D7000653A20000A002575002E737761705F6761 +:100D8000726176655F6573633A20000A002575001D +:100D90002E6E6F5F6775693A20000A002575002E78 +:100DA000737761705F72616C745F726775693A2006 +:100DB000000A002575002E737761705F6C616C749A +:100DC0005F6C6775693A20000A002575002E636123 +:100DD00070736C6F636B5F746F5F636F6E74726F51 +:100DE0006C3A20000A002575002E737761705F63EE +:100DF0006F6E74726F6C5F636170736C6F636B3A6C +:100E000020000A0025303258006B65796D61705FF3 +:100E1000636F6E6669672E7261773A20000A00255B +:100E200075002E6D6F7573653A20000A00257500F8 +:100E30002E6B6579626F6172643A20000A00257535 +:100E4000002E6D61747269783A20000A00257500E1 +:100E50002E656E61626C653A20000A0025303258BA +:100E60000064656275675F636F6E6669672E7261A5 +:100E7000773A20000A0025750064656661756C7418 +:100E80005F6C617965723A20003F004E4B524F3AD9 +:100E9000206F66660A004E4B524F3A206F6E0A0072 +:100EA00074696D65725F636F756E743A20253034B6 +:100EB0006C580A006B6579626F6172645F6E6B7269 +:100EC0006F3A2025580A006B6579626F6172645F22 +:100ED00069646C653A2025580A006B6579626F6118 +:100EE00072645F70726F746F636F6C3A2025580A7A +:100EF00000686F73745F6B6579626F6172645F6CB9 +:100F000065647328293A2025580A000A092D2053C0 +:100F10007461747573202D0A004743433A20342EC0 +:100F2000392E33204156522D4C4942433A20312E1E +:100F3000382E31204156525F415243483A20617663 +:100F400072350A004F5054494F4E533A204C554683 +:100F50004120424F4F544D41474943204D4F555337 +:100F6000454B45592045585452414B455920434F14 +:100F70004E534F4C4520434F4D4D414E44204E4B18 +:100F8000524F203531320A004255494C443A203202 +:100F90003430646230632D6469727479202830398A +:100FA0003A35383A3539204A616E203238203230AD +:100FB0003136290A005649443A203078464545449E +:100FC000284572676F446F7820455A29205049445C +:100FD0003A20307831333037284572676F446F7864 +:100FE00020455A29205645523A2030783030303149 +:100FF0000A00444553433A20742E6D2E6B2E206B0D +:101000006579626F617264206669726D776172657D +:1010100020666F72204572676F646F780A000A0954 +:101020002D2056657273696F6E202D0A000A6D6F50 +:101030007573653A206F66660A000A6D6F75736591 +:101040003A206F6E0A000A6B6579626F6172643ACA +:10105000206F66660A000A6B6579626F6172643A96 +:10106000206F6E0A000A6D61747269783A206F66AB +:10107000660A000A6D61747269783A206F6E0A0020 +:101080000A64656275673A206F6E0A000A646562D9 +:1010900075673A206F66660A000A0A626F6F746CA1 +:1010A0006F616465722E2E2E2000433E2000656520 +:1010B000636F6E6669673A0A00536C656570204C11 +:1010C000454420746573740A0000000000000000AD +:1010D00000000000010204060A0F17202C3A4A5DA6 +:1010E00071879DB3C7DAE9F5FCFFFCF5E9DAC7B310 +:1010F0009D87715D4A3A2C20170F0A0604020100F1 +:101100000000000000000000000011241FBECFEF0F +:10111000DAE0DEBFCDBF04B603FE24C08091FB0140 +:101120009091FC01A091FD01B091FE018730904BA0 +:10113000A740B04BB9F41092FB011092FC01109241 +:10114000FD011092FE0114BE84B7877F84BF88E141 +:101150000FB6F89480936000109260000FBEE0E03C +:10116000FFE3099511E0A0E0B1E0ECE7F0E602C092 +:1011700005900D92AA33B107D9F711E0AAE3B1E0C7 +:1011800001C01D92AB3FB107E1F70E94FC110C9426 +:101190003C300C940000FF93EF93E0913A01F09102 +:1011A0003B01309709F00995EF91FF910895FC01FB +:1011B0008591803011F0EFDFFBCF0895FF27E0E24B +:1011C00030E247FF0CC0419597FF09C0EDE2609502 +:1011D000709580959095611D711D811D911D27FF52 +:1011E00002C0219530E350E2AA27660F771F881FBF +:1011F000991FAA1FA41710F0A41B63955A95A9F76D +:10120000AA3008F0A95FA05DAF93F3956115710551 +:101210008105910541F7ED3211F4EF93F395F21743 +:1012200018F43F93F395FBCF8F91B5DFFA95E1F773 +:101230000895E991F9918591803021F0853219F076 +:10124000AADFF9CF089520E0E89455915532C1F313 +:10125000503311F4689455915A3348F4505390F335 +:10126000220F022E220F220F200D250FF4CF0EF495 +:10127000219589919991533619F3533729F15335B3 +:1012800059F1BC0188279927E8945C3621F48991AB +:10129000999168945591543639F446EF7EF077FF72 +:1012A0000DC08FEF9FEF0AC055374AE039F058352F +:1012B00040E121F0523642E009F00895FF93EF93A8 +:1012C0007DDFEF91FF91B7CFFF93EF93FC01819109 +:1012D0008030B9F360DFFBCFFF93EF9368DFF1CF8E +:1012E000DF93CF93CDB7DEB72596A3DFCF91DF9104 +:1012F0000895462F50E04F30510508F0DEC0DC0164 +:10130000FA01EA5AFF4F12968C910C94F12F882320 +:1013100021F085EE0E94D918D0C085EE0E94A11957 +:10132000CCC0882349F00E94322490933D018093E1 +:101330003C0188EF91E0089580913C0190913D013E +:101340000E943E24873991050CF0A8C08AEE91E0F6 +:101350000895882349F00E94322490933D018093A0 +:101360003C0187EE91E0089580913C0190913D0110 +:101370000E943E24873991050CF093C089ED91E0DD +:101380000895882349F00E94322490933D01809370 +:101390003C0182ED91E0089580913C0190913D01E6 +:1013A0000E943E24873991050CF07EC080EC91E0CC +:1013B0000895882349F00E94322490933D01809340 +:1013C0003C018BEB91E0089580913C0190913D01AF +:1013D0000E943E24873991050CF069C08DEA91E0A6 +:1013E0000895882349F00E94322490933D01809310 +:1013F0003C0188EA91E0089580913C0190913D0183 +:101400000E943E24873991050CF054C08AE991E08E +:101410000895882309F451C085E891E00895882350 +:1014200009F44BC080E791E00895882309F445C092 +:101430008BE591E00895882309F43FC086E491E0AC +:1014400008958823D1F18DE391E008958823A9F1CF +:1014500088E291E00895882381F183E191E0089585 +:10146000882359F18EEF90E00895882331F180911F +:10147000BE019091BF01A091C001B091C10120E2D5 +:10148000822780729927AA27BB278093BE01909359 +:10149000BF01A093C001B093C1010FC085EF91E0DF +:1014A000089584EE91E008958BEC91E0089586EB29 +:1014B00091E0089583EA91E0089580E090E0089536 +:1014C00008956091BE017091BF018091C00190911B +:1014D000C1010E94672356985E9825982D982698FA +:1014E0002E9827982F98833099F028F4813041F076 +:1014F000823049F00895843049F0853061F00895D4 +:10150000259A2D9A0895269A2E9A0895259A2D9A0D +:10151000279A2F9A0895259A2D9A269A2E9A279AD5 +:101520002F9A089581E69AE0892B11F00E94610AB2 +:1015300080E090E0089556985E9825982D9826981A +:101540002E9827982F988FEF90E0909389008093A2 +:10155000880090938B0080938A0090938D008093F5 +:101560008C00259A2D9A2FEF80E792E02150804041 +:101570009040E1F700C00000269A2E9A2FEF80E7F6 +:1015800092E0215080409040E1F700C00000279A8F +:101590002F9A2FEF80E792E0215080409040E1F7B2 +:1015A00000C0000025982D982FEF80E792E0215091 +:1015B00080409040E1F700C0000026982E982FEF61 +:1015C00080E792E0215080409040E1F700C00000A9 +:1015D00027982F9856985E9825982D9826982E989B +:1015E00027982F98089589EA8093800089E0809356 +:1015F000810024982C983F988AB18F748AB96E988C +:10160000479A8BB1806B8BB9769A0E949B0A80E6D1 +:101610009AE0892B11F00E94600A80E090E0089522 +:1016200080E28093000180913E0181110EC00E94F2 +:101630005F0B81E080933E012FEF83ED90E321501B +:1016400080409040E1F700C0000080E40E94650BFC +:101650008093000181112EC00E948F0B80930001A6 +:10166000811128C00E948F0B80930001811122C03C +:101670008FE30E948F0B8093000181111BC00E9499 +:10168000870B80E40E94650B80930001811112C0DA +:101690008CE00E948F0B8093000181110BC00E948F +:1016A0008F0B80930001811105C08FE30E948F0B87 +:1016B000809300010E94870B809100010895109291 +:1016C000B9008AE08093B800089594EA9093BC0032 +:1016D0009091BC0097FFFCCF9091B900987F983013 +:1016E00021F0903111F081E008958093BB0084E8EF +:1016F0008093BC008091BC0087FFFCCF8091B90033 +:10170000887F883111F0803471F780E0089584E992 +:101710008093BC008091BC0084FDFCCF0895809331 +:10172000BB0084E88093BC008091BC0087FFFCCFA5 +:101730009091B900987F81E0983209F480E0089593 +:1017400084E88093BC008091BC0087FFFCCF80912F +:10175000BB00089580910001811115C080E40E94B2 +:10176000650B8093000181110CC082E10E948F0BF8 +:1017700080930001811105C08FEF0E948F0B809331 +:1017800000010E94870B84B1807F84B985B1807F7E +:1017900085B98AB1837F8AB98BB1837F8BB93E9833 +:1017A000469808950E94100B809300010E94AA0B96 +:1017B00080B38C7080BB81B3836F81BBA0E4B1E048 +:1017C000EEE4F1E08EE08E0F11921D928E13FCCFAD +:1017D00083EF9AE0892B11F00C94F30A08959F92FD +:1017E000AF92BF92CF92DF92EF92FF920F931F932F +:1017F000CF93DF93809100018823E1F080913F0136 +:101800008F5F80933F01811115C087E596E00E94AC +:10181000D7080E94100B80930001882329F08DE3E4 +:1018200096E00E94D70806C089E296E00E94D70899 +:101830000E949B0A00E411E0C0E0D0E0BB24B39416 +:1018400082E0A82ECC24C394D12C2AE1E22E26E0FB +:10185000F22EC730D10500F580910001811164C0DE +:1018600080E40E94650B80930001811112C082E127 +:101870000E948F0B8093000181110BC0C6010C2EBA +:1018800001C0880F0A94EAF780950E948F0B80931D +:1018900000010E94870B48C0CA30A1F028F4C8306C +:1018A00059F0C93061F005C0CC3089F070F0CD300E +:1018B00089F0209A289810C0219A29980DC0229A60 +:1018C0002A980AC0239A2B9807C0529A01C0539AAB +:1018D0005B9802C03E9A469890EA9A95F1F79FB1BC +:1018E000799902C082E001C080E091709B25982B1D +:1018F0007C9902C084E001C080E0892B7D9902C000 +:1019000038E001C030E0832B7E9902C020E101C0A5 +:1019100020E0822B9FB19095991F9927991F92954E +:10192000990F907E892B10C080910001811174C0A5 +:1019300080E40E94650B80930001882309F459C05C +:10194000912C0E94870B892DF8019081981739F10D +:10195000808380910101882301F18091D90180FF6A +:1019600004C08FE196E00E94D7088091D90180FFE2 +:101970000CC0809101011F928F93FF92EF920E9401 +:1019800070090F900F900F900F908091D90180FFF8 +:1019900004C088E196E00E94D708A09201010E944D +:1019A000AA0B21960F5F1F4FCE30D10509F051CF02 +:1019B000809101018823B1F0815080930101882337 +:1019C00039F08FE99FE00197F1F700C000000AC0ED +:1019D000AEE4B1E0E0E4F1E0CF01825F91919D934C +:1019E0008E13FCCF82E99AE0892BC1F00E94920A03 +:1019F00015C083E10E948F0B809300018111A0CF5D +:101A000081E40E94650B80930001811199CF0E94AF +:101A1000A00B982E909495CF80E096CF81E0DF9137 +:101A2000CF911F910F91FF90EF90DF90CF90BF90DB +:101A3000AF909F900895E82FF0E0E25BFE4F808129 +:101A40000895CF92DF92EF92FF920F931F93CF935F +:101A5000DF9381E096E00E94D7088EE4E82E81E0D3 +:101A6000F82EC0E0D0E09CEFC92E95E0D92E03EF10 +:101A700015E0DF93CF93DF92CF920E94700989EF38 +:101A800095E00E94D708F70181917F0190E00E94C4 +:101A9000CD239F938F931F930F930E94700981EF23 +:101AA00095E00E94D70821968DB79EB708960FB68D +:101AB000F8949EBF0FBE8DBFCE30D105D1F6DF9119 +:101AC000CF911F910F91FF90EF90DF90CF900895ED +:101AD0008B3B910578F4883A910540F5853A91055C +:101AE000D0F48430910508F0B1C08130910509F43B +:101AF000ADC06BC0803E910508F467C0883E91057B +:101B000008F4A4C09C01205F31092031310508F0A0 +:101B10005CC090650895853A910509F459C0863AEC +:101B2000910509F058C082E890E40895883A91053B +:101B300009F454C0893A910509F453C08A3A9105D1 +:101B400009F452C08B3A910509F451C08C3A9105C1 +:101B500009F450C08D3A910509F44FC0803B9105BE +:101B600009F44EC08E3A910509F44DC08F3A9105A3 +:101B700009F44CC0813B910509F44BC0823B9105AF +:101B800009F44AC0833B910509F449C0843B91059F +:101B900009F448C0853B910509F447C0863B91058F +:101BA00009F446C0873B910509F445C0883B91057F +:101BB00009F444C0893B910509F443C08A3B91056F +:101BC00009F442C080E094E4089580E090E0089534 +:101BD00081E890E4089583E890E4089582EE94E427 +:101BE000089589EE94E408958AEE94E4089585EBCF +:101BF00094E4089586EB94E4089587EB94E40895C3 +:101C00008CEC94E408958DEC94E4089583E895E4D5 +:101C100008958AE895E4089582E995E4089584E9B1 +:101C200095E4089581E296E4089583E296E40895A8 +:101C300084E296E4089585E296E4089586E296E4C7 +:101C4000089587E296E408958AE296E40895089557 +:101C500096E0799FF001112494E5899FE00DF11D34 +:101C60001124E60FF11DEE0FFF1FEF5FFD4F859171 +:101C700094910895880F991FFC01E558FF4F8591B5 +:101C800094910895880F991FFC01E550FE4F8591AE +:101C90009491089526E0729FF001112444E5849FF9 +:101CA000E00DF11D1124E60FF11DEE0FFF1FEF5F98 +:101CB000FD4F859194919C013A9521154FE1340790 +:101CC00008F41AC13F512115304120F49F700E9441 +:101CD000420E08959C0130532115304118F4992784 +:101CE000906C0895811520E5920769F40E94271DE4 +:101CF0004FEF84E39CE0415080409040E1F700C00A +:101D000000000C948D24813020E5920731F48091FD +:101D1000D90181608093D90108959C013055211526 +:101D2000304108F051C0292F33272F70332721303D +:101D30003105D9F4AC014370552702C0220F331F7F +:101D40004A95E2F73C68AC0164E0440F551F6A9580 +:101D5000E1F744275370242B352B73E0880F991F2C +:101D60007A95E1F7807699271DC02230310529F454 +:101D7000982F8827816F906A089523303105A9F440 +:101D8000AC014370552721E030E002C0220F331F21 +:101D90004A95E2F73C6843E0880F991F4A95E1F7BE +:101DA000807E9770822B932B089524303105E1F4C7 +:101DB000AC014370552721E030E002C0220F331FF1 +:101DC0004A95E2F73A68E7CF9C0130572115304138 +:101DD00018F49F70906208959C013058211530418D +:101DE00018F49F70906A0895803E9105E0F4803C5D +:101DF000910558F58133910509F46FC048F4893293 +:101E0000910509F463C08A32910509F46DC072C06E +:101E100089339105E9F082389105D1F08533910538 +:101E200009F44DC067C0833E910581F138F4803ECE +:101E30009105B9F0823E9105D9F05CC0863E9105CE +:101E400061F1873E9105A1F155C00E943A0E0895B7 +:101E50002091EC0120FD02C021FF4CC080EE90E0FB +:101E600049C08091EC0180FFF9CF89E390E042C046 +:101E70008091EC0182FF0EC08091EC0184FF03C0D1 +:101E800080E090E037C083EE90E034C08091EC01B8 +:101E900082FFF2CF82EE90E02DC08091EC0183FFB3 +:101EA0000BC08091EC0184FDEBCF87EE90E022C067 +:101EB0008091EC0183FFF5CF86EE90E01BC080910E +:101EC000EC0185FF07C089E290E014C08091EC012D +:101ED00085FFF9CF85E390E00DC08091EC0186FF8E +:101EE00007C08AE290E006C08091EC0186FFF9CF3E +:101EF00081E390E00E94680D0895089580916F013C +:101F000008959FB7F89410925E019FBF9091F201DF +:101F1000943009F057C09091E9009F703091EC0027 +:101F2000232F217030FD20E8922B24E02093E9003C +:101F30002091EB0020FF43C02091EE0027FF3FC01F +:101F400020915C01222321F02091E80025FF37C079 +:101F500010925C0126E03091E80035FD15C030910B +:101F6000F201343061F53091EB0035FD28C021508D +:101F700021F481E080935C0122C0EFE9FFE031971A +:101F8000F1F700C00000E7CF8093F1008091E800F6 +:101F900085FD0AC08091E80080FFFCCF8091E800B9 +:101FA0008E778093E80006C08FB7F89421E02093E5 +:101FB0005E018FBF9F709093E90080E008959F704D +:101FC0009093E9008FEF0895CF93DF9300D01F9295 +:101FD000CDB7DEB79C018091F201843019F593E012 +:101FE00099833B832A839093E9008FEF9091E800D7 +:101FF000815095FD06C095ED9A95F1F7000081118D +:10200000F5CF8091E80085FF0DC040E050E063E02F +:1020100070E0CE0101960E94B4128091E8008E77A4 +:102020008093E8000F900F900F90DF91CF9108956B +:10203000CF93DF9300D01F92CDB7DEB72091F2018E +:10204000243021F522E029839B838A8383E08093D7 +:10205000E9008FEF9091E800815095FD06C095ED65 +:102060009A95F1F700008111F5CF8091E80085FF86 +:102070000DC040E050E063E070E0CE0101960E94A8 +:10208000B4128091E8008E778093E8000F900F9053 +:102090000F90DF91CF9108952091F2012430F1F457 +:1020A00022E02093E9002FEF3091E800215035FD28 +:1020B00006C035ED3A95F1F700002111F5CF2091DA +:1020C000E80025FF0BC040E050E065E070E00E94B2 +:1020D000B4128091E8008E778093E8000895CF9342 +:1020E000DF932091F201243009F048C0EC01809187 +:1020F0000C018823E1F080910D018823C1F085E077 +:102100008093E9008FEF9091E800815095FD06C023 +:1021100095E19A95F1F700008111F5CF8091E800E3 +:1021200085FF2CC040E050E060E170E017C081E026 +:102130008093E9008FEF9091E800815095FD06C0F3 +:1021400095ED9A95F1F700008111F5CF8091E800A7 +:1021500085FF14C040E050E068E070E0CE010E94CE +:10216000B4128091E8008E778093E80080E1FE0150 +:10217000AFE5B1E001900D928A95E1F7DF91CF9143 +:10218000089586E996E00E94D7088091F1018111B7 +:1021900009C00E9449140E94A6148091E200846044 +:1021A0008093E200089582E996E00E94D708109299 +:1021B000F10108958EE896E00C94D7088AE896E03D +:1021C0000E94D7080C945D2E86E896E00E94D708FE +:1021D0000E9423240E94632E0E944B170C947D0FB3 +:1021E00020915D012F5F822F62E30E94D12F9923FE +:1021F00019F020935D01089510925D0180915E01B8 +:10220000882371F18091F201843041F58091E900D9 +:102210008F702091EC00922F917020FD90E8892B17 +:1022200094E09093E9009091EB0090FF14C090919E +:10223000EE0097FF10C09091E80095FF03C0109248 +:10224000F100F9CF9091E80090FF05C09091E8006F +:102250009E779093E8008F708093E90010925E0162 +:10226000089542E061EC81E00E94C31342E061EC1A +:1022700082E00E94C31342E061EC83E00E94C3133A +:1022800042E261EC84E00E94C31342E161EC85E02C +:102290000C94C3138091F401833009F455C030F4D9 +:1022A000813071F0823009F48EC008958A3009F4CB +:1022B0007AC08B3009F460C0893009F09CC020C01E +:1022C0008091F301813A09F096C08091E800877F00 +:1022D0008093E8008091F7019091F801892B21F417 +:1022E00060E18FE591E003C060E080E090E070E0A5 +:1022F0000E94FF128091E8008B778093E800089598 +:102300008091F301813209F076C08091F7019091BC +:10231000F801009719F0049709F06DC08091E8006A +:10232000877F8093E8008091E80082FD05C080915E +:10233000F2018111F8CF5FC08091F10080936F01AD +:102340008091E8008B7753C08091F301813A09F0C6 +:1023500052C08091F7019091F801892B09F04BC090 +:102360008091E800877F8093E8008091E80080FFFB +:10237000FCCF80910C0136C08091F3018132D9F5F8 +:102380008091F7019091F801892BA9F58091E800DF +:10239000877F8093E8000E94F8138091F501809375 +:1023A0000C010C94271D8091F301813221F580915D +:1023B000E800877F8093E8000E94F8138091F6017F +:1023C0008093700108958091F301813AA1F4809186 +:1023D000E800877F8093E8008091E80080FFFCCFD1 +:1023E000809170018093F1008091E8008E77809356 +:1023F000E8000C94F813089584B7877F84BF88E1C0 +:102400000FB6F89480936000109260000FBE90E0C9 +:1024100080E80FB6F89480936100909361000FBE3E +:102420000E94D8170E9449140E94A6148091E200CD +:1024300084608093E20081E89FE00E9462237894A8 +:102440000E942B170E94DA1782E091E00E94461743 +:102450000E944B2E85E796E00E94D7088091F201FA +:10246000853089F481E796E00E94D7080E94E7232F +:102470008091F001882391F30E940F24882371F347 +:102480000E949E12EBCF0E940818E8CF292F332715 +:1024900023303105C9F064F42130310581F0223058 +:1024A000310509F043C08DE890E02EEC36E042C0E3 +:1024B00021323105F1F02232310541F137C082E19C +:1024C00090E02BE537E036C099278130910541F047 +:1024D0008230910541F0892B49F5EAECF6E005C020 +:1024E000E2EBF6E002C0EAE9F6E0849190E09F01B9 +:1024F00021C06530D8F4E62FF0E0EE0FFF1FEB5D52 +:10250000FE4F2081318189E090E014C0653070F485 +:1025100070E0FB01EE0FFF1FE55EFE4F2081318171 +:10252000FB01EA5EFE4F808190E004C080E090E015 +:1025300020E030E0FA0131832083089580E189BDF5 +:1025400082E189BD09B400FEFDCF8091D8008F7D66 +:102550008093D8008091E00082608093E0008091B9 +:10256000E00081FDFCCF0895CF92DF92EF92FF92C1 +:102570000F931F93CF93DF93EC018B016A010E94AD +:102580001714811133C0C114D10439F0F6018081D0 +:102590009181081B190BC80FD91FE12CF12C0115D3 +:1025A000110519F18091E80085FD16C08091E800C1 +:1025B0008E778093E800C114D10449F0F601808140 +:1025C0009181E80EF91EF182E08285E00FC00E9441 +:1025D0001714882321F30AC089918093F1000150D8 +:1025E0001109FFEFEF1AFF0ADACF80E0DF91CF91F8 +:1025F0001F910F91FF90EF90DF90CF900895209161 +:10260000F9013091FA012617370748F06115710575 +:1026100039F42091E8002E772093E80001C0B90139 +:1026200040E061157105A9F12091F201222309F41E +:1026300043C0253009F442C02091E80023FD40C08A +:102640002091E80022FD32C02091E80020FFE9CF70 +:102650004091F3002091F20030E0342BFC01CF01D7 +:102660006115710559F02830310540F4819180934E +:10267000F100615071092F5F3F4FF1CF41E02830E9 +:10268000310509F040E02091E8002E772093E80022 +:10269000C8CF4111C9CF0AC08091F201882361F0EF +:1026A000853061F08091E80083FD0AC08091E800E8 +:1026B00082FFF2CF80E0089582E0089583E00895DC +:1026C00081E008952091F9013091FA01261737072A +:1026D00048F06115710539F42091E8002E772093B8 +:1026E000E80001C0B901FC0120E06115710591F11C +:1026F0008091F201882309F440C0853009F43FC07D +:102700008091E80083FD3DC08091E80082FD2FC0EC +:102710008091E80080FFE9CF2091F3008091F200E2 +:1027200090E0922B6115710559F08830910540F4C5 +:1027300024912093F1003196615071090196F2CFF6 +:1027400021E0089709F020E08091E8008E778093DF +:10275000E800CBCF2111CCCF0AC08091F2018823B1 +:1027600061F0853061F08091E80083FD0AC08091BE +:10277000E80082FFF2CF80E0089582E0089583E0D0 +:10278000089581E00895982F973058F59093E900C7 +:10279000981739F07091EC002091ED005091F00005 +:1027A00003C0242F762F50E021FF19C03091EB0099 +:1027B0003E7F3093EB003091ED003D7F3093ED0094 +:1027C0003091EB0031603093EB007093EC0020937C +:1027D000ED005093F0002091EE0027FF07C09F5FAF +:1027E000D3CF8F708093E90081E0089580E0089551 +:1027F0008091F30187FF11C08091E80082FD05C040 +:102800008091F2018111F8CF11C08091E8008B779F +:102810000BC08091F201882349F08091E80080FF8D +:10282000F8CF8091E8008E778093E800089520919A +:10283000E4003091E50095E64091EC00842F817032 +:1028400040FF22C08091E80080FD1CC08091F20111 +:10285000882391F0853091F08091EB0085FD10C0C8 +:102860004091E4005091E5004217530729F39A0183 +:10287000915011F784E0089582E0089583E008956F +:1028800081E0089580E008954091E80042FFDECFA6 +:1028900008950E94B7140E94BF14E0EEF0E080811A +:1028A00081608083E8EDF0E080818F77808319BCC0 +:1028B000A7EDB0E08C918E7F8C9380818F7E80839A +:1028C0001092F10108950F931F93CF93DF930E940D +:1028D000B7140E94BF14C8EDD0E088818F77888339 +:1028E00088818068888388818F7D888319BC109255 +:1028F000F2011092EE011092F0011092EF0100EE41 +:1029000010E0F80180818B7F8083888181608883DB +:1029100042E060E080E00E94C313E1EEF0E08081DD +:102920008E7F8083E2EEF0E0808181608083808111 +:1029300088608083F80180818E7F808388818061B8 +:102940008883DF91CF911F910F910895E8EDF0E01A +:1029500080818F7E8083E7EDF0E0808181608083DD +:1029600084E082BF81E08093F1010C946314E8ED70 +:10297000F0E080818E7F80831092E20008951092B3 +:10298000DA001092E10008951F920F920FB60F9295 +:1029900011242F933F934F935F936F937F938F9364 +:1029A0009F93AF93BF93EF93FF938091E10082FFDA +:1029B0000BC08091E20082FF07C08091E1008B7F15 +:1029C0008093E1000E94F0108091DA0080FF1FC028 +:1029D0008091D80080FF1BC08091DA008E7F8093A9 +:1029E000DA008091D90080FF0DC080E189BD82E1CD +:1029F00089BD09B400FEFDCF81E08093F2010E9401 +:102A0000C11005C019BC1092F2010E94D310809130 +:102A1000E10080FF19C08091E20080FF15C0809125 +:102A2000E2008E7F8093E2008091E20080618093DB +:102A3000E2008091D80080628093D80019BC85E0C4 +:102A40008093F2010E94DE108091E10084FF30C08B +:102A50008091E20084FF2CC080E189BD82E189BDC4 +:102A600009B400FEFDCF8091D8008F7D8093D800FF +:102A70008091E1008F7E8093E1008091E2008F7E63 +:102A80008093E2008091E20081608093E200809177 +:102A9000EE01882311F084E007C08091E30087FDF8 +:102AA00002C081E001C083E08093F2010E94E41043 +:102AB0008091E10083FF29C08091E20083FF25C05F +:102AC0008091E100877F8093E10082E08093F201B2 +:102AD0001092EE018091E1008E7F8093E100809161 +:102AE000E2008E7F8093E2008091E200806180931B +:102AF000E20042E060E080E00E94C3138091F000B9 +:102B000088608093F0000E94DA10FF91EF91BF91EE +:102B1000AF919F918F917F916F915F914F913F9175 +:102B20002F910F900FBE0F901F9018951F920F922C +:102B30000FB60F9211242F933F934F935F936F9390 +:102B40007F938F939F93AF93BF93CF93DF93EF9335 +:102B5000FF93C091E900CF708091EC00D82FD17025 +:102B600080FDD0E81092E9008091F000877F80938B +:102B7000F00078940E94DA151092E9008091F0003C +:102B800088608093F000CD2BCF70C093E900FF9157 +:102B9000EF91DF91CF91BF91AF919F918F917F91F5 +:102BA0006F915F914F913F912F910F900FBE0F90BA +:102BB0001F9018951F93CF93DF93CDB7DEB7AA97D9 +:102BC0000FB6F894DEBF0FBECDBFE3EFF1E088E0B3 +:102BD0008E0F9091F10091938E13FBCF0E944A11BA +:102BE0008091E80083FF1FC18091F3019091F4016F +:102BF000492F50E04A30510508F015C1FA01EB5950 +:102C0000FF4F0C94F12F803881F0823809F00BC10E +:102C10008091F7018F708093E9008091EB0085FB34 +:102C2000882780F91092E90006C08091EF01909109 +:102C3000F001911182609091E800977F9093E800F5 +:102C40008093F1001092F100C8C0282F2D7F09F069 +:102C5000EAC0882319F0823061F0E5C08091F50167 +:102C6000813009F0E0C0933009F080E08093F001FA +:102C70002BC08091F501811127C08091F7018F70E1 +:102C800009F4D1C08093E9002091EB0020FF1CC023 +:102C9000933021F48091EB00806214C09091EB009E +:102CA00090619093EB0021E030E0A90102C0440F55 +:102CB000551F8A95E2F74093EA001092EA0080914E +:102CC000EB0088608093EB001092E9008091E800AF +:102CD000877F86C08111A7C01091F5011F77809171 +:102CE000E3008078812B8093E3008091E800877F68 +:102CF0008093E8000E94F8138091E80080FFFCCFE9 +:102D00008091E30080688093E300111102C082E0AB +:102D100001C083E08093F20186C08058823008F0C1 +:102D200082C08091F5019091F6018C3D53E09507AA +:102D300079F583E08A838AE289834FB7F894DE01CC +:102D4000139620E03EE051E2E32FF0E0509357006D +:102D5000E49120FF03C0E295EF703F5FEF708E2F8C +:102D600090E0EA3010F0C79601C0C0968D939D9315 +:102D70002F5F243149F74FBF8091E800877F809310 +:102D8000E8006AE270E0CE0101960E94FF1214C0D2 +:102D9000AE014F5F5F4F6091F7010E944612BC0188 +:102DA000892B09F440C09091E800977F9093E80048 +:102DB00089819A810E9462138091E8008B778093C9 +:102DC000E80031C0803879F58091E800877F8093F2 +:102DD000E8008091EE018093F1008091E8008E7709 +:102DE0008093E8000E94F8131EC081111CC09091CE +:102DF000F5019230C0F48091E800877F8093E8006D +:102E00009093EE010E94F8138091EE01811106C0AB +:102E10008091E30087FD02C081E001C084E08093DF +:102E2000F2010E9431118091E80083FF0AC0809175 +:102E3000E800877F8093E8008091EB0080628093B8 +:102E4000EB00AA960FB6F894DEBF0FBECDBFDF91A0 +:102E5000CF911F910895CF938091F2018823A1F023 +:102E6000C091E900CF709091EC00892F817090FDA6 +:102E700080E8C82B1092E9008091E80083FD0E9451 +:102E8000DA15CF70C093E900CF9108959093760141 +:102E9000809375010895E0917501F0917601309766 +:102EA00021F00190F081E02D099480E00895EF92E7 +:102EB000FF920F931F93CF93DF93E0917501F091F1 +:102EC00076013097B1F18C010280F381E02D0995F4 +:102ED0008091D90182FF2DC080FF04C080E998E075 +:102EE0000E94D708E80110E18AE8E82E88E0F82E71 +:102EF0008091D90180FF0BC088811F928F93FF9230 +:102F0000EF920E9470090F900F900F900F90115048 +:102F100021961111EDCF8091D90180FF0AC088E878 +:102F200098E0DF91CF911F910F91FF90EF900C945B +:102F3000D708DF91CF911F910F91FF90EF900895E7 +:102F4000E0917501F0917601309721F00480F581D0 +:102F5000E02D099408952091730130917401821736 +:102F6000930771F09093740180937301E091750160 +:102F7000F0917601309721F00680F781E02D0994D9 +:102F8000089520917101309172018217930771F0B9 +:102F90009093720180937101E0917501F091760137 +:102FA000309721F00084F185E02D0994089508956B +:102FB0000C94D7170E9429240E94D20B0C94EF2462 +:102FC000CF93C82F8091D90182FF1EC080FF04C01B +:102FD00089EA98E00E94D7088091D90180FF0CC04F +:102FE0001F92CF9384EA98E09F938F930E94700979 +:102FF0000F900F900F900F908091D90180FF04C027 +:1030000082EA98E00E94D7088C2FCF910C947D0F14 +:10301000CF92DF92EF92FF920F931F93CF93DF93A4 +:10302000CDB7DEB72B970FB6F894DEBF0FBECDBF7E +:103030000E94EF0B88E7C82E81E0D82E00E010E058 +:10304000E02E802F0E941B0DF60141916F01F42E9E +:10305000F826B1F40F5F1F4F0E30110589F78FEF7F +:1030600089838A831B820E9432248160782F9D830A +:103070008C8349815A816B818D810E94AB1840C03D +:103080009091D90191FF04C08B870E94210D8B85FF +:1030900020E030E04F2D50E0922FBA01022E02C006 +:1030A000759567950A94E2F760FF24C02E83EF823E +:1030B00021E030E0690102C0CC0CDD1C9A95E2F7FA +:1030C00090E08C219D21892B09F420E028870E9423 +:1030D00032248160782F9A8789874E815F81688545 +:1030E0008A850E94AB18F801E858FE4F8081C826F7 +:1030F000C08206C02F5F3F4F2630310569F6AACF48 +:103100000E946028109177010E944B171817A1F0B8 +:103110000E944B17809377012B960FB6F894DEBF71 +:103120000FBECDBFDF91CF911F910F91FF90EF9018 +:10313000DF90CF900C94E0172B960FB6F894DEBF7B +:103140000FBECDBFDF91CF911F910F91FF90EF90F8 +:10315000DF90CF900895CF93DF93CDB7DEB72B9755 +:103160000FB6F894DEBF0FBECDBF4F835887698777 +:103170007A878B87DE01119686E0FD0111928A9590 +:10318000E9F785E0FE01379601900D928A95E1F707 +:1031900049815A816B817C818D819E810E94C11FF2 +:1031A0002B960FB6F894DEBF0FBECDBFDF91CF9147 +:1031B0000895CF93882309F4C2C0C82F823859F4E8 +:1031C0000E944B1781FDBBC089E30E945D220E94D3 +:1031D0003C2389E30CC0833879F40E944B1780FDAF +:1031E000AEC083E50E945D220E943C2383E50E94DD +:1031F000B022CF910C943C23843859F40E944B1791 +:1032000082FD9DC087E40E945D220E943C2387E4EA +:10321000EECF8CEF8C0F813A48F48C2F0E94F32C68 +:1032200081118DC08C2F0E945D22E3CF80E28C0F34 +:10323000883048F4C77081E001C0880FCA95EAF76A +:103240000E940523D6CF8BE58C0F833078F4C53AE6 +:1032500029F0C63A31F083E890E005C081E890E0BB +:1032600002C082E890E0CF910C94AB1788E58C0FF8 +:10327000833108F064C0C83A39F1C93A41F1CA3A19 +:1032800049F1CB3A51F1CC3A59F1CD3A61F1C03B19 +:1032900069F1CE3A71F1CF3A79F1C13B81F1C23B8C +:1032A00089F1C33B91F1C43B99F1C53BA1F1C63B08 +:1032B000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B68 +:1032C000C9F180E090E038C082EE90E035C089EE30 +:1032D00090E032C08AEE90E02FC085EB90E02CC0E9 +:1032E00086EB90E029C087EB90E026C08CEC90E064 +:1032F00023C08DEC90E020C083E891E01DC08AE8F7 +:1033000091E01AC082E991E017C084E991E014C00D +:1033100081E292E011C083E292E00EC084E292E08A +:103320000BC085E292E008C086E292E005C087E229 +:1033300092E002C08AE292E0CF910C94C117CF9143 +:103340000895882309F44BC0823859F40E944B1722 +:1033500081FF45C089E30E945D220E943C2389E3EE +:103360000CC0833871F40E944B1780FF38C083E58E +:103370000E945D220E943C2383E50E94B0220C94AF +:103380003C23843859F40E944B1782FF28C087E4FD +:103390000E945D220E943C2387E4EFCF9CEF980FB0 +:1033A000913A58F390E2980F983050F4877091E07A +:1033B00001C0990F8A95EAF7892F0E940B23DFCF6E +:1033C0009BE5980F933020F480E090E00C94AB17CD +:1033D000885A833120F480E090E00C94C11708955E +:1033E000882321F00E9405230C943C230895882310 +:1033F00021F00E940B230C943C230895BF92CF929E +:10340000DF92EF92FF920F931F93CF93DF9300D041 +:1034100000D000D0CDB7DEB725E0FC01DE0111966B +:1034200001900D922A95E1F7FC01408131810281E2 +:10343000258122952F7063817481672B09F4E5C281 +:103440003F3F19F44F3F09F4E0C27C0149833A83BE +:1034500089819A812E830E941C22182FB92E0E94E6 +:103460001B220E94E220EB2DE295EF70F0E0E15983 +:10347000FF4F2E810C94F12F8B2D807F9B2D9F7001 +:10348000F92E882319F0F29480EFF822002349F0F6 +:10349000FF2009F467C28F2D0E9415230E943C2350 +:1034A00061C2812F0E94A119FF2009F4AEC28F2DA5 +:1034B0000E941B2326960FB6F894DEBF0FBECDBF29 +:1034C000DF91CF911F910F91FF90EF90DF90CF9000 +:1034D000BF900C943C233B2D307F8B2D8F7030326E +:1034E00011F08295807F112319F0113021F12CC049 +:1034F0000023B9F0222309F4A0C1213009F09DC1B5 +:1035000026960FB6F894DEBF0FBECDBFDF91CF91E8 +:103510001F910F91FF90EF90DF90CF90BF900C9490 +:103520002523222319F0213009F46FC28E830E94D3 +:1035300028238E8196C1002321F0223008F065C235 +:103540007CC1211162C28DC1002321F0222309F424 +:1035500074C108C2222309F484C119C22B2D2695F7 +:103560002695237030E02115310521F021303105F9 +:10357000D1F04BC2002321F0812F9B2D937002C00C +:1035800080E090E026960FB6F894DEBF0FBECDBF68 +:10359000DF91CF911F910F91FF90EF90DF90CF902F +:1035A000BF900C94AB17002321F0812F9B2D9370BB +:1035B00002C080E090E026960FB6F894DEBF0FBE02 +:1035C000CDBFDF91CF911F910F91FF90EF90DF90D2 +:1035D000CF90BF900C94C117812F002319F00E9447 +:1035E000E62602C00E944E2726960FB6F894DEBF4C +:1035F0000FBECDBFDF91CF911F910F91FF90EF9044 +:10360000DF90CF90BF900C94D3278B2D837009F05F +:103610007BC00111FAC1812F829586958770880F32 +:10362000880F912F9F70C92ED12CE12CF12C082EE0 +:1036300004C0CC0CDD1CEE1CFF1C0A94D2F714FF56 +:1036400012C04FE050E060E070E004C0440F551F2E +:10365000661F771F8A95D2F7CB01BA0160957095E6 +:103660008095909503C060E070E0CB012B2D2695EE +:1036700026952370422F50E042305105D9F0433057 +:10368000510569F16C297D298E299F294130510509 +:1036900051F126960FB6F894DEBF0FBECDBFDF9175 +:1036A000CF911F910F91FF90EF90DF90CF90BF903F +:1036B0000C9409216C297D298E299F2926960FB605 +:1036C000F894DEBF0FBECDBFDF91CF911F910F9158 +:1036D000FF90EF90DF90CF90BF900C9425210E9437 +:1036E0000921C701B60126960FB6F894DEBF0FBEBA +:1036F000CDBFDF91CF911F910F91FF90EF90DF90A1 +:10370000CF90BF900C94ED20002319F08B2D817089 +:1037100001C08695882309F478C1812F829586950A +:103720008770880F880F912F9F70C92ED12CE12CA4 +:10373000F12C082E04C0CC0CDD1CEE1CFF1C0A94DE +:10374000D2F714FF12C04FE050E060E070E004C018 +:10375000440F551F661F771F8A95D2F7CB01BA0118 +:10376000609570958095909503C060E070E0CB0106 +:103770002B2D269526952370422F50E0423051057F +:10378000D9F04330510569F16C297D298E299F2993 +:103790004130510551F126960FB6F894DEBF0FBEA9 +:1037A000CDBFDF91CF911F910F91FF90EF90DF90F0 +:1037B000CF90BF900C94E3216C297D298E299F29FD +:1037C00026960FB6F894DEBF0FBECDBFDF91CF9126 +:1037D0001F910F91FF90EF90DF90CF90BF900C94CE +:1037E000FF210E94E321C701B60126960FB6F89487 +:1037F000DEBF0FBECDBFDF91CF911F910F91FF9024 +:10380000EF90DF90CF90BF900C94C721103FD1F183 +:1038100018F4103E50F4A1C0123F09F463C008F43C +:103820004CC0133F09F473C098C01F708B2D8F716B +:103830000023A1F00E946021812F26960FB6F894F4 +:10384000DEBF0FBECDBFDF91CF911F910F91FF90D3 +:10385000EF90DF90CF90BF900C94F0190E948121DF +:10386000812F26960FB6F894DEBF0FBECDBFDF9135 +:10387000CF911F910F91FF90EF90DF90CF90BF906D +:103880000C94F7190023A9F02111BFC08B2D8F7163 +:1038900026960FB6F894DEBF0FBECDBFDF91CF9155 +:1038A0001F910F91FF90EF90DF90CF90BF900C94FD +:1038B000A621223008F0A9C0E9CF0023A9F08B2D62 +:1038C0008F7126960FB6F894DEBF0FBECDBFDF9185 +:1038D000CF911F910F91FF90EF90DF90CF90BF900D +:1038E0000C946021002359F38B2D8F7126960FB60F +:1038F000F894DEBF0FBECDBFDF91CF911F910F9126 +:10390000FF90EF90DF90CF90BF900C948121002327 +:1039100099F08B2D8F7126960FB6F894DEBF0FBEEF +:10392000CDBFDF91CF911F910F91FF90EF90DF906E +:10393000CF90BF900C944B2126960FB6F894DEBF23 +:103940000FBECDBFDF91CF911F910F91FF90EF90F0 +:10395000DF90CF90BF900C9441210023A9F0222347 +:1039600009F4ADCF812F26960FB6F894DEBF0FBEB7 +:10397000CDBFDF91CF911F910F91FF90EF90DF901E +:10398000CF90BF900C94D918222309F4ADCF812F8A +:1039900026960FB6F894DEBF0FBECDBFDF91CF9154 +:1039A0001F910F91FF90EF90DF90CF90BF900C94FC +:1039B000A1194B2D4F70612FC7010E9479092696DE +:1039C0000FB6F894DEBF0FBECDBFDF91CF911F9130 +:1039D0000F91FF90EF90DF90CF90BF900C946520F7 +:1039E0004B2D4F70612FC70126960FB6F894DEBF9E +:1039F0000FBECDBFDF91CF911F910F91FF90EF9040 +:103A0000DF90CF90BF900C94270E26960FB6F894B7 +:103A1000DEBF0FBECDBFDF91CF911F910F91FF9001 +:103A2000EF90DF90CF90BF9008950E9422230E94D4 +:103A3000F7220E943C230E9406290E94D32780E09F +:103A400090E00E94AB1780E090E00C94C1170E94B8 +:103A500012230C94151D0E941C22292F22952F70D1 +:103A600030E02C3031054CF42A3031056CF4225012 +:103A700031092230310588F407C02C30310549F076 +:103A80002F30310531F009C0803E48F0803F29F4E5 +:103A900006C093FB882780F9089580E0089581E0AF +:103AA0000895CF93DF9300D000D01F92CDB7DEB73B +:103AB0000F900F900F900F900F90DF91CF9108957E +:103AC000CF93DF9300D000D000D0CDB7DEB72696DD +:103AD0000FB6F894DEBF0FBECDBFDF91CF91089532 +:103AE0001F93CF93DF93C091860116E080918701E9 +:103AF000C81799F0D0E01C9FF0011D9FF00D112414 +:103B0000E857FE4F408151816281738184819581A4 +:103B10000E94601D2196C770E9CFDF91CF911F9160 +:103B200008954091B8015091B9016091BA01709126 +:103B3000BB018091BC019091BD010C94601D8091EE +:103B4000BD0182958F7009F054C08091BA0188231D +:103B500009F44FC080918601A09187016091B8015E +:103B60007091B9014091BB015091BC01B6E08A1738 +:103B700009F43FC090E041155105C1F17F3F11F4B8 +:103B80006F3FA1F1B89FF001B99FF00D1124E857E4 +:103B9000FE4F218172132AC02081621327C0228127 +:103BA000211124C0238134812417350710F42150BA +:103BB0003109241B350B283C3105C0F42091BD018F +:103BC0002F7020612093BD0126E0289FF001299FDE +:103BD000F00D1124E357FE4F80818F708061808348 +:103BE00088EB91E00E94FE190C94701D019687707D +:103BF000BECF0895CF92DF92EF92FF920F931F9363 +:103C0000CF93DF93CDB7DEB762970FB6F894DEBFE0 +:103C10000FBECDBF8C0185E0F801DE011D9601903D +:103C20000D928A95E1F7D8014C9111965C9111970C +:103C300012966C9112971396CD90DC901497309158 +:103C4000B8017091B9018091BB019091BC010097BE +:103C500009F46BC17F3F19F43F3F09F466C1E0905E +:103C6000BA01EE2009F4C0C02091BD01C816D906E2 +:103C700028F0F601E81BF90BCF0104C08095909560 +:103C80008C0D9D1DFF24F394883C910578F0F12C58 +:103C9000207F09F0C6C07C2DD98AC88A89890E94F4 +:103CA000511D88EB91E00E94FE19B1C0822F807FE8 +:103CB00009F046C0751314C0341312C0611110C04E +:103CC0002F7020612093BD010E94911D88EB91E02F +:103CD0000E94FE198091BD01D80115968C932EC0CB +:103CE000CD2819F15F3F11F44F3FF9F0F62E611125 +:103CF0001CC0809186012091870136E0821709F46B +:103D00005AC090E0389FF001399FF00D1124E85718 +:103D1000FE4F7181571306C07081471303C0728133 +:103D2000711103C001968770E9CFF62E662309F45E +:103D300018C18091BD0181608093BD01F12C11C13A +:103D4000751308C0341306C0611104C08091BD0111 +:103D5000D801C3C04D875E878D859E856A8B0E9482 +:103D60002B1D6A898823E1F16623D1F12091BD01E1 +:103D7000822F82958F7090E0029774F08091B80145 +:103D80009091B90198878F831986DB86CA862C8724 +:103D9000CE0107960E94FE1986E0F801A8EBB1E07B +:103DA00001900D928A95E1F70E949F1D0E94911D3E +:103DB000FF24F394D6C04D875E878D859E850E9433 +:103DC0001C22292F22952F7030E0223031050CF073 +:103DD000BCC09F7009F0B6C0805E883008F4C1C0D6 +:103DE000C8010E94FE19E4CFC816D90608F453C0D2 +:103DF000F601E81BF90BCF01883C910508F450C08F +:103E0000F12C7C2DD98AC88A89890E94511DE8EB42 +:103E1000F1E086E0DF011D928A95E9F70E94911D8D +:103E2000A0C0751314C0341312C0611110C080916A +:103E3000BD01F8018583C8010E94FE1986E0E8EB08 +:103E4000F1E0DF011D928A95E9F7FE2C8AC04D87CB +:103E50005E878D859E856A8B0E942B1D6A898823CB +:103E600009F4BECF662309F4BBCF2091BD01822F98 +:103E700082958F7090E002970CF48ECF8091B801FC +:103E80009091B9019A8389831B82DD82CC822E8333 +:103E9000CE0101967FCF809590958C0D9D1DACCF66 +:103EA000F62E662309F49CCF75132EC034132CC054 +:103EB0002091BD0120FD1FC0822F82958F70D9F007 +:103EC000D80115962C9315978F3049F08F5F982F56 +:103ED0009295907F822F8F70892B15968C93C801B5 +:103EE0000E94FE1986E0F801A8EBB1E001900D9266 +:103EF0008A95E1F793CF86E0F801A8EBB1E0019055 +:103F00000D928A95E1F72DC04D875E878D859E8540 +:103F10000E942B1D811140CF8091BD018160809353 +:103F2000BD01C8010E94FE191CC0662309F458CFC8 +:103F30004D875E878D859E850E942B1D882309F401 +:103F40004FCF2ACF811148CF0CC0243031050CF05F +:103F500047CF9F7009F440CFF8019581907F09F019 +:103F60003BCF8F2D62960FB6F894DEBF0FBECDBF4C +:103F7000DF91CF911F910F91FF90EF90DF90CF9045 +:103F800008951F93CF93DF93CDB7DEB72C970FB66D +:103F9000F894DEBF0FBECDBF4F83588769877A87FD +:103FA0008B879C87CE0107960E94FA1D882369F0B3 +:103FB0008F8198852A853B85232BF1F19F3F09F05E +:103FC00063C08F3F09F060C037C086E0FE013796BE +:103FD000DE01119601900D928A95E1F76F81788547 +:103FE000EA85FB85309741F17F3F11F46F3F21F166 +:103FF0002091870130E0C90101968770992740918F +:10400000860150E08417950709F447C069837A83D5 +:10401000FD83EC8396E0929FD001939FB00D112415 +:10402000A857BE4FFE01319601900D929A95E1F787 +:10403000809387010E94701D16E080918601909107 +:1040400087018917C1F1189FC001112488579E4F1D +:104050000E94FA1D882379F1E09186011E9FF001EC +:104060001124E857FE4F4081518162817381848120 +:1040700095810E94601D8091860190E00196877075 +:10408000992780938601D9CF4F81588569857A8594 +:104090008B859C850E94601DCFCF0E94271D1092AA +:1040A000870110928601E8EBF1E086E0DF011D92C6 +:1040B0008A95E9F7C1CF2C960FB6F894DEBF0FBEF4 +:1040C000CDBFDF91CF911F910895EF92FF920F9393 +:1040D0001F93CF93DF938C01892B09F46CC0F12CD3 +:1040E000EE24E394E8012196F8018491843740F4AA +:1040F000843008F051C0813081F0823019F15BC00A +:10410000853709F444C0A8F19CE7980F903708F070 +:1041100052C08F770E94A11941C00E5F1F4FFE0150 +:10412000C49180E28C0F883048F4C7708E2D01C096 +:10413000880FCA95EAF70E94152314C08C2F0E949D +:10414000D9182DC00E5F1F4FFE01C49180E28C0F65 +:10415000883058F4C7708E2D01C0880FCA95EAF7D1 +:104160000E941B230E943C231AC08C2F0E94A1197D +:1041700016C00E5F1F4FFE01C491CC2381F08FE962 +:104180009FE00197F1F700C00000C150F6CF0E5F2D +:104190001F4FFE01F49003C00E94D9188E018F2D8D +:1041A000882309F49FCFEFE9FFE03197F1F700C0D2 +:1041B00000008150F5CFDF91CF911F910F91FF90BB +:1041C000EF90089508956093C2017093C3018093A6 +:1041D000C4019093C5010C94151D0F931F9300917A +:1041E000C2011091C3012091C4013091C501DC01CD +:1041F000CB01802B912BA22BB32B8093C2019093E8 +:10420000C301A093C401B093C5011F910F910C94F9 +:10421000151D0F931F930091C2011091C3012091AE +:10422000C4013091C501DC01CB0180239123A2237D +:10423000B3238093C2019093C301A093C401B093B0 +:10424000C5011F910F910C94151D0F931F930091A1 +:10425000C2011091C3012091C4013091C501DC015C +:10426000CB0180279127A227B3278093C201909387 +:10427000C301A093C401B093C5011F910F910C9489 +:10428000151D1092BE011092BF011092C001109234 +:10429000C1010C94151D41E050E060E070E004C0E5 +:1042A000440F551F661F771F8A95D2F74093BE01B2 +:1042B0005093BF016093C0017093C1010C94151D10 +:1042C00041E050E060E070E004C0440F551F661FFD +:1042D000771F8A95D2F78091BE019091BF01A0917E +:1042E000C001B091C101482B592B6A2B7B2B409305 +:1042F000BE015093BF016093C0017093C1010C9443 +:10430000151D41E050E060E070E004C0440F551F0F +:10431000661F771F8A95D2F74095509560957095E6 +:104320008091BE019091BF01A091C001B091C101E7 +:10433000482359236A237B234093BE015093BF0136 +:104340006093C0017093C1010C94151D41E050E0D1 +:1043500060E070E004C0440F551F661F771F8A9508 +:10436000D2F78091BE019091BF01A091C001B091A0 +:10437000C101482759276A277B274093BE015093E4 +:10438000BF016093C0017093C1010C94151D0F9380 +:104390001F930091BE011091BF012091C001309187 +:1043A000C101DC01CB01802B912BA22BB32B80937D +:1043B000BE019093BF01A093C001B093C1011F91B2 +:1043C0000F910C94151D0F931F930091BE01109136 +:1043D000BF012091C0013091C101DC01CB018023DC +:1043E0009123A223B3238093BE019093BF01A09396 +:1043F000C001B093C1011F910F910C94151D0F9333 +:104400001F930091BE011091BF012091C001309116 +:10441000C101DC01CB0180279127A227B32780931C +:10442000BE019093BF01A093C001B093C1011F9141 +:104430000F910C94151D0895CF92DF92EF92FF9289 +:104440000F931F93CF93DF938C01C090C201D09044 +:10445000C301E090C401F090C5014091BE015091AC +:10446000BF016091C0017091C101C42AD52AE62A1A +:10447000F72ACFE1D0E0D701C6010C2E04C0B695D3 +:10448000A795979587950A94D2F780FF07C0B80142 +:104490008C2F0E944A0E8130910531F4219758F7F4 +:1044A000B80180E00E944A0EDF91CF911F910F91D9 +:1044B000FF90EF90DF90CF90089590910C01992399 +:1044C00021F090910D01911109C020910E013091C0 +:1044D0000F01F90132969FEF40E030C0982F96957A +:1044E000969596959F30A0F4E0910E01F0910F0102 +:1044F000E90FF11D877021E030E0A90102C0440FEF +:10450000551F8A95E2F7CA019181892B818308950D +:104510009091D90190FF23C01F928F938AED98E06C +:104520009F938F930E9470090F900F900F900F90A0 +:1045300008959F3F39F04F5F4E3041F0519158132D +:10454000F8CF0DC05111F7CF942FF5CF9F3F39F021 +:10455000F901E90FF11D97FDFA95828308950895F9 +:1045600090910C01992321F090910D01911109C0B6 +:1045700020910E0130910F01F9013296205F3F4FDB +:1045800030C0982F9695969596959F30A8F4E09117 +:104590000E01F0910F01E90FF11D877021E030E06D +:1045A000A90102C0440F551F8A95E2F7CA01809500 +:1045B00091818923818308959091D90190FF16C03C +:1045C0001F928F938CEB98E09F938F930E947009BA +:1045D0000F900F900F900F9008953196E217F30708 +:1045E00029F090819813F9CF1082F7CF089581E0D8 +:1045F00090E0E0910E01F0910F01E80FF91F108299 +:10460000019680319105A9F708959091D801892BE1 +:104610008093D801089580959091D8018923809343 +:10462000D80108951092D80108959091D701892B4F +:104630008093D701089580959091D7018923809325 +:10464000D70108951092D70108958093C601089567 +:104650001092C601089580910E0190910F01FC0106 +:1046600031969C01205F3F4F80E0919191118F5FC7 +:10467000E217F307D1F70895E0910E01F0910F01D1 +:104680008091D8018083E0910E01F0910F0190811B +:104690008091D701892B80838091C601882361F0A6 +:1046A000E0910E01F0910F019081892B80830E948F +:1046B0002B2381111092C60180910E0190910F0160 +:1046C0000C94571790933B0180933A010895CF9231 +:1046D000DF92EF92FF926C01EE24FF24C114D1040B +:1046E000E104F10421F0C701B60120E101C020E09E +:1046F000C72ED82EE92EFF24C114D104E104F10401 +:1047000019F0285FC701B6016B017C0154E0F694F3 +:10471000E794D794C7945A95D1F7C114D104E10412 +:10472000F10419F02C5FC701B6016B017C0142E076 +:10473000F694E794D794C7944A95D1F7C114D1045D +:10474000E104F10419F02E5FC701B601DC01CB01D1 +:10475000B695A79597958795892B8A2B8B2B09F072 +:104760002F5F822FFF90EF90DF90CF90089582957A +:10477000982F9C7C392F36953695282F237344E04B +:10478000249FC0011124932F982B292F2A7A269534 +:10479000892F8575880F822B08951F93CF93DF9300 +:1047A0001F92CDB7DEB799830E94B723182F998146 +:1047B000892F0E94B723212F30E0322F2227A90111 +:1047C000482BCA010F90DF91CF911F9108958091DE +:1047D000F201843009F11092DA0120E488E190E0DE +:1047E0000FB6F894A895809360000FBE20936000E8 +:1047F00083B7817F846083BF83B7816083BF7894F0 +:10480000889583B78E7F83BF88E10FB6F894809335 +:104810006000109260000FBE089508950895CF9330 +:104820000E940D240E94EF0B0E940E24C0E08C2FEA +:104830000E941B0D811104C0CF5FCE30C1F701C0B3 +:1048400081E0CF9108950E94271D0E944B170C9480 +:104850007D0F82E084BD93E095BD9AEF97BD809374 +:104860006E0008952FB7F8948091DB019091DC01E0 +:10487000A091DD01B091DE012FBF0895CF92DF92AC +:10488000EF92FF920F931F932FB7F8944091DB01A3 +:104890005091DC016091DD017091DE012FBF6A0152 +:1048A0007B01EE24FF248C0120E030E0C016D1060D +:1048B000E206F30610F4415051099A01281B390B06 +:1048C000C9011F910F91FF90EF90DF90CF90089555 +:1048D0001F920F920FB60F9211248F939F93AF9355 +:1048E000BF938091DB019091DC01A091DD01B0913B +:1048F000DE010196A11DB11D8093DB019093DC01C7 +:10490000A093DD01B093DE01BF91AF919F918F9194 +:104910000F900FBE0F901F9018950E944914F894A5 +:104920002FEF87EA91E6215080409040E1F700C0E8 +:10493000000087E090EBDC018093FB019093FC0189 +:10494000A093FD01B093FE019CE088E10FB6F894BE +:10495000A895809360000FBE90936000FFCFEF9208 +:10496000FF920F931F93CF93DF93D82FC0E08C2F2C +:104970000E941B0D00E010E0E82EF12CC701002E74 +:1049800002C0959587950A94E2F780FD06C00F5FF7 +:104990001F4F0630110591F709C0602F7C2F80E072 +:1049A0000E94280ED813F3CF81E004C0CF5FCE3031 +:1049B000F1F680E0DF91CF911F910F91FF90EF9082 +:1049C0000895CF93C82F8CE20E94AF24882321F052 +:1049D0008C2FCF910C94AF2480E0CF910895CF938A +:1049E0000E943E26811102C00E9424268FEF98E08B +:1049F0000E94D708C5E6C15049F00E94EF0B8FE333 +:104A00009CE90197F1F700C00000F5CF88EF98E02E +:104A10000E94D70889E20E94E124811113C18AE231 +:104A20000E94E12481110E94242685E00E94E12455 +:104A300081110E948D240E9449268093D90187E02C +:104A40000E94E1248823A9F18BE10E94E1248823BC +:104A500051F08091D90181FB222720F991E0922722 +:104A600090FB81F90EC08EE00E94E124882361F062 +:104A70008091D90182FB222720F991E0922790FBB7 +:104A800082F98093D90115C080E10E94E1249091C0 +:104A9000D901882341F093FB222720F981E0822766 +:104AA00080FB93F904C0892F809580FB90F9909347 +:104AB000D9018091D9010E944D260E945B268093E6 +:104AC000EC0180EE0E94E124882341F08091EC010A +:104AD000982F909590FB80F98093EC0189E30E94D8 +:104AE000E124882359F08091EC0181FB222720F9F1 +:104AF00091E0922790FB81F98093EC0182EE0E9475 +:104B0000E124882359F08091EC0182FB222720F9CF +:104B100091E0922790FB82F98093EC0186EE0E944F +:104B2000E124882359F08091EC0183FB222720F9AE +:104B300091E0922790FB83F98093EC0183EE0E9431 +:104B4000E124882359F08091EC0184FB222720F98D +:104B500091E0922790FB84F98093EC0185E30E9419 +:104B6000E124882359F08091EC0185FB222720F96C +:104B700091E0922790FB85F98093EC0181E30E94FC +:104B8000E124882359F08091EC0186FB222720F94B +:104B900091E0922790FB86F98093EC0181E10E94DD +:104BA000E124882359F08091EC0187FB222720F92A +:104BB00091E0922790FB87F98093EC018091EC01C2 +:104BC0000E945F268091EC0187FB882780F9809303 +:104BD0000D0187E20E94E124C82F8EE10E94E124AA +:104BE0008111C2608FE10E94E1248111C46080E2E2 +:104BF0000E94E1248111C86081E20E94E1248111B8 +:104C0000C06182E20E94E1248111C06283E20E94BD +:104C1000E1248111C06484E20E94E124882311F020 +:104C2000C06802C0CC2329F08C2F0E9456266C2F1E +:104C300003C00E945226682F70E080E090E0CF9180 +:104C40000C94E320CF9108956DEE7EEF80E090E02C +:104C50000E94273060E082E090E00E94193060E01E +:104C600083E090E00E94193060E084E090E00E94D0 +:104C7000193060E085E090E00C94193080E090E01D +:104C80000E94133021E08D3E9E4F09F020E0822FDC +:104C9000089582E090E00C940B30682F82E090E061 +:104CA0000C94193083E090E00C940B30682F83E073 +:104CB00090E00C94193084E090E00C940B30682F55 +:104CC00084E090E00C9419308091E10180FF0BC0EA +:104CD0006091130185E0689FB00111247595679577 +:104CE000759567952BC081FF09C06091130185E020 +:104CF000689FB00111247595679520C082FF07C099 +:104D00006091130185E0689FB001112417C0909154 +:104D1000E2019923D1F060911201961788F7209152 +:104D2000130185E0289F90011124929FA001939F79 +:104D3000500D112470E0CA010E94DD2F603871050A +:104D400040F46115710539F002C065E070E0862F0E +:104D500008958FE7089581E008958091E10180FF33 +:104D600008C06091110170E075956795759567951C +:104D700021C081FF06C06091110170E075956795B3 +:104D800019C082FF04C06091110170E010C09091C1 +:104D9000E2019923C1F0609110019617A0F780916C +:104DA0001101899FC001112470E00E94DD2F60383D +:104DB000710528F46115710521F0862F08958FE79C +:104DC000089581E0089561E070E0F4CF803F21F420 +:104DD0000E946426819504C0813F29F40E946426C4 +:104DE0008093E5010895823F21F40E946426819515 +:104DF00004C0833F29F40E9464268093E40108954F +:104E0000893F19F40E94AD2605C08A3F31F40E9403 +:104E1000AD2681958093E60108958B3F21F40E9491 +:104E2000AD26819504C08C3F29F40E94AD26809365 +:104E3000E7010895843F21F48091E301816017C068 +:104E4000853F21F48091E301826011C0863F21F407 +:104E50008091E30184600BC0873F21F48091E301DE +:104E6000886005C0883F31F48091E30180618093C0 +:104E7000E30108958D3F21F48091E10181600BC031 +:104E80008E3F21F48091E101826005C08F3F29F4BB +:104E90008091E10184608093E1010895803F39F4BD +:104EA0008091E50187FF6CC01092E50169C0813FE8 +:104EB00029F48091E5011816BCF362C09091E401D9 +:104EC000823F29F497FF5CC01092E40159C0833FF0 +:104ED00019F41916CCF354C0893F41F48091E601CE +:104EE00018160CF04DC01092E6014AC08A3F29F412 +:104EF0008091E60187FF44C0F6CF8B3F39F4809163 +:104F0000E70187FF3DC01092E7013AC08C3F29F4CA +:104F10008091E7011816BCF333C0843F21F48091DF +:104F2000E3018E7F17C0853F21F48091E3018D7FDF +:104F300011C0863F21F48091E3018B7F0BC0873F36 +:104F400021F48091E301877F05C0883F31F480918F +:104F5000E3018F7E8093E30113C08D3F21F48091A4 +:104F6000E1018E7F0BC08E3F21F48091E1018D7FA6 +:104F700005C08F3F29F48091E1018B7F8093E1018F +:104F80008091E40181110EC08091E50181110AC078 +:104F90008091E601811106C08091E701811102C074 +:104FA0001092E20108958091D90183FF7EC08BE3C6 +:104FB00099E00E94D7088091E3011F928F9386E3C6 +:104FC00099E09F938F930E94700984E399E00E9477 +:104FD000D7088091E401282F332727FD30953F9390 +:104FE0008F9381E399E09F938F930E9470098FE2E2 +:104FF00099E00E94D7088091E501282F332727FDEB +:1050000030953F938F938CE299E09F938F930E940A +:1050100070098AE299E00E94D7088091E601282F62 +:10502000332727FD30953F938F9387E299E09F9335 +:105030008F930E94700985E299E00E94D7088091C1 +:10504000E701282F332727FD30953F938F9382E286 +:1050500099E09F938F930E9470098FE199E00E94DD +:10506000D7088091E2011F928F938CE199E09F9382 +:105070008F930E9470098AE199E00E94D70880917D +:10508000E1011F928F9387E199E09F938F930E9494 +:10509000700984E199E00E94D7088DB79EB74C96BD +:1050A0000FB6F8949EBF0FBE8DBF83EE91E00E94B5 +:1050B000A0170E9432249093E0018093DF010895AD +:1050C0001F93CF93DF938091DF019091E0010E94C5 +:1050D0003E24AC019091E201992321F0209114012A +:1050E00030E006C0209115018AE0289F900111242C +:1050F0004217530708F486C08091E401C091E5018E +:10510000D091E6011091E701811107C0C11176C06D +:10511000D11174C0111172C075C09F3F19F09F5F0B +:105120009093E201181624F40E9464268093E4010F +:105130008091E40187FF05C00E94642681958093D9 +:10514000E4011C1624F40E9464268093E5018091FA +:10515000E50187FF05C00E94642681958093E501E3 +:105160006091E401662339F1C091E501CC2319F186 +:10517000772767FD7095872F972F0E94E22E23E3F4 +:1051800033E343E35FE30E94462F0E94AF2E609318 +:10519000E4016C2F772767FD7095872F972F0E946A +:1051A000E22E23E333E343E35FE30E94462F0E94B2 +:1051B000AF2E6093E5011D1624F40E94AD26809366 +:1051C000E6018091E60187FF05C00E94AD2681952A +:1051D0008093E601111624F40E94AD268093E70126 +:1051E0008091E70187FF05C00E94AD2681958093DD +:1051F000E701DF91CF911F910C94D3279F3F09F0D6 +:105200008ECF96CFDF91CF911F910895E3EEF1E01D +:1052100085E0DF011D928A95E9F71092E201109274 +:10522000E10108958EE59BE00E94D7081F9281E07E +:105230008F931F9285E08F9380E19BE09F938F93E4 +:105240000E9470090F900F900F900F900F900F9089 +:1052500008958330E9F128F4813061F0823009F15A +:105260000895853009F462C008F449C0863009F415 +:1052700074C0089580911501262F30E0280F311D4C +:105280002F3F310524F4680F6093150103C08FEFA1 +:1052900080931501809115011F928F9389E49AE004 +:1052A00072C080911401262F30E0280F311D2F3F4E +:1052B000310524F4680F6093140103C08FEF8093CD +:1052C0001401809114011F928F9387E39AE05BC0D1 +:1052D00080911301262F30E0280F311D2F3F31051B +:1052E00024F4680F6093130103C08FEF80931301C0 +:1052F000809113011F928F9384E29AE044C08091C1 +:105300001201262F30E0280F311D2F3F310524F4E4 +:10531000680F6093120103C08FEF80931201809198 +:1053200012011F928F938FE09AE02DC0809111019E +:10533000262F30E0280F311D2F3F310524F4680F50 +:105340006093110103C08FEF8093110180911101CF +:105350001F928F9386EF99E016C080911001262F3F +:1053600030E0280F311D2F3F310524F4680F609382 +:10537000100103C08FEF80931001809110011F92E4 +:105380008F938BED99E09F938F930E9470090F90FC +:105390000F900F900F900895833081F128F48130A1 +:1053A00059F08230D1F00895853009F449C0B8F140 +:1053B000863009F456C0089580911501681720F4CD +:1053C000861B8093150102C0109215018091150172 +:1053D0001F928F938CEC99E054C080911401681750 +:1053E00020F4861B8093140102C010921401809156 +:1053F00014011F928F938AEB99E043C080911301AF +:10540000681720F4861B8093130102C010921301C9 +:10541000809113011F928F9387EA99E032C08091A7 +:105420001201681720F4861B8093120102C01092AB +:105430001201809112011F928F9382E999E021C09D +:1054400080911101681720F4861B8093110102C01E +:1054500010921101809111011F928F9389E799E0B9 +:1054600010C080911001681720F4861B80931001F2 +:1054700002C010921001809110011F928F938EE54F +:1054800099E09F938F930E9470090F900F900F9057 +:105490000F900895CF93C82F1F928F9383E69CE0BF +:1054A0009F938F930E94700981E090E0A0E0B0E0AC +:1054B000BC01CD0104C0660F771F881F991FCA95D4 +:1054C000D2F70E94E3200F900F900F900F90CF9192 +:1054D0000C94271DCF938D3109F465C0B0F58E3043 +:1054E00009F4CCC100F5873009F49BC1A8F48630DB +:1054F00009F06DC28091D901817F8E7F8093D9019F +:1055000088E69CE00E94D7088AEA90E10E94D708CA +:1055100081E08093E90180C1883009F44FC08B306D +:1055200009F47CC154C2863109F4F0C138F48031E9 +:1055300009F4B8C1813109F430C249C2893109F492 +:10554000CEC18B3109F486C142C2853309F437C21A +:1055500048F4873209F433C208F433C2893209F4BB +:105560002EC235C2833438F48A3308F02CC2883313 +:1055700009F454C12CC2833409F421C2883409F0DF +:1055800026C20E94271D89E990E10E94D7089FEF5B +:1055900023ED80E3915020408040E1F700C00000FF +:1055A0000E948D2439C189EB90E10E94D7080E94A6 +:1055B000692E0E944B170E947D0F2EC18EEA90E14A +:1055C0000E94D70889E79EE00E94D7080E945226D1 +:1055D0001F928F9386E79EE09F938F930E9470099E +:1055E00084E79EE00E94D7080E944926C82F81E6E2 +:1055F0009EE00E94D7081F92CF938CE59EE09F9378 +:105600008F930E9470098AE59EE00E94D70880E58A +:105610009EE00E94D7088C2F81701F928F938DE49B +:105620009EE09F938F930E9470098BE49EE00E94FE +:10563000D70881E49EE00E94D708C1FB882780F943 +:105640001F928F938EE39EE09F938F930E94700929 +:105650008CE39EE00E94D70880E39EE00E94D7087A +:10566000C2FB882780F91F928F938DE29EE09F9363 +:105670008F930E9470098BE29EE00E94D70882E21D +:105680009EE00E94D708C3FBCC27C0F91F92CF939E +:105690008FE19EE09F938F930E9470098DE19EE0C1 +:1056A0000E94D7080E945B26C82F89E09EE00E94D6 +:1056B000D7081F92CF9384E09EE09F938F930E9420 +:1056C000700982E09EE00E94D70889EE9DE00E946A +:1056D000D7088C2F81701F928F9386EE9DE09F9349 +:1056E0008F930E9470098DB79EB780960FB6F8947D +:1056F0009EBF0FBE8DBF84EE9DE00E94D7088DEC4B +:105700009DE00E94D708C1FB882780F91F928F93E4 +:105710008AEC9DE09F938F930E94700988EC9DE036 +:105720000E94D70886EB9DE00E94D708C2FB88271D +:1057300080F91F928F9383EB9DE09F938F930E943C +:10574000700981EB9DE00E94D7088FE99DE00E94DF +:10575000D708C3FB882780F91F928F938CE99DE0BF +:105760009F938F930E9470098AE99DE00E94D70859 +:1057700080E99DE00E94D708C4FB882780F91F922A +:105780008F938DE89DE09F938F930E9470098BE823 +:105790009DE00E94D70889E79DE00E94D708C5FBDD +:1057A000882780F91F928F9386E79DE09F938F93C0 +:1057B0000E94700984E79DE00E94D70888E59DE07B +:1057C0000E94D708C6FB882780F91F928F9385E532 +:1057D0009DE09F938F930E94700983E59DE00E9456 +:1057E000D7088BE49DE00E94D708C7FBCC27C0F9FF +:1057F0001F92CF9388E49DE09F938F930E9470093E +:1058000086E49DE00E94D7088DB79EB74C960FB6F0 +:10581000F8949EBF0FBE8DBFC1E0DEC08FE89CE054 +:105820005BC08091D901C82FC17080FF09C08CE88E +:1058300090E10E94D7088091D901817F8E7F47C077 +:1058400080E890E10E94D7088091D901816080931F +:10585000D901E2CF9091D90191FBCC27C0F981E029 +:10586000C827892FC0FB81F98093D901CC2319F077 +:1058700083E790E127C085E690E12EC09091D901A1 +:1058800092FBCC27C0F981E0C827892FC0FB82F9A1 +:105890008093D901CC2319F086E590E113C086E40A +:1058A00090E11AC09091D90193FBCC27C0F981E017 +:1058B000C827892FC0FB83F98093D901CC2351F0ED +:1058C0008AE390E10E94D7088091D901816080939A +:1058D000D90182C08DE290E10E94D7089DCF8EE170 +:1058E00090E10E94D70882EF9FE00E94D70885EBE5 +:1058F0009FE00E94D70888E89FE00E94D70884E4D0 +:105900009FE00E94D70889E19FE0E6CF8BE09FE00F +:105910000E94D7080E944B171F928F9381EF9EE041 +:105920009F938F930E94700980910C011F928F9317 +:105930008AED9EE09F938F930E9470098091700181 +:105940001F928F9387EC9EE09F938F930E94700924 +:1059500080910D011F928F9384EB9EE09F938F9314 +:105960000E9470098091DB019091DC01A091DD0122 +:10597000B091DE01BF93AF939F938F9380EA9EE037 +:105980009F938F930E9470098DB79EB746960FB66E +:10599000F8949EBF0FBE8DBF3FCF0E94271DC091C0 +:1059A0000D0181E0C827C0930D01CC2329F086E9C1 +:1059B0009EE00E94D70810C08BE89EE08DCF80E06B +:1059C00003C08D5101C089530E944A2A25CF89E81E +:1059D0009EE00E94D708C0E08C2FCF91089580E010 +:1059E000089580E00895CF93C82F8091E901813018 +:1059F00081F020F0823009F44FC045C1E0910E01E2 +:105A0000F0910F018081813169F0823209F03DC14E +:105A100009C0E0910E01F0910F018081813111F0F8 +:105A2000823261F48C2F0E94EF2C811104C08C2FE4 +:105A30000E946A2A2FC081E090E02CC08C2F0E9427 +:105A4000F12C811126C0C431E1F070F4CB3081F02B +:105A5000C031D1F40E9412298BE59CE00E94D70846 +:105A600082E08093E90115C0C93259F0C83361F46E +:105A700088E69CE00E94D7088FE59CE00E94D7084A +:105A800008C01092E90103C189E59CE00E94D70893 +:105A9000FEC081E08170FDC0C43220F5CE3108F037 +:105AA000C0C0CB3099F1C8F4C73009F0D2C08AE049 +:105AB0008093150194E19093140193E09093130166 +:105AC0008093120188E08093110188E28093100195 +:105AD0008FEF9AE00E94D708BFC0C33149F1C431AB +:105AE000C1F0B7C0CB3409F4A9C028F4C93289F099 +:105AF000C83361F0AEC0C13509F49EC0C23509F4A7 +:105B000099C0CE3409F0A5C06AE09EC00E94122957 +:105B1000A3C08091E801882319F01092E8019CC08D +:105B20008CE09BE00E94D70881E08093E901B1C03E +:105B300086EE9AE00E94D70884ED9AE00E94D7088A +:105B4000809115011F928F9381ED9AE09F938F931F +:105B50000E9470098FEC9AE00E94D7088DEB9AE0C2 +:105B60000E94D708809114011F928F938AEB9AE0CC +:105B70009F938F930E94700988EB9AE00E94D70848 +:105B800089EA9AE00E94D708809113011F928F93AF +:105B900086EA9AE09F938F930E94700984EA9AE0C4 +:105BA0000E94D70883E99AE00E94D70880911201E9 +:105BB0001F928F9380E99AE09F938F930E947009C0 +:105BC0008EE89AE00E94D70889E79AE00E94D708F9 +:105BD000809111011F928F9386E79AE09F938F9394 +:105BE0000E94700984E79AE00E94D7088DE59AE048 +:105BF0000E94D708809110011F928F938AE59AE046 +:105C00009F938F930E94700988E59AE00E94D708BD +:105C10008DB79EB748960FB6F8949EBF0FBE8DBF46 +:105C20001BC0CE51EC2FF0E0E15DFE4F80818093F0 +:105C3000E80112C061E003C061E006C06AE0809143 +:105C4000E8010E94292908C08091E8010E94CC291E +:105C500003C08DEF9AE013C08091E801882369F0BA +:105C60001F928F9387EF9AE09F938F930E94700902 +:105C70000F900F900F900F9004C084EF9AE00E9455 +:105C8000D70881E006C01092E90180E002C080E000 +:105C900001CFCF910895E1E8F0E0808188608083B2 +:105CA0008081816080838FB7F89493E0909389001E +:105CB00090ED909388008FBF0895EFE6F0E080812B +:105CC000826080830895EFE6F0E080818D7F80839D +:105CD0000895EFE6F0E0908182E0892780830895BF +:105CE0001F920F920FB60F9211242F933F934F9351 +:105CF0005F936F937F938F939F93AF93BF93EF9334 +:105D0000FF938091EA019091EB0101969093EB0152 +:105D10008093EA01811103C082E00E947D0FE0912F +:105D2000EB01E695E695F0E0E753FF4EE4918091B4 +:105D3000EA018E1303C080E00E947D0FFF91EF9176 +:105D4000BF91AF919F918F917F916F915F914F9193 +:105D50003F912F910F900FBE0F901F90189504D078 +:105D60006894B1118DC0089570D088F09F5790F05D +:105D7000B92F9927B751A0F0D1F0660F771F881F70 +:105D8000991F1AF0BA95C9F712C0B13081F077D0D7 +:105D9000B1E0089574C0672F782F8827B85F39F075 +:105DA000B93FCCF3869577956795B395D9F73EF4CF +:105DB00090958095709561957F4F8F4F9F4F089577 +:105DC000E89409C097FB3EF4909580957095619595 +:105DD0007F4F8F4F9F4F9923A9F0F92F96E9BB274B +:105DE0009395F695879577956795B795F111F8CFC7 +:105DF000FAF4BB0F11F460FF1BC06F5F7F4F8F4F32 +:105E00009F4F16C0882311F096E911C0772321F027 +:105E10009EE8872F762F05C0662371F096E8862FBF +:105E200070E060E02AF09A95660F771F881FDAF716 +:105E3000880F9695879597F9089557FD9058440FC8 +:105E4000551F59F05F3F71F04795880F97FB991FD9 +:105E500061F09F3F79F08795089512161306140696 +:105E6000551FF2CF4695F1DF08C016161706180623 +:105E7000991FF1CF86957105610508940895E894FE +:105E8000BB2766277727CB0197F908950BD078C0F9 +:105E900069D028F06ED018F0952309F05AC05FC081 +:105EA0001124EECFCADFA0F3959FD1F3950F50E0F8 +:105EB000551F629FF001729FBB27F00DB11D639FBC +:105EC000AA27F00DB11DAA1F649F6627B00DA11D62 +:105ED000661F829F2227B00DA11D621F739FB00D08 +:105EE000A11D621F839FA00D611D221F749F332778 +:105EF000A00D611D231F849F600D211D822F762F11 +:105F00006A2F11249F5750408AF0E1F088234AF00D +:105F1000EE0FFF1FBB1F661F771F881F9150504059 +:105F2000A9F79E3F510570F014C0AACF5F3FECF374 +:105F3000983EDCF3869577956795B795F795E79545 +:105F40009F5FC1F7FE2B880F911D9695879597F956 +:105F5000089597F99F6780E870E060E008959FEFEB +:105F600080EC089500240A941616170618060906F0 +:105F7000089500240A9412161306140605060895BF +:105F8000092E0394000C11F4882352F0BB0F40F447 +:105F9000BF2B11F460FF04C06F5F7F4F8F4F9F4F87 +:105FA0000895991B79E004C0991F961708F0961B75 +:105FB000881F7A95C9F78095089597FB072E16F4E8 +:105FC000009407D077FD09D00E94F72F07FC05D079 +:105FD0003EF4909581959F4F0895709561957F4F00 +:105FE0000895EE0FFF1F0590F491E02D0994AA1B70 +:105FF000BB1B51E107C0AA1FBB1FA617B70710F0B4 +:10600000A61BB70B881F991F5A95A9F780959095E5 +:10601000BC01CD010895F999FECF92BD81BDF89ADA +:10602000992780B50895A8E1B0E042E050E00C94D3 +:106030002E30262FF999FECF1FBA92BD81BD20BD0B +:106040000FB6F894FA9AF99A0FBE019608950E9435 +:106050001930272F0C941A30DC01CB01FC01F9997F +:10606000FECF06C0F2BDE1BDF89A319600B40D92A4 +:0C60700041505040B8F70895F894FFCF5D +:10607C0020027E0F6F104C101810E40F0101C701A5 +:10608C0028080A03140A3F4D3620394908FC07C674 +:10609C0007A6076D07E006F90612072B074B070149 +:0A60AC0002030405060708090000BE :00000001FF -- cgit v1.2.3-24-g4f1b From 46ddbd1fe27c910cd4d6ae3d2b6044cfbf71c3cb Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Wed, 2 Mar 2016 08:43:21 +0100 Subject: forgot F6 --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 2 +- keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 4e88376e4..c3b296cd7 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = KEYMAP( // left hand - KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS, KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT, KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS, diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex index 5346f1bdf..bf12476a4 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex +++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex @@ -45,7 +45,7 @@ :1002C000003B0035022102350001004C003C001EBD :1002D0000224062202010001003D002D0224022416 :1002E00004010001003E000100370011040000017C -:1002F000000100010000000100000001000E3001BB +:1002F000003F00010000000100000001000E30017D :100300000000000100000001004000240624022338 :1003100002000001004100220425023500300001E6 :100320000042002304260235023800010043002465 -- cgit v1.2.3-24-g4f1b From d0c62feb7e5992c2a6de2e50d347572720fa92a1 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Sun, 20 Mar 2016 22:53:43 +0100 Subject: tweaking it a bit further, fixing things --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index c3b296cd7..3efe3de8b 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | |CMD-C | 7 | 8 | 9 | 0 | ß | # | + * | ESC | 1 | 2 | 3 | 4 | 5 |CTL_SFT| | # | 6 | 7 | 8 | 9 | 0 | ß | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | " | ' | ? | + * | | | ^ | % | | | ~ | | | | & | < | > | - | UP | + | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | + | - | . | ; | | + * | | | | | | | ' | " |Left | DOWN |Right | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -107,8 +107,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { M(M_TOGGLE_5), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, DE_EXLM, DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), LSFT(DE_PLUS), - KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, - DE_PLUS, DE_MINS, KC_DOT, LSFT(DE_COMM), KC_TRNS, + KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_MINS, KC_UP, DE_PLUS, + DE_QUOT, DE_DQOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -- cgit v1.2.3-24-g4f1b From 7ebc813e8291af61ea3ec6828d682c2d84e2b4e5 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Sun, 20 Mar 2016 23:00:20 +0100 Subject: changing cursor keys, back to "default" cursor key layout, adding ISO-cursor keys to Symb layer. Changed numbers back to symmetric layout again, keeping F-keys in symb though --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 3efe3de8b..e66101013 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -80,9 +80,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | * | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | ^ | % | | | ~ | | | | & | < | > | - | UP | + | + * | | | ^ | % | | | ~ | | | | & | < | > | UP | - | + | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | ' | " |Left | DOWN |Right | + * | | | | | | | ' | LEFT| DOWN | RIGHT | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -107,8 +107,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { M(M_TOGGLE_5), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, DE_EXLM, DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), LSFT(DE_PLUS), - KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_MINS, KC_UP, DE_PLUS, - DE_QUOT, DE_DQOT, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), KC_UP, DE_MINS, DE_PLUS, + DE_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -- cgit v1.2.3-24-g4f1b From 1313e0c8283dc4c5f544aeb981ea047928950f0e Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Sun, 20 Mar 2016 23:07:38 +0100 Subject: fix number pad, add , --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index e66101013..7ecd1ae70 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -211,7 +211,7 @@ KEYMAP( KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS, KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, - KC_0,KC_DOT, KC_0, DE_EQL, KC_TRNS, + KC_0,KC_DOT, KC_COMM, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -- cgit v1.2.3-24-g4f1b From 94e96456b87c28299b426e8d0f047033f6d93d42 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Thu, 24 Mar 2016 10:30:27 +0100 Subject: minor changes --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 30 +- keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex | 2194 ++++++++++++------------- 2 files changed, 1111 insertions(+), 1113 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 7dbe05b28..0349c749b 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -74,28 +74,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | | L5 | F7 | F8 | F9 | F10 | F11 | F12 | + * | | F1 | F2 | F3 | F4 | F5 | | | L5 | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | < | > | ! | ? | | | | | \ | [ | ] | | | # | ! | + * | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | * | + * | | # | $ | \ | / | . |------| |------| / | ( | ) | { | } | # | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | ^ | % | | | ~ | | | | & | < | > | UP | - | + | + * | | | ^ | % | | | ~ | | | | | | ~ | ^ | UP | | $ | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | ' | LEFT| DOWN | RIGHT | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | | | | | | + * | | | | F13 | F12 | * ,------|------|------| |------+------+------. - * | | | | | | | | + * | | | | | F14 | | | * | | |------| |------| | | - * | | | | | | | | + * | | | | | F15 | | | * `--------------------' `--------------------' */ // SYMBOLS [SYMB] = KEYMAP( // left hand - KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS, KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT, KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS, @@ -104,14 +104,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS,KC_DEL,KC_TRNS, // right hand - M(M_TOGGLE_5), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, DE_EXLM, - DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), LSFT(DE_PLUS), - KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), KC_UP, DE_MINS, DE_PLUS, + M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_LESS, DE_MORE, DE_EXLM, + DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), DE_HASH, + KC_TRNS, DE_PIPE, DE_TILD, DE_CIRC, KC_UP, DE_MINS, LSFT(KC_4), DE_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + KC_F13, KC_F12, + KC_F14, + KC_F15, KC_TRNS, KC_TRNS ), /* Keymap 2: Media and mouse keys * diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex index 7f3ed1af5..c7cb8d863 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex +++ b/keyboard/ergodox_ez/keymaps/osx_de/osx_de.hex @@ -1,19 +1,19 @@ -:100000000C94F0030C9437040C9437040C943704CC -:100010000C9437040C9437040C9437040C94370474 -:100020000C9437040C9437040C94370E0C94090F7D -:100030000C9437040C9437040C9437040C94370454 -:100040000C9437040C947D230C9437040C943704DF -:100050000C9437040C940F1D0C9437040C94370443 -:100060000C9437040C9437040C9437040C94370424 -:100070000C9437040C9437040C9437040C94370414 -:100080000C9437040C9437040C9437040C94370404 -:100090000C9437040C9437040C9437040C943704F4 -:1000A0000C9437040C9437040C943704470451041F -:1000B00069048104C904CF04F004D504EB04E1040D -:1000C000E604DB04B1049904F504760F980F8B1055 -:1000D000980F8B10DD0F00108B1055106810521305 -:1000E000521381138113C413FE130B160B1617142E -:1000F0000B160C150C15DF150B160B16F61501E17A +:100000000C94F0030C9434040C9434040C943404D5 +:100010000C9434040C9434040C9434040C94340480 +:100020000C9434040C9434040C94210E0C94F30EB0 +:100030000C9434040C9434040C9434040C94340460 +:100040000C9434040C9478230C9434040C943404ED +:100050000C9434040C94091D0C9434040C94340452 +:100060000C9434040C9434040C9434040C94340430 +:100070000C9434040C9434040C9434040C94340420 +:100080000C9434040C9434040C9434040C94340410 +:100090000C9434040C9434040C9434040C94340400 +:1000A0000C9434040C9434040C94340444044E042E +:1000B00066047E04C604CC04ED04D204E804DE0425 +:1000C000E304D804AE049604F204600F820F7010AB +:1000D000820F7010C70FEA0F70103F1052103413C8 +:1000E000341363136313A613E413FD15FD15FD13F9 +:1000F000FD15FE14FE14D115FD15FD15E81501E1E1 :100100000137023702E10138023801E201250225F8 :1001100002E20001E10137023702E1013802380151 :10012000E10130023002E10001E10137023702E172 @@ -32,25 +32,25 @@ :1001F000021902E30002E00001E0000000F0A1F0BB :10020000A329002B00E200E100358100001E00144C :100210000004001D710D304D831F001A0016001BD5 -:10022000000C304C002000080007000600E1042A02 -:10023000002100150009001900E1084A00220017FA -:10024000000A000500000003300130E3000000E276 -:1002500000000002540230E7000000E60000000445 +:10022000000C304C00200008000700060052002A95 +:1002300000210015000900190051004A0022001792 +:10024000000A00050000000330E101E3000000E2C5 +:1002500000000002543100E7000000E60000000446 :100260005423001C000B00110000002E7F240018F6 :10027000000D00100050004B0025000C000E003651 -:100280000052002C00260012000F003700510028F9 -:100290000027001300330038714F004E002D002F4F -:1002A000003474E50031810000010001000100010B +:10028000004F002C00260012000F003700E1082864 +:10029000002700130033003871E1044E002D002FB9 +:1002A000003474E50030810000010001000100010C :1002B00000010000003A003500310001000100019A :1002C000003B0035022102350001004C003C001EBD :1002D0000224062202010001003D002D0224022416 :1002E00004010001003E000100370011040000017C :1002F000000100010000000100000001000E3001BB -:100300000000000100000001003F00240624022339 -:100310000200000100400022042502350001000116 -:100320000041002304260235023700010042002468 -:100330000425041F021E020100430031002604317F -:1003400002010001004400450001002D02010000EF +:100300000000000100000068003F002406240224D1 +:100310000400004500400022042502110431026956 +:100320000041002304260264005000010042003511 +:100330000025045200510001004300350226043814 +:10034000004F006A0044001E02310021020100003B :100350000001000100010001000100000001000196 :100360000001000100010001000100F400F200FBA7 :1003700000010001000100F000F100FA000100019D @@ -80,7 +80,7 @@ :1004F00000000001000100010000000100000001F7 :10050000003F00520051002302000001004000247F :100510000021001E00270001004100250022001FCD -:1005200000370001004200260023002000270001C0 +:1005200000370001004200260023002000360001B1 :10053000004300300230002402270201004400453D :1005400000380001000100000001000100E100018D :1005500000E0000000010001000100010001003D79 @@ -125,1075 +125,1073 @@ :1007C000FCF5E9DAC7B39D87715D4A3A2C20170F13 :1007D0000A06040201000000000000000000000002 :1007E00011241FBECFEFDAE0DEBFCDBF04B603FE9B -:1007F00027C08091EF019091F001A091F101B0919B -:10080000F2018730904BA740B04BD1F41092EF012A -:100810001092F0011092F1011092F20114BE84B70F -:10082000877F84BF0FB6F894A89580916000886197 -:1008300080936000109260000FBEE0E0FFE3099536 -:1008400011E0A0E0B1E0ECE9FAE402C005900D92FD -:10085000A433B107D9F721E0A4E3B1E001C01D92B0 -:10086000AF3EB207E1F70E947E0B0C944C250C942E -:100870000000462F50E04F30510508F0DEC0FA016D -:10088000EA5AFF4FDC0112968C910C9401258823C3 -:1008900021F085EE0E94EC11D0C085EE0E94B412CA -:1008A000CCC0882349F00E94D91C909335018093D5 -:1008B000340188EF91E008958091340190913501E1 -:1008C0000E94E51C873991050CF0A8C08AEE91E0E2 -:1008D0000895882349F00E94D91C90933501809394 -:1008E000340187EE91E008958091340190913501B3 -:1008F0000E94E51C873991050CF093C089ED91E0C9 -:100900000895882349F00E94D91C90933501809363 -:10091000340182ED91E00895809134019091350188 -:100920000E94E51C873991050CF07EC080EC91E0B7 -:100930000895882349F00E94D91C90933501809333 -:1009400034018BEB91E00895809134019091350151 -:100950000E94E51C873991050CF069C08DEA91E091 -:100960000895882349F00E94D91C90933501809303 -:10097000340188EA91E00895809134019091350125 -:100980000E94E51C873991050CF054C08AE991E07A -:100990000895882309F451C085E891E008958823DB -:1009A00009F44BC080E791E00895882309F445C01D -:1009B0008BE591E00895882309F43FC086E491E037 -:1009C00008958823D1F18DE391E008958823A9F15A -:1009D00088E291E00895882381F183E191E0089510 -:1009E000882359F18EEF90E00895882331F18091AA -:1009F000B3019091B401A091B501B091B60120E28C -:100A0000822780729927AA27BB278093B3019093EE -:100A1000B401A093B501B093B6010FC085EF91E08A -:100A2000089584EE91E008958BEC91E0089586EBB3 -:100A300091E0089583EA91E0089580E090E00895C0 -:100A400008956091B3017091B4018091B5019091C6 -:100A5000B6010E943C1C56985E9825982D982698C1 -:100A60002E9827982F988330C1F028F4813041F0D8 -:100A7000823049F00895843049F0853051F008956E -:100A8000259A2D9A0895269A2E9A0895259A2D9A98 -:100A900004C0259A2D9A269A2E9A279A2F9A08955D -:100AA0000C94210556985E9825982D9826982E9896 -:100AB00027982F988FEF90E090938900809388007B -:100AC00090938B0080938A0090938D0080938C008C -:100AD000259A2D9A2FEF80E792E021508040904098 -:100AE000E1F700C00000269A2E9A2FEF80E792E0EF -:100AF000215080409040E1F700C00000279A2F9AD3 -:100B00002FEF80E792E0215080409040E1F700C055 -:100B1000000025982D982FEF80E792E0215080402B -:100B20009040E1F700C0000026982E982FEF80E754 -:100B300092E0215080409040E1F700C000002798EB -:100B40002F9856985E9825982D9826982E98279835 -:100B50002F98089589EA8093800089E0809381002E -:100B600024982C983F988AB18F748AB96E98479AC6 -:100B70008BB1806B8BB9769A0E9452050C9420053C -:100B800080E2809300018091360181110EC00E94A5 -:100B90000F0681E0809336012FEF83ED90E3215023 -:100BA00080409040E1F700C0000080E40E941506FC -:100BB0008093000181112EC00E943F0680930001A6 -:100BC000811128C00E943F0680930001811122C03C -:100BD0008FE30E943F068093000181111BC00E9499 -:100BE000370680E40E94150680930001811112C02F -:100BF0008CE00E943F068093000181110BC00E948F -:100C00003F0680930001811105C08FE30E943F06DB -:100C1000809300010E943706809100010895109290 -:100C2000B9008AE08093B800089594EA9093BC00DC -:100C30009091BC0097FFFCCF9091B900987F9830BD -:100C400021F0903111F081E008958093BB0084E899 -:100C50008093BC008091BC0087FFFCCF8091B900DD -:100C6000887F883111F0803471F780E0089584E93D -:100C70008093BC008091BC0084FDFCCF08958093DC -:100C8000BB0084E88093BC008091BC0087FFFCCF50 -:100C90009091B900987F81E0983209F480E008953E -:100CA00084E88093BC008091BC0087FFFCCF8091DA -:100CB000BB00089580910001811115C080E40E945D -:100CC00015068093000181110CC082E10E943F064D -:100CD00080930001811105C08FEF0E943F06809331 -:100CE00000010E94370684B1807F84B985B1807F7E -:100CF00085B98AB1837F8AB98BB1837F8BB93E98DE -:100D0000469808950E94C005809300010E945A06EB -:100D100080B38C7080BB81B3836F81BBE6E4F1E06C -:100D2000A8E3B1E011921D9281E0E435F807D1F714 -:100D30000C94AA059F92AF92BF92CF92DF92EF924E -:100D4000FF920F931F93CF93DF938091000188232D -:100D500079F0809137018F5F80933701811108C04E -:100D60000E94C00580930001811102C00E945205BB -:100D700088E3E82E81E0F82E8701C0E0D0E0BB24B4 -:100D8000B39492E0A92ECC24C394D12CC730D105C2 -:100D900000F580910001811164C080E40E94150675 -:100DA00080930001811112C082E10E943F0680936E -:100DB000000181110BC0C6010C2E01C0880F0A94DE -:100DC000EAF780950E943F06809300010E94370653 -:100DD00048C0CA30A1F028F4C83059F0C93061F0D9 -:100DE00005C0CC3089F070F0CD3089F0209A289879 -:100DF00010C0219A29980DC0229A2A980AC0239AD5 -:100E00002B9807C0529A01C0539A5B9802C03E9A31 -:100E10004698E0EAEA95F1F78FB181708B257999D0 -:100E200002C032E001C030E0832B7C9902C034E084 -:100E300001C030E0832B7D9902C028E001C020E092 -:100E4000822B7E9902C090E101C090E0892B9FB176 -:100E50009095991F9927991F9295990F907E892BAC -:100E60000FC08091000181114AC080E40E941506E4 -:100E700080930001882381F1912C0E943706892DEF -:100E8000D8019C91981719F08C93A09201010E94AF -:100E90005A0621960F5F1F4FCE30D10509F076CF4D -:100EA00080910101882369F1815080930101882399 -:100EB00039F0EFE9FFE03197F1F700C0000021C001 -:100EC000E6E4F1E0D7018D917D018193B6E4EB1664 -:100ED000B1E0FB06B9F715C083E10E943F0680939D -:100EE00000018111C9CF81E40E94150680930001A1 -:100EF0008111C2CF0E945006982E9094BECF80E000 -:100F0000BFCF0E94500581E0DF91CF911F910F91DB -:100F1000FF90EF90DF90CF90BF90AF909F9008959B -:100F2000E82FF0E0EA5BFE4F8081089508958B3B47 -:100F3000910580F4883A910548F5853A9105D8F4F1 -:100F40008430910508F0B2C0019709F06EC081E0CD -:100F500090E00895803E910508F467C0883E9105B1 -:100F600008F4A4C09C01205F31092031310508F04C -:100F70005CC090650895853A910509F459C0863A98 -:100F8000910509F058C082E890E40895883A9105E7 -:100F900009F454C0893A910509F453C08A3A91057D -:100FA00009F452C08B3A910509F451C08C3A91056D -:100FB00009F450C08D3A910509F44FC0803B91056A -:100FC00009F44EC08E3A910509F44DC08F3A91054F -:100FD00009F44CC0813B910509F44BC0823B91055B -:100FE00009F44AC0833B910509F449C0843B91054B -:100FF00009F448C0853B910509F447C0863B91053B -:1010000009F446C0873B910509F445C0883B91052A -:1010100009F444C0893B910509F443C08A3B91051A -:1010200009F442C080E094E4089580E090E00895DF -:1010300081E890E4089583E890E4089582EE94E4D2 -:10104000089589EE94E408958AEE94E4089585EB7A -:1010500094E4089586EB94E4089587EB94E408956E -:101060008CEC94E408958DEC94E4089583E895E481 -:1010700008958AE895E4089582E995E4089584E95D -:1010800095E4089581E296E4089583E296E4089554 -:1010900084E296E4089585E296E4089586E296E473 -:1010A000089587E296E408958AE296E40895089503 -:1010B00024E5829FC0011124FC0126E0729FE00D0F -:1010C000F11D1124E60FF11DEE0FFF1FEF5FFD4F25 -:1010D000859194910895880F991FFC01E558FF4F61 -:1010E000859194910895880F991FFC01E550FE4F5A -:1010F00085919491089524E5829FC0011124FC01FB -:1011000046E0749FE00DF11D1124E60FF11DEE0F76 -:10111000FF1FEF5FFD4F859194919C013A9521153A -:101120004FE1340708F425C13F512115304120F427 -:101130009F700E94730808959C013053211530411F -:1011400018F49927906C0895811520E5920769F4A9 -:101150000E942D164FEF84E39CE041508040904068 -:10116000E1F700C000000C94341D813020E59207A7 -:1011700031F48091CE0181608093CE0108959C016D -:1011800030552115304108F05CC0292F33272F70CE -:10119000332721303105E9F4AC0164E0440F551FD9 -:1011A0006A95E1F744275370BC016370772702C04A -:1011B000220F331F6A95E2F73C68242B352B73E02E -:1011C000880F991F7A95E1F780769927822B932BC8 -:1011D00008952230310529F4982F8827816F906A6D -:1011E000089523303105A1F4AC0133E0440F551FBD -:1011F0003A95E1F7407E57708370992721E030E0FF -:1012000002C0220F331F8A95E2F7C9019C6816C0FD -:101210002430310531F5AC0123E0440F551F2A95E8 -:10122000E1F7407E57708370992721E030E002C0DB -:10123000220F331F8A95E2F7C9019A68842B952BF8 -:1012400008959C0130572115304118F49F70906229 -:1012500008959C0130582115304118F49F70906A10 -:101260000895803E9105E0F4803C910558F5813366 -:10127000910509F46FC048F48932910509F463C0FF -:101280008A32910509F46DC072C089339105E9F085 -:1012900082389105D1F08533910509F44DC067C0BE -:1012A000833E910581F138F4803E9105B9F0823E8C -:1012B0009105D9F05CC0863E910561F1873E9105AC -:1012C000A1F155C00E946B0808952091E00120FD16 -:1012D00002C021FF4CC080EE90E049C08091E00147 -:1012E00080FFF9CF89E390E042C08091E00182FF66 -:1012F0000EC08091E00184FF03C080E090E037C021 -:1013000083EE90E034C08091E00182FFF2CF82EE64 -:1013100090E02DC08091E00183FF0BC08091E0013F -:1013200084FDEBCF87EE90E022C08091E00183FF47 -:10133000F5CF86EE90E01BC08091E00185FF07C0ED -:1013400089E290E014C08091E00185FFF9CF85E348 -:1013500090E00DC08091E00186FF07C08AE290E036 -:1013600006C08091E00186FFF9CF81E390E00E9402 -:10137000970708950895809164010895CF93DF93AE -:1013800000D01F92CDB7DEB79C018091E60184307A -:1013900019F593E099833B832A839093E9008FEFBB -:1013A0009091E800815095FD06C095ED9A95F1F772 -:1013B00000008111F5CF8091E80085FF0DC040E06D -:1013C00050E063E070E0CE0101960E942B0C80910A -:1013D000E8008E778093E8000F900F900F90DF91D8 -:1013E000CF910895CF93DF9300D01F92CDB7DEB792 -:1013F0002091E601243021F522E029839B838A8312 -:1014000083E08093E9008FEF9091E800815095FD93 -:1014100006C095ED9A95F1F700008111F5CF809106 -:10142000E80085FF0DC040E050E063E070E0CE01D1 -:1014300001960E942B0C8091E8008E778093E80043 -:101440000F900F900F90DF91CF9108959C018091A4 -:10145000E6018430F9F482E08093E9009FEF809107 -:10146000E800915085FD06C085ED8A95F1F70000F2 -:101470009111F5CF8091E80085FF0CC040E050E06D -:1014800065E070E0C9010E942B0C8091E8008E7726 -:101490008093E8000895CF93DF93EC018091E601FB -:1014A000843009F046C090910C019923D9F09091B5 -:1014B0000D019923B9F08093E9008FEF9091E80036 -:1014C000815095FD06C095E19A95F1F700008111D4 -:1014D000F5CF8091E80085FF2CC040E050E060E14E -:1014E00070E017C081E08093E9008FEF9091E800F1 -:1014F000815095FD06C095ED9A95F1F70000811198 -:10150000F5CF8091E80085FF14C040E050E068E02E -:1015100070E0CE010E942B0C8091E8008E778093C2 -:10152000E80080E1FE01A4E5B1E001900D928A950A -:10153000E1F7DF91CF9108958091E501811109C014 -:101540000E94BC0D0E94190E8091E200846080937D -:10155000E20008951092E501089508950C946A231D -:101560000E94CA1C0E9470230E94C4100C94BA09E5 -:1015700042E061EC81E00E94350D42E061EC82E0E6 -:101580000E94350D42E061EC83E00E94350D42E19E -:1015900061EC84E00C94350D8091E801833009F40E -:1015A00055C030F4813071F0823009F48EC0089556 -:1015B0008A3009F47AC08B3009F460C0893009F0B0 -:1015C0009CC020C08091E701813A09F096C08091CB -:1015D000E800877F8093E8008091EB019091EC0117 -:1015E000892B21F460E184E591E003C060E080E0B4 -:1015F00090E070E00E94760C8091E8008B778093F9 -:10160000E80008958091E701813209F076C0809169 -:10161000EB019091EC01009719F0039709F06DC070 -:101620008091E800877F8093E8008091E80082FD48 -:1016300005C08091E6018111F8CF5FC08091F10073 -:10164000809364018091E8008B7753C08091E7011B -:10165000813A09F052C08091EB019091EC01892B05 -:1016600009F04BC08091E800877F8093E80080916B -:10167000E80080FFFCCF80910C0136C08091E7012B -:101680008132D9F58091EB019091EC01892BA9F57C -:101690008091E800877F8093E8000E946A0D809126 -:1016A000E90180930C010C942D168091E7018132A1 -:1016B00021F58091E800877F8093E8000E946A0D01 -:1016C0008091EA018093650108958091E701813A54 -:1016D000A1F48091E800877F8093E8008091E80082 -:1016E00080FFFCCF809165018093F1008091E8003C -:1016F0008E778093E8000C946A0D089584B7877FF5 -:1017000084BF0FB6F894A89580916000886180939B -:101710006000109260000FBE90E080E80FB6F89471 -:1017200080936100909361000FBE0E9413110E948C -:10173000BC0D0E94190E8091E20084608093E2004B -:1017400078940E94A4100E94151182E091E00E94FA -:10175000BF100E9458238091E601853069F40E94F1 -:101760008C1C8091E4018823B1F30E94B61C88236D -:1017700091F30E94150CEFCF0E941B11ECCF292F83 -:10178000332723303105C9F060F42130310581F071 -:101790002230310509F041C08DE690E025E236E0C7 -:1017A00040C021323105E1F02232310531F135C03E -:1017B00082E190E022E936E034C09927813091053A -:1017C00049F028F0029749F5E1EFF5E005C0E1E2C4 -:1017D000F6E002C0E9E0F6E0849190E09F0121C0CC -:1017E0006430D8F4E62FF0E0EE0FFF1FEE5DFE4F01 -:1017F0002081318189E090E014C0643070F470E0A1 -:10180000FB01EE0FFF1FE65EFE4F20813181FB01E1 -:10181000EA5EFE4F808190E004C080E090E020E02E -:1018200030E0FA0131832083089580E189BD82E1AF -:1018300089BD09B400FEFDCF8091D8008F7D8093D3 -:10184000D8008091E00082608093E0008091E00009 -:1018500081FDFCCF0895CF92DF92EF92FF920F931C -:101860001F93CF93DF93EC018B016A010E94890DD6 -:10187000811133C0C114D10439F0F6018081918106 -:10188000081B190BC80FD91FE12CF12C01151105EC -:1018900019F18091E80085FD16C08091E8008E77EF -:1018A0008093E800C114D10449F0F6018081918150 -:1018B000E80EF91EF182E08285E00FC00E94890DDA -:1018C000882321F30AC089918093F1000150110906 -:1018D000FFEFEF1AFF0ADACF80E0DF91CF911F917F -:1018E0000F91FF90EF90DF90CF9008952091ED0140 -:1018F0003091EE012617370748F06115710539F46C -:101900002091E8002E772093E80001C0B901FC0186 -:1019100020E06115710579F18091E6018823F1F1EC -:101920008530F1F18091E80083FD3CC08091E800B2 -:1019300082FD2EC08091E80080FFEBCF2091F30064 -:101940008091F20090E0922B6115710551F0883082 -:10195000910538F421912093F100615071090196AD -:10196000F3CF21E0089709F020E08091E8008E771E -:101970008093E800CECF2111CFCF0AC08091E6013D -:10198000882361F0853061F08091E80083FD0AC012 -:101990008091E80082FFF2CF80E0089582E0089510 -:1019A00083E0089581E008952091ED013091EE01EA -:1019B0002617370748F06115710539F42091E800C2 -:1019C0002E772093E80001C0B901FC0120E06115E9 -:1019D000710591F18091E601882309F440C08530BA -:1019E00009F43FC08091E80083FD3DC08091E8008C -:1019F00082FD2FC08091E80080FFE9CF2091F300A5 -:101A00008091F20090E0922B6115710559F08830B9 -:101A1000910540F424912093F100319661507109B1 -:101A20000196F2CF21E0089709F020E08091E800CC -:101A30008E778093E800CBCF2111CCCF0AC0809164 -:101A4000E601882361F0853061F08091E80083FD34 -:101A50000AC08091E80082FFF2CF80E0089582E022 -:101A6000089583E0089581E00895982F973068F5F0 -:101A70009093E900981739F07091EC002091ED00F7 -:101A80005091F00003C0242F762F50E021FD02C0BA -:101A90009F5FECCF3091EB003E7F3093EB003091B5 -:101AA000ED003D7F3093ED003091EB0031603093DD -:101AB000EB007093EC002093ED005093F000209128 -:101AC000EE0027FDE5CF80E008958F708093E90058 -:101AD00081E008958091E70187FF11C08091E800BF -:101AE00082FD05C08091E6018111F8CF11C080917F -:101AF000E8008B770BC08091E601882349F0809144 -:101B0000E80080FFF8CF8091E8008E778093E800AE -:101B100008952091E4003091E50095E64091EC00B5 -:101B2000842F817040FF23C08091E80080FD1DC09C -:101B30008091E601882399F0853099F08091EB003F -:101B400085FD11C04091E4005091E5002417350750 -:101B500029F3915011F09A01E1CF84E0089582E0D9 -:101B6000089583E0089581E0089580E0089540910C -:101B7000E80042FFDDCF08950E942A0E0E94320E37 -:101B8000E0EEF0E0808181608083E8EDF0E080812C -:101B90008F77808319BCA7EDB0E08C918E7F8C93FA -:101BA00080818F7E80831092E50108950F931F93AB -:101BB000CF93DF930E942A0E0E94320EC8EDD0E030 -:101BC00088818F77888388818068888388818F7DEA -:101BD000888319BC1092E6011092E2011092E40190 -:101BE0001092E30100EE10E0F80180818B7F80838A -:101BF00088818160888342E060E080E00E94350D4A -:101C0000E1EEF0E080818E7F8083E2EEF0E0808183 -:101C100081608083808188608083F80180818E7FED -:101C20008083888180618883DF91CF911F910F919C -:101C30000895E8EDF0E080818F7E8083E7EDF0E0AD -:101C400080818160808384E082BF81E08093E501B0 -:101C50000C94D60DE8EDF0E080818E7F80831092A9 -:101C6000E20008951092DA001092E10008951F92A8 -:101C70000F920FB60F9211242F933F934F935F93C0 -:101C80006F937F938F939F93AF93BF93EF93FF9344 -:101C90008091E10082FF0BC08091E20082FF07C0CB -:101CA0008091E1008B7F8093E1000E94A3108091DE -:101CB000DA0080FF1FC08091D80080FF1BC0809198 -:101CC000DA008E7F8093DA008091D90080FF0DC00A -:101CD00080E189BD82E189BD09B400FEFDCF81E0CC -:101CE0008093E6010E949C0A05C019BC1092E6018F -:101CF0000E94AA0A8091E10080FF19C08091E20051 -:101D000080FF15C08091E2008E7F8093E200809179 -:101D1000E20080618093E2008091D800806280932D -:101D2000D80019BC85E08093E6010E94AE0A80913C -:101D3000E10084FF30C08091E20084FF2CC080E18C -:101D400089BD82E189BD09B400FEFDCF8091D80034 -:101D50008F7D8093D8008091E1008F7E8093E10099 -:101D60008091E2008F7E8093E2008091E2008160AA -:101D70008093E2008091E201882311F084E007C0A3 -:101D80008091E30087FD02C081E001C083E0809381 -:101D9000E6010E94B00A8091E10083FF29C0809192 -:101DA000E20083FF25C08091E100877F8093E100FE -:101DB00082E08093E6011092E2018091E1008E7F43 -:101DC0008093E1008091E2008E7F8093E200809119 -:101DD000E20080618093E20042E060E080E00E94E7 -:101DE000350D8091F00088608093F0000E94AD0A6C -:101DF000FF91EF91BF91AF919F918F917F916F91E3 -:101E00005F914F913F912F910F900FBE0F901F90B8 -:101E100018951F920F920FB60F9211242F933F9394 -:101E20004F935F936F937F938F939F93AF93BF93E2 -:101E3000CF93DF93EF93FF93C091E900CF70809130 -:101E4000EC00D82FD17080FDD0E81092E90080918D -:101E5000F000877F8093F00078940E944D0F1092DD -:101E6000E9008091F00088608093F000CD2BCF7066 -:101E7000C093E900FF91EF91DF91CF91BF91AF91B6 -:101E80009F918F917F916F915F914F913F912F9192 -:101E90000F900FBE0F901F9018951F93CF93DF9355 -:101EA000CDB7DEB7AA970FB6F894DEBF0FBECDBF91 -:101EB000E7EEF1E08091F100819321E0EF3EF2073F -:101EC000C9F70E94CC0A8091E80083FF24C1809169 -:101ED000E7019091E801492F50E04A30510508F0A0 -:101EE0001AC1FA01EB59FF4F0C940125803881F09B -:101EF000823809F010C18091EB018F708093E90066 -:101F00008091EB0085FB882780F91092E90006C0DC -:101F10008091E3019091E401911182609091E80039 -:101F2000977F9093E8008093F1001092F100C8C071 -:101F3000282F2D7F09F0EFC0882319F0823061F03F -:101F4000EAC08091E901813009F0E5C0933009F0E1 -:101F500080E08093E4012BC08091E901811127C0CA -:101F60008091EB018F7009F4D6C08093E900209135 -:101F7000EB0020FF1CC0933021F48091EB008062C5 -:101F800014C09091EB0090619093EB0021E030E061 -:101F9000A90102C0440F551F8A95E2F74093EA0059 -:101FA0001092EA008091EB0088608093EB00109221 -:101FB000E9008091E800877F86C08111ACC0109154 -:101FC000E9011F778091E3008078812B8093E30003 -:101FD0008091E800877F8093E8000E946A0D8091DD -:101FE000E80080FFFCCF8091E30080688093E300ED -:101FF000111102C082E001C083E08093E6018BC032 -:102000008058823008F087C08091E9019091EA0100 -:102010008C3D53E0950779F583E08A838AE28983D2 -:102020004FB7F894DE01139620E03EE051E2E32F33 -:10203000F0E050935700E49120FF03C0E295EF7069 -:102040003F5FEF708E2F90E0EA3010F0C79601C02E -:10205000C0968D939D932F5F243149F74FBF809198 -:10206000E800877F8093E8006AE270E0CE01019685 -:102070000E94760C14C0AE014F5F5F4F6091EB0180 -:102080000E94BF0BBC01892B09F445C09091E80068 -:10209000977F9093E80089819A810E94D40C809167 -:1020A000E8008B778093E80036C08038A1F58091F6 -:1020B000E800877F8093E8008091E2018093F1003F -:1020C0008091E8008E778093E8000E946A0D23C01B -:1020D000811121C08091E9019091EA01992702972D -:1020E000D4F48091E800877F8093E8008091E90133 -:1020F0008093E2010E946A0D8091E201811106C085 -:102100008091E30087FD02C081E001C084E08093FC -:10211000E6010E94B80A8091E80083FF0AC080911E -:10212000E800877F8093E8008091EB0080628093D5 -:10213000EB00AA960FB6F894DEBF0FBECDBFDF91BD -:10214000CF911F9108950895CF938091E601882340 -:10215000A1F0C091E900CF709091EC00892F8170BF -:1021600090FD80E8C82B1092E9008091E80083FD83 -:102170000E944D0FCF70C093E900CF9108959093C6 -:102180006B0180936A010895E0916A01F0916B01FF -:10219000309721F00190F081E02D099480E00895BE -:1021A000E0916A01F0916B01309721F00280F38198 -:1021B000E02D09940895E0916A01F0916B01309748 -:1021C00021F00480F581E02D0994089520916801A3 -:1021D000309169012817390771F090936901809354 -:1021E0006801E0916A01F0916B01309721F006805F -:1021F000F781E02D099408952091660130916701DF -:102200002817390771F09093670180936601E09178 -:102210006A01F0916B01309721F00084F185E02D87 -:102220000994089508950C9412110E94D01C0E94E4 -:1022300082060C94961DCF92DF92EF92FF920F933D -:102240001F93CF93DF93CDB7DEB72B970FB6F894DC -:10225000DEBF0FBECDBF0E949A068DE6C82E81E07C -:10226000D82E00E010E0E02E802F0E949007F601AB -:1022700041916F01F82EF426B1F40F5F1F4F0E301D -:10228000110589F78FEF89838A831B820E94D91CED -:102290008160782F9D838C8349815A816B818D81E8 -:1022A0000E94BE1140C09091CE0191FF04C08B8767 -:1022B0000E9496078B8520E030E04F2D50E0922F52 -:1022C000BA01022E02C0759567950A94E2F760FF85 -:1022D00024C02E83EF8221E030E0690102C0CC0CE3 -:1022E000DD1C9A95E2F790E08C219D21892B09F461 -:1022F00020E028870E94D91C8160782F9A878987DF -:102300004E815F8168858A850E94BE11F801E3597C -:10231000FE4F8081C826C08206C02F5F3F4F263007 -:10232000310569F6AACF0E947D200E94C4109091C9 -:102330006C018917A1F00E94C41080936C012B9648 -:102340000FB6F894DEBF0FBECDBFDF91CF911F91C6 -:102350000F91FF90EF90DF90CF900C94BA092B96DD -:102360000FB6F894DEBF0FBECDBFDF91CF911F91A6 -:102370000F91FF90EF90DF90CF900895CF93DF9370 -:10238000CDB7DEB72B970FB6F894DEBF0FBECDBF2B -:102390004F83588769877A878B87DE01119686E09D -:1023A000FD0111928A95E9F785E0FE0137960190CB -:1023B0000D928A95E1F749815A816B817C818D81EB -:1023C0009E810E94C1182B960FB6F894DEBF0FBEF7 -:1023D000CDBFDF91CF910895CF93C82F882309F403 -:1023E000C1C0823859F40E94C41081FDBBC089E38A -:1023F0000E945E1B0E94161C89E30CC0833879F48E -:102400000E94C41080FDAEC083E50E945E1B0E9446 -:10241000161C83E50E949D1BCF910C94161C8438DA -:1024200059F40E94C41082FD9DC087E40E945E1B87 -:102430000E94161C87E4EECF8CEF8C0F813A48F493 -:102440008C2F0E94BD2281118DC08C2F0E945E1B9B -:10245000E3CF80E28C0F883048F4C77081E001C080 -:10246000880FCA95EAF70E94DF1BD6CF8BE58C0F49 -:10247000833078F4C53A29F0C63A31F083E890E029 -:1024800005C081E890E002C082E890E0CF910C9412 -:10249000E61088E58C0F833108F064C0C83A39F142 -:1024A000C93A41F1CA3A49F1CB3A51F1CC3A59F122 -:1024B000CD3A61F1C03B69F1CE3A71F1CF3A79F191 -:1024C000C13B81F1C23B89F1C33B91F1C43B99F11E -:1024D000C53BA1F1C63BA9F1C73BB1F1C83BB9F17E -:1024E000C93BC1F1CA3BC9F180E090E038C082EE3F -:1024F00090E035C089EE90E032C08AEE90E02FC0C7 -:1025000085EB90E02CC086EB90E029C087EB90E053 -:1025100026C08CEC90E023C08DEC90E020C083E8D6 -:1025200091E01DC08AE891E01AC082E991E017C0ED -:1025300084E991E014C081E292E011C083E292E06C -:102540000EC084E292E00BC085E292E008C086E211 -:1025500092E005C087E292E002C08AE292E0CF9169 -:102560000C94FC10CF910895882309F44BC0823855 -:1025700059F40E94C41081FF45C089E30E945E1B8C -:102580000E94161C89E30CC0833871F40E94C410A9 -:1025900080FF38C083E50E945E1B0E94161C83E505 -:1025A0000E949D1B0C94161C843859F40E94C41080 -:1025B00082FF28C087E40E945E1B0E94161C87E4ED -:1025C000EFCF9CEF980F913A58F390E2980F983024 -:1025D00050F4877091E001C0990F8A95EAF7892F2E -:1025E0000E94E51BDFCF9BE5980F933020F480E03D -:1025F00090E00C94E610885A833120F480E090E05B -:102600000C94FC100895882321F00E94DF1B0C9489 -:10261000161C0895882321F00E94E51B0C94161CBB -:102620000895BF92CF92DF92EF92FF920F931F9384 -:10263000CF93DF9300D000D000D0CDB7DEB77C01C0 -:1026400085E0F701DE01119601900D928A95E1F780 -:10265000F70183819481892B09F4DDC29081818106 -:102660008F3F19F49F3F09F4D6C2F70102812581FB -:1026700022952F7099838A8389819A812E830E9463 -:102680001D1B182FB92E0E941C1B0E94E319EB2D55 -:10269000E295EF704E2F50E0FA01E159FF4F2E8185 -:1026A0000C9401258B2D807F9B2D9F70F92E882304 -:1026B00019F0F29480EFF822002349F0FF2009F48A -:1026C00057C28F2D0E94EF1B0E94161C51C2812FF2 -:1026D0000E94B412FF2009F49EC28F2D0E94F51BA8 -:1026E00026960FB6F894DEBF0FBECDBFDF91CF9117 -:1026F0001F910F91FF90EF90DF90CF90BF900C94BF -:10270000161C3B2D307F8B2D8F70303211F082954F -:10271000807F112319F0113021F12CC00023B9F072 -:10272000222309F490C1213009F08DC126960FB6FD -:10273000F894DEBF0FBECDBFDF91CF911F910F91F7 -:10274000FF90EF90DF90CF90BF900C94FF1B22235F -:1027500019F0213009F45FC28E830E94021C8E8121 -:1027600086C1002321F0223008F055C26CC121112E -:1027700052C27DC1002321F0222309F464C1F8C1B3 -:10278000222309F474C109C28B2D86958695837026 -:1027900019F08130D1F03FC2002321F0812F9B2D11 -:1027A000937002C080E090E026960FB6F894DEBFEA -:1027B0000FBECDBFDF91CF911F910F91FF90EF9092 -:1027C000DF90CF90BF900C94E610002321F0812F72 -:1027D0009B2D937002C080E090E026960FB6F8948F -:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044 -:1027F000EF90DF90CF90BF900C94FC10812F0023BE -:1028000019F00E94851F02C00E94ED1F26960FB688 -:10281000F894DEBF0FBECDBFDF91CF911F910F9116 -:10282000FF90EF90DF90CF90BF900C9472208B2D93 -:10283000837009F075C00111EEC1812F82958695D4 -:102840008770880F880F912F9F70C92ED12CE12C93 -:10285000F12C082E04C0CC0CDD1CEE1CFF1C0A94CD -:10286000D2F714FF12C00FE010E020E030E004C007 -:10287000000F111F221F331F8A95D2F7C901B8011B -:10288000609570958095909503C060E070E0CB01F5 -:102890004B2D4695469543704230C1F060F56C294A -:1028A0007D298E299F29413051F126960FB6F89443 -:1028B000DEBF0FBECDBFDF91CF911F910F91FF9073 -:1028C000EF90DF90CF90BF900C940A1A6C297D296D -:1028D0008E299F2926960FB6F894DEBF0FBECDBF76 -:1028E000DF91CF911F910F91FF90EF90DF90CF90EC -:1028F000BF900C94261A0E940A1AC701B6012696A8 -:102900000FB6F894DEBF0FBECDBFDF91CF911F9100 -:102910000F91FF90EF90DF90CF90BF900C94EE1945 -:10292000002319F08B2D817001C08695882309F44E -:1029300072C1812F829586958770880F880F912F9D -:102940009F70C92ED12CE12CF12C082E04C0CC0C88 -:10295000DD1CEE1CFF1C0A94D2F714FF12C00FE01E -:1029600010E020E030E004C0000F111F221F331FD1 -:102970008A95D2F7C901B8016095709580959095B8 -:1029800003C060E070E0CB014B2D46954695437047 -:102990004230C1F060F56C297D298E299F29413094 -:1029A00051F126960FB6F894DEBF0FBECDBFDF9172 -:1029B000CF911F910F91FF90EF90DF90CF90BF903C -:1029C0000C94E41A6C297D298E299F2926960FB62E -:1029D000F894DEBF0FBECDBFDF91CF911F910F9155 -:1029E000FF90EF90DF90CF90BF900C94001B0E945F -:1029F000E41AC701B60126960FB6F894DEBF0FBEE3 -:102A0000CDBFDF91CF911F910F91FF90EF90DF909D -:102A1000CF90BF900C94C81A103FD1F118F4103E1B -:102A200050F4A1C0123F09F463C008F44CC0133F36 -:102A300009F473C098C01F708B2D8F710023A1F013 -:102A40000E94611A812F26960FB6F894DEBF0FBE42 -:102A5000CDBFDF91CF911F910F91FF90EF90DF904D -:102A6000CF90BF900C9403130E94821A812F269658 -:102A70000FB6F894DEBF0FBECDBFDF91CF911F918F -:102A80000F91FF90EF90DF90CF90BF900C940A13BE -:102A90000023A9F02111BFC08B2D8F7126960FB690 -:102AA000F894DEBF0FBECDBFDF91CF911F910F9184 -:102AB000FF90EF90DF90CF90BF900C94A71A223038 -:102AC00008F0A9C0E9CF0023A9F08B2D8F712696BD -:102AD0000FB6F894DEBF0FBECDBFDF91CF911F912F -:102AE0000F91FF90EF90DF90CF90BF900C94611A00 -:102AF000002359F38B2D8F7126960FB6F894DEBF05 -:102B00000FBECDBFDF91CF911F910F91FF90EF903E -:102B1000DF90CF90BF900C94821A002399F08B2DF8 -:102B20008F7126960FB6F894DEBF0FBECDBFDF9132 -:102B3000CF911F910F91FF90EF90DF90CF90BF90BA -:102B40000C944C1A26960FB6F894DEBF0FBECDBF7C -:102B5000DF91CF911F910F91FF90EF90DF90CF9079 -:102B6000BF900C94421A0023A9F0222309F4ADCFA0 -:102B7000812F26960FB6F894DEBF0FBECDBFDF9132 -:102B8000CF911F910F91FF90EF90DF90CF90BF906A -:102B90000C94EC11222309F4ADCF812F26960FB6A9 -:102BA000F894DEBF0FBECDBFDF91CF911F910F9183 -:102BB000FF90EF90DF90CF90BF900C94B4124B2D0C -:102BC0004F70612FC7010E94390426960FB6F89402 -:102BD000DEBF0FBECDBFDF91CF911F910F91FF9050 -:102BE000EF90DF90CF90BF900C9466194B2D4F70F3 -:102BF000612FC70126960FB6F894DEBF0FBECDBF7A -:102C0000DF91CF911F910F91FF90EF90DF90CF90C8 -:102C1000BF900C94570826960FB6F894DEBF0FBEEF -:102C2000CDBFDF91CF911F910F91FF90EF90DF907B -:102C3000CF90BF9008950E94FC1B0E94D11B0E9460 -:102C4000161C0E9422210E94722080E090E00E94C7 -:102C5000E61080E090E00C94FC100E94EC1B0C94B9 -:102C60001B160E941D1B292F22952F702C3030F42B -:102C70002A3048F42250223078F405C02C3041F03C -:102C80002F3031F009C0803E48F0803F29F406C063 -:102C900093FB882780F9089580E0089581E00895E6 -:102CA000CF93DF9300D000D01F92CDB7DEB70F9047 -:102CB0000F900F900F900F90DF91CF910895CF93C9 -:102CC000DF9300D000D000D0CDB7DEB726960FB688 -:102CD000F894DEBF0FBECDBFDF91CF9108951F9353 -:102CE000CF93DF93C0917B0116E080917C01C817E0 -:102CF00099F0D0E01C9FF0011D9FF00D1124E358C6 -:102D0000FE4F4081518162817381848195810E944F -:102D10005F162196C770E9CFDF91CF911F9108957B -:102D20004091AD015091AE016091AF017091B00141 -:102D30008091B1019091B2010C945F168091B20123 -:102D400082958F7009F054C08091AF01882309F4F7 -:102D50004FC080917B01A0917C014091B0015091C6 -:102D6000B1016091AD017091AE01B6E08A1709F42E -:102D70003FC090E041155105C1F17F3F11F46F3F15 -:102D8000A1F1B89FF001B99FF00D1124E358FE4F57 -:102D9000218127132AC02081261327C022812111D7 -:102DA00024C0238134812417350710F421503109C0 -:102DB000241B350B283C3105C0F42091B2012F7043 -:102DC00020612093B20126E0289FF001299FF00D99 -:102DD0001124EE57FE4F80818F70806180838DEAD1 -:102DE00091E00E9411130C946F1601968770BECF6C -:102DF0000895CF92DF92EF92FF920F931F93CF939C -:102E0000DF93CDB7DEB762970FB6F894DEBF0FBE83 -:102E1000CDBF8C0185E0F801DE011D9601900D9279 -:102E20008A95E1F7D8014C9111965C911197129611 -:102E30006C918091B0019091B101009709F475C136 -:102E40003091AD017091AE017F3F19F43F3F09F41D -:102E50006CC1F801C380D480E090AF01EE2009F48A -:102E6000BEC02091B201C816D90628F0D601A81B11 -:102E7000B90BCD0104C0809590958C0D9D1DFF244C -:102E8000F394883C910578F0F12C207F09F0C4C0C0 -:102E90007C2DD98AC88A89890E9450168DEA91E0D2 -:102EA0000E941113AFC0822F807F09F045C05713D5 -:102EB00013C0431311C061110FC02F702061209304 -:102EC000B2010E9490168DEA91E00E941113809148 -:102ED000B201F80185832EC0CD2819F15F3F11F4AE -:102EE0004F3FF9F0F62E61111CC080917B012091BB -:102EF0007C0136E0821709F45BC090E0389FF00156 -:102F0000399FF00D1124E358FE4F7181571306C00D -:102F10007081471303C07281711103C001968770DD -:102F2000E9CFF62E662309F41CC18091B2018160BD -:102F30008093B201F12C15C1571309C0431307C088 -:102F4000611105C08091B201F8018583C8C04D8729 -:102F50005E878D859E856A8B0E9431166A898823DB -:102F6000D1F16623C1F12091B201822F82958F7039 -:102F700090E0029774F08091AD019091AE01988736 -:102F80008F831986DB86CA862C87CE0107960E941E -:102F9000111386E0F801ADEAB1E001900D928A9537 -:102FA000E1F70E949E160E949016FF24F394D9C068 -:102FB0004D875E878D859E850E941D1B292F22953A -:102FC0002F70223008F0C1C09F7009F0BBC0805E36 -:102FD000883008F4C6C0C8010E941113E6CFC81695 -:102FE000D90608F453C0F601E81BF90BCF01883C61 -:102FF000910508F450C0F12C7C2DD98AC88A8989A2 -:103000000E945016EDEAF1E086E0DF011D928A95FC -:10301000E9F70E949016A5C0571314C0431312C0BD -:10302000611110C08091B201F8018583C8010E942E -:10303000111386E0EDEAF1E0DF011D928A95E9F7D0 -:10304000FE2C8FC04D875E878D859E856A8B0E9482 -:1030500031166A89882309F4BECF662309F4BBCFF1 -:103060002091B201822F82958F7090E002970CF42C -:1030700090CF8091AD019091AE019A8389831B829C -:10308000DD82CC822E83CE01019681CF80959095F2 -:103090008C0D9D1DACCFF62E662309F49CCF5713E3 -:1030A00033C0431331C02091B20120FD24C0822FD0 -:1030B00082958F70482F50E041155105E1F0D801FD -:1030C00015962C9315974F30510549F08F5F982F27 -:1030D0009295907F822F8F70892B15968C93C801C3 -:1030E0000E94111386E0F801ADEAB1E001900D9263 -:1030F0008A95E1F78ECF86E0F801ADEAB1E0019064 -:103100000D928A95E1F72DC04D875E878D859E854E -:103110000E94311681113DCF8091B2018160809370 -:10312000B201C8010E9411131CC0662309F453CFD9 -:103130004D875E878D859E850E943116882309F410 -:103140004ACF27CF811143CF0CC0243008F043CFA2 -:103150009F7009F43CCFD80115969C91907F09F09F -:1031600036CF8F2D62960FB6F894DEBF0FBECDBF5F -:10317000DF91CF911F910F91FF90EF90DF90CF9053 -:1031800008951F93CF93DF93CDB7DEB72C970FB67B -:10319000F894DEBF0FBECDBF4F83588769877A870B -:1031A0008B879C87CE0107960E94F916882371F0C1 -:1031B0008A859B85892B09F441C088858F3F09F05A -:1031C00065C08F818F3F09F061C038C086E0FE0185 -:1031D0003796DE01119601900D928A95E1F76A8586 -:1031E0007B856115710551F1FF81E885EF3F11F491 -:1031F000FF3F21F120917C0130E0C90101968770E9 -:10320000992740917B0150E08417950709F447C046 -:10321000F983EA837D836C8396E0929FD001939F2C -:10322000B00D1124A358BE4FFE01319601900D92AE -:103230009A95E1F780937C010E946F1616E08091C9 -:103240007B0190917C018917B9F1189FC00111246D -:1032500083589E4F0E94F916882371F1E0917B01FB -:103260001E9FF0011124E358FE4F4081518162817D -:103270007381848195810E945F1680917B0190E02B -:1032800001968770992780937B01D9CF4F8158850C -:1032900069857A858B859C850E945F16CFCF0E94B9 -:1032A0002D1610927C0110927B01EDEAF1E086E090 -:1032B000DF011D928A95E9F72C960FB6F894DEBFD0 -:1032C0000FBECDBFDF91CF911F910895EF92FF9276 -:1032D0000F931F93CF93DF938C01892B09F46CC05C -:1032E000F12CEE24E394E8012196F80184918437CF -:1032F00040F4843008F051C0813081F0823019F1FF -:103300005BC0853709F444C0A8F19CE7980F90375B -:1033100008F052C08F770E94B41241C00E5F1F4F59 -:10332000FE01849190E2980F983050F48770FE2D42 -:1033300001C0FF0F8A95EAF78F2F0E94EF1B14C080 -:103340000E94EC112DC00E5F1F4FFE01849190E290 -:10335000980F983060F48770FE2D01C0FF0F8A959A -:10336000EAF78F2F0E94F51B0E94161C19C00E94BD -:10337000B41216C00E5F1F4FFE01C491CC2381F022 -:103380008FE99FE00197F1F700C00000C150F6CF30 -:103390000E5F1F4FFE01F49003C00E94EC118E01DE -:1033A0008F2D882309F49FCFEFE9FFE03197F1F7E4 -:1033B00000C000008150F5CFDF91CF911F910F9198 -:1033C000FF90EF90089508956093B7017093B8014E -:1033D0008093B9019093BA010C941B160F931F931D -:1033E0000091B7011091B8012091B9013091BA0153 -:1033F000DC01CB01802B912BA22BB32B8093B70147 -:103400009093B801A093B901B093BA011F910F91A5 -:103410000C941B160F931F930091B7011091B801E4 -:103420002091B9013091BA01DC01CB0180239123B5 -:10343000A223B3238093B7019093B801A093B9015D -:10344000B093BA011F910F910C941B160F931F9309 -:103450000091B7011091B8012091B9013091BA01E2 -:10346000DC01CB0180279127A227B3278093B701E6 -:103470009093B801A093B901B093BA011F910F9135 -:103480000C941B161092B3011092B4011092B50166 -:103490001092B6010C941B1641E050E060E070E021 -:1034A00004C0440F551F661F771F8A95D2F74093BB -:1034B000B3015093B4016093B5017093B6010C94BD -:1034C0001B1641E050E060E070E004C0440F551F5F -:1034D000661F771F8A95D2F78091B3019091B4014E -:1034E000A091B501B091B601482B592B6A2B7B2BCB -:1034F0004093B3015093B4016093B5017093B6014A -:103500000C941B1641E050E060E070E004C0440FF2 -:10351000551F661F771F8A95D2F740955095609585 -:1035200070958091B3019091B401A091B501B091D3 -:10353000B601482359236A237B234093B301509358 -:10354000B4016093B5017093B6010C941B1641E071 -:1035500050E060E070E004C0440F551F661F771F05 -:103560008A95D2F78091B3019091B401A091B501F1 -:10357000B091B601482759276A277B274093B301AA -:103580005093B4016093B5017093B6010C941B166F -:103590000F931F930091B3011091B4012091B501D5 -:1035A0003091B601DC01CB01802B912BA22BB32BE8 -:1035B0008093B3019093B401A093B501B093B60189 -:1035C0001F910F910C941B160F931F930091B30141 -:1035D0001091B4012091B5013091B601DC01CB010D -:1035E00080239123A223B3238093B3019093B4014A -:1035F000A093B501B093B6011F910F910C941B16C7 -:103600000F931F930091B3011091B4012091B50164 -:103610003091B601DC01CB0180279127A227B32787 -:103620008093B3019093B401A093B501B093B60118 -:103630001F910F910C941B160895CF92DF92EF9279 -:10364000FF920F931F93CF93DF938C01C090B30130 -:10365000D090B401E090B501F090B6018091B7012F -:103660009091B801A091B901B091BA01C82AD92AA4 -:10367000EA2AFB2ACFE1D0E0D701C6010C2E04C014 -:10368000B695A795979587950A94D2F780FF07C0BE -:10369000B8018C2F0E947B088130910531F421976D -:1036A00058F7B80180E00E947B08DF91CF911F910D -:1036B0000F91FF90EF90DF90CF90089590910C01C3 -:1036C0009923F1F090910D019923D1F0982F9695BF -:1036D000969596959F3080F5E0910E01F0910F013F +:1007F00024C08091F0019091F101A091F201B0919B +:10080000F3018730904BA740B04BB9F41092F00140 +:100810001092F1011092F2011092F30114BE84B70C +:10082000877F84BF88E10FB6F894809360001092B0 +:1008300060000FBEE0E0FFE3099511E0A0E0B1E049 +:10084000E4E7FAE402C005900D92A433B107D9F7AA +:1008500011E0A4E3B1E001C01D92A03FB107E1F7B0 +:100860000E94650B0C9438250C940000462F50E034 +:100870004F30510508F0DEC0DC01FA01EA5AFF4FA3 +:1008800012968C910C94ED24882321F085EE0E9421 +:10089000D111D0C085EE0E949912CCC0882349F0B6 +:1008A0000E94D31C909335018093340188EF91E02E +:1008B000089580913401909135010E94DF1C8739A1 +:1008C00091050CF0A8C08AEE91E00895882349F0C4 +:1008D0000E94D31C909335018093340187EE91E000 +:1008E000089580913401909135010E94DF1C873971 +:1008F00091050CF093C089ED91E00895882349F0AB +:100900000E94D31C909335018093340182ED91E0D5 +:10091000089580913401909135010E94DF1C873940 +:1009200091050CF07EC080EC91E00895882349F099 +:100930000E94D31C90933501809334018BEB91E09E +:10094000089580913401909135010E94DF1C873910 +:1009500091050CF069C08DEA91E00895882349F073 +:100960000E94D31C909335018093340188EA91E072 +:10097000089580913401909135010E94DF1C8739E0 +:1009800091050CF054C08AE991E00895882309F498 +:1009900051C085E891E00895882309F44BC080E7B1 +:1009A00091E00895882309F445C08BE591E008950E +:1009B000882309F43FC086E491E008958823D1F1AB +:1009C0008DE391E008958823A9F188E291E00895EC +:1009D000882381F183E191E00895882359F18EEF16 +:1009E00090E00895882331F18091B3019091B40192 +:1009F000A091B501B091B60120E2822780729927BB +:100A0000AA27BB278093B3019093B401A093B501AB +:100A1000B093B6010FC085EF91E0089584EE91E0A8 +:100A200008958BEC91E0089586EB91E0089583EAB8 +:100A300091E0089580E090E0089508956091B301F9 +:100A40007091B4018091B5019091B6010E94381C5B +:100A500056985E9825982D9826982E9827982F9826 +:100A60008330C1F028F4813041F0823049F008959C +:100A7000843049F0853051F00895259A2D9A0895D3 +:100A8000269A2E9A0895259A2D9A04C0259A2D9A71 +:100A9000269A2E9A279A2F9A08950C941E055698F6 +:100AA0005E9825982D9826982E9827982F988FEF46 +:100AB00090E0909389008093880090938B008093BE +:100AC0008A0090938D0080938C00259A2D9A2FEFA9 +:100AD00080E792E0215080409040E1F700C00000A4 +:100AE000269A2E9A2FEF80E792E021508040904086 +:100AF000E1F700C00000279A2F9A2FEF80E792E0DD +:100B0000215080409040E1F700C0000025982D98CA +:100B10002FEF80E792E0215080409040E1F700C045 +:100B2000000026982E982FEF80E792E02150804019 +:100B30009040E1F700C0000027982F9856985E98E3 +:100B400025982D9826982E9827982F98089589EA09 +:100B50008093800089E08093810024982C983F98AE +:100B60008AB18F748AB96E98479A8BB1806B8BB9B2 +:100B7000769A0E944F050C941D0580E28093000137 +:100B80008091360181110EC00E940C0681E0809395 +:100B900036012FEF83ED90E3215080409040E1F744 +:100BA00000C0000080E40E941206809300018111C1 +:100BB0002EC00E943C0680930001811128C00E9433 +:100BC0003C0680930001811122C08FE30E943C0605 +:100BD0008093000181111BC00E94340680E40E94B2 +:100BE000120680930001811112C08CE00E943C0625 +:100BF0008093000181110BC00E943C06809300018C +:100C0000811105C08FE30E943C06809300010E9481 +:100C100034068091000108951092B9008AE0809313 +:100C2000B800089594EA9093BC009091BC0097FF9F +:100C3000FCCF9091B900987F983021F0903111F05D +:100C400081E008958093BB0084E88093BC0080918C +:100C5000BC0087FFFCCF8091B900887F883111F0FC +:100C6000803471F780E0089584E98093BC0080911E +:100C7000BC0084FDFCCF08958093BB0084E8809382 +:100C8000BC008091BC0087FFFCCF9091B900987F99 +:100C900081E0983209F480E0089584E88093BC00F4 +:100CA0008091BC0087FFFCCF8091BB0008958091AC +:100CB0000001811115C080E40E941206809300019A +:100CC00081110CC082E10E943C06809300018111D9 +:100CD00005C08FEF0E943C06809300010E943406FD +:100CE00084B1807F84B985B1807F85B98AB1837FE3 +:100CF0008AB98BB1837F8BB93E98469808950E943C +:100D0000BD05809300010E94570680B38C7080BBA4 +:100D100081B3836F81BBA8E3B1E0E6E4F1E08EE04C +:100D20008E0F11921D928E13FCCF0C94A705BF92CB +:100D3000CF92DF92EF92FF920F931F93CF93DF93A7 +:100D400080910001882379F0809137018F5F809333 +:100D50003701811108C00E94BD05809300018111F7 +:100D600002C00E944F0508E311E0C0E0D0E0DD249E +:100D7000D39482E0C82EEE24E394F12CC730D10541 +:100D800000F580910001811164C080E40E94120688 +:100D900080930001811112C082E10E943C06809381 +:100DA000000181110BC0C7010C2E01C0880F0A94ED +:100DB000EAF780950E943C06809300010E94340669 +:100DC00048C0CA30A1F028F4C83059F0C93061F0E9 +:100DD00005C0CC3089F070F0CD3089F0209A289889 +:100DE00010C0219A29980DC0229A2A980AC0239AE5 +:100DF0002B9807C0529A01C0539A5B9802C03E9A42 +:100E0000469890EA9A95F1F79FB1799902C082E0ED +:100E100001C080E091709D25982B7C9902C084E0F0 +:100E200001C080E0892B7D9902C038E001C030E02C +:100E3000832B7E9902C020E101C020E0822B9FB16C +:100E40009095991F9927991F9295990F907E892BBC +:100E50000FC080910001811149C080E40E941206F8 +:100E600080930001882379F1B12C0E9434068B2DE8 +:100E7000F8019081981719F08083C09201010E94B7 +:100E8000570621960F5F1F4FCE30D10509F076CF60 +:100E900080910101882361F18150809301018823B1 +:100EA00039F08FE99FE00197F1F700C0000020C002 +:100EB000A6E4B1E0E8E3F1E0CF01825F91919D9378 +:100EC0008E13FCCF15C083E10E943C068093000185 +:100ED0008111CACF81E40E94120680930001811122 +:100EE000C3CF0E944D06B82EB094BFCF80E0C0CFD4 +:100EF0000E944D0581E0DF91CF911F910F91FF90EE +:100F0000EF90DF90CF90BF900895E82FF0E0EA5B7C +:100F1000FE4F8081089508958B3B910578F4883ABF +:100F2000910540F5853A9105D0F48430910508F09B +:100F3000B1C08130910509F4ADC06BC0803E910510 +:100F400008F467C0883E910508F4A4C09C01205FA6 +:100F500031092031310508F05CC090650895853A6B +:100F6000910509F459C0863A910509F058C082E804 +:100F700090E40895883A910509F454C0893A91059E +:100F800009F453C08A3A910509F452C08B3A91058D +:100F900009F451C08C3A910509F450C08D3A91057D +:100FA00009F44FC0803B910509F44EC08E3A91057B +:100FB00009F44DC08F3A910509F44CC0813B91056D +:100FC00009F44BC0823B910509F44AC0833B91056B +:100FD00009F449C0843B910509F448C0853B91055B +:100FE00009F447C0863B910509F446C0873B91054B +:100FF00009F445C0883B910509F444C0893B91053B +:1010000009F443C08A3B910509F442C080E094E4AE +:10101000089580E090E0089581E890E4089583E8E1 +:1010200090E4089582EE94E4089589EE94E408959E +:101030008AEE94E4089585EB94E4089586EB94E4B5 +:10104000089587EB94E408958CEC94E408958DEC76 +:1010500094E4089583E895E408958AE895E4089572 +:1010600082E995E4089584E995E4089581E296E49F +:10107000089583E296E4089584E296E4089585E273 +:1010800096E4089586E296E4089587E296E408954A +:101090008AE296E40895089596E0799FF00111247C +:1010A00094E5899FE00DF11D1124E60FF11DEE0F6F +:1010B000FF1FEF5FFD4F859194910895880F991F51 +:1010C000FC01E558FF4F859194910895880F991F71 +:1010D000FC01E550FE4F85919491089526E0729FA2 +:1010E000F001112444E5849FE00DF11D1124E60F69 +:1010F000F11DEE0FFF1FEF5FFD4F859194919C0155 +:101100003A9521154FE1340708F41AC13F512115D2 +:10111000304120F49F700E94660808959C0130536E +:101120002115304118F49927906C0895811520E518 +:10113000920769F40E941F164FEF84E39CE0415030 +:1011400080409040E1F700C000000C942E1D8130DB +:1011500020E5920731F48091CE0181608093CE0129 +:1011600008959C0130552115304108F051C0292FB8 +:1011700033272F70332721303105D9F4AC01437068 +:10118000552702C0220F331F4A95E2F73C68AC0195 +:1011900064E0440F551F6A95E1F744275370242BF0 +:1011A000352B73E0880F991F7A95E1F780769927A0 +:1011B0001DC02230310529F4982F8827816F906A4D +:1011C000089523303105A9F4AC014370552721E07F +:1011D00030E002C0220F331F4A95E2F73C6843E03B +:1011E000880F991F4A95E1F7807E9770822B932B89 +:1011F000089524303105E1F4AC014370552721E016 +:1012000030E002C0220F331F4A95E2F73A68E7CF79 +:101210009C0130572115304118F49F709062089559 +:101220009C0130582115304118F49F70906A089540 +:10123000803E9105E0F4803C910558F5813391059D +:1012400009F46FC048F48932910509F463C08A3209 +:10125000910509F46DC072C089339105E9F08238B7 +:101260009105D1F08533910509F44DC067C0833EE7 +:10127000910581F138F4803E9105B9F0823E9105E7 +:10128000D9F05CC0863E910561F1873E9105A1F1E0 +:1012900055C00E945E0808952091E10120FD02C022 +:1012A00021FF4CC080EE90E049C08091E10180FFB9 +:1012B000F9CF89E390E042C08091E10182FF0EC046 +:1012C0008091E10184FF03C080E090E037C083EEAD +:1012D00090E034C08091E10182FFF2CF82EE90E095 +:1012E0002DC08091E10183FF0BC08091E10184FD5D +:1012F000EBCF87EE90E022C08091E10183FFF5CF34 +:1013000086EE90E01BC08091E10185FF07C089E275 +:1013100090E014C08091E10185FFF9CF85E390E072 +:101320000DC08091E10186FF07C08AE290E006C00F +:101330008091E10186FFF9CF81E390E00E948C0764 +:10134000089508950C94A109809164010895CF93A4 +:10135000DF9300D01F92CDB7DEB79C018091E701EB +:10136000843019F593E099833B832A839093E900B5 +:101370008FEF9091E800815095FD06C095ED9A950C +:10138000F1F700008111F5CF8091E80085FF0DC0D5 +:1013900040E050E063E070E0CE0101960E94110C45 +:1013A0008091E8008E778093E8000F900F900F9067 +:1013B000DF91CF910895CF93DF9300D01F92CDB7E7 +:1013C000DEB72091E701243021F522E029839B83B9 +:1013D0008A8383E08093E9008FEF9091E800815049 +:1013E00095FD06C095ED9A95F1F700008111F5CFB6 +:1013F0008091E80085FF0DC040E050E063E070E0C0 +:10140000CE0101960E94110C8091E8008E778093A6 +:10141000E8000F900F900F90DF91CF9108952091E9 +:10142000E7012430F1F422E02093E9002FEF30911E +:10143000E800215035FD06C035ED3A95F1F7000082 +:101440002111F5CF2091E80025FF0BC040E050E0CE +:1014500065E070E00E94110C8091E8008E77809327 +:10146000E8000895CF93DF93EC019091E701943069 +:1014700009F046C080910C018823D9F080910D01BC +:101480008823B9F09093E9008FEF9091E8008150A4 +:1014900095FD06C095E19A95F1F700008111F5CF11 +:1014A0008091E80085FF2CC040E050E060E170E0F2 +:1014B00017C081E08093E9008FEF9091E8008150A0 +:1014C00095FD06C095ED9A95F1F700008111F5CFD5 +:1014D0008091E80085FF14C040E050E068E070E0D3 +:1014E000CE010E94110C8091E8008E778093E80075 +:1014F00080E1FE01A4E5B1E001900D928A95E1F74B +:10150000DF91CF9108958091E601811109C00E9479 +:10151000A60D0E94030E8091E20084608093E20099 +:1015200008951092E601089508950C9465230E9491 +:10153000C41C0E946B230E94A9100C94A20942E0D3 +:1015400061EC81E00E94200D42E061EC82E00E94AB +:10155000200D42E061EC83E00E94200D42E161EC4D +:1015600084E00C94200D8091E901833009F455C08A +:1015700030F4813071F0823009F48EC008958A30E1 +:1015800009F47AC08B3009F460C0893009F09CC03E +:1015900020C08091E801813A09F096C08091E8006E +:1015A000877F8093E8008091EC019091ED01892B79 +:1015B00021F460E184E591E003C060E080E090E028 +:1015C00070E00E945C0C8091E8008B778093E800CB +:1015D00008958091E801813209F076C08091EC0194 +:1015E0009091ED01009719F0039709F06DC080917B +:1015F000E800877F8093E8008091E80082FD05C0C5 +:101600008091E7018111F8CF5FC08091F100809354 +:1016100064018091E8008B7753C08091E801813AA2 +:1016200009F052C08091EC019091ED01892B09F0F5 +:101630004BC08091E800877F8093E8008091E800AC +:1016400080FFFCCF80910C0136C08091E80181328F +:10165000D9F58091EC019091ED01892BA9F580914C +:10166000E800877F8093E8000E94550D8091EA0191 +:1016700080930C010C941F168091E801813221F5B2 +:101680008091E800877F8093E8000E94550D80914B +:10169000EB018093650108958091E801813AA1F4FE +:1016A0008091E800877F8093E8008091E80080FFC8 +:1016B000FCCF809165018093F1008091E8008E77E6 +:1016C0008093E8000C94550D089584B7877F84BFFC +:1016D00088E10FB6F89480936000109260000FBE0E +:1016E00090E080E80FB6F8948093610090936100D9 +:1016F0000FBE0E94F8100E94A60D0E94030E80915A +:10170000E20084608093E20078940E9489100E9435 +:10171000FA1082E091E00E94A4100E94532380916D +:10172000E701853069F40E94881C8091E5018823D7 +:10173000B1F30E94B01C882391F30E94FB0BEFCF02 +:101740000E940011ECCF292F332723303105C9F037 +:1017500064F42130310581F02230310509F043C0B5 +:101760008DE690E025E236E042C021323105F1F00D +:101770002232310541F137C082E190E022E936E0C2 +:1017800036C099278130910541F08230910541F0B2 +:10179000892B49F5E1E2F6E005C0E9E0F6E002C098 +:1017A000E1EFF5E0849190E09F0121C06430D8F42E +:1017B000E62FF0E0EE0FFF1FEE5DFE4F208131813E +:1017C00089E090E014C0643070F470E0FB01EE0F2B +:1017D000FF1FE65EFE4F20813181FB01EA5EFE4F76 +:1017E000808190E004C080E090E020E030E0FA01E9 +:1017F00031832083089580E189BD82E189BD09B4E8 +:1018000000FEFDCF8091D8008F7D8093D80080911D +:10181000E00082608093E0008091E00081FDFCCFD9 +:101820000895CF92DF92EF92FF920F931F93CF9381 +:10183000DF93EC018B016A010E94740D811133C0AA +:10184000C114D10439F0F60180819181081B190B74 +:10185000C80FD91FE12CF12C0115110519F1809148 +:10186000E80085FD16C08091E8008E778093E8003F +:10187000C114D10449F0F60180819181E80EF91E6E +:10188000F182E08285E00FC00E94740D882321F36D +:101890000AC089918093F10001501109FFEFEF1AFE +:1018A000FF0ADACF80E0DF91CF911F910F91FF9077 +:1018B000EF90DF90CF9008952091EE013091EF01ED +:1018C0002617370748F06115710539F42091E800B3 +:1018D0002E772093E80001C0B90140E06115710541 +:1018E000A9F12091E701222309F443C0253009F42E +:1018F00042C02091E80023FD40C02091E80022FD75 +:1019000032C02091E80020FFE9CF4091F300209100 +:10191000F20030E0342BFC01CF016115710559F064 +:101920002830310540F481918093F10061507109B4 +:101930002F5F3F4FF1CF41E02830310509F040E003 +:101940002091E8002E772093E800C8CF4111C9CF3D +:101950000AC08091E701882361F0853061F08091B1 +:10196000E80083FD0AC08091E80082FFF2CF80E0AA +:10197000089582E0089583E0089581E0089520911C +:10198000EE013091EF012617370748F06115710518 +:1019900039F42091E8002E772093E80001C0B901C6 +:1019A000FC0120E06115710591F18091E701882328 +:1019B00009F440C0853009F43FC08091E80083FD00 +:1019C0003DC08091E80082FD2FC08091E80080FF3B +:1019D000E9CF2091F3008091F20090E0922B611505 +:1019E000710559F08830910540F424912093F1005D +:1019F0003196615071090196F2CF21E0089709F004 +:101A000020E08091E8008E778093E800CBCF211111 +:101A1000CCCF0AC08091E701882361F0853061F066 +:101A20008091E80083FD0AC08091E80082FFF2CF38 +:101A300080E0089582E0089583E0089581E00895AC +:101A4000982F973058F59093E900981739F07091D6 +:101A5000EC002091ED005091F00003C0242F762F70 +:101A600050E021FF19C03091EB003E7F3093EB0036 +:101A70003091ED003D7F3093ED003091EB0031600F +:101A80003093EB007093EC002093ED005093F00046 +:101A90002091EE0027FF07C09F5FD3CF8F70809308 +:101AA000E90081E0089580E008958091E80187FFD2 +:101AB00011C08091E80082FD05C08091E70181118D +:101AC000F8CF11C08091E8008B770BC08091E701BF +:101AD000882349F08091E80080FFF8CF8091E800EA +:101AE0008E778093E80008952091E4003091E5001E +:101AF00095E64091EC00842F817040FF22C08091D8 +:101B0000E80080FD1CC08091E701882391F08530BA +:101B100091F08091EB0085FD10C04091E400509160 +:101B2000E5004217530729F39A01915011F784E019 +:101B3000089582E0089583E0089581E0089580E0AB +:101B400008954091E80042FFDECF08950E94140EF0 +:101B50000E941C0EE0EEF0E0808181608083E8ED61 +:101B6000F0E080818F77808319BCA7EDB0E08C9185 +:101B70008E7F8C9380818F7E80831092E601089502 +:101B80000F931F93CF93DF930E94140E0E941C0E9D +:101B9000C8EDD0E088818F778883888180688883CA +:101BA00088818F7D888319BC1092E7011092E30130 +:101BB0001092E5011092E40100EE10E0F80180813E +:101BC0008B7F808388818160888342E060E080E051 +:101BD0000E94200DE1EEF0E080818E7F8083E2EEB6 +:101BE000F0E0808181608083808188608083F8015B +:101BF00080818E7F8083888180618883DF91CF910F +:101C00001F910F910895E8EDF0E080818F7E808331 +:101C1000E7EDF0E080818160808384E082BF81E035 +:101C20008093E6010C94C00DE8EDF0E080818E7F9A +:101C300080831092E20008951092DA001092E10081 +:101C400008951F920F920FB60F9211242F933F9376 +:101C50004F935F936F937F938F939F93AF93BF93B4 +:101C6000EF93FF938091E10082FF0BC08091E2002F +:101C700082FF07C08091E1008B7F8093E1000E948A +:101C800088108091DA0080FF1FC08091D80080FF0B +:101C90001BC08091DA008E7F8093DA008091D9009A +:101CA00080FF0DC080E189BD82E189BD09B400FEDD +:101CB000FDCF81E08093E7010E94830A05C019BC33 +:101CC0001092E7010E94910A8091E10080FF19C003 +:101CD0008091E20080FF15C08091E2008E7F8093AA +:101CE000E2008091E20080618093E2008091D80060 +:101CF00080628093D80019BC85E08093E7010E9440 +:101D0000950A8091E10084FF30C08091E20084FF59 +:101D10002CC080E189BD82E189BD09B400FEFDCF00 +:101D20008091D8008F7D8093D8008091E1008F7ED4 +:101D30008093E1008091E2008F7E8093E2008091A9 +:101D4000E20081608093E2008091E301882311F03A +:101D500084E007C08091E30087FD02C081E001C0FC +:101D600083E08093E7010E94970A8091E10083FF5E +:101D700029C08091E20083FF25C08091E100877F28 +:101D80008093E10082E08093E7011092E30180916B +:101D9000E1008E7F8093E1008091E2008E7F80934E +:101DA000E2008091E20080618093E20042E060E026 +:101DB00080E00E94200D8091F00088608093F00008 +:101DC0000E94940AFF91EF91BF91AF919F918F91E3 +:101DD0007F916F915F914F913F912F910F900FBE27 +:101DE0000F901F9018951F920F920FB60F9211240B +:101DF0002F933F934F935F936F937F938F939F9313 +:101E0000AF93BF93CF93DF93EF93FF93C091E9001C +:101E1000CF708091EC00D82FD17080FDD0E8109267 +:101E2000E9008091F000877F8093F00078940E9411 +:101E3000370F1092E9008091F00088608093F000E5 +:101E4000CD2BCF70C093E900FF91EF91DF91CF913F +:101E5000BF91AF919F918F917F916F915F914F91C2 +:101E60003F912F910F900FBE0F901F9018951F93C9 +:101E7000CF93DF93CDB7DEB7AA970FB6F894DEBF46 +:101E80000FBECDBFE8EEF1E088E08E0F9091F1003B +:101E900091938E13FBCF0E94B30A8091E80083FFD9 +:101EA0001FC18091E8019091E901492F50E04A302B +:101EB000510508F015C1FA01EB59FF4F0C94ED24C0 +:101EC000803881F0823809F00BC18091EC018F706D +:101ED0008093E9008091EB0085FB882780F91092C0 +:101EE000E90006C08091E4019091E50191118260C2 +:101EF0009091E800977F9093E8008093F100109212 +:101F0000F100C8C0282F2D7F09F0EAC0882319F0FE +:101F1000823061F0E5C08091EA01813009F0E0C0D3 +:101F2000933009F080E08093E5012BC08091EA01B5 +:101F3000811127C08091EC018F7009F4D1C080938A +:101F4000E9002091EB0020FF1CC0933021F4809128 +:101F5000EB00806214C09091EB0090619093EB00D5 +:101F600021E030E0A90102C0440F551F8A95E2F735 +:101F70004093EA001092EA008091EB008860809321 +:101F8000EB001092E9008091E800877F86C0811104 +:101F9000A7C01091EA011F778091E3008078812B20 +:101FA0008093E3008091E800877F8093E8000E949F +:101FB000550D8091E80080FFFCCF8091E3008068A0 +:101FC0008093E300111102C082E001C083E080939E +:101FD000E70186C08058823008F082C08091EA0113 +:101FE0009091EB018C3D53E0950779F583E08A836E +:101FF0008AE289834FB7F894DE01139620E03EE031 +:1020000051E2E32FF0E050935700E49120FF03C02A +:10201000E295EF703F5FEF708E2F90E0EA3010F0A6 +:10202000C79601C0C0968D939D932F5F243149F7C9 +:102030004FBF8091E800877F8093E8006AE270E0FC +:10204000CE0101960E945C0C14C0AE014F5F5F4F41 +:102050006091EC010E94A30BBC01892B09F440C0E4 +:102060009091E800977F9093E80089819A810E947F +:10207000BF0C8091E8008B778093E80031C08038F6 +:1020800079F58091E800877F8093E8008091E301F3 +:102090008093F1008091E8008E778093E8000E94A1 +:1020A000550D1EC081111CC09091EA019230C0F400 +:1020B0008091E800877F8093E8009093E3010E947D +:1020C000550D8091E301811106C08091E30087FDE9 +:1020D00002C081E001C084E08093E7010E949F0A72 +:1020E0008091E80083FF0AC08091E800877F809399 +:1020F000E8008091EB0080628093EB00AA960FB617 +:10210000F894DEBF0FBECDBFDF91CF911F91089530 +:102110000895CF938091E7018823A1F0C091E90051 +:10212000CF709091EC00892F817090FD80E8C82BD2 +:102130001092E9008091E80083FD0E94370FCF7074 +:10214000C093E900CF91089590936B0180936A0149 +:102150000895E0916A01F0916B01309721F00190B0 +:10216000F081E02D099480E00895E0916A01F091FA +:102170006B01309721F00280F381E02D09940895DE +:10218000E0916A01F0916B01309721F00480F581B4 +:10219000E02D09940895209168013091690182171A +:1021A000930771F09093690180936801E0916A014F +:1021B000F0916B01309721F00680F781E02D0994B2 +:1021C000089520916601309167018217930771F09D +:1021D0009093670180936601E0916A01F0916B0131 +:1021E000309721F00084F185E02D09940895089539 +:1021F0000C94F7100E94CA1C0E947F060C94901D3C +:10220000CF92DF92EF92FF920F931F93CF93DF93C2 +:10221000CDB7DEB72B970FB6F894DEBF0FBECDBF9C +:102220000E9497068DE6C82E81E0D82E00E010E0CF +:10223000E02E802F0E948507F60141916F01F42E58 +:10224000F826B1F40F5F1F4F0E30110589F78FEF9D +:1022500089838A831B820E94D31C8160782F9D838F +:102260008C8349815A816B818D810E94A31140C06A +:102270009091CE0191FF04C08B870E948B078B85C4 +:1022800020E030E04F2D50E0922FBA01022E02C024 +:10229000759567950A94E2F760FF24C02E83EF825C +:1022A00021E030E0690102C0CC0CDD1C9A95E2F718 +:1022B00090E08C219D21892B09F420E028870E9441 +:1022C000D31C8160782F9A8789874E815F816885CA +:1022D0008A850E94A311F801E359FE4F8081C82628 +:1022E000C08206C02F5F3F4F2630310569F6AACF66 +:1022F0000E94772010916C010E94A9101817A1F07C +:102300000E94A91080936C012B960FB6F894DEBF43 +:102310000FBECDBFDF91CF911F910F91FF90EF9036 +:10232000DF90CF900C94A2092B960FB6F894DEBFE5 +:102330000FBECDBFDF91CF911F910F91FF90EF9016 +:10234000DF90CF900895CF93DF93CDB7DEB72B9773 +:102350000FB6F894DEBF0FBECDBF4F835887698795 +:102360007A878B87DE01119686E0FD0111928A95AE +:10237000E9F785E0FE01379601900D928A95E1F725 +:1023800049815A816B817C818D819E810E94B9181F +:102390002B960FB6F894DEBF0FBECDBFDF91CF9165 +:1023A0000895CF93882309F4C2C0C82F823859F406 +:1023B0000E94A91081FDBBC089E30E94551B0E94A9 +:1023C000121C89E30CC0833879F40E94A91080FDA7 +:1023D000AEC083E50E94551B0E94121C83E50E943B +:1023E000971BCF910C94121C843859F40E94A910A9 +:1023F00082FD9DC087E40E94551B0E94121C87E449 +:10240000EECF8CEF8C0F813A48F48C2F0E94B822CB +:1024100081118DC08C2F0E94551BE3CF80E28C0F61 +:10242000883048F4C77081E001C0880FCA95EAF788 +:102430000E94DB1BD6CF8BE58C0F833078F4C53A36 +:1024400029F0C63A31F083E890E005C081E890E0D9 +:1024500002C082E890E0CF910C94CB1088E58C0FFD +:10246000833108F064C0C83A39F1C93A41F1CA3A37 +:1024700049F1CB3A51F1CC3A59F1CD3A61F1C03B37 +:1024800069F1CE3A71F1CF3A79F1C13B81F1C23BAA +:1024900089F1C33B91F1C43B99F1C53BA1F1C63B26 +:1024A000A9F1C73BB1F1C83BB9F1C93BC1F1CA3B86 +:1024B000C9F180E090E038C082EE90E035C089EE4E +:1024C00090E032C08AEE90E02FC085EB90E02CC007 +:1024D00086EB90E029C087EB90E026C08CEC90E082 +:1024E00023C08DEC90E020C083E891E01DC08AE815 +:1024F00091E01AC082E991E017C084E991E014C02C +:1025000081E292E011C083E292E00EC084E292E0A8 +:102510000BC085E292E008C086E292E005C087E247 +:1025200092E002C08AE292E0CF910C94E110CF9148 +:102530000895882309F44BC0823859F40E94A910E9 +:1025400081FF45C089E30E94551B0E94121C89E34C +:102550000CC0833871F40E94A91080FF38C083E555 +:102560000E94551B0E94121C83E50E94971B0C942D +:10257000121C843859F40E94A91082FF28C087E4F5 +:102580000E94551B0E94121C87E4EFCF9CEF980F0E +:10259000913A58F390E2980F983050F4877091E098 +:1025A00001C0990F8A95EAF7892F0E94E11BDFCFBE +:1025B0009BE5980F933020F480E090E00C94CB10D2 +:1025C000885A833120F480E090E00C94E110089563 +:1025D000882321F00E94DB1B0C94121C0895882391 +:1025E00021F00E94E11B0C94121C0895BF92CF921F +:1025F000DF92EF92FF920F931F93CF93DF9300D060 +:1026000000D000D0CDB7DEB725E0FC01DE01119689 +:1026100001900D922A95E1F7FC0140813181028100 +:10262000258122952F7063817481672B09F4E5C29F +:102630003F3F19F44F3F09F4E0C27C0149833A83DC +:1026400089819A812E830E94141B182FB92E0E9413 +:10265000131B0E94DA19EB2DE295EF70F0E0E159BF +:10266000FF4F2E810C94ED248B2D807F9B2D9F702E +:10267000F92E882319F0F29480EFF822002349F014 +:10268000FF2009F467C28F2D0E94EB1B0E94121CD1 +:1026900061C2812F0E949912FF2009F4AEC28F2DD2 +:1026A0000E94F11B26960FB6F894DEBF0FBECDBF79 +:1026B000DF91CF911F910F91FF90EF90DF90CF901E +:1026C000BF900C94121C3B2D307F8B2D8F703032BD +:1026D00011F08295807F112319F0113021F12CC067 +:1026E0000023B9F0222309F4A0C1213009F09DC1D3 +:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107 +:102700001F910F91FF90EF90DF90CF90BF900C94AE +:10271000FB1B222319F0213009F46FC28E830E9423 +:10272000FE1B8E8196C1002321F0223008F065C285 +:102730007CC1211162C28DC1002321F0222309F442 +:1027400074C108C2222309F484C119C22B2D269515 +:102750002695237030E02115310521F02130310517 +:10276000D1F04BC2002321F0812F9B2D937002C02A +:1027700080E090E026960FB6F894DEBF0FBECDBF86 +:10278000DF91CF911F910F91FF90EF90DF90CF904D +:10279000BF900C94CB10002321F0812F9B2D9370C0 +:1027A00002C080E090E026960FB6F894DEBF0FBE20 +:1027B000CDBFDF91CF911F910F91FF90EF90DF90F0 +:1027C000CF90BF900C94E110812F002319F00E944C +:1027D0007F1F02C00E94E71F26960FB6F894DEBF47 +:1027E0000FBECDBFDF91CF911F910F91FF90EF9062 +:1027F000DF90CF90BF900C946C208B2D837009F0EC +:102800007BC00111FAC1812F829586958770880F50 +:10281000880F912F9F70C92ED12CE12CF12C082EFE +:1028200004C0CC0CDD1CEE1CFF1C0A94D2F714FF74 +:1028300012C04FE050E060E070E004C0440F551F4C +:10284000661F771F8A95D2F7CB01BA016095709504 +:102850008095909503C060E070E0CB012B2D26950C +:1028600026952370422F50E042305105D9F0433075 +:10287000510569F16C297D298E299F294130510527 +:1028800051F126960FB6F894DEBF0FBECDBFDF9193 +:10289000CF911F910F91FF90EF90DF90CF90BF905D +:1028A0000C94011A6C297D298E299F2926960FB632 +:1028B000F894DEBF0FBECDBFDF91CF911F910F9176 +:1028C000FF90EF90DF90CF90BF900C941D1A0E9464 +:1028D000011AC701B60126960FB6F894DEBF0FBEE7 +:1028E000CDBFDF91CF911F910F91FF90EF90DF90BF +:1028F000CF90BF900C94E519002319F08B2D8170B7 +:1029000001C08695882309F478C1812F8295869528 +:102910008770880F880F912F9F70C92ED12CE12CC2 +:10292000F12C082E04C0CC0CDD1CEE1CFF1C0A94FC +:10293000D2F714FF12C04FE050E060E070E004C036 +:10294000440F551F661F771F8A95D2F7CB01BA0136 +:10295000609570958095909503C060E070E0CB0124 +:102960002B2D269526952370422F50E0423051059D +:10297000D9F04330510569F16C297D298E299F29B1 +:102980004130510551F126960FB6F894DEBF0FBEC7 +:10299000CDBFDF91CF911F910F91FF90EF90DF900E +:1029A000CF90BF900C94DB1A6C297D298E299F292A +:1029B00026960FB6F894DEBF0FBECDBFDF91CF9144 +:1029C0001F910F91FF90EF90DF90CF90BF900C94EC +:1029D000F71A0E94DB1AC701B60126960FB6F894C3 +:1029E000DEBF0FBECDBFDF91CF911F910F91FF9042 +:1029F000EF90DF90CF90BF900C94BF1A103FD1F1B1 +:102A000018F4103E50F4A1C0123F09F463C008F45A +:102A10004CC0133F09F473C098C01F708B2D8F7189 +:102A20000023A1F00E94581A812F26960FB6F89421 +:102A3000DEBF0FBECDBFDF91CF911F910F91FF90F1 +:102A4000EF90DF90CF90BF900C94E8120E94791A1B +:102A5000812F26960FB6F894DEBF0FBECDBFDF9153 +:102A6000CF911F910F91FF90EF90DF90CF90BF908B +:102A70000C94EF120023A9F02111BFC08B2D8F7190 +:102A800026960FB6F894DEBF0FBECDBFDF91CF9173 +:102A90001F910F91FF90EF90DF90CF90BF900C941B +:102AA0009E1A223008F0A9C0E9CF0023A9F08B2D8F +:102AB0008F7126960FB6F894DEBF0FBECDBFDF91A3 +:102AC000CF911F910F91FF90EF90DF90CF90BF902B +:102AD0000C94581A002359F38B2D8F7126960FB63C +:102AE000F894DEBF0FBECDBFDF91CF911F910F9144 +:102AF000FF90EF90DF90CF90BF900C94791A002355 +:102B000099F08B2D8F7126960FB6F894DEBF0FBE0D +:102B1000CDBFDF91CF911F910F91FF90EF90DF908C +:102B2000CF90BF900C94431A26960FB6F894DEBF50 +:102B30000FBECDBFDF91CF911F910F91FF90EF900E +:102B4000DF90CF90BF900C94391A0023A9F0222374 +:102B500009F4ADCF812F26960FB6F894DEBF0FBED5 +:102B6000CDBFDF91CF911F910F91FF90EF90DF903C +:102B7000CF90BF900C94D111222309F4ADCF812FB7 +:102B800026960FB6F894DEBF0FBECDBFDF91CF9172 +:102B90001F910F91FF90EF90DF90CF90BF900C941A +:102BA00099124B2D4F70612FC7010E943604269653 +:102BB0000FB6F894DEBF0FBECDBFDF91CF911F914E +:102BC0000F91FF90EF90DF90CF90BF900C945D1924 +:102BD0004B2D4F70612FC70126960FB6F894DEBFBC +:102BE0000FBECDBFDF91CF911F910F91FF90EF905E +:102BF000DF90CF90BF900C944B0826960FB6F894B8 +:102C0000DEBF0FBECDBFDF91CF911F910F91FF901F +:102C1000EF90DF90CF90BF9008950E94F81B0E9424 +:102C2000CD1B0E94121C0E941D210E946C2080E07E +:102C300090E00E94CB1080E090E00C94E1100E94A4 +:102C4000E81B0C940D160E94141B292F22952F703F +:102C500030E02C3031054CF42A3031056CF4225030 +:102C600031092230310588F407C02C30310549F094 +:102C70002F30310531F009C0803E48F0803F29F403 +:102C800006C093FB882780F9089580E0089581E0CD +:102C90000895CF93DF9300D000D01F92CDB7DEB759 +:102CA0000F900F900F900F900F90DF91CF9108959C +:102CB000CF93DF9300D000D000D0CDB7DEB72696FB +:102CC0000FB6F894DEBF0FBECDBFDF91CF91089550 +:102CD0001F93CF93DF93C0917B0116E080917C011D +:102CE000C81799F0D0E01C9FF0011D9FF00D112432 +:102CF000E358FE4F408151816281738184819581C7 +:102D00000E9458162196C770E9CFDF91CF911F918D +:102D100008954091AD015091AE016091AF01709165 +:102D2000B0018091B1019091B2010C94581680913C +:102D3000B20182958F7009F054C08091AF01882351 +:102D400009F44FC080917B01A0917C016091AD019D +:102D50007091AE014091B0015091B101B6E08A1777 +:102D600009F43FC090E041155105C1F17F3F11F4D6 +:102D70006F3FA1F1B89FF001B99FF00D1124E35806 +:102D8000FE4F218172132AC02081621327C0228145 +:102D9000211124C0238134812417350710F42150D8 +:102DA0003109241B350B283C3105C0F42091B201B8 +:102DB0002F7020612093B20126E0289FF001299F07 +:102DC000F00D1124EE57FE4F80818F70806180835B +:102DD0008DEA91E00E94F6120C94681601968770B5 +:102DE000BECF0895CF92DF92EF92FF920F931F9381 +:102DF000CF93DF93CDB7DEB762970FB6F894DEBFFF +:102E00000FBECDBF8C0185E0F801DE011D9601905B +:102E10000D928A95E1F7D8014C9111965C9111972A +:102E200012966C9112971396CD90DC901497309176 +:102E3000AD017091AE018091B0019091B101009708 +:102E400009F46BC17F3F19F43F3F09F466C1E0907C +:102E5000AF01EE2009F4C0C02091B201C816D90616 +:102E600028F0F601E81BF90BCF0104C0809590957E +:102E70008C0D9D1DFF24F394883C910578F0F12C76 +:102E8000207F09F0C6C07C2DD98AC88A89890E9412 +:102E900049168DEA91E00E94F612B1C0822F807F20 +:102EA00009F046C0751314C0341312C0611110C06C +:102EB0002F7020612093B2010E9489168DEA91E063 +:102EC0000E94F6128091B201D80115968C932EC003 +:102ED000CD2819F15F3F11F44F3FF9F0F62E611143 +:102EE0001CC080917B0120917C0136E0821709F49F +:102EF0005AC090E0389FF001399FF00D1124E3583B +:102F0000FE4F7181571306C07081471303C0728151 +:102F1000711103C001968770E9CFF62E662309F47C +:102F200018C18091B20181608093B201F12C11C16E +:102F3000751308C0341306C0611104C08091B2013A +:102F4000D801C3C04D875E878D859E856A8B0E94A0 +:102F500023166A898823E1F16623D1F12091B20119 +:102F6000822F82958F7090E0029774F08091AD016E +:102F70009091AE0198878F831986DB86CA862C874D +:102F8000CE0107960E94F61286E0F801ADEAB1E0A4 +:102F900001900D928A95E1F70E9497160E9489167A +:102FA000FF24F394D6C04D875E878D859E850E9451 +:102FB000141B292F22952F7030E0223031050CF0A0 +:102FC000BCC09F7009F0B6C0805E883008F4C1C0F4 +:102FD000C8010E94F612E4CFC816D90608F453C0FF +:102FE000F601E81BF90BCF01883C910508F450C0AD +:102FF000F12C7C2DD98AC88A89890E944916EDEA6C +:10300000F1E086E0DF011D928A95E9F70E948916BA +:10301000A0C0751314C0341312C0611110C0809188 +:10302000B201F8018583C8010E94F61286E0EDEA3C +:10303000F1E0DF011D928A95E9F7FE2C8AC04D87E9 +:103040005E878D859E856A8B0E9423166A898823F8 +:1030500009F4BECF662309F4BBCF2091B201822FC1 +:1030600082958F7090E002970CF48ECF8091AD0125 +:103070009091AE019A8389831B82DD82CC822E835C +:10308000CE0101967FCF809590958C0D9D1DACCF84 +:10309000F62E662309F49CCF75132EC034132CC072 +:1030A0002091B20120FD1FC0822F82958F70D9F030 +:1030B000D80115962C9315978F3049F08F5F982F74 +:1030C0009295907F822F8F70892B15968C93C801D3 +:1030D0000E94F61286E0F801ADEAB1E001900D928F +:1030E0008A95E1F793CF86E0F801ADEAB1E001906F +:1030F0000D928A95E1F72DC04D875E878D859E855F +:103100000E942316811140CF8091B201816080938B +:10311000B201C8010E94F6121CC0662309F458CF00 +:103120004D875E878D859E850E942316882309F42E +:103130004FCF2ACF811148CF0CC0243031050CF07D +:1031400047CF9F7009F440CFF8019581907F09F037 +:103150003BCF8F2D62960FB6F894DEBF0FBECDBF6A +:10316000DF91CF911F910F91FF90EF90DF90CF9063 +:1031700008951F93CF93DF93CDB7DEB72C970FB68B +:10318000F894DEBF0FBECDBF4F83588769877A871B +:103190008B879C87CE0107960E94F216882369F0E0 +:1031A0008F8198852A853B85232BF1F19F3F09F07C +:1031B00063C08F3F09F060C037C086E0FE013796DC +:1031C000DE01119601900D928A95E1F76F81788565 +:1031D000EA85FB85309741F17F3F11F46F3F21F184 +:1031E00020917C0130E0C9010196877099274091B8 +:1031F0007B0150E08417950709F447C069837A83FF +:10320000FD83EC8396E0929FD001939FB00D112433 +:10321000A358BE4FFE01319601900D929A95E1F7A9 +:1032200080937C010E94681616E080917B0190914A +:103230007C018917C1F1189FC001112483589E4F4A +:103240000E94F216882379F1E0917B011E9FF00124 +:103250001124E358FE4F4081518162817381848142 +:1032600095810E94581680917B0190E001968770AD +:10327000992780937B01D9CF4F81588569857A85BD +:103280008B859C850E945816CFCF0E941F161092E6 +:103290007C0110927B01EDEAF1E086E0DF011D92F6 +:1032A0008A95E9F7C1CF2C960FB6F894DEBF0FBE12 +:1032B000CDBFDF91CF911F910895EF92FF920F93B1 +:1032C0001F93CF93DF938C01892B09F46CC0F12CF1 +:1032D000EE24E394E8012196F8018491843740F4C8 +:1032E000843008F051C0813081F0823019F15BC028 +:1032F000853709F444C0A8F19CE7980F903708F08F +:1033000052C08F770E94991241C00E5F1F4FFE017D +:10331000C49180E28C0F883048F4C7708E2D01C0B4 +:10332000880FCA95EAF70E94EB1B14C08C2F0E94ED +:10333000D1112DC00E5F1F4FFE01C49180E28C0F92 +:10334000883058F4C7708E2D01C0880FCA95EAF7EF +:103350000E94F11B0E94121C1AC08C2F0E9499120D +:1033600016C00E5F1F4FFE01C491CC2381F08FE980 +:103370009FE00197F1F700C00000C150F6CF0E5F4B +:103380001F4FFE01F49003C00E94D1118E018F2DBA +:10339000882309F49FCFEFE9FFE03197F1F700C0F0 +:1033A00000008150F5CFDF91CF911F910F91FF90D9 +:1033B000EF90089508956093B7017093B8018093DA +:1033C000B9019093BA010C940D160F931F930091BD +:1033D000B7011091B8012091B9013091BA01DC0117 +:1033E000CB01802B912BA22BB32B8093B701909311 +:1033F000B801A093B901B093BA011F910F910C9439 +:103400000D160F931F930091B7011091B8012091F1 +:10341000B9013091BA01DC01CB0180239123A223B1 +:10342000B3238093B7019093B801A093B901B093EF +:10343000BA011F910F910C940D160F931F930091D9 +:10344000B7011091B8012091B9013091BA01DC01A6 +:10345000CB0180279127A227B3278093B7019093B0 +:10346000B801A093B901B093BA011F910F910C94C8 +:103470000D161092B3011092B4011092B501109282 +:10348000B6010C940D1641E050E060E070E004C01D +:10349000440F551F661F771F8A95D2F74093B301DB +:1034A0005093B4016093B5017093B6010C940D165E +:1034B00041E050E060E070E004C0440F551F661F1B +:1034C000771F8A95D2F78091B3019091B401A091B2 +:1034D000B501B091B601482B592B6A2B7B2B409339 +:1034E000B3015093B4016093B5017093B6010C948D +:1034F0000D1641E050E060E070E004C0440F551F3D +:10350000661F771F8A95D2F7409550956095709504 +:103510008091B3019091B401A091B501B091B60131 +:10352000482359236A237B234093B3015093B4016A +:103530006093B5017093B6010C940D1641E050E014 +:1035400060E070E004C0440F551F661F771F8A9526 +:10355000D2F78091B3019091B401A091B501B091DF +:10356000B601482759276A277B274093B301509318 +:10357000B4016093B5017093B6010C940D160F93CE +:103580001F930091B3011091B4012091B5013091C6 +:10359000B601DC01CB01802B912BA22BB32B8093A6 +:1035A000B3019093B401A093B501B093B6011F91FC +:1035B0000F910C940D160F931F930091B30110916E +:1035C000B4012091B5013091B601DC01CB0180231B +:1035D0009123A223B3238093B3019093B401A093CA +:1035E000B501B093B6011F910F910C940D160F9376 +:1035F0001F930091B3011091B4012091B501309156 +:10360000B601DC01CB0180279127A227B327809345 +:10361000B3019093B401A093B501B093B6011F918B +:103620000F910C940D160895CF92DF92EF92FF92B6 +:103630000F931F93CF93DF938C01C090B701D0906D +:10364000B801E090B901F090BA014091B3015091F6 +:10365000B4016091B5017091B601C42AD52AE62A59 +:10366000F72ACFE1D0E0D701C6010C2E04C0B695F1 +:10367000A795979587950A94D2F780FF07C0B80160 +:103680008C2F0E946E088130910531F4219758F7F4 +:10369000B80180E00E946E08DF91CF911F910F91D9 +:1036A000FF90EF90DF90CF90089590910C019923B7 +:1036B00021F090910D01911109C020910E013091DE +:1036C0000F01F90132969FEF40E01FC0982F9695A9 +:1036D000969596959F3050F5E0910E01F0910F016F :1036E000E90FF11D877021E030E0A90102C0440F0D :1036F000551F8A95E2F7CA019181892B818308952C -:1037000020910E0130910F01F90132969FEF40E0B8 -:103710005191851789F09F3F19F4511101C0942FE1 -:103720004F5F4E30A9F79F3F39F0F901E90FF11DC6 -:1037300097FDFA9582830895089590910C0199233D -:10374000F9F090910D019923D9F0982F96959695BF -:1037500096959F3028F5E0910E01F0910F01E90F49 -:10376000F11D877021E030E0A90102C0440F551F10 -:103770008A95E2F7CA018095918189238183089512 -:1037800020910E0130910F01F9013296205F3F4FD9 -:103790009081891301C010823196E217F307C1F7B7 -:1037A000089581E090E0E0910E01F0910F01E80FA3 -:1037B000F91F1082019680319105A9F70895909123 -:1037C000CD01892B8093CD01089580959091CD01F5 -:1037D00089238093CD0108951092CD010895909191 -:1037E000CC01892B8093CC01089580959091CC01D8 -:1037F00089238093CC0108951092CC010895809381 -:10380000BB0108951092BB01089580910E01909123 -:103810000F01FC0131969C01205F3F4F80E09191A8 -:1038200091118F5FE217F307D1F70895E0910E0130 -:10383000F0910F018091CD018083E0910E01F09114 -:103840000F0190818091CC01892B80838091BB01F5 -:10385000882361F0E0910E01F0910F019081892B96 -:1038600080830E94051C81111092BB0180910E0182 -:1038700090910F010C94D010CF92DF92EF92FF92B3 -:103880006C01EE24FF24C114D104E104F10421F001 -:10389000C701B60120E101C020E0C72ED82EE92ED5 -:1038A000FF24C114D104E104F10419F0285FC70119 -:1038B000B6016B017C0154E0F694E794D794C79469 -:1038C0005A95D1F7C114D104E104F10419F02C5F29 -:1038D000C701B6016B017C0142E0F694E794D794EE -:1038E000C7944A95D1F7C114D104E104F10419F049 -:1038F0002E5FC701B601DC01CB01B695A795979560 -:103900008795892B8A2B8B2B09F02F5F822FFF90B5 -:10391000EF90DF90CF9008958091E601843011F10F -:1039200020E488E190E00FB6F894A89580936000B9 -:103930000FBE2093600083B7817F846083BF83B70D -:10394000816083BF7894889583B78E7F83BF0FB6DD -:10395000F894A8958091600088618093600010922F -:1039600060000FBE089508950C94B31CCF930E947D -:10397000B41C0E949A060E94B31CC0E08C2F0E94C7 -:103980009007811104C0CF5FCE30C1F701C081E044 -:10399000CF9108950E942D160E94C4100C94BA096C -:1039A00082E084BD93E095BD9AEF97BD80936E0051 -:1039B00008952FB7F8948091CF019091D001A091F4 -:1039C000D101B091D2012FBF0895CF92DF92EF9233 -:1039D000FF920F931F932FB7F8944091CF0150910E -:1039E000D0016091D1017091D2012FBF6A017B019A -:1039F000EE24FF248C0120E030E0C016D106E20660 -:103A0000F30610F4415051099A01281B390BC901E2 -:103A10001F910F91FF90EF90DF90CF9008951F922C -:103A20000F920FB60F9211248F939F93AF93BF9372 -:103A30008091CF019091D001A091D101B091D2019C -:103A40000196A11DB11D8093CF019093D001A09349 -:103A5000D101B093D201BF91AF919F918F910F90FF -:103A60000FBE0F901F9018950E94BC0DF8942FEF79 -:103A700087EA91E6215080409040E1F700C00000C5 -:103A800087E090EBDC018093EF019093F001A0932D -:103A9000F101B093F2019CE088E10FB6F894A8958B -:103AA000809360000FBE90936000FFCFEF92FF9273 -:103AB0000F931F93CF93DF93D82FC0E08C2F0E94DA -:103AC000900700E010E0E82EF12CC701002E02C0A4 -:103AD000959587950A94E2F780FD06C00F5F1F4F0A -:103AE0000630110591F709C0602F7C2F80E00E94FD -:103AF00058088D13F3CF81E004C0CF5FCE30F1F6CC -:103B000080E0DF91CF911F910F91FF90EF9008958A -:103B1000CF93C82F8CE20E94561D882321F08C2F52 -:103B2000CF910C94561D80E0CF910895CF930E94C1 -:103B3000DD1E811102C00E94C31EC5E6C15049F0BE -:103B40000E949A068FE39CE90197F1F700C00000FC -:103B5000F5CF89E20E94881D811113C18AE20E947B -:103B6000881D81110E94C31E85E00E94881D81115D -:103B70000E94341D0E94E81E8093CE0187E00E94BF -:103B8000881D8823A9F18BE10E94881D882351F0AC -:103B90008091CE0181FB222720F991E0922790FBB2 -:103BA00081F90EC08EE00E94881D882361F080910B -:103BB000CE0182FB222720F991E0922790FB82F927 -:103BC0008093CE0115C080E10E94881D9091CE01A6 -:103BD000882341F093FB222720F981E0822780FB94 -:103BE00093F904C0892F809580FB90F99093CE01C2 -:103BF0008091CE010E94EC1E0E94FA1E8093E0018B -:103C000080EE0E94881D882341F08091E001982F6A -:103C1000909590FB80F98093E00189E30E94881DD4 -:103C2000882359F08091E00181FB222720F991E05F -:103C3000922790FB81F98093E00182EE0E94881D1B -:103C4000882359F08091E00182FB222720F991E03E -:103C5000922790FB82F98093E00186EE0E94881DF6 -:103C6000882359F08091E00183FB222720F991E01D -:103C7000922790FB83F98093E00183EE0E94881DD8 -:103C8000882359F08091E00184FB222720F991E0FC -:103C9000922790FB84F98093E00185E30E94881DC0 -:103CA000882359F08091E00185FB222720F991E0DB -:103CB000922790FB85F98093E00181E30E94881DA3 -:103CC000882359F08091E00186FB222720F991E0BA -:103CD000922790FB86F98093E00181E10E94881D84 -:103CE000882359F08091E00187FB222720F991E099 -:103CF000922790FB87F98093E0018091E0010E9478 -:103D0000FE1E8091E00187FB882780F980930D01DA -:103D100087E20E94881DC82F8EE10E94881D8111B4 -:103D2000C2608FE10E94881D8111C46080E20E9400 -:103D3000881D8111C86081E20E94881D8111C061C7 -:103D400082E20E94881D8111C06283E20E94881D68 -:103D50008111C06484E20E94881D882311F0C0682C -:103D600002C0CC2329F08C2F0E94F51E6C2F03C0BB -:103D70000E94F11E682F70E080E090E0CF910C94DB -:103D8000E419CF9108956DEE7EEF80E090E00E94FF -:103D9000372560E082E090E00E94292560E083E022 -:103DA00090E00E94292560E084E090E00E942925AF -:103DB00060E085E090E00C94292580E090E00E948E -:103DC000232521E08D3E9E4F09F020E0822F0895AB -:103DD00082E090E00C941B25682F82E090E00C9428 -:103DE000292583E090E00C941B25682F83E090E068 -:103DF0000C94292584E090E00C941B25682F84E026 -:103E000090E00C9429258091D50180FF0BC0609132 -:103E1000130185E0689FB00111247595679575952C -:103E200067952BC081FF09C06091130185E0689FF1 -:103E3000B00111247595679520C082FF07C060917D -:103E4000130185E0689FB001112417C09091D6013D -:103E50009923D1F060911201961788F720911301F0 -:103E600085E0289F90011124929FA001939F500DFF -:103E7000112470E0CA010E94ED246038710540F4FD -:103E80006115710519F406C065E070E0862F08958C -:103E90008FE7089581E008958091D50180FF08C0E3 -:103EA0006091110170E0759567957595679521C0D2 -:103EB00081FF06C06091110170E07595679519C08A -:103EC00082FF04C06091110170E010C09091D60192 -:103ED000992399F0609110019617A0F78091110134 -:103EE000899FC001112470E00E94ED2460387105A3 -:103EF00040F46115710519F406C061E070E0862F89 -:103F000008958FE7089581E00895803F21F40E948D -:103F1000031F819504C0813F29F40E94031F8093F1 -:103F2000D9010895823F21F40E94031F819504C0A6 -:103F3000833F29F40E94031F8093D8010895893F8D -:103F400019F40E944C1F05C08A3F31F40E944C1F97 -:103F500081958093DA0108958B3F21F40E944C1FD4 -:103F6000819504C08C3F29F40E944C1F8093DB0193 -:103F70000895843F21F48091D701816017C0853F67 -:103F800021F48091D701826011C0863F21F4809195 -:103F9000D70184600BC0873F21F48091D7018860EE -:103FA00005C0883F31F48091D70180618093D701AB -:103FB00008958D3F21F48091D50181600BC08E3F23 -:103FC00021F48091D501826005C08F3F29F4809152 -:103FD000D50184608093D5010895803F39F48091A4 -:103FE000D90187FF6CC01092D90169C0813F29F4C3 -:103FF0008091D9011816BCF362C09091D801823F1C -:1040000029F497FF5CC01092D80159C0833F19F47E -:104010001916CCF354C0893F41F48091DA01181687 -:104020000CF04DC01092DA014AC08A3F29F4809109 -:10403000DA0187FF44C0F6CF8B3F39F48091DB0172 -:1040400087FF3DC01092DB013AC08C3F29F480917C -:10405000DB011816BCF333C0843F21F48091D701F3 -:104060008E7F17C0853F21F48091D7018D7F11C0CD -:10407000863F21F48091D7018B7F0BC0873F21F4CD -:104080008091D701877F05C0883F31F48091D701A7 -:104090008F7E8093D70113C08D3F21F48091D5018D -:1040A0008E7F0BC08E3F21F48091D5018D7F05C09E -:1040B0008F3F29F48091D5018B7F8093D50180912A -:1040C000D80181110EC08091D90181110AC080915F -:1040D000DA01811106C08091DB01811102C01092CA -:1040E000D601089587ED91E00E94DB100E94D91C53 -:1040F0009093D4018093D30108951F93CF93DF93BE -:104100008091D3019091D4010E94E51CAC01909163 -:10411000D601992321F02091140130E006C02091AE -:1041200015018AE0289F900111244217530708F4D3 -:1041300085C08091D801C091D901D091DA01109148 -:10414000DB01811107C0C11175C0D11173C01111FC -:1041500071C074C09F3F19F09F5F9093D6011816ED -:1041600024F40E94031F8093D8018091D80187FF17 -:1041700005C00E94031F81958093D8011C1624F46A -:104180000E94031F8093D9018091D90187FF05C048 -:104190000E94031F81958093D9016091D801662305 -:1041A00031F1C091D901CC2311F1062E000C770B0F -:1041B000880B990B0E94F42323E333E343E35FE38B -:1041C0000E9458240E94BC236093D8016C2FCC0F0E -:1041D000770B880B990B0E94F42323E333E343E32B -:1041E0005FE30E9458240E94BC236093D9011D16EE -:1041F00024F40E944C1F8093DA018091DA0187FF3A -:1042000005C00E944C1F81958093DA01111624F499 -:104210000E944C1F8093DB018091DB0187FF05C06A -:104220000E944C1F81958093DB01DF91CF911F91FC -:104230000C9472209F3F09F08FCFA0CFDF91CF91D8 -:104240001F910895E7EDF1E085E0DF011D928A9569 -:10425000E9F71092D6011092D5010895833081F1CB -:1042600028F4813059F08230D1F00895853009F476 -:1042700049C0B8F1863009F456C0089580911501FF -:10428000262F30E0280F311D2F3F310524F4680F11 -:104290006093150108958FEF809315010895809123 -:1042A0001401262F30E0280F311D2F3F310524F453 -:1042B000680F6093140108958FEF8093140108959F -:1042C00080911301262F30E0280F311D2F3F31053B -:1042D00024F4680F6093130108958FEF8093130106 -:1042E000089580911201262F30E0280F311D2F3FB5 -:1042F000310524F4680F6093120108958FEF8093C5 -:104300001201089580911101262F30E0280F311DF0 -:104310002F3F310524F4680F6093110108958FEF4A -:1043200080931101089580911001262F30E0280F0D -:10433000311D2F3F310524F4680F6093100108955B -:104340008FEF809310010895833011F128F48130AC -:1043500049F0823091F00895853081F120F1863066 -:10436000C1F1089580911501681720F4861B809390 -:104370001501089510921501089580911401681790 -:1043800020F4861B8093140108951092140108955F -:1043900080911301681720F4861B80931301089500 -:1043A00010921301089580911201681720F4861B62 -:1043B00080931201089510921201089580911101C5 -:1043C000681720F4861B8093110108951092110143 -:1043D000089580911001681720F4861B80931001C6 -:1043E00008951092100108950F931F938D3109F4D1 -:1043F0006BC008F03FC08E3009F47DC0C0F4873038 -:1044000009F46EC068F4863009F0AFC08091CE0127 -:10441000817F8E7F8093CE0181E08093DD01A6C0F5 -:10442000883009F458C08B3009F49BC09EC0863197 -:1044300009F497C078F4803109F470C0813109F033 -:1044400094C00E942D1690910D0181E089278093E0 -:104450000D0187C0893109F484C08B3109F085C012 -:104460008091CE0181FB222720F991E0922790FBD9 -:1044700081F94AC0853309F45BC048F4873209F4F6 -:1044800057C008F45AC0893209F452C06EC0833450 -:1044900038F48A3308F067C0883309F462C065C015 -:1044A000833409F445C0883409F05FC00E942D169A -:1044B0000FEF13ED20E3015010402040E1F700C062 -:1044C00000000E94341D4DC00E9476230E94C4103B -:1044D0000E94BA0946C00E94E81E0E94FA1E41C00E -:1044E0009091CE01892F817090FF12C0917F9E7FA5 -:1044F0009093CE013BC08091CE0182FB222720F910 -:1045000091E0922790FB82F98093CE01992349F1A3 -:104510008091CE0181608093CE0123C08091CE0135 -:1045200083FB222720F991E0922790FB83F9ECCFBF -:1045300061E070E080E090E010C08D5141E050E01B -:1045400060E070E08A019B0104C0000F111F221F70 -:10455000331F8A95D2F7C901B8010E94E4190E945D -:104560002D1681E003C08953E9CF80E01F910F91A0 -:10457000089580E008950C94B922CF93C82F8091BC -:10458000DD01813079F018F08230E9F187C0E091E7 -:104590000E01F0910F018081813169F0823209F0C2 -:1045A0007FC009C0E0910E01F0910F01808181313F -:1045B00011F0823261F48C2F0E94BB22811104C061 -:1045C0008C2F0E94F4211DC081E090E01AC08C2F36 -:1045D0000E94B922811114C0C43179F048F4CB3063 -:1045E00079F0C03109F060C082E08093DD0108C03D -:1045F000C93219F0C83321F057C01092DD0154C000 -:1046000081E0817053C0C93289F118F5C43171F16C -:10461000A8F4C73009F046C08AE08093150194E100 -:104620009093140193E0909313018093120188E01A -:104630008093110188E28093100134C0CE51C630BE -:1046400088F5EC2FF0E0E65DFE4F80818093DC0181 -:1046500029C0CE34E9F020F4CB3421F56AE013C050 -:10466000C13579F0C235F1F461E00DC08091DC0113 -:10467000882319F01092DC0115C081E08093DD01E0 -:1046800015C061E006C08091DC010E942E210AC0A5 -:104690006AE08091DC010E94A42104C01092DD0137 -:1046A00080E004C081E002C080E0ABCFCF910895EC -:1046B000E1E8F0E080818860808380818160808390 -:1046C0008FB7F89493E09093890090ED90938800D1 -:1046D0008FBF0895EFE6F0E08081826080830895C7 -:1046E000EFE6F0E080818D7F80830895EFE6F0E0D3 -:1046F000908182E08927808308951F920F920FB6E0 -:104700000F9211242F933F934F935F936F937F9357 -:104710008F939F93AF93BF93EF93FF938091DE01AD -:104720009091DF0101969093DF018093DE0181116A -:1047300003C082E00E94BA09E091DF01E695E695A8 -:10474000F0E0E156F84FE4918091DE018E1303C052 -:1047500080E00E94BA09FF91EF91BF91AF919F91C4 -:104760008F917F916F915F914F913F912F910F901A -:104770000FBE0F901F9018950E94C3236894B1112B -:104780000C94522408950E94372488F09F5798F083 -:10479000B92F9927B751B0F0E1F0660F771F881F46 -:1047A000991F1AF0BA95C9F714C0B13091F00E9460 -:1047B0005124B1E008950C945124672F782F882755 -:1047C000B85F39F0B93FCCF3869577956795B39587 -:1047D000D9F73EF490958095709561957F4F8F4FF6 -:1047E0009F4F0895E89409C097FB3EF490958095FB -:1047F000709561957F4F8F4F9F4F9923A9F0F92FA7 -:1048000096E9BB279395F695879577956795B79524 -:10481000F111F8CFFAF4BB0F11F460FF1BC06F5F0A -:104820007F4F8F4F9F4F16C0882311F096E911C01C -:10483000772321F09EE8872F762F05C0662371F03D -:1048400096E8862F70E060E02AF09A95660F771F51 -:10485000881FDAF7880F9695879597F9089557FD81 -:104860009058440F551F59F05F3F71F04795880FDE -:1048700097FB991F61F09F3F79F087950895121675 -:1048800013061406551FF2CF4695F1DF08C0161621 -:1048900017061806991FF1CF8695710561050894D2 -:1048A0000895E894BB2766277727CB0197F90895E9 -:1048B0000E946B240C94DC240E94CE2438F00E94C9 -:1048C000D52420F0952311F00C94C5240C94CB240E -:1048D00011240C9452240E942F2470F3959FC1F34D -:1048E000950F50E0551F629FF001729FBB27F00D9E -:1048F000B11D639FAA27F00DB11DAA1F649F6627F3 -:10490000B00DA11D661F829F2227B00DA11D621F41 -:10491000739FB00DA11D621F839FA00D611D221FFB -:10492000749F3327A00D611D231F849F600D211DDF -:10493000822F762F6A2F11249F5750409AF0F1F062 -:1049400088234AF0EE0FFF1FBB1F661F771F881FCB -:1049500091505040A9F79E3F510580F00C94C5241A -:104960000C9452245F3FE4F3983ED4F386957795F8 -:104970006795B795F795E7959F5FC1F7FE2B880F71 -:10498000911D9695879597F9089597F99F6780E807 -:1049900070E060E008959FEF80EC089500240A9491 -:1049A0001616170618060906089500240A9412160A -:1049B0001306140605060895092E0394000C11F43D -:1049C000882352F0BB0F40F4BF2B11F460FF04C0EA -:1049D0006F5F7F4F8F4F9F4F089597FB072E16F401 -:1049E000009407D077FD09D00E94072507FC05D069 -:1049F0003EF4909581959F4F0895709561957F4FF6 -:104A00000895EE0FFF1F0590F491E02D0994AA1B65 -:104A1000BB1B51E107C0AA1FBB1FA617B70710F0A9 -:104A2000A61BB70B881F991F5A95A9F780959095DB -:104A3000BC01CD010895F999FECF92BD81BDF89AD0 -:104A4000992780B50895A8E1B0E042E050E00C94C9 -:104A50003E25262FF999FECF1FBA92BD81BD20BDFC -:104A60000FB6F894FA9AF99A0FBE019608950E942B -:104A70002925272F0C942A25DC01CB01FC01F9996B -:104A8000FECF06C0F2BDE1BDF89A319600B40D929A -:0C4A900041505040B8F70895F894FFCF53 -:104A9C002002BB094B0A260AF209BE090101BC011E -:104AAC0028080A03140A3F4D363960071307DD0640 -:104ABC00A4063706500669068206010203040506A1 -:044ACC0007080900CE +:103700009F3F39F04F5F4E3041F051915813F8CF41 +:103710000DC05111F7CF942FF5CF9F3F39F0F9012C +:10372000E90FF11D97FDFA95828308950895909110 +:103730000C01992321F090910D01911109C0209164 +:103740000E0130910F01F9013296205F3F4F1FC0EB +:10375000982F9695969596959F30F0F4E0910E01EE +:10376000F0910F01E90FF11D877021E030E0A90110 +:1037700002C0440F551F8A95E2F7CA0180959181D6 +:103780008923818308953196E217F30729F0908108 +:103790009813F9CF1082F7CF089581E090E0E0917F +:1037A0000E01F0910F01E80FF91F10820196803190 +:1037B0009105A9F708959091CD01892B8093CD01B2 +:1037C000089580959091CD0189238093CD0108952E +:1037D0001092CD0108959091CC01892B8093CC015A +:1037E000089580959091CC0189238093CC01089510 +:1037F0001092CC0108958093BB0108951092BB01F3 +:10380000089580910E0190910F01FC0131969C0169 +:10381000205F3F4F80E0919191118F5FE217F30796 +:10382000D1F70895E0910E01F0910F018091CD0143 +:103830008083E0910E01F0910F0190818091CC0185 +:10384000892B80838091BB01882361F0E0910E0178 +:10385000F0910F019081892B80830E94011C8111BE +:103860001092BB0180910E0190910F010C94B51044 +:10387000CF92DF92EF92FF926C01EE24FF24C114ED +:10388000D104E104F10421F0C701B60120E101C037 +:1038900020E0C72ED82EE92EFF24C114D104E10464 +:1038A000F10419F0285FC701B6016B017C0154E0F7 +:1038B000F694E794D794C7945A95D1F7C114D104DC +:1038C000E104F10419F02C5FC701B6016B017C0122 +:1038D00042E0F694E794D794C7944A95D1F7C1147F +:1038E000D104E104F10419F02E5FC701B601DC0137 +:1038F000CB01B695A79597958795892B8A2B8B2B0E +:1039000009F02F5F822FFF90EF90DF90CF90089506 +:103910008091E701843009F11092CF0120E488E121 +:1039200090E00FB6F894A895809360000FBE2093A6 +:10393000600083B7817F846083BF83B7816083BF6A +:103940007894889583B78E7F83BF88E10FB6F8940B +:1039500080936000109260000FBE0895089508954E +:10396000CF930E94AE1C0E9497060E94AF1CC0E03D +:103970008C2F0E948507811104C0CF5FCE30C1F724 +:1039800001C081E0CF9108950E941F160E94A910E6 +:103990000C94A20982E084BD93E095BD9AEF97BD97 +:1039A00080936E0008952FB7F8948091D001909184 +:1039B000D101A091D201B091D3012FBF0895CF9230 +:1039C000DF92EF92FF920F931F932FB7F8944091DD +:1039D000D0015091D1016091D2017091D3012FBFDC +:1039E0006A017B01EE24FF248C0120E030E0C01648 +:1039F000D106E206F30610F4415051099A01281B42 +:103A0000390BC9011F910F91FF90EF90DF90CF907C +:103A100008951F920F920FB60F9211248F939F93C8 +:103A2000AF93BF938091D0019091D101A091D20129 +:103A3000B091D3010196A11DB11D8093D001909347 +:103A4000D101A093D201B093D301BF91AF919F91C7 +:103A50008F910F900FBE0F901F9018950E94A60D8A +:103A6000F8942FEF87EA91E6215080409040E1F7EB +:103A700000C0000087E090EBDC018093F0019093A0 +:103A8000F101A093F201B093F3019CE088E10FB63D +:103A9000F894A895809360000FBE90936000FFCFCC +:103AA000EF92FF920F931F93CF93DF93D82FC0E035 +:103AB0008C2F0E94850700E010E0E82EF12CC70152 +:103AC000002E02C0959587950A94E2F780FD06C006 +:103AD0000F5F1F4F0630110591F709C0602F7C2F33 +:103AE00080E00E944C08D813F3CF81E004C0CF5F80 +:103AF000CE30F1F680E0DF91CF911F910F91FF90D2 +:103B0000EF900895CF93C82F8CE20E94501D882318 +:103B100021F08C2FCF910C94501D80E0CF9108950F +:103B2000CF930E94D71E811102C00E94BD1EC5E620 +:103B3000C15049F00E9497068FE39CE90197F1F785 +:103B400000C00000F5CF89E20E94821D811113C1DF +:103B50008AE20E94821D81110E94BD1E85E00E94A2 +:103B6000821D81110E942E1D0E94E21E8093CE01B3 +:103B700087E00E94821D8823A9F18BE10E94821DAB +:103B8000882351F08091CE0181FB222720F991E01A +:103B9000922790FB81F90EC08EE00E94821D88233F +:103BA00061F08091CE0182FB222720F991E09227DB +:103BB00090FB82F98093CE0115C080E10E94821DA6 +:103BC0009091CE01882341F093FB222720F981E0D8 +:103BD000822780FB93F904C0892F809580FB90F9A0 +:103BE0009093CE018091CE010E94E61E0E94F41EA9 +:103BF0008093E10180EE0E94821D882341F0809134 +:103C0000E101982F909590FB80F98093E10189E381 +:103C10000E94821D882359F08091E10181FB2227B7 +:103C200020F991E0922790FB81F98093E10182EEE7 +:103C30000E94821D882359F08091E10182FB222796 +:103C400020F991E0922790FB82F98093E10186EEC2 +:103C50000E94821D882359F08091E10183FB222775 +:103C600020F991E0922790FB83F98093E10183EEA4 +:103C70000E94821D882359F08091E10184FB222754 +:103C800020F991E0922790FB84F98093E10185E38C +:103C90000E94821D882359F08091E10185FB222733 +:103CA00020F991E0922790FB85F98093E10181E36F +:103CB0000E94821D882359F08091E10186FB222712 +:103CC00020F991E0922790FB86F98093E10181E150 +:103CD0000E94821D882359F08091E10187FB2227F1 +:103CE00020F991E0922790FB87F98093E101809180 +:103CF000E1010E94F81E8091E10187FB882780F98D +:103D000080930D0187E20E94821DC82F8EE10E94E0 +:103D1000821D8111C2608FE10E94821D8111C460E9 +:103D200080E20E94821D8111C86081E20E94821D92 +:103D30008111C06182E20E94821D8111C06283E212 +:103D40000E94821D8111C06484E20E94821D88232A +:103D500011F0C06802C0CC2329F08C2F0E94EF1E06 +:103D60006C2F03C00E94EB1E682F70E080E090E093 +:103D7000CF910C94DB19CF9108956DEE7EEF80E02A +:103D800090E00E94232560E082E090E00E941525EB +:103D900060E083E090E00E94152560E084E090E020 +:103DA0000E94152560E085E090E00C94152580E0E8 +:103DB00090E00E940F2521E08D3E9E4F09F020E00B +:103DC000822F089582E090E00C940725682F82E00E +:103DD00090E00C94152583E090E00C940725682F63 +:103DE00083E090E00C94152584E090E00C94072586 +:103DF000682F84E090E00C9415258091D60180FF17 +:103E00000BC06091130185E0689FB0011124759586 +:103E10006795759567952BC081FF09C06091130167 +:103E200085E0689FB00111247595679520C082FFD9 +:103E300007C06091130185E0689FB001112417C08D +:103E40009091D7019923D1F060911201961788F7CC +:103E50002091130185E0289F90011124929FA001D9 +:103E6000939F500D112470E0CA010E94D92460383C +:103E7000710540F46115710539F002C065E070E02C +:103E8000862F08958FE7089581E008958091D601E7 +:103E900080FF08C06091110170E075956795759578 +:103EA000679521C081FF06C06091110170E0759592 +:103EB000679519C082FF04C06091110170E010C0C5 +:103EC0009091D7019923C1F0609110019617A0F746 +:103ED00080911101899FC001112470E00E94D924B2 +:103EE0006038710528F46115710521F0862F089559 +:103EF0008FE7089581E0089561E070E0F4CF803F9E +:103F000021F40E94FD1E819504C0813F29F40E9486 +:103F1000FD1E8093DA010895823F21F40E94FD1E68 +:103F2000819504C0833F29F40E94FD1E8093D9012E +:103F30000895893F19F40E94461F05C08A3F31F455 +:103F40000E94461F81958093DB0108958B3F21F4E9 +:103F50000E94461F819504C08C3F29F40E94461F91 +:103F60008093DC010895843F21F48091D801816021 +:103F700017C0853F21F48091D801826011C0863F2F +:103F800021F48091D80184600BC0873F21F4809197 +:103F9000D801886005C0883F31F48091D8018061E4 +:103FA0008093D80108958D3F21F48091D6018160DE +:103FB0000BC08E3F21F48091D601826005C08F3FF7 +:103FC00029F48091D60184608093D6010895803FC2 +:103FD00039F48091DA0187FF6CC01092DA0169C070 +:103FE000813F29F48091DA011816BCF362C09091E8 +:103FF000D901823F29F497FF5CC01092D90159C0C2 +:10400000833F19F41916CCF354C0893F41F48091D1 +:10401000DB0118160CF04DC01092DB014AC08A3F3C +:1040200029F48091DB0187FF44C0F6CF8B3F39F440 +:104030008091DC0187FF3DC01092DC013AC08C3FCB +:1040400029F48091DC011816BCF333C0843F21F4BD +:104050008091D8018E7F17C0853F21F48091D801CF +:104060008D7F11C0863F21F48091D8018B7F0BC0DA +:10407000873F21F48091D801877F05C0883F31F4C4 +:104080008091D8018F7E8093D80113C08D3F21F499 +:104090008091D6018E7F0BC08E3F21F48091D60196 +:1040A0008D7F05C08F3F29F48091D6018B7F80934F +:1040B000D6018091D90181110EC08091DA01811160 +:1040C0000AC08091DB01811106C08091DC01811161 +:1040D00002C01092D701089588ED91E00E94C010AF +:1040E0000E94D31C9093D5018093D40108951F930F +:1040F000CF93DF938091D4019091D5010E94DF1C72 +:10410000AC019091D701992321F02091140130E066 +:1041100006C0209115018AE0289F900111244217C2 +:10412000530708F486C08091D901C091DA01D0917B +:10413000DB011091DC01811107C0C11176C0D111E2 +:1041400074C0111172C075C09F3F19F09F5F9093AA +:10415000D701181624F40E94FD1E8093D901809186 +:10416000D90187FF05C00E94FD1E81958093D9016A +:104170001C1624F40E94FD1E8093DA018091DA015E +:1041800087FF05C00E94FD1E81958093DA01609132 +:10419000D901662339F1C091DA01CC2319F17727CF +:1041A00067FD7095872F972F0E94EA2323E333E35F +:1041B00043E35FE30E944E240E94B7236093D9013A +:1041C0006C2F772767FD7095872F972F0E94EA2322 +:1041D00023E333E343E35FE30E944E240E94B723CB +:1041E0006093DA011D1624F40E94461F8093DB01C0 +:1041F0008091DB0187FF05C00E94461F8195809357 +:10420000DB01111624F40E94461F8093DC0180918B +:10421000DC0187FF05C00E94461F81958093DC0169 +:10422000DF91CF911F910C946C209F3F09F08ECFAE +:1042300096CFDF91CF911F910895E8EDF1E085E0F1 +:10424000DF011D928A95E9F71092D7011092D601ED +:104250000895833081F128F4813059F08230D1F013 +:104260000895853009F449C0B8F1863009F456C084 +:10427000089580911501262F30E0280F311D2F3F22 +:10428000310524F4680F6093150108958FEF809332 +:104290001501089580911401262F30E0280F311D5B +:1042A0002F3F310524F4680F6093140108958FEFB8 +:1042B00080931401089580911301262F30E0280F78 +:1042C000311D2F3F310524F4680F609313010895C9 +:1042D0008FEF80931301089580911201262F30E013 +:1042E000280F311D2F3F310524F4680F6093120110 +:1042F00008958FEF80931201089580911101262F68 +:1043000030E0280F311D2F3F310524F4680F6093F2 +:10431000110108958FEF809311010895809110018C +:10432000262F30E0280F311D2F3F310524F4680F70 +:104330006093100108958FEF8093100108958330EA +:1043400011F128F4813049F0823091F008958530E0 +:1043500081F120F18630C1F108958091150168172F +:1043600020F4861B8093150108951092150108957D +:1043700080911401681720F4861B8093140108951E +:1043800010921401089580911301681720F4861B80 +:1043900080931301089510921301089580911201E2 +:1043A000681720F4861B8093120108951092120161 +:1043B000089580911101681720F4861B80931101E4 +:1043C000089510921101089580911001681720F44A +:1043D000861B8093100108951092100108950F9389 +:1043E0001F938D3109F46BC008F03FC08E3009F483 +:1043F0007DC0C0F4873009F46EC068F4863009F0DF +:10440000AFC08091CE01817F8E7F8093CE0181E00D +:104410008093DE01A6C0883009F458C08B3009F4BF +:104420009BC09EC0863109F497C078F4803109F4AE +:1044300070C0813109F094C00E941F1690910D0147 +:1044400081E0892780930D0187C0893109F484C0F8 +:104450008B3109F085C08091CE0181FB222720F9A4 +:1044600091E0922790FB81F94AC0853309F45BC043 +:1044700048F4873209F457C008F45AC0893209F465 +:1044800052C06EC0833438F48A3308F067C0883372 +:1044900009F462C065C0833409F445C0883409F06A +:1044A0005FC00E941F160FEF13ED20E30150104074 +:1044B0002040E1F700C000000E942E1D4DC00E9468 +:1044C00071230E94A9100E94A20946C00E94E21E08 +:1044D0000E94F41E41C09091CE01892F817090FFFF +:1044E00012C0917F9E7F9093CE013BC08091CE0100 +:1044F00082FB222720F991E0922790FB82F980939A +:10450000CE01992349F18091CE0181608093CE0143 +:1045100023C08091CE0183FB222720F991E09227CE +:1045200090FB83F9ECCF61E070E080E090E010C098 +:104530008D5141E050E060E070E08A019B0104C0D1 +:10454000000F111F221F331F8A95D2F7C901B8012E +:104550000E94DB190E941F1681E003C08953E9CF36 +:1045600080E01F910F91089580E0089580E0089504 +:10457000CF93C82F8091DE01813079F018F082301E +:10458000E9F187C0E0910E01F0910F018081813146 +:1045900069F0823209F07FC009C0E0910E01F0910C +:1045A0000F018081813111F0823261F48C2F0E94E1 +:1045B000B422811104C08C2F0E94EF211DC081E024 +:1045C00090E01AC08C2F0E94B622811114C0C43111 +:1045D00079F048F4CB3079F0C03109F060C082E066 +:1045E0008093DE0108C0C93219F0C83321F057C0EA +:1045F0001092DE0154C081E0817053C0C93289F14C +:1046000018F5C43171F1A8F4C73009F046C08AE04A +:104610008093150194E19093140193E0909313011A +:104620008093120188E08093110188E28093100149 +:1046300034C0CE51C63088F5EC2FF0E0E65DFE4F79 +:1046400080818093DD0129C0CE34E9F020F4CB34A1 +:1046500021F56AE013C0C13579F0C235F1F461E0AB +:104660000DC08091DD01882319F01092DD0115C085 +:1046700081E08093DE0115C061E006C08091DD011C +:104680000E9429210AC06AE08091DD010E949F21D9 +:1046900004C01092DE0180E004C081E002C080E02E +:1046A000ABCFCF910895E1E8F0E08081886080830E +:1046B0008081816080838FB7F89493E09093890024 +:1046C00090ED909388008FBF0895EFE6F0E0808131 +:1046D000826080830895EFE6F0E080818D7F8083A3 +:1046E0000895EFE6F0E0908182E0892780830895C5 +:1046F0001F920F920FB60F9211242F933F934F9357 +:104700005F936F937F938F939F93AF93BF93EF9339 +:10471000FF938091DF019091E00101969093E00179 +:104720008093DF01811103C082E00E94A209E09121 +:10473000E001E695E695F0E0E156F84FE4918091CE +:10474000DF018E1303C080E00E94A209FF91EF9168 +:10475000BF91AF919F918F917F916F915F914F9199 +:104760003F912F910F900FBE0F901F90189504D07E +:104770006894B1118DC0089570D088F09F5790F063 +:10478000B92F9927B751A0F0D1F0660F771F881F76 +:10479000991F1AF0BA95C9F712C0B13081F077D0DD +:1047A000B1E0089574C0672F782F8827B85F39F07B +:1047B000B93FCCF3869577956795B395D9F73EF4D5 +:1047C00090958095709561957F4F8F4F9F4F08957D +:1047D000E89409C097FB3EF490958095709561959B +:1047E0007F4F8F4F9F4F9923A9F0F92F96E9BB2751 +:1047F0009395F695879577956795B795F111F8CFCD +:10480000FAF4BB0F11F460FF1BC06F5F7F4F8F4F37 +:104810009F4F16C0882311F096E911C0772321F02D +:104820009EE8872F762F05C0662371F096E8862FC5 +:1048300070E060E02AF09A95660F771F881FDAF71C +:10484000880F9695879597F9089557FD9058440FCE +:10485000551F59F05F3F71F04795880F97FB991FDF +:1048600061F09F3F79F0879508951216130614069C +:10487000551FF2CF4695F1DF08C016161706180629 +:10488000991FF1CF86957105610508940895E89404 +:10489000BB2766277727CB0197F908950BD078C0FF +:1048A00069D028F06ED018F0952309F05AC05FC087 +:1048B0001124EECFCADFA0F3959FD1F3950F50E0FE +:1048C000551F629FF001729FBB27F00DB11D639FC2 +:1048D000AA27F00DB11DAA1F649F6627B00DA11D68 +:1048E000661F829F2227B00DA11D621F739FB00D0E +:1048F000A11D621F839FA00D611D221F749F33277E +:10490000A00D611D231F849F600D211D822F762F16 +:104910006A2F11249F5750408AF0E1F088234AF013 +:10492000EE0FFF1FBB1F661F771F881F915050405F +:10493000A9F79E3F510570F014C0AACF5F3FECF37A +:10494000983EDCF3869577956795B795F795E7954B +:104950009F5FC1F7FE2B880F911D9695879597F95C +:10496000089597F99F6780E870E060E008959FEFF1 +:1049700080EC089500240A941616170618060906F6 +:10498000089500240A9412161306140605060895C5 +:10499000092E0394000C11F4882352F0BB0F40F44D +:1049A000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D +:1049B000089597FB072E16F4009407D077FD09D0D1 +:1049C0000E94F32407FC05D03EF4909581959F4FFB +:1049D0000895709561957F4F0895EE0FFF1F059024 +:1049E000F491E02D0994AA1BBB1B51E107C0AA1F3B +:1049F000BB1FA617B70710F0A61BB70B881F991F80 +:104A00005A95A9F780959095BC01CD010895F99923 +:104A1000FECF92BD81BDF89A992780B50895A8E18F +:104A2000B0E042E050E00C942A25262FF999FECF01 +:104A30001FBA92BD81BD20BD0FB6F894FA9AF99ABB +:104A40000FBE019608950E941525272F0C94162558 +:104A5000DC01CB01FC01F999FECF06C0F2BDE1BD3E +:104A6000F89A319600B40D9241505040B8F708952D +:044A7000F894FFCFE8 +:104A74002002A409320A0F0ADB09A7090101BC01BB +:104A840028080A03140A3F4D363960071307DD0668 +:104A9400A4063706500669068206010203040506C9 +:044AA40007080900F6 :00000001FF -- cgit v1.2.3-24-g4f1b From 20a3229faf12d964403becf210bf7ba280ca2e49 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Sun, 27 Mar 2016 02:22:41 +0000 Subject: Add manuneo layout --- .../keymaps/german-manuneo/compile_keymap.py | 418 +++++++ .../ergodox_ez/keymaps/german-manuneo/keymap.c | 1278 ++++++++++++++++++++ .../ergodox_ez/keymaps/german-manuneo/keymap.md | 222 ++++ 3 files changed, 1918 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py create mode 100644 keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py new file mode 100644 index 000000000..3bbb9340b --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -0,0 +1,418 @@ +# encoding: utf-8 +from __future__ import division +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals + +import os +import io +import re +import sys +import json +import unicodedata +import collections + +PY2 = sys.version_info.major == 2 + +if PY2: + chr = unichr + + +ONELINE_COMMENT_RE = re.compile(r"^\s*//.*$", re.MULTILINE) +INLINE_COMMENT_RE = re.compile( + r"([\,\"\[\]\{\}\d])\s+//\s[^\"\]\}\{\[]*$", re.MULTILINE +) +TRAILING_COMMA_RE = re.compile( + r",$\s*([\]\}])", re.MULTILINE +) + +def loads(raw_data): + if isinstance(raw_data, bytes): + raw_data = raw_data.decode('utf-8') + raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) + raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) + raw_data = TRAILING_COMMA_RE.sub(r"\1", raw_data) + return json.loads(raw_data) + +with io.open("keymap.md", encoding="utf-8") as fh: + lines = fh.readlines() + +SECTIONS = [ + 'layout_config', + 'layers', +] + +config = { + "includes_basedir": "quantum/", + "keymaps_includes": [ + "keymap_common.h", + ], + 'filler': "-+.':x", + 'separator': "|", + 'default_key_prefix': ["KC_"], + 'unicode_macros': [], + 'macro_ids': ['UMS'], + 'layers': collections.OrderedDict(), + 'layer_lines': collections.OrderedDict(), +} + +section_start_index = -1 +current_section = None +current_layer_name = None +current_layer_lines = [] +config_data = [] + +def end_section(): + global section_start_index + global current_layer_lines + section_start_index = -1 + if current_section == 'layout_config': + config.update(loads("".join( + config_data + ))) + elif current_section == 'layers': + config['layer_lines'][current_layer_name] = current_layer_lines + current_layer_lines = [] + + +for i, line in enumerate(lines): + if line.startswith("# "): + section = line[2:].strip().replace(" ", "_").lower() + if section in SECTIONS: + current_section = section + elif line.startswith("## "): + sub_section = line[3:] + if current_section == 'layers': + current_layer_name = sub_section.strip() + # TODO: parse descriptio + config['layers'][current_layer_name] = "" + elif line.startswith(" "): + if section_start_index < 0: + section_start_index = i + if current_section == 'layout_config': + config_data.append(line) + elif current_section == 'layers': + if not line.strip(): + continue + current_layer_lines.append(line) + elif section_start_index > 0: + end_section() + +end_section() + +KEYDEF_RE = re.compile(r"#define ((?:{})(?:\w+))".format( + "|".join(config['key_prefixes']) +)) +IF0_RE = re.compile(r"^#if 0$.*?#endif", re.MULTILINE | re.DOTALL) +COMMENT_RE = re.compile(r"/\*.*?\*/", re.MULTILINE | re.DOTALL) +ENUM_RE = re.compile(r"(enum\s\w+\s\{.*?\};)", re.MULTILINE | re.DOTALL) +ENUM_KEY_RE = re.compile(r"({}\w+)".format( + "|".join(config['key_prefixes']) +)) + +def parse_keydefs(path): + with io.open(path, encoding="utf-8") as fh: + data = fh.read() + data, _ = COMMENT_RE.subn("", data) + data, _ = IF0_RE.subn("", data) + + for match in KEYDEF_RE.finditer(data): + yield match.groups()[0] + + for enum_match in ENUM_RE.finditer(data): + enum = enum_match.groups()[0] + for key_match in ENUM_KEY_RE.finditer(enum): + yield key_match.groups()[0] + +valid_keycodes = set() +basepath = os.path.abspath(os.path.join( + os.path.dirname(__file__), "..", "..", "..", ".." +)) + +valid_keycodes.update(parse_keydefs(os.path.join( + basepath, "tmk_core", "common", "keycode.h" +))) + +for include_path in config['keymaps_includes']: + path = os.path.join(basepath, config['includes_dir'], include_path) + path = path.replace("/", os.sep) + if os.path.exists(path): + valid_keycodes.update(parse_keydefs(path)) + +LAYER_CHANGE_RE = re.compile(r"(DF|TG|MO)\(\d+\)") +MACRO_RE = re.compile(r"M\(\w+\)") +UNICODE_RE = re.compile(r"U[0-9A-F]{4}") +NON_CODE = re.compile(r"^[^A-Z0-9_]$") + + +def UNICODE_MACRO(config, c): + # TODO: don't use macro for codepoints below 0x2000 + macro_id = "UC_" + ( + unicodedata.name(c) + .replace(" ", "_") + .replace("-", "_") + .replace("SUPERSCRIPT_", "SUP_") + .replace("SUBSCRIPT_", "SUB_") + .replace("GREEK_SMALL_LETTER", "GR_LC") + .replace("GREEK_CAPITAL_LETTER", "GR_UC") + .replace("VULGAR_FRACTION_", "FR_") + ) + if macro_id not in config['macro_ids']: + config['macro_ids'].append(macro_id) + code = "{:04X}".format(ord(c)) + if (macro_id, code) not in config['unicode_macros']: + config['unicode_macros'].append((macro_id, code)) + return "M({})".format(macro_id) + + +def MACRO(config, code): + macro_id = code[2:-1] + if macro_id not in config['macro_ids']: + config['macro_ids'].append(macro_id) + return code + +# TODO: presumably we can have a macro or function which takes +# the hex code and produces much smaller code. + +WIN_UNICODE_MACRO_TEMPLATE = """ +case {0}: + return MACRODOWN( + D(LALT), T(KP_PLUS), {1}, U(LALT), END + ); +""" + +LINUX_UNICODE_MACRO_TEMPLATE = """ +case {0}: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), {1}, T(KP_ENTER), END + ); +""" + +def macro_cases(config, mode): + if mode == 'win': + template = WIN_UNICODE_MACRO_TEMPLATE + elif mode == 'linux': + template = LINUX_UNICODE_MACRO_TEMPLATE + else: + raise ValueError("Invalid mode: ", mode) + template = template.strip() + + for macro_id, unimacro_chars in config['unicode_macros']: + unimacro_keys = ", ".join( + "T({})".format( + "KP_" + char if char.isdigit() else char + ) for char in unimacro_chars + ) + yield template.format(macro_id, unimacro_keys) + + +MACROCODE = """ +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 + +static uint16_t unicode_mode = UC_MODE_WIN; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ + if (!record->event.pressed) {{ + return MACRO_NONE; + }} + // MACRODOWN only works in this function + switch(id) {{ + case UMS: + unicode_mode = (unicode_mode + 1) % 2; + break; + {macro_cases} + default: + break; + }} + if (unicode_mode == UC_MODE_WIN) {{ + switch(id) {{ + {win_macro_cases} + default: + break; + }} + }} else if (unicode_mode == UC_MODE_LINUX) {{ + switch(id) {{ + {linux_macro_cases} + default: + break; + }} + }} + return MACRO_NONE; +}}; +""" + + +def iter_keycodes(layer_lines, config): + filler_re = re.compile("[" + + config['filler'] + " " + + "]") + + all_codes = [] + for line in layer_lines: + line, _ = filler_re.subn("", line.strip()) + if not line: + continue + codes = line.split(config['separator']) + all_codes.extend(codes[1:-1]) + + key_groups = {} + for group_index, key_indexes in enumerate(config['keymap_indexes']): + for key_index in key_indexes: + key_groups[key_index] = group_index + + keymap_indexes = sum(config['keymap_indexes'], []) + assert len(all_codes) == len(keymap_indexes) + code_index_pairs = zip(all_codes, keymap_indexes) + prev_index = None + for i, (code, key_index) in enumerate(code_index_pairs): + code = code.strip() + layer_match = LAYER_CHANGE_RE.match(code) + unicode_match = UNICODE_RE.match(code) + noncode_match = NON_CODE.match(code) + macro_match = MACRO_RE.match(code) + + ws = "\n" if key_groups[key_index] != prev_index else "" + prev_index = key_groups[key_index] + + try: + if not code: + code = 'KC_TRNS' + elif layer_match: + pass + elif macro_match: + code = MACRO(config, code) + elif unicode_match: + hex_code = code[1:] + code = UNICODE_MACRO(config, chr(int(hex_code, 16))) + elif noncode_match: + code = UNICODE_MACRO(config, code) + elif "_" in code: + assert code in valid_keycodes, "unknown code '{}'".format(code) + else: + for prefix in config['key_prefixes']: + if prefix + code in valid_keycodes: + code = prefix + code + break + assert code in valid_keycodes, "unknown code '{}'".format(code) + yield code, key_index, ws + except AssertionError: + print("Error processing code", repr(code).encode("utf-8")) + raise + +USERCODE = """ +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; +""" + +def parse_keymaps(config): + keymaps = {} + layer_line_items = config['layer_lines'].items() + for i, (layer_name, layer_lines) in enumerate(layer_line_items): + print("parseing layer", layer_name) + keymap = {} + for code, key_index, ws in iter_keycodes(layer_lines, config): + keymap[key_index] = (code, ws) + keymaps[layer_name] = [v for k, v in sorted(keymap.items())] + return keymaps + + +def iter_keymap_lines(config, keymaps): + for include_path in config['keymaps_includes']: + yield '#include "{}"\n'.format(include_path) + + yield "\n" + + layer_items = config['layers'].items() + for i, (layer_name, description) in enumerate(layer_items): + yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) + + for i, macro_id in enumerate(config['macro_ids']): + yield "#define {} {}\n".format(macro_id, i) + + yield "\n" + + yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" + + layer_line_items = config['layer_lines'].items() + last_index = config['keymap_indexes'][-1] + for i, (layer_name, layer_lines) in enumerate(layer_line_items): + keymap = keymaps[layer_name] + yield "/*\n" + for line in layer_lines: + yield " *{}".format(line) + yield "*/\n" + + yield "[L{0}] = KEYMAP(\n".format(i) + + for key_index, (code, ws) in enumerate(keymap): + yield "\t{}".format(code) + if key_index < len(keymap) - 1: + yield "," + yield ws + yield "),\n" + + yield "};\n\n" + + yield "const uint16_t PROGMEM fn_actions[] = {\n" + yield "};\n" + + yield MACROCODE.format( + macro_cases="", + win_macro_cases="\n".join(macro_cases(config, mode='win')), + linux_macro_cases="\n".join(macro_cases(config, mode='linux')), + ) + + yield USERCODE + + +with io.open("keymap.c", mode="w", encoding="utf-8") as fh: + for data in iter_keymap_lines(config, parse_keymaps(config)): + fh.write(data) + + +# print("\n".join(sorted(valid_keycodes))) +# print(json.dumps(config, indent=4)) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c new file mode 100644 index 000000000..400ad6fcf --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c @@ -0,0 +1,1278 @@ +#include "ergodox_ez.h" +#include "action_layer.h" +#include "keymap_common.h" +#include "keymap_extras/keymap_german.h" + +#define L0 0 // Layer 0 +#define L1 1 // Layer 1 +#define L2 2 // Layer 2 +#define L3 3 // Layer 3 +#define L4 4 // Layer 4 +#define L5 5 // Layer 5 +#define L6 6 // Layer 6 +#define L7 7 // Layer 7 +#define L8 8 // Layer 8 +#define UMS 0 +#define UC_UPWARDS_ARROW 1 +#define UC_LEFTWARDS_ARROW 2 +#define UC_DOWNWARDS_ARROW 3 +#define UC_RIGHTWARDS_ARROW 4 +#define UC_SUP_ONE 5 +#define UC_SUP_TWO 6 +#define UC_SUP_THREE 7 +#define UC_SUP_FOUR 8 +#define UC_SUP_FIVE 9 +#define UC_FOR_ALL 10 +#define UC_SUP_SIX 11 +#define UC_SUP_SEVEN 12 +#define UC_SUP_EIGHT 13 +#define UC_SUP_NINE 14 +#define UC_SUP_ZERO 15 +#define UC_MULTIPLICATION_SIGN 16 +#define UC_FR_ONE_HALF 17 +#define UC_DIVISION_SIGN 18 +#define UC_FR_ONE_QUARTER 19 +#define UC_FR_ONE_FIFTH 20 +#define UC_FR_ONE_SIXTH 21 +#define UC_FR_ONE_EIGHTH 22 +#define UC_PLUS_MINUS_SIGN 23 +#define UC_EMPTY_SET 24 +#define UC_INFINITY 25 +#define UC_SUP_LATIN_SMALL_LETTER_N 26 +#define UC_THERE_EXISTS 27 +#define UC_ELEMENT_OF 28 +#define UC_FR_ONE_THIRD 29 +#define UC_NOT_EQUAL_TO 30 +#define UC_FR_TWO_THIRDS 31 +#define UC_FR_THREE_QUARTERS 32 +#define UC_ASYMPTOTICALLY_EQUAL_TO 33 +#define UC_THERE_DOES_NOT_EXIST 34 +#define UC_NOT_AN_ELEMENT_OF 35 +#define UC_SUB_ONE 36 +#define UC_SUB_TWO 37 +#define UC_SUB_THREE 38 +#define UC_SUB_FOUR 39 +#define UC_SUB_FIVE 40 +#define UC_SUB_SIX 41 +#define UC_SUB_SEVEN 42 +#define UC_SUB_EIGHT 43 +#define UC_SUB_NINE 44 +#define UC_SUB_ZERO 45 +#define UC_GR_LC_CHI 46 +#define UC_GR_LC_PI 47 +#define UC_GR_LC_PHI 48 +#define UC_GR_LC_OMEGA 49 +#define UC_GR_LC_GAMMA 50 +#define UC_GR_LC_ETA 51 +#define UC_GR_LC_XI 52 +#define UC_GR_LC_KAPPA 53 +#define UC_GR_LC_LAMDA 54 +#define UC_GR_LC_ZETA 55 +#define UC_GR_LC_UPSILON 56 +#define UC_GR_LC_IOTA 57 +#define UC_GR_LC_ALPHA 58 +#define UC_GR_LC_EPSILON 59 +#define UC_GR_LC_OMICRON 60 +#define UC_GR_LC_SIGMA 61 +#define UC_GR_LC_NU 62 +#define UC_GR_LC_RHO 63 +#define UC_GR_LC_TAU 64 +#define UC_GR_LC_DELTA 65 +#define UC_GR_LC_FINAL_SIGMA 66 +#define UC_GR_LC_THETA 67 +#define UC_GR_LC_BETA 68 +#define UC_GR_LC_MU 69 +#define UC_GR_LC_PSI 70 +#define UC_GR_UC_CHI 71 +#define UC_GR_UC_PI 72 +#define UC_GR_UC_PHI 73 +#define UC_GR_UC_OMEGA 74 +#define UC_GR_UC_GAMMA 75 +#define UC_GR_UC_ETA 76 +#define UC_GR_UC_XI 77 +#define UC_GR_UC_KAPPA 78 +#define UC_GR_UC_LAMDA 79 +#define UC_GR_UC_ZETA 80 +#define UC_GR_UC_UPSILON 81 +#define UC_GR_UC_IOTA 82 +#define UC_GR_UC_ALPHA 83 +#define UC_GR_UC_EPSILON 84 +#define UC_GR_UC_OMICRON 85 +#define UC_GR_UC_SIGMA 86 +#define UC_GR_UC_NU 87 +#define UC_GR_UC_RHO 88 +#define UC_GR_UC_TAU 89 +#define UC_GR_UC_DELTA 90 +#define UC_GR_UC_THETA 91 +#define UC_GR_UC_BETA 92 +#define UC_GR_UC_MU 93 +#define UC_GR_UC_PSI 94 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * .-------------------------------------. .-------------------------------------. + * |MO(5)| 1 | 2 | 3 | 4 | 5 | ACUT | ! GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * |MO(4)| X | P | F | W | G | HOME | !TG(2) | H | J | K | L | Q | Z | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * |MO(1)| U | I | A | E | O |------! !------! S | N | R | T | D | SS | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * |MO(3)| UE | OE | AE | C | V | END | ! TAB | B | M |COMM| DOT| UP | Y | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + * '------------------------'.-------------. .-------------.'------------------------' + * | INS |TG(2) | !M(UMS)| DELT | + * .------+------+------! !------+------+------. + * ! ! | APP | ! PGUP | ! ! + * ! ! !------! !------! ! ! + * | BSPC | LSFT | ESC | ! PGDN |ENTER |SPACE | + * '--------------------' '--------------------' +*/ +[L0] = KEYMAP( + MO(5), + DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, MO(4), + DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, MO(1), + DE_U, DE_I, DE_A, DE_E, DE_O, MO(3), + DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, KC_TRNS, + KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, KC_INS, + TG(2), KC_APP, + KC_BSPC, + KC_LSFT, KC_ESC, DE_GRV, + DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, TG(2), + DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, DE_S, + DE_N, DE_R, DE_T, DE_D, DE_SS, KC_TAB, + DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, KC_LALT, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, M(UMS), + KC_DELT, KC_PGUP, + KC_PGDN, + KC_ENTER, KC_SPACE), +/* + * .-------------------------------------. .-------------------------------------. + * | |EXLM|DQOT|PARA| | | | ! | | | | |RING| | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | |ASTR|PIPE|SLSH|LCBR|RCBR| | ! |HASH|LESS|MORE| |DQOT| | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | |UNDS|MINS|AMPR|LBRC|RBRC|------! !------!DLR |LPRN|RPRN|TILD|QUOT|QST | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | |PLUS| EQL| | | | ! |BSLS|PERC|SCLN|COLN| ↑ | | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | ← | ↓ | → | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L1] = KEYMAP( + KC_TRNS, + DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, KC_TRNS, + DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, KC_TRNS, + KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, KC_TRNS, + DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, DE_DLR, + DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, KC_TRNS, + DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS), +/* + * .-------------------------------------. .-------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F11 | ! F12 | F6 | F7 | F8 | F9 |F10 |PEQL | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | | | | | | | ! | | P7 | P8 | P9 |PAST|PSLS | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | |------! !------! | P4 | P5 | P6 |PMNS|PMNS | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | | | ! NLCK | | P1 | P2 | P3 |PPLS|PPLS | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L2] = KEYMAP( + KC_TRNS, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_F12, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL, KC_TRNS, + KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS, KC_TRNS, + KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS, KC_NLCK, + KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS, KC_P0, + KC_PCMM, KC_PDOT, KC_PENT, KC_PENT, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS), +/* + * .-------------------------------------. .-------------------------------------. + * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | ! | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | × | ½ | ÷ | ¼ | ⅕ | | ! | ⅙ | | ⅛ | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | ± | AT |EURO| ∅ |------! !------! ∞ | ⁿ | ∃ | ∈ | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | ! |EXLM| | ∄ | ∉ | | | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L3] = KEYMAP( + KC_TRNS, + M(UC_SUP_ONE), M(UC_SUP_TWO), M(UC_SUP_THREE), M(UC_SUP_FOUR), M(UC_SUP_FIVE), M(UC_FOR_ALL), KC_TRNS, + M(UC_MULTIPLICATION_SIGN), M(UC_FR_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_FR_ONE_QUARTER), M(UC_FR_ONE_FIFTH), KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET), KC_TRNS, + M(UC_FR_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_FR_TWO_THIRDS), M(UC_FR_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), 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, + M(UC_SUP_SIX), M(UC_SUP_SEVEN), M(UC_SUP_EIGHT), M(UC_SUP_NINE), M(UC_SUP_ZERO), KC_TRNS, KC_TRNS, + M(UC_FR_ONE_SIXTH), KC_TRNS, M(UC_FR_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_INFINITY), + M(UC_SUP_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS, KC_TRNS, + DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), 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), +/* + * .-------------------------------------. .-------------------------------------. + * | | ₁ | ₂ | ₃ | ₄ | ₅ | | ! | ₆ | ₇ | ₈ | ₉ | ₀ | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | χ | π | φ | ω | γ | | ! | η | ξ | κ | λ | | ζ | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | υ | ι | α | ε | ο |------! !------! σ | ν | ρ | τ | δ | ς | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | θ | | | | | ! | β | μ | | | | ψ | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L4] = KEYMAP( + KC_TRNS, + M(UC_SUB_ONE), M(UC_SUB_TWO), M(UC_SUB_THREE), M(UC_SUB_FOUR), M(UC_SUB_FIVE), KC_TRNS, KC_TRNS, + M(UC_GR_LC_CHI), M(UC_GR_LC_PI), M(UC_GR_LC_PHI), M(UC_GR_LC_OMEGA), M(UC_GR_LC_GAMMA), KC_TRNS, KC_TRNS, + M(UC_GR_LC_UPSILON), M(UC_GR_LC_IOTA), M(UC_GR_LC_ALPHA), M(UC_GR_LC_EPSILON), M(UC_GR_LC_OMICRON), KC_TRNS, + KC_TRNS, M(UC_GR_LC_THETA), 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, + M(UC_SUB_SIX), M(UC_SUB_SEVEN), M(UC_SUB_EIGHT), M(UC_SUB_NINE), M(UC_SUB_ZERO), KC_TRNS, KC_TRNS, + M(UC_GR_LC_ETA), M(UC_GR_LC_XI), M(UC_GR_LC_KAPPA), M(UC_GR_LC_LAMDA), KC_TRNS, M(UC_GR_LC_ZETA), M(UC_GR_LC_SIGMA), + M(UC_GR_LC_NU), M(UC_GR_LC_RHO), M(UC_GR_LC_TAU), M(UC_GR_LC_DELTA), M(UC_GR_LC_FINAL_SIGMA), KC_TRNS, + M(UC_GR_LC_BETA), M(UC_GR_LC_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GR_LC_PSI), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS), +/* + * .-------------------------------------. .-------------------------------------. + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | Χ | Π | Φ | Ω | Γ | | ! | Η | Ξ | Κ | Λ | | Ζ | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | Υ | Ι | Α | Ε | Ο |------! !------! Σ | Ν | Ρ | Τ | Δ | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | Θ | | | | | ! | Β | Μ | | | | Ψ | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L5] = KEYMAP( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(UC_GR_UC_CHI), M(UC_GR_UC_PI), M(UC_GR_UC_PHI), M(UC_GR_UC_OMEGA), M(UC_GR_UC_GAMMA), KC_TRNS, KC_TRNS, + M(UC_GR_UC_UPSILON), M(UC_GR_UC_IOTA), M(UC_GR_UC_ALPHA), M(UC_GR_UC_EPSILON), M(UC_GR_UC_OMICRON), KC_TRNS, + KC_TRNS, M(UC_GR_UC_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(UC_GR_UC_ETA), M(UC_GR_UC_XI), M(UC_GR_UC_KAPPA), M(UC_GR_UC_LAMDA), KC_TRNS, M(UC_GR_UC_ZETA), M(UC_GR_UC_SIGMA), + M(UC_GR_UC_NU), M(UC_GR_UC_RHO), M(UC_GR_UC_TAU), M(UC_GR_UC_DELTA), KC_TRNS, KC_TRNS, + M(UC_GR_UC_BETA), M(UC_GR_UC_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GR_UC_PSI), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS), +/* + * .-------------------------------------. .-------------------------------------. + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | |------! !------! | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L6] = KEYMAP( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_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), +/* + * .-------------------------------------. .-------------------------------------. + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | |------! !------! | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L7] = KEYMAP( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_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), +/* + * .-------------------------------------. .-------------------------------------. + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | |------! !------! | | | | | | + * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + * | | | | | | | | ! | | | | | | | + * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------'.-------------. .-------------.'------------------------' + * | | | ! | | + * .------+------+------! !------+------+------. + * ! ! | | ! | ! ! + * ! ! !------! !------! ! ! + * | | | | ! | | | + * '--------------------' '--------------------' +*/ +[L8] = KEYMAP( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_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), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 + +static uint16_t unicode_mode = UC_MODE_WIN; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + if (!record->event.pressed) { + return MACRO_NONE; + } + // MACRODOWN only works in this function + switch(id) { + case UMS: + unicode_mode = (unicode_mode + 1) % 2; + break; + + default: + break; + } + if (unicode_mode == UC_MODE_WIN) { + switch(id) { + case UC_UPWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_1), U(LALT), END + ); +case UC_LEFTWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_0), U(LALT), END + ); +case UC_DOWNWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_3), U(LALT), END + ); +case UC_RIGHTWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_2), U(LALT), END + ); +case UC_SUP_ONE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_9), U(LALT), END + ); +case UC_SUP_TWO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_2), U(LALT), END + ); +case UC_SUP_THREE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_3), U(LALT), END + ); +case UC_SUP_FOUR: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_4), U(LALT), END + ); +case UC_SUP_FIVE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_5), U(LALT), END + ); +case UC_FOR_ALL: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_0), U(LALT), END + ); +case UC_SUP_SIX: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_6), U(LALT), END + ); +case UC_SUP_SEVEN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_7), U(LALT), END + ); +case UC_SUP_EIGHT: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_8), U(LALT), END + ); +case UC_SUP_NINE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_9), U(LALT), END + ); +case UC_SUP_ZERO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_0), U(LALT), END + ); +case UC_MULTIPLICATION_SIGN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(D), T(KP_7), U(LALT), END + ); +case UC_FR_ONE_HALF: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(D), U(LALT), END + ); +case UC_DIVISION_SIGN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(F), T(KP_7), U(LALT), END + ); +case UC_FR_ONE_QUARTER: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(C), U(LALT), END + ); +case UC_FR_ONE_FIFTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_5), U(LALT), END + ); +case UC_FR_ONE_SIXTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_9), U(LALT), END + ); +case UC_FR_ONE_EIGHTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(B), U(LALT), END + ); +case UC_PLUS_MINUS_SIGN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_1), U(LALT), END + ); +case UC_EMPTY_SET: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_5), U(LALT), END + ); +case UC_INFINITY: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_1), T(E), U(LALT), END + ); +case UC_SUP_LATIN_SMALL_LETTER_N: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(F), U(LALT), END + ); +case UC_THERE_EXISTS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_3), U(LALT), END + ); +case UC_ELEMENT_OF: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_8), U(LALT), END + ); +case UC_FR_ONE_THIRD: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_3), U(LALT), END + ); +case UC_NOT_EQUAL_TO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_6), T(KP_0), U(LALT), END + ); +case UC_FR_TWO_THIRDS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_4), U(LALT), END + ); +case UC_FR_THREE_QUARTERS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(E), U(LALT), END + ); +case UC_ASYMPTOTICALLY_EQUAL_TO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_4), T(KP_3), U(LALT), END + ); +case UC_THERE_DOES_NOT_EXIST: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_4), U(LALT), END + ); +case UC_NOT_AN_ELEMENT_OF: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_9), U(LALT), END + ); +case UC_SUB_ONE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_1), U(LALT), END + ); +case UC_SUB_TWO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_2), U(LALT), END + ); +case UC_SUB_THREE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_3), U(LALT), END + ); +case UC_SUB_FOUR: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_4), U(LALT), END + ); +case UC_SUB_FIVE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_5), U(LALT), END + ); +case UC_SUB_SIX: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_6), U(LALT), END + ); +case UC_SUB_SEVEN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_7), U(LALT), END + ); +case UC_SUB_EIGHT: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_8), U(LALT), END + ); +case UC_SUB_NINE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_9), U(LALT), END + ); +case UC_SUB_ZERO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_0), U(LALT), END + ); +case UC_GR_LC_CHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_7), U(LALT), END + ); +case UC_GR_LC_PI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_0), U(LALT), END + ); +case UC_GR_LC_PHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_6), U(LALT), END + ); +case UC_GR_LC_OMEGA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_9), U(LALT), END + ); +case UC_GR_LC_GAMMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_3), U(LALT), END + ); +case UC_GR_LC_ETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_7), U(LALT), END + ); +case UC_GR_LC_XI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(E), U(LALT), END + ); +case UC_GR_LC_KAPPA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(A), U(LALT), END + ); +case UC_GR_LC_LAMDA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(B), U(LALT), END + ); +case UC_GR_LC_ZETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_6), U(LALT), END + ); +case UC_GR_LC_UPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_5), U(LALT), END + ); +case UC_GR_LC_IOTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_9), U(LALT), END + ); +case UC_GR_LC_ALPHA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_1), U(LALT), END + ); +case UC_GR_LC_EPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_5), U(LALT), END + ); +case UC_GR_LC_OMICRON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(F), U(LALT), END + ); +case UC_GR_LC_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_3), U(LALT), END + ); +case UC_GR_LC_NU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(D), U(LALT), END + ); +case UC_GR_LC_RHO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_1), U(LALT), END + ); +case UC_GR_LC_TAU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_4), U(LALT), END + ); +case UC_GR_LC_DELTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_4), U(LALT), END + ); +case UC_GR_LC_FINAL_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_2), U(LALT), END + ); +case UC_GR_LC_THETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_8), U(LALT), END + ); +case UC_GR_LC_BETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_2), U(LALT), END + ); +case UC_GR_LC_MU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(C), U(LALT), END + ); +case UC_GR_LC_PSI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_8), U(LALT), END + ); +case UC_GR_UC_CHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_7), U(LALT), END + ); +case UC_GR_UC_PI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_0), U(LALT), END + ); +case UC_GR_UC_PHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_6), U(LALT), END + ); +case UC_GR_UC_OMEGA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_9), U(LALT), END + ); +case UC_GR_UC_GAMMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_3), U(LALT), END + ); +case UC_GR_UC_ETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_7), U(LALT), END + ); +case UC_GR_UC_XI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(E), U(LALT), END + ); +case UC_GR_UC_KAPPA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(A), U(LALT), END + ); +case UC_GR_UC_LAMDA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(B), U(LALT), END + ); +case UC_GR_UC_ZETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_6), U(LALT), END + ); +case UC_GR_UC_UPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_5), U(LALT), END + ); +case UC_GR_UC_IOTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_9), U(LALT), END + ); +case UC_GR_UC_ALPHA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_1), U(LALT), END + ); +case UC_GR_UC_EPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_5), U(LALT), END + ); +case UC_GR_UC_OMICRON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(F), U(LALT), END + ); +case UC_GR_UC_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_3), U(LALT), END + ); +case UC_GR_UC_NU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(D), U(LALT), END + ); +case UC_GR_UC_RHO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_1), U(LALT), END + ); +case UC_GR_UC_TAU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_4), U(LALT), END + ); +case UC_GR_UC_DELTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_4), U(LALT), END + ); +case UC_GR_UC_THETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_8), U(LALT), END + ); +case UC_GR_UC_BETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_2), U(LALT), END + ); +case UC_GR_UC_MU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(C), U(LALT), END + ); +case UC_GR_UC_PSI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_8), U(LALT), END + ); + default: + break; + } + } else if (unicode_mode == UC_MODE_LINUX) { + switch(id) { + case UC_UPWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_1), T(KP_ENTER), END + ); +case UC_LEFTWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_0), T(KP_ENTER), END + ); +case UC_DOWNWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_3), T(KP_ENTER), END + ); +case UC_RIGHTWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_2), T(KP_ENTER), END + ); +case UC_SUP_ONE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_9), T(KP_ENTER), END + ); +case UC_SUP_TWO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_2), T(KP_ENTER), END + ); +case UC_SUP_THREE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_3), T(KP_ENTER), END + ); +case UC_SUP_FOUR: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_4), T(KP_ENTER), END + ); +case UC_SUP_FIVE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_5), T(KP_ENTER), END + ); +case UC_FOR_ALL: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_0), T(KP_ENTER), END + ); +case UC_SUP_SIX: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_6), T(KP_ENTER), END + ); +case UC_SUP_SEVEN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_7), T(KP_ENTER), END + ); +case UC_SUP_EIGHT: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_8), T(KP_ENTER), END + ); +case UC_SUP_NINE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_9), T(KP_ENTER), END + ); +case UC_SUP_ZERO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_0), T(KP_ENTER), END + ); +case UC_MULTIPLICATION_SIGN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(D), T(KP_7), T(KP_ENTER), END + ); +case UC_FR_ONE_HALF: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(D), T(KP_ENTER), END + ); +case UC_DIVISION_SIGN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(F), T(KP_7), T(KP_ENTER), END + ); +case UC_FR_ONE_QUARTER: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(C), T(KP_ENTER), END + ); +case UC_FR_ONE_FIFTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_5), T(KP_ENTER), END + ); +case UC_FR_ONE_SIXTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_9), T(KP_ENTER), END + ); +case UC_FR_ONE_EIGHTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(B), T(KP_ENTER), END + ); +case UC_PLUS_MINUS_SIGN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_1), T(KP_ENTER), END + ); +case UC_EMPTY_SET: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_5), T(KP_ENTER), END + ); +case UC_INFINITY: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_1), T(E), T(KP_ENTER), END + ); +case UC_SUP_LATIN_SMALL_LETTER_N: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(F), T(KP_ENTER), END + ); +case UC_THERE_EXISTS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_3), T(KP_ENTER), END + ); +case UC_ELEMENT_OF: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_8), T(KP_ENTER), END + ); +case UC_FR_ONE_THIRD: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_3), T(KP_ENTER), END + ); +case UC_NOT_EQUAL_TO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_6), T(KP_0), T(KP_ENTER), END + ); +case UC_FR_TWO_THIRDS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_4), T(KP_ENTER), END + ); +case UC_FR_THREE_QUARTERS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(E), T(KP_ENTER), END + ); +case UC_ASYMPTOTICALLY_EQUAL_TO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_4), T(KP_3), T(KP_ENTER), END + ); +case UC_THERE_DOES_NOT_EXIST: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_4), T(KP_ENTER), END + ); +case UC_NOT_AN_ELEMENT_OF: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_9), T(KP_ENTER), END + ); +case UC_SUB_ONE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_1), T(KP_ENTER), END + ); +case UC_SUB_TWO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_2), T(KP_ENTER), END + ); +case UC_SUB_THREE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_3), T(KP_ENTER), END + ); +case UC_SUB_FOUR: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_4), T(KP_ENTER), END + ); +case UC_SUB_FIVE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_5), T(KP_ENTER), END + ); +case UC_SUB_SIX: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_6), T(KP_ENTER), END + ); +case UC_SUB_SEVEN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_7), T(KP_ENTER), END + ); +case UC_SUB_EIGHT: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_8), T(KP_ENTER), END + ); +case UC_SUB_NINE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_9), T(KP_ENTER), END + ); +case UC_SUB_ZERO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_0), T(KP_ENTER), END + ); +case UC_GR_LC_CHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_7), T(KP_ENTER), END + ); +case UC_GR_LC_PI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_0), T(KP_ENTER), END + ); +case UC_GR_LC_PHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_6), T(KP_ENTER), END + ); +case UC_GR_LC_OMEGA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_9), T(KP_ENTER), END + ); +case UC_GR_LC_GAMMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_3), T(KP_ENTER), END + ); +case UC_GR_LC_ETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_7), T(KP_ENTER), END + ); +case UC_GR_LC_XI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(E), T(KP_ENTER), END + ); +case UC_GR_LC_KAPPA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(A), T(KP_ENTER), END + ); +case UC_GR_LC_LAMDA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(B), T(KP_ENTER), END + ); +case UC_GR_LC_ZETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_6), T(KP_ENTER), END + ); +case UC_GR_LC_UPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_5), T(KP_ENTER), END + ); +case UC_GR_LC_IOTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_9), T(KP_ENTER), END + ); +case UC_GR_LC_ALPHA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_1), T(KP_ENTER), END + ); +case UC_GR_LC_EPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_5), T(KP_ENTER), END + ); +case UC_GR_LC_OMICRON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(F), T(KP_ENTER), END + ); +case UC_GR_LC_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_3), T(KP_ENTER), END + ); +case UC_GR_LC_NU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(D), T(KP_ENTER), END + ); +case UC_GR_LC_RHO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_1), T(KP_ENTER), END + ); +case UC_GR_LC_TAU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_4), T(KP_ENTER), END + ); +case UC_GR_LC_DELTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_4), T(KP_ENTER), END + ); +case UC_GR_LC_FINAL_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_2), T(KP_ENTER), END + ); +case UC_GR_LC_THETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_8), T(KP_ENTER), END + ); +case UC_GR_LC_BETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_2), T(KP_ENTER), END + ); +case UC_GR_LC_MU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(C), T(KP_ENTER), END + ); +case UC_GR_LC_PSI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_8), T(KP_ENTER), END + ); +case UC_GR_UC_CHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_7), T(KP_ENTER), END + ); +case UC_GR_UC_PI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_0), T(KP_ENTER), END + ); +case UC_GR_UC_PHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_6), T(KP_ENTER), END + ); +case UC_GR_UC_OMEGA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_9), T(KP_ENTER), END + ); +case UC_GR_UC_GAMMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_3), T(KP_ENTER), END + ); +case UC_GR_UC_ETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_7), T(KP_ENTER), END + ); +case UC_GR_UC_XI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(E), T(KP_ENTER), END + ); +case UC_GR_UC_KAPPA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(A), T(KP_ENTER), END + ); +case UC_GR_UC_LAMDA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(B), T(KP_ENTER), END + ); +case UC_GR_UC_ZETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_6), T(KP_ENTER), END + ); +case UC_GR_UC_UPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_5), T(KP_ENTER), END + ); +case UC_GR_UC_IOTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_9), T(KP_ENTER), END + ); +case UC_GR_UC_ALPHA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_1), T(KP_ENTER), END + ); +case UC_GR_UC_EPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_5), T(KP_ENTER), END + ); +case UC_GR_UC_OMICRON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(F), T(KP_ENTER), END + ); +case UC_GR_UC_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_3), T(KP_ENTER), END + ); +case UC_GR_UC_NU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(D), T(KP_ENTER), END + ); +case UC_GR_UC_RHO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_1), T(KP_ENTER), END + ); +case UC_GR_UC_TAU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_4), T(KP_ENTER), END + ); +case UC_GR_UC_DELTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_4), T(KP_ENTER), END + ); +case UC_GR_UC_THETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_8), T(KP_ENTER), END + ); +case UC_GR_UC_BETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_2), T(KP_ENTER), END + ); +case UC_GR_UC_MU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(C), T(KP_ENTER), END + ); +case UC_GR_UC_PSI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_8), T(KP_ENTER), END + ); + default: + break; + } + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void * matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md new file mode 100644 index 000000000..9c0c12528 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md @@ -0,0 +1,222 @@ +# ManuNeo Ergodox Keyboard Layout + +# Layout Config + + { + "includes_dir": "quantum/", + "keymaps_includes": [ + "ergodox_ez.h", + "action_layer.h", + "keymap_common.h", + "keymap_extras/keymap_german.h", + ], + "keymap_indexes": [ + [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44], + [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51], + [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57], + [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64], + [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69], + [ 32, 33], [70, 71 ], + [ 34], [72 ], + [ 35, 36, 37], [73, 74, 75 ], + ], + "key_prefixes": ["DE_", "KC_"], + "filler": "-+.'!x", + "separator": "|", + "macros": { + "MUC": "", + }, + } + + +# Layers + + +## Layer 0 + + .-------------------------------------. .-------------------------------------. + |MO(5)| 1 | 2 | 3 | 4 | 5 | ACUT | ! GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + |MO(4)| X | P | F | W | G | HOME | !TG(2) | H | J | K | L | Q | Z | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + |MO(1)| U | I | A | E | O |------! !------! S | N | R | T | D | SS | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + |MO(3)| UE | OE | AE | C | V | END | ! TAB | B | M |COMM| DOT| UP | Y | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + '------------------------'.-------------. .-------------.'------------------------' + | INS |TG(2) | !M(UMS)| DELT | + .------+------+------! !------+------+------. + ! ! | APP | ! PGUP | ! ! + ! ! !------! !------! ! ! + | BSPC | LSFT | ESC | ! PGDN |ENTER |SPACE | + '--------------------' '--------------------' + + +## Layer 1 + + .-------------------------------------. .-------------------------------------. + | |EXLM|DQOT|PARA| | | | ! | | | | |RING| | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | |ASTR|PIPE|SLSH|LCBR|RCBR| | ! |HASH|LESS|MORE| |DQOT| | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | |UNDS|MINS|AMPR|LBRC|RBRC|------! !------!DLR |LPRN|RPRN|TILD|QUOT|QST | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | |PLUS| EQL| | | | ! |BSLS|PERC|SCLN|COLN| ↑ | | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | ← | ↓ | → | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 2 + + .-------------------------------------. .-------------------------------------. + | | F1 | F2 | F3 | F4 | F5 | F11 | ! F12 | F6 | F7 | F8 | F9 |F10 |PEQL | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | | | | | | | ! | | P7 | P8 | P9 |PAST|PSLS | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | |------! !------! | P4 | P5 | P6 |PMNS|PMNS | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | | | ! NLCK | | P1 | P2 | P3 |PPLS|PPLS | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 3 + +http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html + + .-------------------------------------. .-------------------------------------. + | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | ! | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | × | ½ | ÷ | ¼ | ⅕ | | ! | ⅙ | | ⅛ | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | ± | AT |EURO| ∅ |------! !------! ∞ | ⁿ | ∃ | ∈ | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | ! |EXLM| | ∄ | ∉ | | | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 4 + + .-------------------------------------. .-------------------------------------. + | | ₁ | ₂ | ₃ | ₄ | ₅ | | ! | ₆ | ₇ | ₈ | ₉ | ₀ | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | χ | π | φ | ω | γ | | ! | η | ξ | κ | λ | | ζ | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | υ | ι | α | ε | ο |------! !------! σ | ν | ρ | τ | δ | ς | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | θ | | | | | ! | β | μ | | | | ψ | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 5 + + .-------------------------------------. .-------------------------------------. + | | | | | | | | ! | | | | | | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | Χ | Π | Φ | Ω | Γ | | ! | Η | Ξ | Κ | Λ | | Ζ | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | Υ | Ι | Α | Ε | Ο |------! !------! Σ | Ν | Ρ | Τ | Δ | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | Θ | | | | | ! | Β | Μ | | | | Ψ | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 6 + + .-------------------------------------. .-------------------------------------. + | | | | | | | | ! | | | | | | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | | | | | | | ! | | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | |------! !------! | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | | | ! | | | | | | | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + +## Layer 7 + + .-------------------------------------. .-------------------------------------. + | | | | | | | | ! | | | | | | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | | | | | | | ! | | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | |------! !------! | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | | | ! | | | | | | | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' + + +## Layer 8 + + .-------------------------------------. .-------------------------------------. + | | | | | | | | ! | | | | | | | + !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! + | | | | | | | | ! | | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | |------! !------! | | | | | | + !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! + | | | | | | | | ! | | | | | | | + '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------'.-------------. .-------------.'------------------------' + | | | ! | | + .------+------+------! !------+------+------. + ! ! | | ! | ! ! + ! ! !------! !------! ! ! + | | | | ! | | | + '--------------------' '--------------------' -- cgit v1.2.3-24-g4f1b From beda4e6fd3a7b9e31b9cf591563e7aa1df0c7eed Mon Sep 17 00:00:00 2001 From: Matthew Carroll Date: Sun, 27 Mar 2016 23:51:11 -0400 Subject: Added msc keymap for ergodox_ez --- keyboard/ergodox_ez/keymaps/msc/img/code_layer.png | Bin 0 -> 86217 bytes keyboard/ergodox_ez/keymaps/msc/img/main_layer.png | Bin 0 -> 90624 bytes .../ergodox_ez/keymaps/msc/img/media_layer.png | Bin 0 -> 75750 bytes keyboard/ergodox_ez/keymaps/msc/keymap.c | 184 ++++ keyboard/ergodox_ez/keymaps/msc/msc.hex | 1118 ++++++++++++++++++++ keyboard/ergodox_ez/keymaps/msc/readme.md | 32 + 6 files changed, 1334 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/msc/img/code_layer.png create mode 100644 keyboard/ergodox_ez/keymaps/msc/img/main_layer.png create mode 100644 keyboard/ergodox_ez/keymaps/msc/img/media_layer.png create mode 100644 keyboard/ergodox_ez/keymaps/msc/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/msc/msc.hex create mode 100644 keyboard/ergodox_ez/keymaps/msc/readme.md diff --git a/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png new file mode 100644 index 000000000..1d707c5ea Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png differ diff --git a/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png new file mode 100644 index 000000000..65f92dda1 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/main_layer.png differ diff --git a/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png new file mode 100644 index 000000000..a69799b07 Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/msc/img/media_layer.png differ diff --git a/keyboard/ergodox_ez/keymaps/msc/keymap.c b/keyboard/ergodox_ez/keymaps/msc/keymap.c new file mode 100644 index 000000000..e567e513f --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/msc/keymap.c @@ -0,0 +1,184 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L | ; |' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Cmd | Alt |AltShf| Left | Right| | Left | Down | Up |Right | L2 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LGUI,KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(MDIA), + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | Mute | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | Prev |VolDn |VolUp | Next | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | Lclk | Rclk |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/msc/msc.hex b/keyboard/ergodox_ez/keymaps/msc/msc.hex new file mode 100644 index 000000000..a466a37af --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/msc/msc.hex @@ -0,0 +1,1118 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C94AD0B0C947F0CB7 +:100030000C94A9020C94A9020C94A9020C94A90294 +:100040000C94A9020C9404210C94A9020C94A9020A +:100050000C94A9020C94951A0C94A9020C94A90270 +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A902EC0C0E0D5C +:1000B000FC0D0E0DFC0D530D760DFC0DCB0DDE0D64 +:1000C000C010C010EF10EF10321170118913891396 +:1000D000891189138A128A125D1389138913741383 +:1000E0000000F0A12E004C002A00E100E300000017 +:1000F0001E00140004001D71E2004D001F001A00D4 +:1001000016001B00E1042A0020000800070006007A +:1001100050002C0021001500090019004F004A0072 +:10012000220017000A000500000065745000015409 +:100130000000007F0000E3004F0001540000007742 +:100140000000E20023001C000B00110000002971D8 +:10015000240018000D00100050004B0025000C007A +:100160000E00360051002800260012000F00370054 +:1001700052002B0027001300330038714F004E004F +:100180002D0031003478E500025400000100010028 +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00010001003D0030020A +:1001C00027023000010001003E00310235003502F7 +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F0052007A +:1001F00051002402000001004000240021001E00E4 +:10020000010001004100250022001F00370001000D +:1002100042002600230020002700010043002502A1 +:100220002E0231002E0001004400450001000100B3 +:1002300001000000010001000100010001000000B8 +:1002400001000100010001000100010001000100A6 +:10025000F20001000100F5000100F000F1000100D2 +:100260000100F40001000100F300010001000100A1 +:100270000100010001000100000001000100010077 +:100280000000010000000100010001000000010069 +:100290000000010001000100010001000000010058 +:1002A000010001000100A800AC00010001000100F4 +:1002B00001000100AA00B6000100010001000100D8 +:1002C000A90001000100010001000100AB000100D4 +:1002D00001000100AE00010001000000160345000E +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A +:1004E0009091EF01A091F001B091F1018730904B14 +:1004F000A740B04BB9F41092EE011092EF011092A8 +:10050000F0011092F10114BE84B7877F84BF88E1A7 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000FFE3099511E0A0E0B1E0ECE8F5E402C0DA +:1005300005900D92A433B107D9F711E0A4E3B1E01F +:1005400001C01D92AE3EB107E1F70E94F1080C9484 +:10055000C4220C94000061110BC0FC01828188232D +:1005600021F085EE0E945D0F03C085EE0E942510EC +:1005700080E090E0089508956091B1017091B2011A +:100580008091B3019091B4010E94C41956985E986D +:1005900025982D9826982E9827982F98813019F015 +:1005A000823021F00895259A2D9A0895269A2E9A40 +:1005B00008950C94BC0256985E9825982D9826981C +:1005C0002E9827982F988FEF90E090938900809332 +:1005D000880090938B0080938A0090938D00809385 +:1005E0008C00259A2D9A2FEF80E792E021508040D1 +:1005F0009040E1F700C00000269A2E9A2FEF80E786 +:1006000092E0215080409040E1F700C00000279A1E +:100610002F9A2FEF80E792E0215080409040E1F741 +:1006200000C0000025982D982FEF80E792E0215020 +:1006300080409040E1F700C0000026982E982FEFF0 +:1006400080E792E0215080409040E1F700C0000038 +:1006500027982F9856985E9825982D9826982E982A +:1006600027982F98089589EA8093800089E08093E5 +:10067000810024982C983F988AB18F748AB96E981B +:10068000479A8BB1806B8BB9769A0E94DB020C94EF +:10069000BB0280E2809300018091340181110EC081 +:1006A0000E94980381E0809334012FEF83ED90E363 +:1006B000215080409040E1F700C0000080E40E949B +:1006C0009E038093000181112EC00E94C803809375 +:1006D0000001811128C00E94C8038093000181118C +:1006E00022C08FE30E94C8038093000181111BC0C8 +:1006F0000E94C00380E40E949E0380930001811148 +:1007000012C08CE00E94C8038093000181110BC0CD +:100710000E94C80380930001811105C08FE30E94ED +:10072000C803809300010E94C003809100010895D6 +:100730001092B9008AE08093B800089594EA9093EB +:10074000BC009091BC0097FFFCCF9091B900987FBE +:10075000983021F0903111F081E008958093BB0032 +:1007600084E88093BC008091BC0087FFFCCF80911F +:10077000B900887F883111F0803471F780E00895E6 +:1007800084E98093BC008091BC0084FDFCCF089577 +:100790008093BB0084E88093BC008091BC0087FFFD +:1007A000FCCF9091B900987F81E0983209F480E005 +:1007B000089584E88093BC008091BC0087FFFCCF43 +:1007C0008091BB00089580910001811115C080E4E3 +:1007D0000E949E038093000181110CC082E10E945F +:1007E000C80380930001811105C08FEF0E94C803E8 +:1007F000809300010E94C00384B1807F84B985B1D9 +:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 +:100810003E98469808950E944903809300010E94E3 +:10082000E30380B38C7080BB81B3836F81BBA6E38D +:10083000B1E0E4E4F1E08EE08E0F11921D928E1390 +:10084000FCCF0C943303BF92CF92DF92EF92FF92D2 +:100850000F931F93CF93DF9380910001882379F04A +:10086000809135018F5F80933501811108C00E940E +:10087000490380930001811102C00E94DB0206E35C +:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 +:10089000E394F12CC730D10500F58091000181115E +:1008A00064C080E40E949E0380930001811112C005 +:1008B00082E10E94C8038093000181110BC0C7012F +:1008C0000C2E01C0880F0A94EAF780950E94C80395 +:1008D000809300010E94C00348C0CA30A1F028F4F0 +:1008E000C83059F0C93061F005C0CC3089F070F0E3 +:1008F000CD3089F0209A289810C0219A29980DC0EF +:10090000229A2A980AC0239A2B9807C0529A01C0AB +:10091000539A5B9802C03E9A469890EA9A95F1F7EE +:100920009FB1799902C082E001C080E091709D255D +:10093000982B7C9902C084E001C080E0892B7D99CE +:1009400002C038E001C030E0832B7E9902C020E174 +:1009500001C020E0822B9FB19095991F9927991F84 +:100960009295990F907E892B0FC080910001811183 +:1009700049C080E40E949E0380930001882379F19E +:10098000B12C0E94C0038B2DF8019081981719F0AB +:100990008083C09201010E94E30321960F5F1F4FE5 +:1009A000CE30D10509F076CF80910101882361F125 +:1009B000815080930101882339F08FE99FE00197EE +:1009C000F1F700C0000020C0A4E4B1E0E6E3F1E0EC +:1009D000CF01825F91919D938E13FCCF15C083E16F +:1009E0000E94C803809300018111CACF81E40E9454 +:1009F0009E03809300018111C3CF0E94D903B82EBA +:100A0000B094BFCF80E0C0CF0E94D90281E0DF91D7 +:100A1000CF911F910F91FF90EF90DF90CF90BF90FB +:100A20000895E82FF0E0EC5BFE4F80810895089573 +:100A30008B3B910578F4883A910540F5853A91050C +:100A4000D0F48430910508F0B1C08130910509F4EB +:100A5000ADC06BC0803E910508F467C0883E91052B +:100A600008F4A4C09C01205F31092031310508F051 +:100A70005CC090650895853A910509F459C0863A9D +:100A8000910509F058C082E890E40895883A9105EC +:100A900009F454C0893A910509F453C08A3A910582 +:100AA00009F452C08B3A910509F451C08C3A910572 +:100AB00009F450C08D3A910509F44FC0803B91056F +:100AC00009F44EC08E3A910509F44DC08F3A910554 +:100AD00009F44CC0813B910509F44BC0823B910560 +:100AE00009F44AC0833B910509F449C0843B910550 +:100AF00009F448C0853B910509F447C0863B910540 +:100B000009F446C0873B910509F445C0883B91052F +:100B100009F444C0893B910509F443C08A3B91051F +:100B200009F442C080E094E4089580E090E00895E4 +:100B300081E890E4089583E890E4089582EE94E4D7 +:100B4000089589EE94E408958AEE94E4089585EB7F +:100B500094E4089586EB94E4089587EB94E4089573 +:100B60008CEC94E408958DEC94E4089583E895E486 +:100B700008958AE895E4089582E995E4089584E962 +:100B800095E4089581E296E4089583E296E4089559 +:100B900084E296E4089585E296E4089586E296E478 +:100BA000089587E296E408958AE296E40895089508 +:100BB00096E0799FF001112494E5899FE00DF11DE5 +:100BC0001124E60FF11DEE0FFF1FEC51FF4F859131 +:100BD00094910895880F991FFC01E05AF040859187 +:100BE00094910895880F991FFC01E052FF4F859161 +:100BF0009491089526E0729FF001112444E5849FAA +:100C0000E00DF11D1124E60FF11DEE0FFF1FEC5159 +:100C1000FF4F859194919C013A9521154FE134073E +:100C200008F41AC13F512115304120F49F700E94F1 +:100C3000F20508959C0130532115304118F499278D +:100C4000906C0895811520E5920769F40E94AB131A +:100C50004FEF84E39CE0415080409040E1F700C0BA +:100C600000000C94BA1A813020E5920731F480918B +:100C7000CC0181608093CC0108959C0130552115F1 +:100C8000304108F051C0292F33272F7033272130EE +:100C90003105D9F4AC014370552702C0220F331F30 +:100CA0004A95E2F73C68AC0164E0440F551F6A9531 +:100CB000E1F744275370242B352B73E0880F991FDD +:100CC0007A95E1F7807699271DC02230310529F405 +:100CD000982F8827816F906A089523303105A9F4F1 +:100CE000AC014370552721E030E002C0220F331FD2 +:100CF0004A95E2F73C6843E0880F991F4A95E1F76F +:100D0000807E9770822B932B089524303105E1F477 +:100D1000AC014370552721E030E002C0220F331FA1 +:100D20004A95E2F73A68E7CF9C01305721153041E8 +:100D300018F49F70906208959C013058211530413D +:100D400018F49F70906A0895803E9105E0F4803C0D +:100D5000910558F58133910509F46FC048F4893243 +:100D6000910509F463C08A32910509F46DC072C01F +:100D700089339105E9F082389105D1F085339105E9 +:100D800009F44DC067C0833E910581F138F4803E7F +:100D90009105B9F0823E9105D9F05CC0863E91057F +:100DA00061F1873E9105A1F155C00E94EA050895C1 +:100DB0002091DF0120FD02C021FF4CC080EE90E0B9 +:100DC00049C08091DF0180FFF9CF89E390E042C004 +:100DD0008091DF0182FF0EC08091DF0184FF03C09C +:100DE00080E090E037C083EE90E034C08091DF0176 +:100DF00082FFF2CF82EE90E02DC08091DF0183FF71 +:100E00000BC08091DF0184FDEBCF87EE90E022C024 +:100E10008091DF0183FFF5CF86EE90E01BC08091CB +:100E2000DF0185FF07C089E290E014C08091DF01F7 +:100E300085FFF9CF85E390E00DC08091DF0186FF4B +:100E400007C08AE290E006C08091DF0186FFF9CFFB +:100E500081E390E00E941805089508950C942D07F1 +:100E6000809162010895CF93DF9300D01F92CDB798 +:100E7000DEB79C018091E501843019F593E09983F8 +:100E80003B832A839093E9008FEF9091E800815093 +:100E900095FD06C095ED9A95F1F700008111F5CF0B +:100EA0008091E80085FF0DC040E050E063E070E015 +:100EB000CE0101960E949D098091E8008E77809373 +:100EC000E8000F900F900F90DF91CF910895CF938E +:100ED000DF9300D01F92CDB7DEB72091E50124301B +:100EE00021F522E029839B838A8383E08093E900B4 +:100EF0008FEF9091E800815095FD06C095ED9A9591 +:100F0000F1F700008111F5CF8091E80085FF0DC059 +:100F100040E050E063E070E0CE0101960E949D0940 +:100F20008091E8008E778093E8000F900F900F90EB +:100F3000DF91CF9108952091E5012430F1F422E072 +:100F40002093E9002FEF3091E800215035FD06C0D5 +:100F500035ED3A95F1F700002111F5CF2091E80029 +:100F600025FF0BC040E050E065E070E00E949D0965 +:100F70008091E8008E778093E8000895CF93DF9307 +:100F8000EC019091E501943009F046C080910C018C +:100F90008823D9F080910D018823B9F09093E9005E +:100FA0008FEF9091E800815095FD06C095E19A95EC +:100FB000F1F700008111F5CF8091E80085FF2CC08A +:100FC00040E050E060E170E017C081E08093E9000C +:100FD0008FEF9091E800815095FD06C095ED9A95B0 +:100FE000F1F700008111F5CF8091E80085FF14C072 +:100FF00040E050E068E070E0CE010E949D098091E1 +:10100000E8008E778093E80080E1FE01A2E5B1E080 +:1010100001900D928A95E1F7DF91CF91089580912B +:10102000E401811109C00E94320B0E948F0B809154 +:10103000E20084608093E20008951092E401089534 +:1010400008950C94F1200E94501A0E94F7200E94EB +:10105000350E0C942E0742E061EC81E00E94AC0A50 +:1010600042E061EC82E00E94AC0A42E061EC83E085 +:101070000E94AC0A42E161EC84E00C94AC0A8091DD +:10108000E701833009F455C030F4813071F08230CB +:1010900009F48EC008958A3009F47AC08B3009F4BF +:1010A00060C0893009F09CC020C08091E601813A7F +:1010B00009F096C08091E800877F8093E8008091D6 +:1010C000EA019091EB01892B21F460E182E591E046 +:1010D00003C060E080E090E070E00E94E809809149 +:1010E000E8008B778093E80008958091E6018132D3 +:1010F00009F076C08091EA019091EB01009719F018 +:10110000039709F06DC08091E800877F8093E80025 +:101110008091E80082FD05C08091E5018111F8CF42 +:101120005FC08091F100809362018091E8008B772D +:1011300053C08091E601813A09F052C08091EA01E2 +:101140009091EB01892B09F04BC08091E800877FDB +:101150008093E8008091E80080FFFCCF80910C0133 +:1011600036C08091E6018132D9F58091EA019091F3 +:10117000EB01892BA9F58091E800877F8093E80037 +:101180000E94E10A8091E80180930C010C94AB135A +:101190008091E601813221F58091E800877F80937C +:1011A000E8000E94E10A8091E901809363010895BB +:1011B0008091E601813AA1F48091E800877F8093D5 +:1011C000E8008091E80080FFFCCF8091630180936C +:1011D000F1008091E8008E778093E8000C94E10A9A +:1011E000089584B7877F84BF88E10FB6F894809311 +:1011F0006000109260000FBE90E080E80FB6F89497 +:1012000080936100909361000FBE0E94840E0E9443 +:10121000320B0E948F0B8091E20084608093E20089 +:1012200078940E94150E0E94860E82E091E00E9442 +:10123000300E0E94DF208091E501853069F40E9424 +:10124000141A8091E3018823B1F30E943C1A882389 +:1012500091F30E948709EFCF0E948C0EECCF292FCB +:10126000332723303105C9F064F42130310581F092 +:101270002230310509F043C08DE690E020E133E0F3 +:1012800042C021323105F1F02232310541F137C03F +:1012900082E190E02DE733E036C099278130910557 +:1012A00041F08230910541F0892B49F5ECE0F3E003 +:1012B00005C0E4EFF2E002C0ECEDF2E0849190E0D2 +:1012C0009F0121C06430D8F4E62FF0E0EE0FFF1F3D +:1012D000EE5DFE4F2081318189E090E014C06430E2 +:1012E00070F470E0FB01EE0FFF1FE65EFE4F208101 +:1012F0003181FB01EA5EFE4F808190E004C080E016 +:1013000090E020E030E0FA0131832083089580E10D +:1013100089BD82E189BD09B400FEFDCF8091D8006E +:101320008F7D8093D8008091E00082608093E00000 +:101330008091E00081FDFCCF0895CF92DF92EF9283 +:10134000FF920F931F93CF93DF93EC018B016A0100 +:101350000E94000B811133C0C114D10439F0F60191 +:1013600080819181081B190BC80FD91FE12CF12C2A +:101370000115110519F18091E80085FD16C08091D5 +:10138000E8008E778093E800C114D10449F0F6019B +:1013900080819181E80EF91EF182E08285E00FC024 +:1013A0000E94000B882321F30AC089918093F100E9 +:1013B00001501109FFEFEF1AFF0ADACF80E0DF9149 +:1013C000CF911F910F91FF90EF90DF90CF900895F4 +:1013D0002091EC013091ED012617370748F0611597 +:1013E000710539F42091E8002E772093E80001C0C0 +:1013F000B90140E061157105A9F12091E5012223B1 +:1014000009F443C0253009F442C02091E80023FDCF +:1014100040C02091E80022FD32C02091E80020FF6A +:10142000E9CF4091F3002091F20030E0342BFC0131 +:10143000CF016115710559F02830310540F48191D3 +:101440008093F100615071092F5F3F4FF1CF41E070 +:101450002830310509F040E02091E8002E772093F4 +:10146000E800C8CF4111C9CF0AC08091E5018823A7 +:1014700061F0853061F08091E80083FD0AC08091C1 +:10148000E80082FFF2CF80E0089582E0089583E0D3 +:10149000089581E008952091EC013091ED01261727 +:1014A000370748F06115710539F42091E8002E776F +:1014B0002093E80001C0B901FC0120E0611571052D +:1014C00091F18091E501882309F440C0853009F449 +:1014D0003FC08091E80083FD3DC08091E80082FD1F +:1014E0002FC08091E80080FFE9CF2091F300809128 +:1014F000F20090E0922B6115710559F0883091054A +:1015000040F424912093F1003196615071090196C5 +:10151000F2CF21E0089709F020E08091E8008E7773 +:101520008093E800CBCF2111CCCF0AC08091E50198 +:10153000882361F0853061F08091E80083FD0AC066 +:101540008091E80082FFF2CF80E0089582E0089564 +:1015500083E0089581E00895982F973058F590938F +:10156000E900981739F07091EC002091ED0050914E +:10157000F00003C0242F762F50E021FF19C03091D6 +:10158000EB003E7F3093EB003091ED003D7F3093D8 +:10159000ED003091EB0031603093EB007093EC0084 +:1015A0002093ED005093F0002091EE0027FF07C03C +:1015B0009F5FD3CF8F708093E90081E0089580E032 +:1015C00008958091E60187FF11C08091E80082FDB7 +:1015D00005C08091E5018111F8CF11C08091E8002C +:1015E0008B770BC08091E501882349F08091E8005A +:1015F00080FFF8CF8091E8008E778093E80008950F +:101600002091E4003091E50095E64091EC00842FB4 +:10161000817040FF22C08091E80080FD1CC0809155 +:10162000E501882391F0853091F08091EB0085FDF4 +:1016300010C04091E4005091E5004217530729F390 +:101640009A01915011F784E0089582E0089583E0B3 +:10165000089581E0089580E008954091E80042FFF8 +:10166000DECF08950E94A00B0E94A80BE0EEF0E0F0 +:10167000808181608083E8EDF0E080818F778083D6 +:1016800019BCA7EDB0E08C918E7F8C9380818F7E0A +:1016900080831092E40108950F931F93CF93DF93FB +:1016A0000E94A00B0E94A80BC8EDD0E088818F7724 +:1016B000888388818068888388818F7D888319BC2E +:1016C0001092E5011092E1011092E3011092E20103 +:1016D00000EE10E0F80180818B7F8083888181603B +:1016E000888342E060E080E00E94AC0AE1EEF0E036 +:1016F00080818E7F8083E2EEF0E080818160808354 +:10170000808188608083F80180818E7F80838881DA +:1017100080618883DF91CF911F910F910895E8ED4B +:10172000F0E080818F7E8083E7EDF0E08081816052 +:10173000808384E082BF81E08093E4010C944C0BB1 +:10174000E8EDF0E080818E7F80831092E2000895C2 +:101750001092DA001092E10008951F920F920FB6D6 +:101760000F9211242F933F934F935F936F937F9327 +:101770008F939F93AF93BF93EF93FF938091E1007B +:1017800082FF0BC08091E20082FF07C08091E100E0 +:101790008B7F8093E1000E94140E8091DA0080FF1D +:1017A0001FC08091D80080FF1BC08091DA008E7F1F +:1017B0008093DA008091D90080FF0DC080E189BD5F +:1017C00082E189BD09B400FEFDCF81E08093E5018F +:1017D0000E940F0805C019BC1092E5010E941D0867 +:1017E0008091E10080FF19C08091E20080FF15C068 +:1017F0008091E2008E7F8093E2008091E200806120 +:101800008093E2008091D80080628093D80019BC58 +:1018100085E08093E5010E9421088091E10084FF2A +:1018200030C08091E20084FF2CC080E189BD82E15C +:1018300089BD09B400FEFDCF8091D8008F7D8093D3 +:10184000D8008091E1008F7E8093E1008091E200DA +:101850008F7E8093E2008091E20081608093E200BD +:101860008091E101882311F084E007C08091E300BA +:1018700087FD02C081E001C083E08093E5010E9402 +:1018800023088091E10083FF29C08091E20083FF5B +:1018900025C08091E100877F8093E10082E0809302 +:1018A000E5011092E1018091E1008E7F8093E100DB +:1018B0008091E2008E7F8093E2008091E20080615F +:1018C0008093E20042E060E080E00E94AC0A8091F8 +:1018D000F00088608093F0000E942008FF91EF9153 +:1018E000BF91AF919F918F917F916F915F914F9138 +:1018F0003F912F910F900FBE0F901F9018951F9240 +:101900000F920FB60F9211242F933F934F935F9333 +:101910006F937F938F939F93AF93BF93CF93DF93F7 +:10192000EF93FF93C091E900CF708091EC00D82F26 +:10193000D17080FDD0E81092E9008091F000877F9F +:101940008093F00078940E94C30C1092E90080917B +:10195000F00088608093F000CD2BCF70C093E90039 +:10196000FF91EF91DF91CF91BF91AF919F918F91B7 +:101970007F916F915F914F913F912F910F900FBE8B +:101980000F901F9018951F93CF93DF93CDB7DEB7BD +:10199000AA970FB6F894DEBF0FBECDBFE6EEF1E01A +:1019A00088E08E0F9091F10091938E13FBCF0E94EF +:1019B0003F088091E80083FF1FC18091E60190916C +:1019C000E701492F50E04A30510508F015C1FA01EE +:1019D000EA5AFF4F0C947922803881F0823809F05E +:1019E0000BC18091EA018F708093E9008091EB0038 +:1019F00085FB882780F91092E90006C08091E201FA +:101A00009091E301911182609091E800977F90930B +:101A1000E8008093F1001092F100C8C0282F2D7FBC +:101A200009F0EAC0882319F0823061F0E5C08091A6 +:101A3000E801813009F0E0C0933009F080E0809344 +:101A4000E3012BC08091E801811127C08091EA0158 +:101A50008F7009F4D1C08093E9002091EB0020FF42 +:101A60001CC0933021F48091EB00806214C09091EF +:101A7000EB0090619093EB0021E030E0A90102C0FF +:101A8000440F551F8A95E2F74093EA001092EA004E +:101A90008091EB0088608093EB001092E9008091C8 +:101AA000E800877F86C08111A7C01091E8011F77E9 +:101AB0008091E3008078812B8093E3008091E8009F +:101AC000877F8093E8000E94E10A8091E80080FF10 +:101AD000FCCF8091E30080688093E300111102C085 +:101AE00082E001C083E08093E50186C080588230A7 +:101AF00008F082C08091E8019091E9018C3D53E0AB +:101B0000950779F583E08A838AE289834FB7F89451 +:101B1000DE01139620E03EE051E2E32FF0E0509327 +:101B20005700E49120FF03C0E295EF703F5FEF7034 +:101B30008E2F90E0EA3010F0C79601C0C0968D93CA +:101B40009D932F5F243149F74FBF8091E800877F35 +:101B50008093E8006AE270E0CE0101960E94E809F5 +:101B600014C0AE014F5F5F4F6091EA010E942F09E0 +:101B7000BC01892B09F440C09091E800977F9093B5 +:101B8000E80089819A810E944B0A8091E8008B7756 +:101B90008093E80031C0803879F58091E800877F34 +:101BA0008093E8008091E1018093F1008091E8004A +:101BB0008E778093E8000E94E10A1EC081111CC04C +:101BC0009091E8019230C0F48091E800877F809383 +:101BD000E8009093E1010E94E10A8091E101811106 +:101BE00006C08091E30087FD02C081E001C084E06F +:101BF0008093E5010E942B088091E80083FF0AC0D2 +:101C00008091E800877F8093E8008091EB008062FC +:101C10008093EB00AA960FB6F894DEBF0FBECDBF3F +:101C2000DF91CF911F9108950895CF938091E501A1 +:101C30008823A1F0C091E900CF709091EC00892F2A +:101C4000817090FD80E8C82B1092E9008091E80037 +:101C500083FD0E94C30CCF70C093E900CF9108951B +:101C600090936901809368010895E0916801F09173 +:101C70006901309721F00190F081E02D099480E016 +:101C80000895E0916801F0916901309721F0028098 +:101C9000F381E02D09940895E0916801F0916901C4 +:101CA000309721F00480F581E02D0994089520916A +:101CB0006601309167018217930771F09093670175 +:101CC00080936601E0916801F0916901309721F0FD +:101CD0000680F781E02D09940895209164013091E8 +:101CE00065018217930771F09093650180936401F9 +:101CF000E0916801F0916901309721F00084F1854D +:101D0000E02D0994089508950C94830E0E94561AAC +:101D10000E940B040C941C1BCF92DF92EF92FF9257 +:101D20000F931F93CF93DF93CDB7DEB72B970FB6EB +:101D3000F894DEBF0FBECDBF0E9423048BE6C82EF1 +:101D400081E0D82E00E010E0E02E802F0E941105E7 +:101D5000F60141916F01F42EF826B1F40F5F1F4F89 +:101D60000E30110589F78FEF89838A831B820E94C9 +:101D70005F1A8160782F9D838C8349815A816B81A2 +:101D80008D810E942F0F40C09091CC0191FF04C023 +:101D90008B870E9417058B8520E030E04F2D50E0A7 +:101DA000922FBA01022E02C0759567950A94E2F748 +:101DB00060FF24C02E83EF8221E030E0690102C081 +:101DC000CC0CDD1C9A95E2F790E08C219D21892BAB +:101DD00009F420E028870E945F1A8160782F9A8793 +:101DE00089874E815F8168858A850E942F0FF8015F +:101DF000E559FE4F8081C826C08206C02F5F3F4F45 +:101E00002630310569F6AACF0E94031E10916A019F +:101E10000E94350E1817A1F00E94350E80936A01BA +:101E20002B960FB6F894DEBF0FBECDBFDF91CF91DA +:101E30001F910F91FF90EF90DF90CF900C942E07A1 +:101E40002B960FB6F894DEBF0FBECDBFDF91CF91BA +:101E50001F910F91FF90EF90DF90CF900895CF9357 +:101E6000DF93CDB7DEB72B970FB6F894DEBF0FBE6A +:101E7000CDBF4F83588769877A878B87DE0111969C +:101E800086E0FD0111928A95E9F785E0FE0137961B +:101E900001900D928A95E1F749815A816B817C818D +:101EA0008D819E810E9445162B960FB6F894DEBF59 +:101EB0000FBECDBFDF91CF910895CF93882309F452 +:101EC000C2C0C82F823859F40E94350E81FDBBC0B4 +:101ED00089E30E94E1180E949E1989E30CC08338AF +:101EE00079F40E94350E80FDAEC083E50E94E118B2 +:101EF0000E949E1983E50E942319CF910C949E198C +:101F0000843859F40E94350E82FD9DC087E40E94FA +:101F1000E1180E949E1987E4EECF8CEF8C0F813A76 +:101F200048F48C2F0E94442081118DC08C2F0E9478 +:101F3000E118E3CF80E28C0F883048F4C77081E06D +:101F400001C0880FCA95EAF70E946719D6CF8BE5C2 +:101F50008C0F833078F4C53A29F0C63A31F083E823 +:101F600090E005C081E890E002C082E890E0CF9167 +:101F70000C94570E88E58C0F833108F064C0C83A82 +:101F800039F1C93A41F1CA3A49F1CB3A51F1CC3A67 +:101F900059F1CD3A61F1C03B69F1CE3A71F1CF3AD6 +:101FA00079F1C13B81F1C23B89F1C33B91F1C43B63 +:101FB00099F1C53BA1F1C63BA9F1C73BB1F1C83BC3 +:101FC000B9F1C93BC1F1CA3BC9F180E090E038C02A +:101FD00082EE90E035C089EE90E032C08AEE90E06B +:101FE0002FC085EB90E02CC086EB90E029C087EBFA +:101FF00090E026C08CEC90E023C08DEC90E020C0F7 +:1020000083E891E01DC08AE891E01AC082E991E07E +:1020100017C084E991E014C081E292E011C083E22C +:1020200092E00EC084E292E00BC085E292E008C02C +:1020300086E292E005C087E292E002C08AE292E086 +:10204000CF910C946D0ECF910895882309F44BC065 +:10205000823859F40E94350E81FF45C089E30E9401 +:10206000E1180E949E1989E30CC0833871F40E9424 +:10207000350E80FF38C083E50E94E1180E949E194A +:1020800083E50E9423190C949E19843859F40E9408 +:10209000350E82FF28C087E40E94E1180E949E1935 +:1020A00087E4EFCF9CEF980F913A58F390E2980FA6 +:1020B000983050F4877091E001C0990F8A95EAF743 +:1020C000892F0E946D19DFCF9BE5980F933020F484 +:1020D00080E090E00C94570E885A833120F480E021 +:1020E00090E00C946D0E0895882321F00E946719EA +:1020F0000C949E190895882321F00E946D190C9468 +:102100009E190895BF92CF92DF92EF92FF920F93A4 +:102110001F93CF93DF9300D000D000D0CDB7DEB7B0 +:1021200025E0FC01DE01119601900D922A95E1F760 +:10213000FC01408131810281258122952F706381CC +:102140007481672B09F4E5C23F3F19F44F3F09F44E +:10215000E0C27C0149833A8389819A812E830E945F +:10216000A018182FB92E0E949F180E946617EB2DF9 +:10217000E295EF70F0E0E05AFF4F2E810C94792247 +:102180008B2D807F9B2D9F70F92E882319F0F29460 +:1021900080EFF822002349F0FF2009F467C28F2D59 +:1021A0000E9477190E949E1961C2812F0E942510FA +:1021B000FF2009F4AEC28F2D0E947D1926960FB61E +:1021C000F894DEBF0FBECDBFDF91CF911F910F916D +:1021D000FF90EF90DF90CF90BF900C949E193B2D15 +:1021E000307F8B2D8F70303211F08295807F1123DC +:1021F00019F0113021F12CC00023B9F0222309F489 +:10220000A0C1213009F09DC126960FB6F894DEBF1B +:102210000FBECDBFDF91CF911F910F91FF90EF9037 +:10222000DF90CF90BF900C948719222319F02130B2 +:1022300009F46FC28E830E948A198E8196C1002391 +:1022400021F0223008F065C27CC1211162C28DC12B +:10225000002321F0222309F474C108C2222309F4C7 +:1022600084C119C22B2D26952695237030E02115A7 +:10227000310521F021303105D1F04BC2002321F08E +:10228000812F9B2D937002C080E090E026960FB6C0 +:10229000F894DEBF0FBECDBFDF91CF911F910F919C +:1022A000FF90EF90DF90CF90BF900C94570E0023DB +:1022B00021F0812F9B2D937002C080E090E0269644 +:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147 +:1022D0000F91FF90EF90DF90CF90BF900C946D0E18 +:1022E000812F002319F00E940B1D02C00E94731D54 +:1022F00026960FB6F894DEBF0FBECDBFDF91CF910B +:102300001F910F91FF90EF90DF90CF90BF900C94B2 +:10231000F81D8B2D837009F07BC00111FAC1812F4C +:10232000829586958770880F880F912F9F70C92E90 +:10233000D12CE12CF12C082E04C0CC0CDD1CEE1CA1 +:10234000FF1C0A94D2F714FF12C04FE050E060E087 +:1023500070E004C0440F551F661F771F8A95D2F79F +:10236000CB01BA01609570958095909503C060E0AF +:1023700070E0CB012B2D269526952370422F50E03F +:1023800042305105D9F04330510569F16C297D295E +:102390008E299F294130510551F126960FB6F894A8 +:1023A000DEBF0FBECDBFDF91CF911F910F91FF9088 +:1023B000EF90DF90CF90BF900C948D176C297D2902 +:1023C0008E299F2926960FB6F894DEBF0FBECDBF8B +:1023D000DF91CF911F910F91FF90EF90DF90CF9001 +:1023E000BF900C94A9170E948D17C701B6012696BD +:1023F0000FB6F894DEBF0FBECDBFDF91CF911F9116 +:102400000F91FF90EF90DF90CF90BF900C947117D9 +:10241000002319F08B2D817001C08695882309F463 +:1024200078C1812F829586958770880F880F912FAC +:102430009F70C92ED12CE12CF12C082E04C0CC0C9D +:10244000DD1CEE1CFF1C0A94D2F714FF12C04FE0F3 +:1024500050E060E070E004C0440F551F661F771F16 +:102460008A95D2F7CB01BA016095709580959095C9 +:1024700003C060E070E0CB012B2D269526952370DC +:10248000422F50E042305105D9F04330510569F1F7 +:102490006C297D298E299F294130510551F12696BD +:1024A0000FB6F894DEBF0FBECDBFDF91CF911F9165 +:1024B0000F91FF90EF90DF90CF90BF900C94671832 +:1024C0006C297D298E299F2926960FB6F894DEBFA8 +:1024D0000FBECDBFDF91CF911F910F91FF90EF9075 +:1024E000DF90CF90BF900C9483180E946718C701AB +:1024F000B60126960FB6F894DEBF0FBECDBFDF91B2 +:10250000CF911F910F91FF90EF90DF90CF90BF90F0 +:102510000C944B18103FD1F118F4103E50F4A1C0A8 +:10252000123F09F463C008F44CC0133F09F473C0B0 +:1025300098C01F708B2D8F710023A1F00E94E417AB +:10254000812F26960FB6F894DEBF0FBECDBFDF9168 +:10255000CF911F910F91FF90EF90DF90CF90BF90A0 +:102560000C9474100E940518812F26960FB6F894CB +:10257000DEBF0FBECDBFDF91CF911F910F91FF90B6 +:10258000EF90DF90CF90BF900C947B100023A9F0C8 +:102590002111BFC08B2D8F7126960FB6F894DEBF28 +:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 +:1025B000DF90CF90BF900C942A18223008F0A9C069 +:1025C000E9CF0023A9F08B2D8F7126960FB6F894D2 +:1025D000DEBF0FBECDBFDF91CF911F910F91FF9056 +:1025E000EF90DF90CF90BF900C94E417002359F345 +:1025F0008B2D8F7126960FB6F894DEBF0FBECDBF20 +:10260000DF91CF911F910F91FF90EF90DF90CF90CE +:10261000BF900C940518002399F08B2D8F7126968E +:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3 +:102630000F91FF90EF90DF90CF90BF900C94CF1749 +:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7 +:102650001F910F91FF90EF90DF90CF90BF900C945F +:10266000C5170023A9F0222309F4ADCF812F2696A8 +:102670000FB6F894DEBF0FBECDBFDF91CF911F9193 +:102680000F91FF90EF90DF90CF90BF900C945D0F73 +:10269000222309F4ADCF812F26960FB6F894DEBF22 +:1026A0000FBECDBFDF91CF911F910F91FF90EF90A3 +:1026B000DF90CF90BF900C9425104B2D4F70612F61 +:1026C000C7010E94AB0226960FB6F894DEBF0FBE7C +:1026D000CDBFDF91CF911F910F91FF90EF90DF90D1 +:1026E000CF90BF900C94E9164B2D4F70612FC7010E +:1026F00026960FB6F894DEBF0FBECDBFDF91CF9107 +:102700001F910F91FF90EF90DF90CF90BF900C94AE +:10271000D70526960FB6F894DEBF0FBECDBFDF916A +:10272000CF911F910F91FF90EF90DF90CF90BF90CE +:1027300008950E9484190E9459190E949E190E94AE +:10274000A91E0E94F81D80E090E00E94570E80E0D4 +:1027500090E00C946D0E0E9474190C9499130E94D1 +:10276000A018292F22952F7030E02C3031054CF421 +:102770002A3031056CF4225031092230310588F4B9 +:1027800007C02C30310549F02F30310531F009C038 +:10279000803E48F0803F29F406C093FB882780F9EB +:1027A000089580E0089581E00895CF93DF9300D0ED +:1027B00000D01F92CDB7DEB70F900F900F900F9003 +:1027C0000F90DF91CF910895CF93DF9300D000D089 +:1027D00000D0CDB7DEB726960FB6F894DEBF0FBE99 +:1027E000CDBFDF91CF9108951F93CF93DF93C09119 +:1027F000790116E080917A01C81799F0D0E01C9F0A +:10280000F0011D9FF00D1124E558FE4F40815181CC +:1028100062817381848195810E94E4132196C7703F +:10282000E9CFDF91CF911F9108954091AB01509175 +:10283000AC016091AD017091AE018091AF019091BA +:10284000B0010C94E4138091B00182958F7009F06F +:1028500054C08091AD01882309F44FC08091790163 +:10286000A0917A016091AB017091AC014091AE01F1 +:102870005091AF01B6E08A1709F43FC090E04115CE +:102880005105C1F17F3F11F46F3FA1F1B89FF001F5 +:10289000B99FF00D1124E558FE4F218172132AC013 +:1028A0002081621327C02281211124C02381348119 +:1028B0002417350710F421503109241B350B283C0F +:1028C0003105C0F42091B0012F7020612093B00138 +:1028D00026E0289FF001299FF00D1124E058FE4FBB +:1028E00080818F70806180838BEA91E00E948210EA +:1028F0000C94F41301968770BECF0895CF92DF92A7 +:10290000EF92FF920F931F93CF93DF93CDB7DEB774 +:1029100062970FB6F894DEBF0FBECDBF8C0185E085 +:10292000F801DE011D9601900D928A95E1F7D8011C +:102930004C9111965C91119712966C911297139687 +:10294000CD90DC9014973091AB017091AC018091E7 +:10295000AE019091AF01009709F46BC17F3F19F46C +:102960003F3F09F466C1E090AD01EE2009F4C0C01C +:102970002091B001C816D90628F0F601E81BF90B22 +:10298000CF0104C0809590958C0D9D1DFF24F3947C +:10299000883C910578F0F12C207F09F0C6C07C2D91 +:1029A000D98AC88A89890E94D5138BEA91E00E944E +:1029B0008210B1C0822F807F09F046C0751314C009 +:1029C000341312C0611110C02F7020612093B00128 +:1029D0000E9415148BEA91E00E9482108091B00150 +:1029E000D80115968C932EC0CD2819F15F3F11F4B4 +:1029F0004F3FF9F0F62E61111CC0809179012091B2 +:102A00007A0136E0821709F45AC090E0389FF0014D +:102A1000399FF00D1124E558FE4F7181571306C000 +:102A20007081471303C07281711103C001968770D2 +:102A3000E9CFF62E662309F418C18091B0018160B8 +:102A40008093B001F12C11C1751308C0341306C076 +:102A5000611104C08091B001D801C3C04D875E8769 +:102A60008D859E856A8B0E94AF136A898823E1F168 +:102A70006623D1F12091B001822F82958F7090E072 +:102A8000029774F08091AB019091AC0198878F838D +:102A90001986DB86CA862C87CE0107960E94821093 +:102AA00086E0F801ABEAB1E001900D928A95E1F77A +:102AB0000E9423140E941514FF24F394D6C04D875E +:102AC0005E878D859E850E94A018292F22952F70E4 +:102AD00030E0223031050CF0BCC09F7009F0B6C068 +:102AE000805E883008F4C1C0C8010E948210E4CF23 +:102AF000C816D90608F453C0F601E81BF90BCF013C +:102B0000883C910508F450C0F12C7C2DD98AC88AE4 +:102B100089890E94D513EBEAF1E086E0DF011D927E +:102B20008A95E9F70E941514A0C0751314C03413D8 +:102B300012C0611110C08091B001F8018583C801F5 +:102B40000E94821086E0EBEAF1E0DF011D928A9597 +:102B5000E9F7FE2C8AC04D875E878D859E856A8B3E +:102B60000E94AF136A89882309F4BECF662309F453 +:102B7000BBCF2091B001822F82958F7090E0029799 +:102B80000CF48ECF8091AB019091AC019A83898334 +:102B90001B82DD82CC822E83CE0101967FCF809571 +:102BA00090958C0D9D1DACCFF62E662309F49CCF1D +:102BB00075132EC034132CC02091B00120FD1FC00E +:102BC000822F82958F70D9F0D80115962C93159786 +:102BD0008F3049F08F5F982F9295907F822F8F7062 +:102BE000892B15968C93C8010E94821086E0F8010B +:102BF000ABEAB1E001900D928A95E1F793CF86E0C0 +:102C0000F801ABEAB1E001900D928A95E1F72DC091 +:102C10004D875E878D859E850E94AF13811140CFC1 +:102C20008091B00181608093B001C8010E94821040 +:102C30001CC0662309F458CF4D875E878D859E851D +:102C40000E94AF13882309F44FCF2ACF811148CFB8 +:102C50000CC0243031050CF047CF9F7009F440CFF1 +:102C6000F8019581907F09F03BCF8F2D62960FB6CA +:102C7000F894DEBF0FBECDBFDF91CF911F910F91B2 +:102C8000FF90EF90DF90CF9008951F93CF93DF9345 +:102C9000CDB7DEB72C970FB6F894DEBF0FBECDBF11 +:102CA0004F83588769877A878B879C87CE010796E1 +:102CB0000E947E14882369F08F8198852A853B8540 +:102CC000232BF1F19F3F09F063C08F3F09F060C0F3 +:102CD00037C086E0FE013796DE01119601900D9215 +:102CE0008A95E1F76F817885EA85FB85309741F118 +:102CF0007F3F11F46F3F21F120917A0130E0C9014B +:102D00000196877099274091790150E084179507C3 +:102D100009F447C069837A83FD83EC8396E0929F30 +:102D2000D001939FB00D1124A558BE4FFE013196DE +:102D300001900D929A95E1F780937A010E94F41325 +:102D400016E08091790190917A018917C1F1189F5D +:102D5000C001112485589E4F0E947E14882379F16A +:102D6000E09179011E9FF0011124E558FE4F40814A +:102D7000518162817381848195810E94E4138091E5 +:102D8000790190E001968770992780937901D9CFD6 +:102D90004F81588569857A858B859C850E94E413CF +:102DA000CFCF0E94AB1310927A0110927901EBEA17 +:102DB000F1E086E0DF011D928A95E9F7C1CF2C96FC +:102DC0000FB6F894DEBF0FBECDBFDF91CF911F913C +:102DD0000895EF92FF920F931F93CF93DF938C018F +:102DE000892B09F46CC0F12CEE24E394E8012196C0 +:102DF000F8018491843740F4843008F051C0813068 +:102E000081F0823019F15BC0853709F444C0A8F124 +:102E10009CE7980F903708F052C08F770E942510DA +:102E200041C00E5F1F4FFE01C49180E28C0F8830BD +:102E300048F4C7708E2D01C0880FCA95EAF70E942A +:102E4000771914C08C2F0E945D0F2DC00E5F1F4F8D +:102E5000FE01C49180E28C0F883058F4C7708E2D2B +:102E600001C0880FCA95EAF70E947D190E949E1939 +:102E70001AC08C2F0E94251016C00E5F1F4FFE0136 +:102E8000C491CC2381F08FE99FE00197F1F700C056 +:102E90000000C150F6CF0E5F1F4FFE01F49003C03B +:102EA0000E945D0F8E018F2D882309F49FCFEFE9DB +:102EB000FFE03197F1F700C000008150F5CFDF91BE +:102EC000CF911F910F91FF90EF9008950895609317 +:102ED000B5017093B6018093B7019093B8010C943B +:102EE00099130F931F930091B5011091B601209192 +:102EF000B7013091B801DC01CB01802B912BA22BC3 +:102F0000B32B8093B5019093B601A093B701B09312 +:102F1000B8011F910F910C9499130F931F93009177 +:102F2000B5011091B6012091B7013091B801DC01D3 +:102F3000CB0180239123A223B3238093B5019093E7 +:102F4000B601A093B701B093B8011F910F910C94F3 +:102F500099130F931F930091B5011091B601209121 +:102F6000B7013091B801DC01CB0180279127A2275E +:102F7000B3278093B5019093B601A093B701B093A6 +:102F8000B8011F910F910C9499131092B1011092F6 +:102F9000B2011092B3011092B4010C94991341E064 +:102FA00050E060E070E004C0440F551F661F771FBB +:102FB0008A95D2F74093B1015093B2016093B30167 +:102FC0007093B4010C94991341E050E060E070E01C +:102FD00004C0440F551F661F771F8A95D2F7809152 +:102FE000B1019091B201A091B301B091B401482B0D +:102FF000592B6A2B7B2B4093B1015093B201609304 +:10300000B3017093B4010C94991341E050E060E077 +:1030100070E004C0440F551F661F771F8A95D2F7D2 +:1030200040955095609570958091B1019091B20155 +:10303000A091B301B091B401482359236A237B23A3 +:103040004093B1015093B2016093B3017093B40106 +:103050000C94991341E050E060E070E004C0440F2C +:10306000551F661F771F8A95D2F78091B101909105 +:10307000B201A091B301B091B401482759276A2742 +:103080007B274093B1015093B2016093B3017093D9 +:10309000B4010C9499130F931F930091B1011091F7 +:1030A000B2012091B3013091B401DC01CB01802B3E +:1030B000912BA22BB32B8093B1019093B201A093DB +:1030C000B301B093B4011F910F910C9499130F9316 +:1030D0001F930091B1011091B2012091B301309181 +:1030E000B401DC01CB0180239123A223B32380937D +:1030F000B1019093B201A093B301B093B4011F91B9 +:103100000F910C9499130F931F930091B10110919B +:10311000B2012091B3013091B401DC01CB018027D1 +:103120009127A227B3278093B1019093B201A09376 +:10313000B301B093B4011F910F910C9499130895AA +:10314000CF92DF92EF92FF920F931F93CF93DF9373 +:103150008C01C090B501D090B601E090B701F0901D +:10316000B8014091B1015091B2016091B3017091E9 +:10317000B401C42AD52AE62AF72ACFE1D0E0D70144 +:10318000C6010C2E04C0B695A795979587950A940D +:10319000D2F780FF07C0B8018C2F0E94FA0581305A +:1031A000910531F4219758F7B80180E00E94FA05A3 +:1031B000DF91CF911F910F91FF90EF90DF90CF9013 +:1031C000089590910C01992321F090910D01911196 +:1031D00009C020910E0130910F01F90132969FEF45 +:1031E00040E01FC0982F9695969596959F3050F584 +:1031F000E0910E01F0910F01E90FF11D877021E0C0 +:1032000030E0A90102C0440F551F8A95E2F7CA01B8 +:103210009181892B818308959F3F39F04F5F4E3014 +:1032200041F051915813F8CF0DC05111F7CF942FA1 +:10323000F5CF9F3F39F0F901E90FF11D97FDFA95A0 +:1032400082830895089590910C01992321F0909123 +:103250000D01911109C020910E0130910F01F9016A +:103260003296205F3F4F1FC0982F96959695969562 +:103270009F30F0F4E0910E01F0910F01E90FF11D84 +:10328000877021E030E0A90102C0440F551F8A95E4 +:10329000E2F7CA018095918189238183089531964F +:1032A000E217F30729F090819813F9CF1082F7CF36 +:1032B000089581E090E0E0910E01F0910F01E80F98 +:1032C000F91F1082019680319105A9F70895909118 +:1032D000CB01892B8093CB01089580959091CB01F0 +:1032E00089238093CB0108951092CB01089590918A +:1032F000CA01892B8093CA01089580959091CA01D3 +:1033000089238093CA0108951092CA010895809379 +:10331000B90108951092B901089580910E0190911C +:103320000F01FC0131969C01205F3F4F80E091919D +:1033300091118F5FE217F307D1F70895E0910E0125 +:10334000F0910F018091CB018083E0910E01F0910B +:103350000F0190818091CA01892B80838091B901EE +:10336000882361F0E0910E01F0910F019081892B8B +:1033700080830E948D1981111092B90180910E01F4 +:1033800090910F010C94410ECF92DF92EF92FF9239 +:103390006C01EE24FF24C114D104E104F10421F0F6 +:1033A000C701B60120E101C020E0C72ED82EE92ECA +:1033B000FF24C114D104E104F10419F0285FC7010E +:1033C000B6016B017C0154E0F694E794D794C7945E +:1033D0005A95D1F7C114D104E104F10419F02C5F1E +:1033E000C701B6016B017C0142E0F694E794D794E3 +:1033F000C7944A95D1F7C114D104E104F10419F03E +:103400002E5FC701B601DC01CB01B695A795979554 +:103410008795892B8A2B8B2B09F02F5F822FFF90AA +:10342000EF90DF90CF9008958091E501843009F10D +:103430001092CD0120E488E190E00FB6F894A895B1 +:10344000809360000FBE2093600083B7817F84600B +:1034500083BF83B7816083BF7894889583B78E7F5D +:1034600083BF88E10FB6F8948093600010926000EB +:103470000FBE089508950895CF930E943A1A0E94AE +:1034800023040E943B1AC0E08C2F0E941105811179 +:1034900004C0CF5FCE30C1F701C081E0CF91089565 +:1034A0000E94AB130E94350E0C942E0782E084BD5F +:1034B00093E095BD9AEF97BD80936E0008952FB766 +:1034C000F8948091CE019091CF01A091D001B0915C +:1034D000D1012FBF0895CF92DF92EF92FF920F9309 +:1034E0001F932FB7F8944091CE015091CF01609176 +:1034F000D0017091D1012FBF6A017B01EE24FF241E +:103500008C0120E030E0C016D106E206F30610F48C +:10351000415051099A01281B390BC9011F910F9184 +:10352000FF90EF90DF90CF9008951F920F920FB60B +:103530000F9211248F939F93AF93BF938091CE01ED +:103540009091CF01A091D001B091D1010196A11D20 +:10355000B11D8093CE019093CF01A093D001B09381 +:10356000D101BF91AF919F918F910F900FBE0F909E +:103570001F9018950E94320BF8942FEF87EA91E67E +:10358000215080409040E1F700C0000087E090EBC0 +:10359000DC018093EE019093EF01A093F001B093D2 +:1035A000F1019CE088E10FB6F894A8958093600043 +:1035B0000FBE90936000FFCFEF92FF920F931F9387 +:1035C000CF93DF93D82FC0E08C2F0E94110500E02D +:1035D00010E0E82EF12CC701002E02C095958795CA +:1035E0000A94E2F780FD06C00F5F1F4F06301105F9 +:1035F00091F709C0602F7C2F80E00E94D805D81376 +:10360000F3CF81E004C0CF5FCE30F1F680E0DF91F0 +:10361000CF911F910F91FF90EF900895CF93C82FF6 +:103620008CE20E94DC1A882321F08C2FCF910C941D +:10363000DC1A80E0CF910895CF930E94631C811122 +:1036400002C00E94491CC5E6C15049F00E942304F3 +:103650008FE39CE90197F1F700C00000F5CF89E204 +:103660000E940E1B811113C18AE20E940E1B811160 +:103670000E94491C85E00E940E1B81110E94BA1A0B +:103680000E946E1C8093CC0187E00E940E1B882351 +:10369000A9F18BE10E940E1B882351F08091CC018F +:1036A00081FB222720F991E0922790FB81F90EC03F +:1036B0008EE00E940E1B882361F08091CC0182FB7A +:1036C000222720F991E0922790FB82F98093CC0188 +:1036D00015C080E10E940E1B9091CC01882341F01F +:1036E00093FB222720F981E0822780FB93F904C015 +:1036F000892F809580FB90F99093CC018091CC012B +:103700000E94721C0E94801C8093DF0180EE0E9448 +:103710000E1B882341F08091DF01982F909590FB3C +:1037200080F98093DF0189E30E940E1B882359F002 +:103730008091DF0181FB222720F991E0922790FB05 +:1037400081F98093DF0182EE0E940E1B882359F0DD +:103750008091DF0182FB222720F991E0922790FBE4 +:1037600082F98093DF0186EE0E940E1B882359F0B8 +:103770008091DF0183FB222720F991E0922790FBC3 +:1037800083F98093DF0183EE0E940E1B882359F09A +:103790008091DF0184FB222720F991E0922790FBA2 +:1037A00084F98093DF0185E30E940E1B882359F082 +:1037B0008091DF0185FB222720F991E0922790FB81 +:1037C00085F98093DF0181E30E940E1B882359F065 +:1037D0008091DF0186FB222720F991E0922790FB60 +:1037E00086F98093DF0181E10E940E1B882359F046 +:1037F0008091DF0187FB222720F991E0922790FB3F +:1038000087F98093DF018091DF010E94841C809101 +:10381000DF0187FB882780F980930D0187E20E94F2 +:103820000E1BC82F8EE10E940E1B8111C2608FE11A +:103830000E940E1B8111C46080E20E940E1B811148 +:10384000C86081E20E940E1B8111C06182E20E9469 +:103850000E1B8111C06283E20E940E1B8111C064A5 +:1038600084E20E940E1B882311F0C06802C0CC23A2 +:1038700029F08C2F0E947B1C6C2F03C00E94771CA8 +:10388000682F70E080E090E0CF910C946717CF91A3 +:1038900008956DEE7EEF80E090E00E94AF2260E040 +:1038A00082E090E00E94A12260E083E090E00E942C +:1038B000A12260E084E090E00E94A12260E085E027 +:1038C00090E00C94A12280E090E00E949B2221E0F5 +:1038D0008D3E9E4F09F020E0822F089582E090E017 +:1038E0000C949322682F82E090E00C94A12283E054 +:1038F00090E00C949322682F83E090E00C94A12236 +:1039000084E090E00C949322682F84E090E00C9483 +:10391000A1228091D40180FF0BC06091130185E04A +:10392000689FB001112475956795759567952BC0B3 +:1039300081FF09C06091130185E0689FB0011124E7 +:103940007595679520C082FF07C06091130185E0DF +:10395000689FB001112417C09091D5019923D1F02F +:1039600060911201961788F72091130185E0289F36 +:1039700090011124929FA001939F500D112470E09B +:10398000CA010E9465226038710540F46115710515 +:1039900039F002C065E070E0862F08958FE7089542 +:1039A00081E008958091D40180FF08C060911101E9 +:1039B00070E0759567957595679521C081FF06C084 +:1039C0006091110170E07595679519C082FF04C080 +:1039D0006091110170E010C09091D5019923C1F060 +:1039E000609110019617A0F780911101899FC00185 +:1039F000112470E00E9465226038710528F4611579 +:103A0000710521F0862F08958FE7089581E00895CC +:103A100061E070E0F4CF803F21F40E94891C819521 +:103A200004C0813F29F40E94891C8093D801089525 +:103A3000823F21F40E94891C819504C0833F29F4B0 +:103A40000E94891C8093D7010895893F19F40E9430 +:103A5000D21C05C08A3F31F40E94D21C819580930C +:103A6000D90108958B3F21F40E94D21C819504C096 +:103A70008C3F29F40E94D21C8093DA010895843F80 +:103A800021F48091D601816017C0853F21F4809197 +:103A9000D601826011C0863F21F48091D6018460F6 +:103AA0000BC0873F21F48091D601886005C0883F14 +:103AB00031F48091D60180618093D60108958D3FC5 +:103AC00021F48091D40181600BC08E3F21F480915C +:103AD000D401826005C08F3F29F48091D4018460B5 +:103AE0008093D4010895803F39F48091D80187FFF5 +:103AF0006CC01092D80169C0813F29F48091D8012F +:103B00001816BCF362C09091D701823F29F497FF49 +:103B10005CC01092D70159C0833F19F41916CCF339 +:103B200054C0893F41F48091D90118160CF04DC062 +:103B30001092D9014AC08A3F29F48091D90187FFA8 +:103B400044C0F6CF8B3F39F48091DA0187FF3DC046 +:103B50001092DA013AC08C3F29F48091DA011816EC +:103B6000BCF333C0843F21F48091D6018E7F17C00F +:103B7000853F21F48091D6018D7F11C0863F21F4CD +:103B80008091D6018B7F0BC0873F21F48091D601B5 +:103B9000877F05C0883F31F48091D6018F7E809366 +:103BA000D60113C08D3F21F48091D4018E7F0BC0CC +:103BB0008E3F21F48091D4018D7F05C08F3F29F481 +:103BC0008091D4018B7F8093D4018091D7018111A2 +:103BD0000EC08091D80181110AC08091D901811154 +:103BE00006C08091DA01811102C01092D5010895BA +:103BF00086ED91E00E944C0E0E945F1A9093D301D3 +:103C00008093D20108951F93CF93DF938091D201C7 +:103C10009091D3010E946B1AAC019091D501992328 +:103C200021F02091140130E006C0209115018AE0B6 +:103C3000289F900111244217530708F486C08091F1 +:103C4000D701C091D801D091D9011091DA01811129 +:103C500007C0C11176C0D11174C0111172C075C0F6 +:103C60009F3F19F09F5F9093D501181624F40E948E +:103C7000891C8093D7018091D70187FF05C00E94DE +:103C8000891C81958093D7011C1624F40E94891CFD +:103C90008093D8018091D80187FF05C00E94891CBC +:103CA00081958093D8016091D701662339F1C09145 +:103CB000D801CC2319F1772767FD7095872F972FAF +:103CC0000E94762123E333E343E35FE30E94DA219A +:103CD0000E9443216093D7016C2F772767FD709571 +:103CE000872F972F0E94762123E333E343E35FE39B +:103CF0000E94DA210E9443216093D8011D1624F40A +:103D00000E94D21C8093D9018091D90187FF05C000 +:103D10000E94D21C81958093D901111624F40E942F +:103D2000D21C8093DA018091DA0187FF05C00E94DE +:103D3000D21C81958093DA01DF91CF911F910C9471 +:103D4000F81D9F3F09F08ECF96CFDF91CF911F9145 +:103D50000895E6EDF1E085E0DF011D928A95E9F72F +:103D60001092D5011092D4010895833081F128F486 +:103D7000813059F08230D1F00895853009F449C07E +:103D8000B8F1863009F456C0089580911501262FA8 +:103D900030E0280F311D2F3F310524F4680F609368 +:103DA000150108958FEF80931501089580911401F6 +:103DB000262F30E0280F311D2F3F310524F4680FE6 +:103DC0006093140108958FEF8093140108958091FA +:103DD0001301262F30E0280F311D2F3F310524F429 +:103DE000680F6093130108958FEF80931301089576 +:103DF00080911201262F30E0280F311D2F3F310511 +:103E000024F4680F6093120108958FEF80931201DC +:103E1000089580911101262F30E0280F311D2F3F8A +:103E2000310524F4680F6093110108958FEF80939A +:103E30001101089580911001262F30E0280F311DC7 +:103E40002F3F310524F4680F6093100108958FEF20 +:103E5000809310010895833011F128F4813049F0E6 +:103E6000823091F00895853081F120F18630C1F1E2 +:103E7000089580911501681720F4861B8093150121 +:103E8000089510921501089580911401681720F487 +:103E9000861B809314010895109214010895809157 +:103EA0001301681720F4861B809313010895109264 +:103EB0001301089580911201681720F4861B8093E6 +:103EC000120108951092120108958091110168174E +:103ED00020F4861B8093110108951092110108951A +:103EE00080911001681720F4861B809310010895BB +:103EF0001092100108950F931F938D3109F46BC038 +:103F000008F03FC08E3009F47DC0C0F4873009F45A +:103F10006EC068F4863009F0AFC08091CC01817F1B +:103F20008E7F8093CC0181E08093DC01A6C0883035 +:103F300009F458C08B3009F49BC09EC0863109F447 +:103F400097C078F4803109F470C0813109F094C0D1 +:103F50000E94AB1390910D0181E0892780930D01A0 +:103F600087C0893109F484C08B3109F085C0809104 +:103F7000CC0181FB222720F991E0922790FB81F967 +:103F80004AC0853309F45BC048F4873209F457C04E +:103F900008F45AC0893209F452C06EC0833438F430 +:103FA0008A3308F067C0883309F462C065C083347F +:103FB00009F445C0883409F05FC00E94AB130FEFCD +:103FC00013ED20E3015010402040E1F700C0000055 +:103FD0000E94BA1A4DC00E94FD200E94350E0E9418 +:103FE0002E0746C00E946E1C0E94801C41C090910A +:103FF000CC01892F817090FF12C0917F9E7F90939A +:10400000CC013BC08091CC0182FB222720F991E0BA +:10401000922790FB82F98093CC01992349F18091FA +:10402000CC0181608093CC0123C08091CC0183FBC3 +:10403000222720F991E0922790FB83F9ECCF61E0F1 +:1040400070E080E090E010C08D5141E050E060E011 +:1040500070E08A019B0104C0000F111F221F331F53 +:104060008A95D2F7C901B8010E9467170E94AB1365 +:1040700081E003C08953E9CF80E01F910F9108953B +:1040800080E0089580E00895CF93C82F8091DC01EF +:10409000813079F018F08230E9F187C0E0910E01AB +:1040A000F0910F018081813169F0823209F07FC087 +:1040B00009C0E0910E01F0910F018081813111F072 +:1040C000823261F48C2F0E944020811104C08C2F19 +:1040D0000E947B1F1DC081E090E01AC08C2F0E94BF +:1040E0004220811114C0C43179F048F4CB3079F00A +:1040F000C03109F060C082E08093DC0108C0C932A1 +:1041000019F0C83321F057C01092DC0154C081E08F +:10411000817053C0C93289F118F5C43171F1A8F426 +:10412000C73009F046C08AE08093150194E190936E +:10413000140193E0909313018093120188E080931F +:10414000110188E28093100134C0CE51C63088F549 +:10415000EC2FF0E0E65DFE4F80818093DB0129C00B +:10416000CE34E9F020F4CB3421F56AE013C0C13538 +:1041700079F0C235F1F461E00DC08091DB01882354 +:1041800019F01092DB0115C081E08093DC0115C0AD +:1041900061E006C08091DB010E94B51E0AC06AE0A2 +:1041A0008091DB010E942B1F04C01092DC0180E093 +:1041B00004C081E002C080E0ABCFCF910895E1E878 +:1041C000F0E08081886080838081816080838FB708 +:1041D000F89493E09093890090ED909388008FBFBE +:1041E0000895EFE6F0E08081826080830895EFE635 +:1041F000F0E080818D7F80830895EFE6F0E090818C +:1042000082E08927808308951F920F920FB60F9244 +:1042100011242F933F934F935F936F937F938F93CB +:104220009F93AF93BF93EF93FF938091DD019091A4 +:10423000DE0101969093DE018093DD01811103C0C0 +:1042400082E00E942E07E091DE01E695E695F0E01F +:10425000E657FB4FE4918091DD018E1303C080E0AF +:104260000E942E07FF91EF91BF91AF919F918F9187 +:104270007F916F915F914F913F912F910F900FBE62 +:104280000F901F90189504D06894B1118DC00895B7 +:1042900070D088F09F5790F0B92F9927B751A0F0B0 +:1042A000D1F0660F771F881F991F1AF0BA95C9F7CA +:1042B00012C0B13081F077D0B1E0089574C0672F9B +:1042C000782F8827B85F39F0B93FCCF3869577957A +:1042D0006795B395D9F73EF4909580957095619563 +:1042E0007F4F8F4F9F4F0895E89409C097FB3EF48E +:1042F00090958095709561957F4F8F4F9F4F992333 +:10430000A9F0F92F96E9BB279395F69587957795B0 +:104310006795B795F111F8CFFAF4BB0F11F460FF70 +:104320001BC06F5F7F4F8F4F9F4F16C0882311F0C8 +:1043300096E911C0772321F09EE8872F762F05C0DC +:10434000662371F096E8862F70E060E02AF09A9577 +:10435000660F771F881FDAF7880F9695879597F96C +:10436000089557FD9058440F551F59F05F3F71F065 +:104370004795880F97FB991F61F09F3F79F08795CC +:104380000895121613061406551FF2CF4695F1DF55 +:1043900008C0161617061806991FF1CF86957105E5 +:1043A000610508940895E894BB2766277727CB0119 +:1043B00097F908950BD078C069D028F06ED018F026 +:1043C000952309F05AC05FC01124EECFCADFA0F3D5 +:1043D000959FD1F3950F50E0551F629FF001729F9A +:1043E000BB27F00DB11D639FAA27F00DB11DAA1FB9 +:1043F000649F6627B00DA11D661F829F2227B00D06 +:10440000A11D621F739FB00DA11D621F839FA00D90 +:10441000611D221F749F3327A00D611D231F849FE0 +:10442000600D211D822F762F6A2F11249F57504037 +:104430008AF0E1F088234AF0EE0FFF1FBB1F661FD2 +:10444000771F881F91505040A9F79E3F510570F08B +:1044500014C0AACF5F3FECF3983EDCF386957795C6 +:104460006795B795F795E7959F5FC1F7FE2B880F86 +:10447000911D9695879597F9089597F99F6780E81C +:1044800070E060E008959FEF80EC089500240A94A6 +:104490001616170618060906089500240A9412161F +:1044A0001306140605060895092E0394000C11F452 +:1044B000882352F0BB0F40F4BF2B11F460FF04C0FF +:1044C0006F5F7F4F8F4F9F4F089597FB072E16F416 +:1044D000009407D077FD09D00E947F2207FC05D009 +:1044E0003EF4909581959F4F0895709561957F4F0B +:1044F0000895EE0FFF1F0590F491E02D0994AA1B7B +:10450000BB1B51E107C0AA1FBB1FA617B70710F0BE +:10451000A61BB70B881F991F5A95A9F780959095F0 +:10452000BC01CD010895F999FECF92BD81BDF89AE5 +:10453000992780B50895A8E1B0E042E050E00C94DE +:10454000B622262FF999FECF1FBA92BD81BD20BD9C +:104550000FB6F894FA9AF99A0FBE019608950E9440 +:10456000A122272F0C94A222DC01CB01FC01F99996 +:10457000FECF06C0F2BDE1BDF89A319600B40D92AF +:0C45800041505040B8F70895F894FFCF68 +:10458C0020023007BE079B07670733070101BA01FA +:10459C0028080A03140A3F4D36394B04FE03C8039E +:1045AC008F0322033B0354036D030102030405062E +:0445BC0007080900E3 +:00000001FF diff --git a/keyboard/ergodox_ez/keymaps/msc/readme.md b/keyboard/ergodox_ez/keymaps/msc/readme.md new file mode 100644 index 000000000..0d14fcbd2 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/msc/readme.md @@ -0,0 +1,32 @@ +# MSC Configuration + +### Based mostly on the ErgoDox EZ default layout with optimizations for coding on osx. + +#### Expecting the user to rely on Coder Layer this keymap removes some of the duplicate symbol keys in the lower portions of the board and replaces them with arrow keys and modifiers. The Media Layer is also updated to match the change in the arrow keys and the left and right click buttons are moved under the thumb position. The Media layer is now reached with toggle button in the lower right. + +### Main Layer + +![Main Layer](img/main_layer.png) + +### Code Layer + +![Code Layer](img/code_layer.png) + +### Media Layer + +![Media Layer](img/media_layer.png) + +## Changelog + +Version 1.0 + +- Changed the temp code layer key in the bottom right to toggle media layer +- Changed the temp media key to only be ";" +- Changed right hand bottom row to match vim home row nav directions +- Changed media keys to match arrow key changes +- Changed media left and right click to spacebar and backspace locations +- Changed bottom left to Cmd +- Changed single quote on left bottom row to alt + +#### Coming Soon: +- A new layer for Blender editing with a focus on left hand shortcut and a righthand num pad to control the view in Blender. -- cgit v1.2.3-24-g4f1b From 577971ab07a49405e1dcd8e5f75b3ecb87e710b9 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Mon, 28 Mar 2016 00:03:21 -0500 Subject: Magic Key Overrides / Keyboard Lock / Forced NKRO Added Magic Key Overrides / Magic Key Cleanup / Added Keyboard Lock option to template / Added forced NKRO option to template (disabled by default) --- keyboard/retro_refit/Makefile | 23 +-- keyboard/retro_refit/config.h | 47 +++++- quantum/template/Makefile | 23 +-- quantum/template/config.h | 47 +++++- tmk_core/common/command.c | 353 +++++++++++++++++++++++++++++------------- tmk_core/common/command.h | 121 +++++++++++++++ tmk_core/common/keyboard.c | 6 + 7 files changed, 488 insertions(+), 132 deletions(-) diff --git a/keyboard/retro_refit/Makefile b/keyboard/retro_refit/Makefile index ec51227ff..918b43071 100644 --- a/keyboard/retro_refit/Makefile +++ b/keyboard/retro_refit/Makefile @@ -113,18 +113,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +# MIDI_ENABLE = YES # MIDI controls +# UNICODE_ENABLE = YES # Unicode +# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # Optimize size but this may cause error "relocation truncated to fit" diff --git a/keyboard/retro_refit/config.h b/keyboard/retro_refit/config.h index ba9a861ed..05fceb92b 100644 --- a/keyboard/retro_refit/config.h +++ b/keyboard/retro_refit/config.h @@ -53,11 +53,54 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* key combination for command */ + +/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ +#define FORCE_NKRO + +/* + * Magic key options + * These options 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 + +/* remap magic keys */ +//#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 PAUSE +#define MAGIC_KEY_LOCK BSLS +//#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. @@ -76,4 +119,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif +#endif \ No newline at end of file diff --git a/quantum/template/Makefile b/quantum/template/Makefile index 2efa69138..4fa195468 100644 --- a/quantum/template/Makefile +++ b/quantum/template/Makefile @@ -113,18 +113,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +# MIDI_ENABLE = YES # MIDI controls +# UNICODE_ENABLE = YES # Unicode +# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # Optimize size but this may cause error "relocation truncated to fit" diff --git a/quantum/template/config.h b/quantum/template/config.h index 7d6149f43..dae4b6313 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -55,11 +55,56 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* key combination for command */ +/* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ +//#define FORCE_NKRO + +/* + * Magic key options + * These options 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 PAUSE +//#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. diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index d59bb01bb..b4cd3ca56 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -52,6 +52,8 @@ along with this program. If not, see . static bool command_common(uint8_t code); static void command_common_help(void); +static void print_version(void); +static void print_status(void); static bool command_console(uint8_t code); static void command_console_help(void); #ifdef MOUSEKEY_ENABLE @@ -112,35 +114,140 @@ bool command_console_extra(uint8_t code) ***********************************************************/ static void command_common_help(void) { - print("\n\t- Magic -\n" - "d: debug\n" - "x: debug matrix\n" - "k: debug keyboard\n" - "m: debug mouse\n" - "v: version\n" - "s: status\n" - "c: console mode\n" - "0-4: layer0-4(F10-F4)\n" - "Paus: bootloader\n" + print( "\n\t- Magic -\n" + STR(MAGIC_KEY_DEBUG ) ": Debug Message Toggle\n" + STR(MAGIC_KEY_DEBUG_MATRIX) ": Matrix Debug Mode Toggle - Show keypresses in matrix grid\n" + STR(MAGIC_KEY_DEBUG_KBD ) ": Keyboard Debug Toggle - Show keypress report\n" + STR(MAGIC_KEY_DEBUG_MOUSE ) ": Debug Mouse Toggle\n" + STR(MAGIC_KEY_VERSION ) ": Version\n" + STR(MAGIC_KEY_STATUS ) ": Status\n" + STR(MAGIC_KEY_CONSOLE ) ": Activate Console Mode\n" + +#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM + STR(MAGIC_KEY_LAYER0 ) ": Switch to Layer 0\n" + STR(MAGIC_KEY_LAYER1 ) ": Switch to Layer 1\n" + STR(MAGIC_KEY_LAYER2 ) ": Switch to Layer 2\n" + STR(MAGIC_KEY_LAYER3 ) ": Switch to Layer 3\n" + STR(MAGIC_KEY_LAYER4 ) ": Switch to Layer 4\n" + STR(MAGIC_KEY_LAYER5 ) ": Switch to Layer 5\n" + STR(MAGIC_KEY_LAYER6 ) ": Switch to Layer 6\n" + STR(MAGIC_KEY_LAYER7 ) ": Switch to Layer 7\n" + STR(MAGIC_KEY_LAYER8 ) ": Switch to Layer 8\n" + STR(MAGIC_KEY_LAYER9 ) ": Switch to Layer 9\n" +#endif + +#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS + "F1-F10: Switch to Layer 0-9 (F10 = L0)\n" +#endif + +#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS + "0-9: Switch to Layer 0-9\n" +#endif + + STR(MAGIC_KEY_LAYER0_ALT1 ) ": Switch to Layer 0 (alternate key 1)\n" + STR(MAGIC_KEY_LAYER0_ALT2 ) ": Switch to Layer 0 (alternate key 2)\n" + STR(MAGIC_KEY_BOOTLOADER ) ": Jump to Bootloader (Reset)\n" #ifdef KEYBOARD_LOCK_ENABLE - "Caps: Lock\n" + STR(MAGIC_KEY_LOCK ) ": Lock\n" #endif #ifdef BOOTMAGIC_ENABLE - "e: eeprom\n" + STR(MAGIC_KEY_EEPROM ) ": Print EEPROM Settings\n" #endif #ifdef NKRO_ENABLE - "n: NKRO\n" + STR(MAGIC_KEY_NKRO ) ": NKRO Toggle\n" #endif #ifdef SLEEP_LED_ENABLE - "z: sleep LED test\n" + STR(MAGIC_KEY_SLEEP_LED ) ": Sleep LED Test\n" #endif ); } +static void print_version(void) +{ + // print version & information + print("\n\t- Version -\n"); + print("DESC: " STR(DESCRIPTION) "\n"); + print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " + "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " + "VER: " STR(DEVICE_VER) "\n"); + print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); + + /* build options */ + print("OPTIONS:" + +#ifdef PROTOCOL_PJRC + " PJRC" +#endif +#ifdef PROTOCOL_LUFA + " LUFA" +#endif +#ifdef PROTOCOL_VUSB + " VUSB" +#endif +#ifdef BOOTMAGIC_ENABLE + " BOOTMAGIC" +#endif +#ifdef MOUSEKEY_ENABLE + " MOUSEKEY" +#endif +#ifdef EXTRAKEY_ENABLE + " EXTRAKEY" +#endif +#ifdef CONSOLE_ENABLE + " CONSOLE" +#endif +#ifdef COMMAND_ENABLE + " COMMAND" +#endif +#ifdef NKRO_ENABLE + " NKRO" +#endif +#ifdef KEYMAP_SECTION_ENABLE + " KEYMAP_SECTION" +#endif + + " " STR(BOOTLOADER_SIZE) "\n"); + + print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__) + " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ + " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n"); + + return; +} + +static void print_status(void) +{ + + print("\n\t- Status -\n"); + + print_val_hex8(host_keyboard_leds()); + print_val_hex8(keyboard_protocol); + print_val_hex8(keyboard_idle); +#ifdef NKRO_ENABLE + print_val_hex8(keyboard_nkro); +#endif + print_val_hex32(timer_count); + +#ifdef PROTOCOL_PJRC + print_val_hex8(UDCON); + print_val_hex8(UDIEN); + print_val_hex8(UDINT); + print_val_hex8(usb_keyboard_leds); + print_val_hex8(usb_keyboard_idle_count); +#endif + +#ifdef PROTOCOL_PJRC +# if USB_COUNT_SOF + print_val_hex8(usbSofCount); +# endif +#endif + return; +} + #ifdef BOOTMAGIC_ENABLE static void print_eeconfig(void) { @@ -178,24 +285,36 @@ static void print_eeconfig(void) static bool command_common(uint8_t code) { + +#ifdef KEYBOARD_LOCK_ENABLE static host_driver_t *host_driver = 0; +#endif + switch (code) { + #ifdef SLEEP_LED_ENABLE - case KC_Z: - // test breathing sleep LED - print("Sleep LED test\n"); + + // test breathing sleep LED + case MAGIC_KC(MAGIC_KEY_SLEEP_LED): + print("Sleep LED Test\n"); sleep_led_toggle(); led_set(host_keyboard_leds()); break; #endif + #ifdef BOOTMAGIC_ENABLE - case KC_E: + + // print stored eeprom config + case MAGIC_KC(MAGIC_KEY_EEPROM): print("eeconfig:\n"); print_eeconfig(); break; #endif + #ifdef KEYBOARD_LOCK_ENABLE - case KC_CAPSLOCK: + + // lock/unlock keyboard + case MAGIC_KC(MAGIC_KEY_LOCK): if (host_get_driver()) { host_driver = host_get_driver(); clear_keyboard(); @@ -207,11 +326,15 @@ static bool command_common(uint8_t code) } break; #endif - case KC_H: - case KC_SLASH: /* ? */ + + // print help + case MAGIC_KC(MAGIC_KEY_HELP1): + case MAGIC_KC(MAGIC_KEY_HELP2): command_common_help(); break; - case KC_C: + + // activate console + case MAGIC_KC(MAGIC_KEY_CONSOLE): debug_matrix = false; debug_keyboard = false; debug_mouse = false; @@ -220,25 +343,33 @@ static bool command_common(uint8_t code) print("C> "); command_state = CONSOLE; break; - case KC_PAUSE: - clear_keyboard(); - print("\n\nbootloader... "); + + // jump to bootloader + case MAGIC_KC(MAGIC_KEY_BOOTLOADER): + clear_keyboard(); // clear to prevent stuck keys + print("\n\nJumping to bootloader... "); _delay_ms(1000); bootloader_jump(); // not return break; - case KC_D: + + // debug toggle + case MAGIC_KC(MAGIC_KEY_DEBUG): + debug_enable = !debug_enable; if (debug_enable) { + print("\ndebug: on\n"); + debug_matrix = true; + debug_keyboard = true; + debug_mouse = true; + } else { print("\ndebug: off\n"); debug_matrix = false; debug_keyboard = false; debug_mouse = false; - debug_enable = false; - } else { - print("\ndebug: on\n"); - debug_enable = true; } break; - case KC_X: // debug matrix toggle + + // debug matrix toggle + case MAGIC_KC(MAGIC_KEY_DEBUG_MATRIX): debug_matrix = !debug_matrix; if (debug_matrix) { print("\nmatrix: on\n"); @@ -247,7 +378,9 @@ static bool command_common(uint8_t code) print("\nmatrix: off\n"); } break; - case KC_K: // debug keyboard toggle + + // debug keyboard toggle + case MAGIC_KC(MAGIC_KEY_DEBUG_KBD): debug_keyboard = !debug_keyboard; if (debug_keyboard) { print("\nkeyboard: on\n"); @@ -256,87 +389,33 @@ static bool command_common(uint8_t code) print("\nkeyboard: off\n"); } break; - case KC_M: // debug mouse toggle + + // debug mouse toggle + case MAGIC_KC(MAGIC_KEY_DEBUG_MOUSE): debug_mouse = !debug_mouse; if (debug_mouse) { print("\nmouse: on\n"); debug_enable = true; } else { - print("\nmouse: off\n"); + print("\nmouse: off\n"); } break; - case KC_V: // print version & information - print("\n\t- Version -\n"); - print("DESC: " STR(DESCRIPTION) "\n"); - print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " - "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " - "VER: " STR(DEVICE_VER) "\n"); - print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); - /* build options */ - print("OPTIONS:" -#ifdef PROTOCOL_PJRC - " PJRC" -#endif -#ifdef PROTOCOL_LUFA - " LUFA" -#endif -#ifdef PROTOCOL_VUSB - " VUSB" -#endif -#ifdef BOOTMAGIC_ENABLE - " BOOTMAGIC" -#endif -#ifdef MOUSEKEY_ENABLE - " MOUSEKEY" -#endif -#ifdef EXTRAKEY_ENABLE - " EXTRAKEY" -#endif -#ifdef CONSOLE_ENABLE - " CONSOLE" -#endif -#ifdef COMMAND_ENABLE - " COMMAND" -#endif -#ifdef NKRO_ENABLE - " NKRO" -#endif -#ifdef KEYMAP_SECTION_ENABLE - " KEYMAP_SECTION" -#endif - " " STR(BOOTLOADER_SIZE) "\n"); - print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__) - " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ - " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n"); - break; - case KC_S: - print("\n\t- Status -\n"); - print_val_hex8(host_keyboard_leds()); - print_val_hex8(keyboard_protocol); - print_val_hex8(keyboard_idle); -#ifdef NKRO_ENABLE - print_val_hex8(keyboard_nkro); -#endif - print_val_hex32(timer_count); - -#ifdef PROTOCOL_PJRC - print_val_hex8(UDCON); - print_val_hex8(UDIEN); - print_val_hex8(UDINT); - print_val_hex8(usb_keyboard_leds); - print_val_hex8(usb_keyboard_idle_count); -#endif + // print version + case MAGIC_KC(MAGIC_KEY_VERSION): + print_version(); + break; -#ifdef PROTOCOL_PJRC -# if USB_COUNT_SOF - print_val_hex8(usbSofCount); -# endif -#endif + // print status + case MAGIC_KC(MAGIC_KEY_STATUS): + print_status(); break; + #ifdef NKRO_ENABLE - case KC_N: - clear_keyboard(); //Prevents stuck keys. + + // NKRO toggle + case MAGIC_KC(MAGIC_KEY_NKRO): + clear_keyboard(); // clear to prevent stuck keys keyboard_nkro = !keyboard_nkro; if (keyboard_nkro) print("NKRO: on\n"); @@ -344,18 +423,78 @@ static bool command_common(uint8_t code) print("NKRO: off\n"); break; #endif - case KC_ESC: - case KC_GRV: - case KC_0: + + // switch layers + + case MAGIC_KC(MAGIC_KEY_LAYER0_ALT1): + case MAGIC_KC(MAGIC_KEY_LAYER0_ALT2): + switch_default_layer(0); + break; + +#if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM + + case MAGIC_KC(MAGIC_KEY_LAYER0): + switch_default_layer(0); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER1): + switch_default_layer(1); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER2): + switch_default_layer(2); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER3): + switch_default_layer(3); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER4): + switch_default_layer(4); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER5): + switch_default_layer(5); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER6): + switch_default_layer(6); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER7): + switch_default_layer(7); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER8): + switch_default_layer(8); + break; + + case MAGIC_KC(MAGIC_KEY_LAYER9): + switch_default_layer(9); + break; +#endif + + +#if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS + + case KC_F1 ... KC_F9: + switch_default_layer((code - KC_F1) + 1); + break; case KC_F10: switch_default_layer(0); break; +#endif + +#if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS + case KC_1 ... KC_9: switch_default_layer((code - KC_1) + 1); break; - case KC_F1 ... KC_F9: - switch_default_layer((code - KC_F1) + 1); + case KC_0: + switch_default_layer(0); break; +#endif + default: print("?"); return false; diff --git a/tmk_core/common/command.h b/tmk_core/common/command.h index b57a6c1ce..92b18849b 100644 --- a/tmk_core/common/command.h +++ b/tmk_core/common/command.h @@ -32,4 +32,125 @@ bool command_proc(uint8_t code); #define command_proc(code) false #endif + +#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +#endif + +#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +#endif + +#ifndef MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false +#endif + +#ifndef MAGIC_KEY_HELP1 +#define MAGIC_KEY_HELP1 H +#endif + +#ifndef MAGIC_KEY_HELP2 +#define MAGIC_KEY_HELP2 SLASH +#endif + +#ifndef MAGIC_KEY_DEBUG +#define MAGIC_KEY_DEBUG D +#endif + +#ifndef MAGIC_KEY_DEBUG_MATRIX +#define MAGIC_KEY_DEBUG_MATRIX X +#endif + +#ifndef MAGIC_KEY_DEBUG_KBD +#define MAGIC_KEY_DEBUG_KBD K +#endif + +#ifndef MAGIC_KEY_DEBUG_MOUSE +#define MAGIC_KEY_DEBUG_MOUSE M +#endif + +#ifndef MAGIC_KEY_VERSION +#define MAGIC_KEY_VERSION V +#endif + +#ifndef MAGIC_KEY_STATUS +#define MAGIC_KEY_STATUS S +#endif + +#ifndef MAGIC_KEY_CONSOLE +#define MAGIC_KEY_CONSOLE C +#endif + +#ifndef MAGIC_KEY_LAYER0_ALT1 +#define MAGIC_KEY_LAYER0_ALT1 ESC +#endif + +#ifndef MAGIC_KEY_LAYER0_ALT2 +#define MAGIC_KEY_LAYER0_ALT2 GRAVE +#endif + +#ifndef MAGIC_KEY_LAYER0 +#define MAGIC_KEY_LAYER0 0 +#endif + +#ifndef MAGIC_KEY_LAYER1 +#define MAGIC_KEY_LAYER1 1 +#endif + +#ifndef MAGIC_KEY_LAYER2 +#define MAGIC_KEY_LAYER2 2 +#endif + +#ifndef MAGIC_KEY_LAYER3 +#define MAGIC_KEY_LAYER3 3 +#endif + +#ifndef MAGIC_KEY_LAYER4 +#define MAGIC_KEY_LAYER4 4 +#endif + +#ifndef MAGIC_KEY_LAYER5 +#define MAGIC_KEY_LAYER5 5 +#endif + +#ifndef MAGIC_KEY_LAYER6 +#define MAGIC_KEY_LAYER6 6 +#endif + +#ifndef MAGIC_KEY_LAYER7 +#define MAGIC_KEY_LAYER7 7 +#endif + +#ifndef MAGIC_KEY_LAYER8 +#define MAGIC_KEY_LAYER8 8 #endif + +#ifndef MAGIC_KEY_LAYER9 +#define MAGIC_KEY_LAYER9 9 +#endif + +#ifndef MAGIC_KEY_BOOTLOADER +#define MAGIC_KEY_BOOTLOADER PAUSE +#endif + +#ifndef MAGIC_KEY_LOCK +#define MAGIC_KEY_LOCK CAPS +#endif + +#ifndef MAGIC_KEY_EEPROM +#define MAGIC_KEY_EEPROM E +#endif + +#ifndef MAGIC_KEY_NKRO +#define MAGIC_KEY_NKRO N +#endif + +#ifndef MAGIC_KEY_SLEEP_LED +#define MAGIC_KEY_SLEEP_LED Z + +#endif + +#define XMAGIC_KC(key) KC_##key +#define MAGIC_KC(key) XMAGIC_KC(key) + +#endif \ No newline at end of file diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index eb7b096be..e66808485 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -70,6 +70,7 @@ void keyboard_setup(void) void keyboard_init(void) { + timer_init(); matrix_init(); #ifdef PS2_MOUSE_ENABLE @@ -90,6 +91,11 @@ void keyboard_init(void) #ifdef BACKLIGHT_ENABLE backlight_init(); #endif + +#ifdef FORCE_NKRO + keyboard_nkro = true; +#endif + } /* -- cgit v1.2.3-24-g4f1b From a1ce1332034a3f01049aab10f4a55ee6fd5560d9 Mon Sep 17 00:00:00 2001 From: Matthew Carroll Date: Mon, 28 Mar 2016 06:00:05 -0400 Subject: Corrected duplicate image issue --- keyboard/ergodox_ez/keymaps/msc/img/code_layer.png | Bin 86217 -> 71266 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png index 1d707c5ea..7b5efaae7 100644 Binary files a/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png and b/keyboard/ergodox_ez/keymaps/msc/img/code_layer.png differ -- cgit v1.2.3-24-g4f1b From ef21a855e6d60b78011ddb8940f58985b1c60acb Mon Sep 17 00:00:00 2001 From: Damien Pollet Date: Sun, 27 Mar 2016 17:58:26 +0200 Subject: Add per-event user hook function to QMK --- tmk_core/common/action.c | 5 +++++ tmk_core/common/action.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 4197c53ed..c6595196f 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -53,6 +53,9 @@ void action_exec(keyevent_t event) #endif } +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) {} + void process_action(keyrecord_t *record) { keyevent_t event = record->event; @@ -62,6 +65,8 @@ void process_action(keyrecord_t *record) if (IS_NOEVENT(event)) { return; } + process_action_user(record); + action_t action = layer_switch_get_action(event.key); dprint("ACTION: "); debug_action(action); #ifndef NO_ACTION_LAYER diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index 8a4736d7b..141dc3fca 100644 --- a/tmk_core/common/action.h +++ b/tmk_core/common/action.h @@ -58,6 +58,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt); /* user defined special function */ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); +/* user-defined (pre)processing of each key event */ +void process_action_user(keyrecord_t *record); + /* Utilities for actions. */ void process_action(keyrecord_t *record); void register_code(uint8_t code); -- cgit v1.2.3-24-g4f1b From acd64aa841f92ee638ca630fc66c3ff91c09ae72 Mon Sep 17 00:00:00 2001 From: Damien Pollet Date: Mon, 28 Mar 2016 16:12:50 +0200 Subject: Rename function to be keyboard-specific --- tmk_core/common/action.c | 4 ++-- tmk_core/common/action.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index c6595196f..2ccc0e0b9 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -54,7 +54,7 @@ void action_exec(keyevent_t event) } __attribute__ ((weak)) -void process_action_user(keyrecord_t *record) {} +void process_action_kb(keyrecord_t *record) {} void process_action(keyrecord_t *record) { @@ -65,7 +65,7 @@ void process_action(keyrecord_t *record) if (IS_NOEVENT(event)) { return; } - process_action_user(record); + process_action_kb(record); action_t action = layer_switch_get_action(event.key); dprint("ACTION: "); debug_action(action); diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index 141dc3fca..9f528af4b 100644 --- a/tmk_core/common/action.h +++ b/tmk_core/common/action.h @@ -58,8 +58,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt); /* user defined special function */ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); -/* user-defined (pre)processing of each key event */ -void process_action_user(keyrecord_t *record); +/* keyboard-specific key event (pre)processing */ +void process_action_kb(keyrecord_t *record); /* Utilities for actions. */ void process_action(keyrecord_t *record); -- cgit v1.2.3-24-g4f1b From 2181be029e01d9cf46ae3cadcdf25f5bca02c631 Mon Sep 17 00:00:00 2001 From: Damien Pollet Date: Mon, 28 Mar 2016 16:13:37 +0200 Subject: Add action-preprocessing hook to keyboard template --- quantum/template/template.c | 20 ++++++++++++++++---- quantum/template/template.h | 5 +++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/quantum/template/template.c b/quantum/template/template.c index 58e73cb09..cc52e496f 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -10,6 +10,11 @@ void matrix_scan_user(void) { // leave this function blank - it can be defined in a keymap file } +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) { + // leave this function blank - it can be defined in a keymap file +} + __attribute__ ((weak)) void led_set_user(uint8_t usb_led) { // leave this function blank - it can be defined in a keymap file @@ -18,19 +23,26 @@ void led_set_user(uint8_t usb_led) { void matrix_init_kb(void) { // put your keyboard start-up code here // runs once when the firmware starts up - + matrix_init_user(); } void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) + // put your looping keyboard code here + // runs every cycle (a lot) matrix_scan_user(); } +void process_action_kb(keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + 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); -} \ No newline at end of file +} diff --git a/quantum/template/template.h b/quantum/template/template.h index ba91abac3..b1c34d3cb 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -17,10 +17,11 @@ { \ { k00, k01, k02 }, \ { k10, KC_NO, k11 }, \ -} +} void matrix_init_user(void); void matrix_scan_user(void); +void process_action_user(keyrecord_t *record); void led_set_user(uint8_t usb_led); -#endif \ No newline at end of file +#endif -- cgit v1.2.3-24-g4f1b From bcebb3447c155056819d42668943110ab0868517 Mon Sep 17 00:00:00 2001 From: Damien Pollet Date: Mon, 28 Mar 2016 16:14:54 +0200 Subject: Add action-preprocessing kb/user hooks in planck --- keyboard/planck/planck.c | 32 +++++++++++++++++--------------- keyboard/planck/planck.h | 1 + 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index fe8731ec7..4b39cf1e8 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c @@ -1,28 +1,26 @@ #include "planck.h" __attribute__ ((weak)) -void matrix_init_user(void) { - -} +void matrix_init_user(void) {} __attribute__ ((weak)) -void matrix_scan_user(void) { +void matrix_scan_user(void) {} -} +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) {} void matrix_init_kb(void) { - #ifdef BACKLIGHT_ENABLE - backlight_init_ports(); - #endif +#ifdef BACKLIGHT_ENABLE + backlight_init_ports(); +#endif - #ifdef RGBLIGHT_ENABLE - rgblight_init(); - #endif +#ifdef RGBLIGHT_ENABLE + rgblight_init(); +#endif - - // Turn status LED on - DDRE |= (1<<6); - PORTE |= (1<<6); + // Turn status LED on + DDRE |= (1<<6); + PORTE |= (1<<6); matrix_init_user(); } @@ -30,3 +28,7 @@ void matrix_init_kb(void) { void matrix_scan_kb(void) { matrix_scan_user(); } + +void process_action_kb(keyrecord_t *record) { + process_action_user(record); +} diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index e9566b922..edcb5fbff 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h @@ -42,5 +42,6 @@ void matrix_init_user(void); void matrix_scan_user(void); +void process_action_user(keyrecord_t *record); #endif -- cgit v1.2.3-24-g4f1b From 1fd9dbdbe9e7a819a7dae50d9b745640435e0e13 Mon Sep 17 00:00:00 2001 From: Andrew Pritchard Date: Mon, 28 Mar 2016 08:39:39 -0700 Subject: Add avr-libc to the Debian build dependencies. Without avr-libc the build fails trying to #include_next a header from the standard library, which of course doesn't exist. --- BUILD_GUIDE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index 81c3ec44f..e8b242e4e 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -25,12 +25,12 @@ You can also try these instructions: 3. Install [DFU-Programmer][dfu-prog]. ### Linux -Install AVR GCC and dfu-progammer with your favorite package manager. +Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager. Debian/Ubuntu example: sudo apt-get update - sudo apt-get install gcc-avr dfu-programmer + sudo apt-get install gcc-avr avr-libc dfu-programmer ### Vagrant If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md). @@ -52,4 +52,4 @@ If you have any problems building the firmware, you can try using a tool called ## Troubleshooting 1. Try running `make clean` if the make command fails. - WIP \ No newline at end of file + WIP -- cgit v1.2.3-24-g4f1b From a70f43967283498dc01cbfc534819ac9da80f10b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Mon, 28 Mar 2016 16:21:09 -0500 Subject: Added command to turn LED indicators off while sleeping --- tmk_core/common/avr/suspend.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index caf0b0625..c07c2801d 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -66,9 +66,12 @@ static void power_down(uint8_t wdto) wdt_intr_enable(wdto); #ifdef BACKLIGHT_ENABLE -backlight_set(0); + backlight_set(0); #endif + // Turn off LED indicators + led_set(0); + // TODO: more power saving // See PicoPower application note // - I/O port input with pullup -- cgit v1.2.3-24-g4f1b From 32c7832609414d02c19b6ec312daabc8c741b266 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Mon, 28 Mar 2016 21:32:16 +0000 Subject: Refactor compiler code --- .../keymaps/german-manuneo/compile_keymap.py | 864 ++++--- .../ergodox_ez/keymaps/german-manuneo/keymap.c | 2359 ++++++++++---------- .../ergodox_ez/keymaps/german-manuneo/keymap.md | 338 +-- 3 files changed, 1900 insertions(+), 1661 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py index 3bbb9340b..9767b1e07 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -1,4 +1,13 @@ -# encoding: utf-8 +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Compiler for keymap.c files + +This scrip will generate a keymap.c file from a simple +markdown file with a specific layout. + +Usage: + python compile_keymap.py INPUT_PATH [OUTPUT_PATH] +""" from __future__ import division from __future__ import print_function from __future__ import absolute_import @@ -15,299 +24,423 @@ import collections PY2 = sys.version_info.major == 2 if PY2: - chr = unichr + chr = unichr -ONELINE_COMMENT_RE = re.compile(r"^\s*//.*$", re.MULTILINE) -INLINE_COMMENT_RE = re.compile( - r"([\,\"\[\]\{\}\d])\s+//\s[^\"\]\}\{\[]*$", re.MULTILINE -) -TRAILING_COMMA_RE = re.compile( - r",$\s*([\]\}])", re.MULTILINE -) +BASEPATH = os.path.abspath(os.path.join( + os.path.dirname(__file__), "..", ".." +)) -def loads(raw_data): - if isinstance(raw_data, bytes): - raw_data = raw_data.decode('utf-8') - raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) - raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) - raw_data = TRAILING_COMMA_RE.sub(r"\1", raw_data) - return json.loads(raw_data) -with io.open("keymap.md", encoding="utf-8") as fh: - lines = fh.readlines() +KEYBOARD_LAYOUTS = { + # These map positions in the parsed layout to + # positions in the KEYMAP MATRIX + 'ergodox_ez': [ + [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44], + [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51], + [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57], + [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64], + [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69], + [ 32, 33], [70, 71 ], + [ 34], [72 ], + [ 35, 36, 37], [73, 74, 75 ], + ] +} -SECTIONS = [ - 'layout_config', - 'layers', + +BLANK_LAYOUTS = [ +# Compact Layout +""" +.------------------------------------.------------------------------------. +| | | | | | | | | | | | | | | +!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! +| | | | | | | | | | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | |-----!-----! | | | | | | +!-----+----+----+----x----x----! ! !----x----x----+----+----+-----! +| | | | | | | | | | | | | | | +'-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' +""", + +# Wide Layout +""" +.--------------------------------------------. .--------------------------------------------. +| | | | | | | | ! | | | | | | | +!------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+------! +| | | | | | | | ! | | | | | | | +!------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+------! +| | | | | | |-------! !-------! | | | | | | +!------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+------! +| | | | | | | | ! | | | | | | | +'------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+------' + | | | | | | ! | | | | | + '-----------------------------' '-----------------------------' + .---------------. .---------------. + | | | ! | | + .-------+-------+-------! !-------+-------+-------. + ! ! | | ! | ! ! + ! ! !-------! !-------! ! ! + | | | | ! | | | + '-----------------------' '-----------------------' +""", ] -config = { - "includes_basedir": "quantum/", + +DEFAULT_CONFIG = { + "includes_basedir": "quantum/", "keymaps_includes": [ "keymap_common.h", ], - 'filler': "-+.':x", - 'separator': "|", + 'filler': "-+.':x", + 'separator': "|", 'default_key_prefix': ["KC_"], - 'unicode_macros': [], - 'macro_ids': ['UMS'], - 'layers': collections.OrderedDict(), - 'layer_lines': collections.OrderedDict(), } -section_start_index = -1 -current_section = None -current_layer_name = None -current_layer_lines = [] -config_data = [] - -def end_section(): - global section_start_index - global current_layer_lines - section_start_index = -1 - if current_section == 'layout_config': - config.update(loads("".join( - config_data - ))) - elif current_section == 'layers': - config['layer_lines'][current_layer_name] = current_layer_lines - current_layer_lines = [] - - -for i, line in enumerate(lines): - if line.startswith("# "): - section = line[2:].strip().replace(" ", "_").lower() - if section in SECTIONS: - current_section = section - elif line.startswith("## "): - sub_section = line[3:] - if current_section == 'layers': - current_layer_name = sub_section.strip() - # TODO: parse descriptio - config['layers'][current_layer_name] = "" - elif line.startswith(" "): - if section_start_index < 0: - section_start_index = i - if current_section == 'layout_config': - config_data.append(line) - elif current_section == 'layers': - if not line.strip(): - continue - current_layer_lines.append(line) - elif section_start_index > 0: - end_section() - -end_section() - -KEYDEF_RE = re.compile(r"#define ((?:{})(?:\w+))".format( - "|".join(config['key_prefixes']) -)) -IF0_RE = re.compile(r"^#if 0$.*?#endif", re.MULTILINE | re.DOTALL) -COMMENT_RE = re.compile(r"/\*.*?\*/", re.MULTILINE | re.DOTALL) -ENUM_RE = re.compile(r"(enum\s\w+\s\{.*?\};)", re.MULTILINE | re.DOTALL) -ENUM_KEY_RE = re.compile(r"({}\w+)".format( - "|".join(config['key_prefixes']) -)) -def parse_keydefs(path): - with io.open(path, encoding="utf-8") as fh: - data = fh.read() - data, _ = COMMENT_RE.subn("", data) - data, _ = IF0_RE.subn("", data) +SECTIONS = [ + 'layout_config', + 'layers', +] - for match in KEYDEF_RE.finditer(data): - yield match.groups()[0] - for enum_match in ENUM_RE.finditer(data): - enum = enum_match.groups()[0] - for key_match in ENUM_KEY_RE.finditer(enum): - yield key_match.groups()[0] +# Markdown Parsing -valid_keycodes = set() -basepath = os.path.abspath(os.path.join( - os.path.dirname(__file__), "..", "..", "..", ".." -)) +def loads(raw_data): + ONELINE_COMMENT_RE = re.compile(r""" + ^ # comment must be at the start of the line + \s* # arbitrary whitespace + // # start of the comment + (.*) # the comment + $ # until the end of line + """, re.MULTILINE | re.VERBOSE + ) + + INLINE_COMMENT_RE = re.compile(r""" + (?:[\,\"\[\]\{\}\d]) # anythig that might end a expression + \s+ # comment must be preceded by whitespace + // # start of the comment + \s # and succeded by whitespace + ([^\"\]\}\{\[]*) # the comment (except things which might be json) + $ # until the end of line + """, re.MULTILINE | re.VERBOSE + ) + + TRAILING_COMMA_RE = re.compile(r""" + , # the comma + \s* # arbitrary whitespace (including newlines) + ([\]\}]) # end of an array or object + """, re.MULTILINE | re.VERBOSE + ) -valid_keycodes.update(parse_keydefs(os.path.join( - basepath, "tmk_core", "common", "keycode.h" -))) - -for include_path in config['keymaps_includes']: - path = os.path.join(basepath, config['includes_dir'], include_path) - path = path.replace("/", os.sep) - if os.path.exists(path): - valid_keycodes.update(parse_keydefs(path)) - -LAYER_CHANGE_RE = re.compile(r"(DF|TG|MO)\(\d+\)") -MACRO_RE = re.compile(r"M\(\w+\)") -UNICODE_RE = re.compile(r"U[0-9A-F]{4}") -NON_CODE = re.compile(r"^[^A-Z0-9_]$") - - -def UNICODE_MACRO(config, c): - # TODO: don't use macro for codepoints below 0x2000 - macro_id = "UC_" + ( - unicodedata.name(c) - .replace(" ", "_") - .replace("-", "_") - .replace("SUPERSCRIPT_", "SUP_") - .replace("SUBSCRIPT_", "SUB_") - .replace("GREEK_SMALL_LETTER", "GR_LC") - .replace("GREEK_CAPITAL_LETTER", "GR_UC") - .replace("VULGAR_FRACTION_", "FR_") - ) - if macro_id not in config['macro_ids']: - config['macro_ids'].append(macro_id) - code = "{:04X}".format(ord(c)) - if (macro_id, code) not in config['unicode_macros']: - config['unicode_macros'].append((macro_id, code)) - return "M({})".format(macro_id) - - -def MACRO(config, code): - macro_id = code[2:-1] - if macro_id not in config['macro_ids']: - config['macro_ids'].append(macro_id) - return code - -# TODO: presumably we can have a macro or function which takes -# the hex code and produces much smaller code. + if isinstance(raw_data, bytes): + raw_data = raw_data.decode('utf-8') -WIN_UNICODE_MACRO_TEMPLATE = """ -case {0}: - return MACRODOWN( - D(LALT), T(KP_PLUS), {1}, U(LALT), END - ); -""" + raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) + raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) + raw_data = TRAILING_COMMA_RE.sub(r"\1", raw_data) + return json.loads(raw_data) -LINUX_UNICODE_MACRO_TEMPLATE = """ -case {0}: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), {1}, T(KP_ENTER), END - ); -""" -def macro_cases(config, mode): - if mode == 'win': - template = WIN_UNICODE_MACRO_TEMPLATE - elif mode == 'linux': - template = LINUX_UNICODE_MACRO_TEMPLATE - else: - raise ValueError("Invalid mode: ", mode) - template = template.strip() - - for macro_id, unimacro_chars in config['unicode_macros']: - unimacro_keys = ", ".join( - "T({})".format( - "KP_" + char if char.isdigit() else char - ) for char in unimacro_chars - ) - yield template.format(macro_id, unimacro_keys) +def parse_config(path): + def reset_section(): + section.update({ + 'name': section.get('name', ""), + 'sub_name': "", + 'start_line': -1, + 'end_line': -1, + 'code_lines': [], + }) + + def start_section(line_index, line): + end_section() + if line.startswith("# "): + name = line[2:] + elif line.startswith("## "): + name = line[3:] + + name = name.strip().replace(" ", "_").lower() + if name in SECTIONS: + section['name'] = name + else: + section['sub_name'] = name + section['start_line'] = line_index + + def end_section(): + if section['start_line'] >= 0: + if section['name'] == 'layout_config': + config.update(loads("\n".join( + section['code_lines'] + ))) + elif section['sub_name'].startswith('layer'): + layer_name = section['sub_name'] + config['layer_lines'][layer_name] = section['code_lines'] + + reset_section() + + def amend_section(line_index, line): + section['end_line'] = line_index + section['code_lines'].append(line) + + config = DEFAULT_CONFIG.copy() + config.update({ + 'layer_lines': collections.OrderedDict(), + 'macro_ids': {'UM'}, + 'unicode_macros': {}, + }) + + section = {} + reset_section() + + with io.open(path, encoding="utf-8") as fh: + for i, line in enumerate(fh): + if line.startswith("#"): + start_section(i, line) + elif line.startswith(" "): + amend_section(i, line[4:]) + else: + # TODO: maybe parse description + pass + + end_section() + return config + +# header file parsing + +IF0_RE = re.compile(r""" + ^ + #if 0 + $.*? + #endif + """, re.MULTILINE | re.DOTALL | re.VERBOSE +) -MACROCODE = """ -#define UC_MODE_WIN 0 -#define UC_MODE_LINUX 1 +COMMENT_RE = re.compile(r""" + /\* + .*? + \*/" + """, re.MULTILINE | re.DOTALL | re.VERBOSE +) -static uint16_t unicode_mode = UC_MODE_WIN; +def read_header_file(path): + with io.open(path, encoding="utf-8") as fh: + data = fh.read() + data, _ = COMMENT_RE.subn("", data) + data, _ = IF0_RE.subn("", data) + return data + + +def regex_partial(re_str_fmt, flags=re.MULTILINE | re.DOTALL | re.VERBOSE): + def partial(*args, **kwargs): + re_str = re_str_fmt.format(*args, **kwargs) + return re.compile(re_str, flags) + return partial + + +KEYDEF_REP = regex_partial(r""" + #define + \s + ( + (?:{}) # the prefixes + (?:\w+) # the key name + ) # capture group end + """ +) + + +ENUM_RE = re.compile(r""" + ( + enum + \s\w+\s + \{ + .*? # the enum content + \} + ; + ) # capture group end + """, re.MULTILINE | re.DOTALL | re.VERBOSE +) + + +ENUM_KEY_REP = regex_partial(r""" + ( + {} # the prefixes + \w+ # the key name + ) # capture group end + """ +) + +def parse_keydefs(config, data): + prefix_options = "|".join(config['key_prefixes']) + keydef_re = KEYDEF_REP(prefix_options) + enum_key_re = ENUM_KEY_REP(prefix_options) + for match in keydef_re.finditer(data): + yield match.groups()[0] + + for enum_match in ENUM_RE.finditer(data): + enum = enum_match.groups()[0] + for key_match in enum_key_re.finditer(enum): + yield key_match.groups()[0] + + +def parse_valid_keys(config): + valid_keycodes = set() + paths = [ + os.path.join(BASEPATH, "tmk_core", "common", "keycode.h") + ] + [ + os.path.join( + BASEPATH, config['includes_dir'], include_path + ) for include_path in config['keymaps_includes'] + ] + + for path in paths: + path = path.replace("/", os.sep) + # the config always uses forward slashe + if os.path.exists(path): + header_data = read_header_file(path) + valid_keycodes.update( + parse_keydefs(config, header_data) + ) + return valid_keycodes + +# Keymap Parsing + +def iter_raw_codes(layer_lines, filler, separator): + filler_re = re.compile("[" + filler + " ]") + for line in layer_lines: + line, _ = filler_re.subn("", line.strip()) + if not line: + continue + codes = line.split(separator) + for code in codes[1:-1]: + yield code + + +def iter_indexed_codes(raw_codes, key_indexes): + key_rows = {} + key_indexes_flat = [] + for row_index, key_indexes in enumerate(key_indexes): + for key_index in key_indexes: + key_rows[key_index] = row_index + key_indexes_flat.extend(key_indexes) + assert len(raw_codes) == len(key_indexes_flat) + for raw_code, key_index in zip(raw_codes, key_indexes_flat): + # we keep track of the row mostly for layout purposes + yield raw_code, key_index, key_rows[key_index] + + +LAYER_CHANGE_RE = re.compile(r""" + (DF|TG|MO)\(\d+\) +""", re.VERBOSE) + + +MACRO_RE = re.compile(r""" + M\(\w+\) +""", re.VERBOSE) + + +UNICODE_RE = re.compile(r""" + U[0-9A-F]{4} +""", re.VERBOSE) + + +NON_CODE = re.compile(r""" + ^[^A-Z0-9_]$ +""", re.VERBOSE) + + +def parse_uni_code(raw_code): + macro_id = "UC_" + ( + unicodedata.name(raw_code) + .replace(" ", "_") + .replace("-", "_") + ) + code = "M({})".format(macro_id) + uc_hex = "{:04X}".format(ord(raw_code)) + return code, macro_id, uc_hex + + +def parse_key_code(raw_code, key_prefixes, valid_keycodes): + if raw_code in valid_keycodes: + return raw_code + + for prefix in key_prefixes: + code = prefix + raw_code + if code in valid_keycodes: + return code + + +def parse_code(raw_code, key_prefixes, valid_keycodes): + if not raw_code: + return 'KC_TRNS', None, None + + if LAYER_CHANGE_RE.match(raw_code): + return raw_code, None, None + + if MACRO_RE.match(raw_code): + code = macro_id = raw_code[2:-1] + return code, macro_id, None + + if UNICODE_RE.match(raw_code): + hex_code = raw_code[1:] + return parse_uni_code(chr(int(hex_code, 16))) + + if NON_CODE.match(raw_code): + return parse_uni_code(raw_code) + + code = parse_key_code(raw_code, key_prefixes, valid_keycodes) + return code, None, None + + +def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): + keymap = {} + raw_codes = list(iter_raw_codes( + layer_lines, config['filler'], config['separator'] + )) + indexed_codes = iter_indexed_codes(raw_codes, key_indexes) + for raw_code, key_index, row_index in indexed_codes: + code, macro_id, uc_hex = parse_code( + raw_code, config['key_prefixes'], valid_keycodes + ) + if macro_id: + config['macro_ids'].add(macro_id) + if uc_hex: + config['unicode_macros'][macro_id] = uc_hex + keymap[key_index] = (code, row_index) + return keymap -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ - if (!record->event.pressed) {{ - return MACRO_NONE; - }} - // MACRODOWN only works in this function - switch(id) {{ - case UMS: - unicode_mode = (unicode_mode + 1) % 2; - break; - {macro_cases} - default: - break; - }} - if (unicode_mode == UC_MODE_WIN) {{ - switch(id) {{ - {win_macro_cases} - default: - break; - }} - }} else if (unicode_mode == UC_MODE_LINUX) {{ - switch(id) {{ - {linux_macro_cases} - default: - break; - }} - }} - return MACRO_NONE; -}}; -""" +def parse_keymaps(config, valid_keycodes): + keymaps = collections.OrderedDict() + key_indexes = config.get( + 'key_indexes', KEYBOARD_LAYOUTS[config['layout']] + ) + # TODO: maybe validate key_indexes -def iter_keycodes(layer_lines, config): - filler_re = re.compile("[" + - config['filler'] + " " + - "]") - - all_codes = [] - for line in layer_lines: - line, _ = filler_re.subn("", line.strip()) - if not line: - continue - codes = line.split(config['separator']) - all_codes.extend(codes[1:-1]) - - key_groups = {} - for group_index, key_indexes in enumerate(config['keymap_indexes']): - for key_index in key_indexes: - key_groups[key_index] = group_index - - keymap_indexes = sum(config['keymap_indexes'], []) - assert len(all_codes) == len(keymap_indexes) - code_index_pairs = zip(all_codes, keymap_indexes) - prev_index = None - for i, (code, key_index) in enumerate(code_index_pairs): - code = code.strip() - layer_match = LAYER_CHANGE_RE.match(code) - unicode_match = UNICODE_RE.match(code) - noncode_match = NON_CODE.match(code) - macro_match = MACRO_RE.match(code) - - ws = "\n" if key_groups[key_index] != prev_index else "" - prev_index = key_groups[key_index] - - try: - if not code: - code = 'KC_TRNS' - elif layer_match: - pass - elif macro_match: - code = MACRO(config, code) - elif unicode_match: - hex_code = code[1:] - code = UNICODE_MACRO(config, chr(int(hex_code, 16))) - elif noncode_match: - code = UNICODE_MACRO(config, code) - elif "_" in code: - assert code in valid_keycodes, "unknown code '{}'".format(code) - else: - for prefix in config['key_prefixes']: - if prefix + code in valid_keycodes: - code = prefix + code - break - assert code in valid_keycodes, "unknown code '{}'".format(code) - yield code, key_index, ws - except AssertionError: - print("Error processing code", repr(code).encode("utf-8")) - raise + for layer_name, layer_lines, in config['layer_lines'].items(): + keymaps[layer_name] = parse_keymap( + config, key_indexes, layer_lines, valid_keycodes + ) + return keymaps + +# keymap.c output USERCODE = """ // Runs just one time when the keyboard initializes. -void * matrix_init_user(void) { +void matrix_init_user(void) { }; // Runs constantly in the background, in a loop. -void * matrix_scan_user(void) { +void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); ergodox_board_led_off(); @@ -348,71 +481,158 @@ void * matrix_scan_user(void) { }; """ -def parse_keymaps(config): - keymaps = {} - layer_line_items = config['layer_lines'].items() - for i, (layer_name, layer_lines) in enumerate(layer_line_items): - print("parseing layer", layer_name) - keymap = {} - for code, key_index, ws in iter_keycodes(layer_lines, config): - keymap[key_index] = (code, ws) - keymaps[layer_name] = [v for k, v in sorted(keymap.items())] - return keymaps - - -def iter_keymap_lines(config, keymaps): - for include_path in config['keymaps_includes']: - yield '#include "{}"\n'.format(include_path) - - yield "\n" - - layer_items = config['layers'].items() - for i, (layer_name, description) in enumerate(layer_items): - yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) - - for i, macro_id in enumerate(config['macro_ids']): - yield "#define {} {}\n".format(macro_id, i) - - yield "\n" - - yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" - - layer_line_items = config['layer_lines'].items() - last_index = config['keymap_indexes'][-1] - for i, (layer_name, layer_lines) in enumerate(layer_line_items): - keymap = keymaps[layer_name] - yield "/*\n" - for line in layer_lines: - yield " *{}".format(line) - yield "*/\n" - - yield "[L{0}] = KEYMAP(\n".format(i) - - for key_index, (code, ws) in enumerate(keymap): - yield "\t{}".format(code) - if key_index < len(keymap) - 1: - yield "," - yield ws - yield "),\n" - - yield "};\n\n" - - yield "const uint16_t PROGMEM fn_actions[] = {\n" - yield "};\n" +MACROCODE = """ +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 - yield MACROCODE.format( - macro_cases="", - win_macro_cases="\n".join(macro_cases(config, mode='win')), - linux_macro_cases="\n".join(macro_cases(config, mode='linux')), - ) +static uint16_t unicode_mode = UC_MODE_WIN; - yield USERCODE +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ + if (!record->event.pressed) {{ + return MACRO_NONE; + }} + // MACRODOWN only works in this function + switch(id) {{ + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; + {macro_cases} + default: + break; + }} + if (unicode_mode == UC_MODE_WIN) {{ + switch(id) {{ + {win_macro_cases} + default: + break; + }} + }} else if (unicode_mode == UC_MODE_LINUX) {{ + switch(id) {{ + {linux_macro_cases} + default: + break; + }} + }} + return MACRO_NONE; +}}; +""" +WIN_UNICODE_MACRO_TEMPLATE = """ +case {0}: + return MACRODOWN( + D(LALT), T(KP_PLUS), {1}, U(LALT), END + ); +""" -with io.open("keymap.c", mode="w", encoding="utf-8") as fh: - for data in iter_keymap_lines(config, parse_keymaps(config)): - fh.write(data) +LINUX_UNICODE_MACRO_TEMPLATE = """ +case {0}: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), {1}, T(KP_ENTER), END + ); +""" + +def macro_cases(config, mode): + if mode == 'win': + template = WIN_UNICODE_MACRO_TEMPLATE + elif mode == 'linux': + template = LINUX_UNICODE_MACRO_TEMPLATE + else: + raise ValueError("Invalid mode: ", mode) + template = template.strip() + + for macro_id, uc_hex in config['unicode_macros'].items(): + unimacro_keys = ", ".join( + "T({})".format( + "KP_" + digit if digit.isdigit() else digit + ) for digit in uc_hex + ) + yield template.format(macro_id, unimacro_keys) + + +def iter_keymap_lines(keymap): + prev_row_index = None + for key_index in sorted(keymap): + code, row_index = keymap[key_index] + if row_index != prev_row_index: + yield "\n" + yield " {}".format(code) + if key_index < len(keymap) - 1: + yield "," + prev_row_index = row_index + + +def iter_keymap_parts(config, keymaps): + # includes + for include_path in config['keymaps_includes']: + yield '#include "{}"\n'.format(include_path) + + yield "\n" + + # definitions + for i, macro_id in enumerate(sorted(config['macro_ids'])): + yield "#define {} {}\n".format(macro_id, i) + + yield "\n" + + for i, layer_name in enumerate(config['layer_lines']): + yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name) + + yield "\n" + + # keymaps + yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n" + + for i, layer_name in enumerate(config['layer_lines']): + # comment + layer_lines = config['layer_lines'][layer_name] + prefixed_lines = " * " + " * ".join(layer_lines) + yield "/*\n{}*/\n".format(prefixed_lines) + + # keymap codes + keymap = keymaps[layer_name] + keymap_lines = "".join(iter_keymap_lines(keymap)) + yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) + + yield "};\n\n" + + # no idea what this is for + yield "const uint16_t PROGMEM fn_actions[] = {};\n" + + # macros + yield MACROCODE.format( + macro_cases="", + win_macro_cases="\n".join(macro_cases(config, mode='win')), + linux_macro_cases="\n".join(macro_cases(config, mode='linux')), + ) + + # TODO: dynamically create blinking lights + yield USERCODE + + +def main(argv=sys.argv[1:]): + if not argv or '-h' in argv or '--help' in argv: + print(__doc__) + return 0 + + in_path = os.path.abspath(argv[0]) + if not os.path.exists(in_path): + print("No such file '{}'".format(in_path)) + return 1 + + if len(argv) > 1: + out_path = os.path.abspath(argv[1]) + else: + dirname = os.path.dirname(in_path) + out_path = os.path.join(dirname, "keymap.c") + + config = parse_config(in_path) + valid_keys = parse_valid_keys(config) + keymaps = parse_keymaps(config, valid_keys) + + with io.open(out_path, mode="w", encoding="utf-8") as fh: + for part in iter_keymap_parts(config, keymaps): + fh.write(part) -# print("\n".join(sorted(valid_keycodes))) -# print(json.dumps(config, indent=4)) +if __name__ == '__main__': + sys.exit(main()) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c index 400ad6fcf..23611ddd8 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c @@ -3,449 +3,458 @@ #include "keymap_common.h" #include "keymap_extras/keymap_german.h" -#define L0 0 // Layer 0 -#define L1 1 // Layer 1 -#define L2 2 // Layer 2 -#define L3 3 // Layer 3 -#define L4 4 // Layer 4 -#define L5 5 // Layer 5 -#define L6 6 // Layer 6 -#define L7 7 // Layer 7 -#define L8 8 // Layer 8 -#define UMS 0 -#define UC_UPWARDS_ARROW 1 -#define UC_LEFTWARDS_ARROW 2 -#define UC_DOWNWARDS_ARROW 3 -#define UC_RIGHTWARDS_ARROW 4 -#define UC_SUP_ONE 5 -#define UC_SUP_TWO 6 -#define UC_SUP_THREE 7 -#define UC_SUP_FOUR 8 -#define UC_SUP_FIVE 9 -#define UC_FOR_ALL 10 -#define UC_SUP_SIX 11 -#define UC_SUP_SEVEN 12 -#define UC_SUP_EIGHT 13 -#define UC_SUP_NINE 14 -#define UC_SUP_ZERO 15 -#define UC_MULTIPLICATION_SIGN 16 -#define UC_FR_ONE_HALF 17 -#define UC_DIVISION_SIGN 18 -#define UC_FR_ONE_QUARTER 19 -#define UC_FR_ONE_FIFTH 20 -#define UC_FR_ONE_SIXTH 21 -#define UC_FR_ONE_EIGHTH 22 -#define UC_PLUS_MINUS_SIGN 23 -#define UC_EMPTY_SET 24 -#define UC_INFINITY 25 -#define UC_SUP_LATIN_SMALL_LETTER_N 26 -#define UC_THERE_EXISTS 27 -#define UC_ELEMENT_OF 28 -#define UC_FR_ONE_THIRD 29 -#define UC_NOT_EQUAL_TO 30 -#define UC_FR_TWO_THIRDS 31 -#define UC_FR_THREE_QUARTERS 32 -#define UC_ASYMPTOTICALLY_EQUAL_TO 33 -#define UC_THERE_DOES_NOT_EXIST 34 -#define UC_NOT_AN_ELEMENT_OF 35 -#define UC_SUB_ONE 36 -#define UC_SUB_TWO 37 -#define UC_SUB_THREE 38 -#define UC_SUB_FOUR 39 -#define UC_SUB_FIVE 40 -#define UC_SUB_SIX 41 -#define UC_SUB_SEVEN 42 -#define UC_SUB_EIGHT 43 -#define UC_SUB_NINE 44 -#define UC_SUB_ZERO 45 -#define UC_GR_LC_CHI 46 -#define UC_GR_LC_PI 47 -#define UC_GR_LC_PHI 48 -#define UC_GR_LC_OMEGA 49 -#define UC_GR_LC_GAMMA 50 -#define UC_GR_LC_ETA 51 -#define UC_GR_LC_XI 52 -#define UC_GR_LC_KAPPA 53 -#define UC_GR_LC_LAMDA 54 -#define UC_GR_LC_ZETA 55 -#define UC_GR_LC_UPSILON 56 -#define UC_GR_LC_IOTA 57 -#define UC_GR_LC_ALPHA 58 -#define UC_GR_LC_EPSILON 59 -#define UC_GR_LC_OMICRON 60 -#define UC_GR_LC_SIGMA 61 -#define UC_GR_LC_NU 62 -#define UC_GR_LC_RHO 63 -#define UC_GR_LC_TAU 64 -#define UC_GR_LC_DELTA 65 -#define UC_GR_LC_FINAL_SIGMA 66 -#define UC_GR_LC_THETA 67 -#define UC_GR_LC_BETA 68 -#define UC_GR_LC_MU 69 -#define UC_GR_LC_PSI 70 -#define UC_GR_UC_CHI 71 -#define UC_GR_UC_PI 72 -#define UC_GR_UC_PHI 73 -#define UC_GR_UC_OMEGA 74 -#define UC_GR_UC_GAMMA 75 -#define UC_GR_UC_ETA 76 -#define UC_GR_UC_XI 77 -#define UC_GR_UC_KAPPA 78 -#define UC_GR_UC_LAMDA 79 -#define UC_GR_UC_ZETA 80 -#define UC_GR_UC_UPSILON 81 -#define UC_GR_UC_IOTA 82 -#define UC_GR_UC_ALPHA 83 -#define UC_GR_UC_EPSILON 84 -#define UC_GR_UC_OMICRON 85 -#define UC_GR_UC_SIGMA 86 -#define UC_GR_UC_NU 87 -#define UC_GR_UC_RHO 88 -#define UC_GR_UC_TAU 89 -#define UC_GR_UC_DELTA 90 -#define UC_GR_UC_THETA 91 -#define UC_GR_UC_BETA 92 -#define UC_GR_UC_MU 93 -#define UC_GR_UC_PSI 94 +#define UC_ASYMPTOTICALLY_EQUAL_TO 0 +#define UC_DIVISION_SIGN 1 +#define UC_DOWNWARDS_ARROW 2 +#define UC_ELEMENT_OF 3 +#define UC_EMPTY_SET 4 +#define UC_FOR_ALL 5 +#define UC_GREEK_CAPITAL_LETTER_ALPHA 6 +#define UC_GREEK_CAPITAL_LETTER_BETA 7 +#define UC_GREEK_CAPITAL_LETTER_CHI 8 +#define UC_GREEK_CAPITAL_LETTER_DELTA 9 +#define UC_GREEK_CAPITAL_LETTER_EPSILON 10 +#define UC_GREEK_CAPITAL_LETTER_ETA 11 +#define UC_GREEK_CAPITAL_LETTER_GAMMA 12 +#define UC_GREEK_CAPITAL_LETTER_IOTA 13 +#define UC_GREEK_CAPITAL_LETTER_KAPPA 14 +#define UC_GREEK_CAPITAL_LETTER_LAMDA 15 +#define UC_GREEK_CAPITAL_LETTER_MU 16 +#define UC_GREEK_CAPITAL_LETTER_NU 17 +#define UC_GREEK_CAPITAL_LETTER_OMEGA 18 +#define UC_GREEK_CAPITAL_LETTER_OMICRON 19 +#define UC_GREEK_CAPITAL_LETTER_PHI 20 +#define UC_GREEK_CAPITAL_LETTER_PI 21 +#define UC_GREEK_CAPITAL_LETTER_PSI 22 +#define UC_GREEK_CAPITAL_LETTER_RHO 23 +#define UC_GREEK_CAPITAL_LETTER_SIGMA 24 +#define UC_GREEK_CAPITAL_LETTER_TAU 25 +#define UC_GREEK_CAPITAL_LETTER_THETA 26 +#define UC_GREEK_CAPITAL_LETTER_UPSILON 27 +#define UC_GREEK_CAPITAL_LETTER_XI 28 +#define UC_GREEK_CAPITAL_LETTER_ZETA 29 +#define UC_GREEK_SMALL_LETTER_ALPHA 30 +#define UC_GREEK_SMALL_LETTER_BETA 31 +#define UC_GREEK_SMALL_LETTER_CHI 32 +#define UC_GREEK_SMALL_LETTER_DELTA 33 +#define UC_GREEK_SMALL_LETTER_EPSILON 34 +#define UC_GREEK_SMALL_LETTER_ETA 35 +#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36 +#define UC_GREEK_SMALL_LETTER_GAMMA 37 +#define UC_GREEK_SMALL_LETTER_IOTA 38 +#define UC_GREEK_SMALL_LETTER_KAPPA 39 +#define UC_GREEK_SMALL_LETTER_LAMDA 40 +#define UC_GREEK_SMALL_LETTER_MU 41 +#define UC_GREEK_SMALL_LETTER_NU 42 +#define UC_GREEK_SMALL_LETTER_OMEGA 43 +#define UC_GREEK_SMALL_LETTER_OMICRON 44 +#define UC_GREEK_SMALL_LETTER_PHI 45 +#define UC_GREEK_SMALL_LETTER_PI 46 +#define UC_GREEK_SMALL_LETTER_PSI 47 +#define UC_GREEK_SMALL_LETTER_RHO 48 +#define UC_GREEK_SMALL_LETTER_SIGMA 49 +#define UC_GREEK_SMALL_LETTER_TAU 50 +#define UC_GREEK_SMALL_LETTER_THETA 51 +#define UC_GREEK_SMALL_LETTER_UPSILON 52 +#define UC_GREEK_SMALL_LETTER_XI 53 +#define UC_GREEK_SMALL_LETTER_ZETA 54 +#define UC_INFINITY 55 +#define UC_LEFTWARDS_ARROW 56 +#define UC_MULTIPLICATION_SIGN 57 +#define UC_NOT_AN_ELEMENT_OF 58 +#define UC_NOT_EQUAL_TO 59 +#define UC_PLUS_MINUS_SIGN 60 +#define UC_RIGHTWARDS_ARROW 61 +#define UC_SUBSCRIPT_EIGHT 62 +#define UC_SUBSCRIPT_FIVE 63 +#define UC_SUBSCRIPT_FOUR 64 +#define UC_SUBSCRIPT_NINE 65 +#define UC_SUBSCRIPT_ONE 66 +#define UC_SUBSCRIPT_SEVEN 67 +#define UC_SUBSCRIPT_SIX 68 +#define UC_SUBSCRIPT_THREE 69 +#define UC_SUBSCRIPT_TWO 70 +#define UC_SUBSCRIPT_ZERO 71 +#define UC_SUPERSCRIPT_EIGHT 72 +#define UC_SUPERSCRIPT_FIVE 73 +#define UC_SUPERSCRIPT_FOUR 74 +#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75 +#define UC_SUPERSCRIPT_NINE 76 +#define UC_SUPERSCRIPT_ONE 77 +#define UC_SUPERSCRIPT_SEVEN 78 +#define UC_SUPERSCRIPT_SIX 79 +#define UC_SUPERSCRIPT_THREE 80 +#define UC_SUPERSCRIPT_TWO 81 +#define UC_SUPERSCRIPT_ZERO 82 +#define UC_THERE_DOES_NOT_EXIST 83 +#define UC_THERE_EXISTS 84 +#define UC_UPWARDS_ARROW 85 +#define UC_VULGAR_FRACTION_ONE_EIGHTH 86 +#define UC_VULGAR_FRACTION_ONE_FIFTH 87 +#define UC_VULGAR_FRACTION_ONE_HALF 88 +#define UC_VULGAR_FRACTION_ONE_QUARTER 89 +#define UC_VULGAR_FRACTION_ONE_SIXTH 90 +#define UC_VULGAR_FRACTION_ONE_THIRD 91 +#define UC_VULGAR_FRACTION_THREE_QUARTERS 92 +#define UC_VULGAR_FRACTION_TWO_THIRDS 93 +#define UM 94 + +#define L0 0 // layer_0 +#define L1 1 // layer_1 +#define L2 2 // layer_2 +#define L3 3 // layer_3 +#define L4 4 // layer_4 +#define L5 5 // layer_5 +#define L6 6 // layer_6 +#define L7 7 // layer_7 +#define L8 8 // layer_8 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * .-------------------------------------. .-------------------------------------. - * |MO(5)| 1 | 2 | 3 | 4 | 5 | ACUT | ! GRV | 6 | 7 | 8 | 9 | 0 |CIRC | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * |MO(4)| X | P | F | W | G | HOME | !TG(2) | H | J | K | L | Q | Z | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * |MO(1)| U | I | A | E | O |------! !------! S | N | R | T | D | SS | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * |MO(3)| UE | OE | AE | C | V | END | ! TAB | B | M |COMM| DOT| UP | Y | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| - * '------------------------'.-------------. .-------------.'------------------------' - * | INS |TG(2) | !M(UMS)| DELT | - * .------+------+------! !------+------+------. - * ! ! | APP | ! PGUP | ! ! - * ! ! !------! !------! ! ! - * | BSPC | LSFT | ESC | ! PGDN |ENTER |SPACE | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + * '------------------------' '------------------------' + * .-----------. .-----------. + * |INS |TG(2)| !M(UM)|DELT | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | APP | ! PGUP| ! ! + * ! ! !-----! !-----! ! ! + * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE| + * '-----------------' '-----------------' */ [L0] = KEYMAP( - MO(5), - DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, MO(4), - DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, MO(1), - DE_U, DE_I, DE_A, DE_E, DE_O, MO(3), - DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, KC_TRNS, - KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, KC_INS, - TG(2), KC_APP, - KC_BSPC, - KC_LSFT, KC_ESC, DE_GRV, - DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, TG(2), - DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, DE_S, - DE_N, DE_R, DE_T, DE_D, DE_SS, KC_TAB, - DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, KC_LALT, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, M(UMS), - KC_DELT, KC_PGUP, - KC_PGDN, - KC_ENTER, KC_SPACE), + MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, + MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, + MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, + MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, + KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, + KC_INS, TG(2), + KC_APP, + KC_BSPC, KC_LSFT, KC_ESC, + DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, + TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, + DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS, + KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, + KC_LALT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, + UM, KC_DELT, + KC_PGUP, + KC_PGDN, KC_ENTER, KC_SPACE +), /* - * .-------------------------------------. .-------------------------------------. - * | |EXLM|DQOT|PARA| | | | ! | | | | |RING| | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | |ASTR|PIPE|SLSH|LCBR|RCBR| | ! |HASH|LESS|MORE| |DQOT| | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | |UNDS|MINS|AMPR|LBRC|RBRC|------! !------!DLR |LPRN|RPRN|TILD|QUOT|QST | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | |PLUS| EQL| | | | ! |BSLS|PERC|SCLN|COLN| ↑ | | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | ← | ↓ | → | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | |EXLM|DQOT|PARA| | | | | | | | |RING| | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | ← | ↓ | → | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L1] = KEYMAP( - KC_TRNS, - DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, KC_TRNS, - DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, KC_TRNS, - KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, KC_TRNS, - DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, DE_DLR, - DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, KC_TRNS, - DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, KC_TRNS, - KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, + KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, + KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, + KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, + DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, + KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, + KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F11 | ! F12 | F6 | F7 | F8 | F9 |F10 |PEQL | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | | | | | | | ! | | P7 | P8 | P9 |PAST|PSLS | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | |------! !------! | P4 | P5 | P6 |PMNS|PMNS | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | | | ! NLCK | | P1 | P2 | P3 |PPLS|PPLS | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L2] = KEYMAP( - KC_TRNS, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_F12, - KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL, KC_TRNS, - KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS, KC_TRNS, - KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS, KC_NLCK, - KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS, KC_P0, - KC_PCMM, KC_PDOT, KC_PENT, KC_PENT, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL, + KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS, + KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS, + KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | ! | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | × | ½ | ÷ | ¼ | ⅕ | | ! | ⅙ | | ⅛ | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | ± | AT |EURO| ∅ |------! !------! ∞ | ⁿ | ∃ | ∈ | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | ! |EXLM| | ∄ | ∉ | | | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L3] = KEYMAP( - KC_TRNS, - M(UC_SUP_ONE), M(UC_SUP_TWO), M(UC_SUP_THREE), M(UC_SUP_FOUR), M(UC_SUP_FIVE), M(UC_FOR_ALL), KC_TRNS, - M(UC_MULTIPLICATION_SIGN), M(UC_FR_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_FR_ONE_QUARTER), M(UC_FR_ONE_FIFTH), KC_TRNS, KC_TRNS, - KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET), KC_TRNS, - M(UC_FR_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_FR_TWO_THIRDS), M(UC_FR_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), 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, - M(UC_SUP_SIX), M(UC_SUP_SEVEN), M(UC_SUP_EIGHT), M(UC_SUP_NINE), M(UC_SUP_ZERO), KC_TRNS, KC_TRNS, - M(UC_FR_ONE_SIXTH), KC_TRNS, M(UC_FR_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_INFINITY), - M(UC_SUP_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS, KC_TRNS, - DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), 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, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL), + KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS, + KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET), + KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), 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, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS, + KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS, + M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS, + KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), 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 +), /* - * .-------------------------------------. .-------------------------------------. - * | | ₁ | ₂ | ₃ | ₄ | ₅ | | ! | ₆ | ₇ | ₈ | ₉ | ₀ | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | χ | π | φ | ω | γ | | ! | η | ξ | κ | λ | | ζ | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | υ | ι | α | ε | ο |------! !------! σ | ν | ρ | τ | δ | ς | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | θ | | | | | ! | β | μ | | | | ψ | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | θ | | | | | | β | μ | | | | ψ | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L4] = KEYMAP( - KC_TRNS, - M(UC_SUB_ONE), M(UC_SUB_TWO), M(UC_SUB_THREE), M(UC_SUB_FOUR), M(UC_SUB_FIVE), KC_TRNS, KC_TRNS, - M(UC_GR_LC_CHI), M(UC_GR_LC_PI), M(UC_GR_LC_PHI), M(UC_GR_LC_OMEGA), M(UC_GR_LC_GAMMA), KC_TRNS, KC_TRNS, - M(UC_GR_LC_UPSILON), M(UC_GR_LC_IOTA), M(UC_GR_LC_ALPHA), M(UC_GR_LC_EPSILON), M(UC_GR_LC_OMICRON), KC_TRNS, - KC_TRNS, M(UC_GR_LC_THETA), 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, - M(UC_SUB_SIX), M(UC_SUB_SEVEN), M(UC_SUB_EIGHT), M(UC_SUB_NINE), M(UC_SUB_ZERO), KC_TRNS, KC_TRNS, - M(UC_GR_LC_ETA), M(UC_GR_LC_XI), M(UC_GR_LC_KAPPA), M(UC_GR_LC_LAMDA), KC_TRNS, M(UC_GR_LC_ZETA), M(UC_GR_LC_SIGMA), - M(UC_GR_LC_NU), M(UC_GR_LC_RHO), M(UC_GR_LC_TAU), M(UC_GR_LC_DELTA), M(UC_GR_LC_FINAL_SIGMA), KC_TRNS, - M(UC_GR_LC_BETA), M(UC_GR_LC_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GR_LC_PSI), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON), + KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), 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, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA), + M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA), + KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | Χ | Π | Φ | Ω | Γ | | ! | Η | Ξ | Κ | Λ | | Ζ | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | Υ | Ι | Α | Ε | Ο |------! !------! Σ | Ν | Ρ | Τ | Δ | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | Θ | | | | | ! | Β | Μ | | | | Ψ | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | Θ | | | | | | Β | Μ | | | | Ψ | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L5] = KEYMAP( - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - M(UC_GR_UC_CHI), M(UC_GR_UC_PI), M(UC_GR_UC_PHI), M(UC_GR_UC_OMEGA), M(UC_GR_UC_GAMMA), KC_TRNS, KC_TRNS, - M(UC_GR_UC_UPSILON), M(UC_GR_UC_IOTA), M(UC_GR_UC_ALPHA), M(UC_GR_UC_EPSILON), M(UC_GR_UC_OMICRON), KC_TRNS, - KC_TRNS, M(UC_GR_UC_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - M(UC_GR_UC_ETA), M(UC_GR_UC_XI), M(UC_GR_UC_KAPPA), M(UC_GR_UC_LAMDA), KC_TRNS, M(UC_GR_UC_ZETA), M(UC_GR_UC_SIGMA), - M(UC_GR_UC_NU), M(UC_GR_UC_RHO), M(UC_GR_UC_TAU), M(UC_GR_UC_DELTA), KC_TRNS, KC_TRNS, - M(UC_GR_UC_BETA), M(UC_GR_UC_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GR_UC_PSI), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON), + KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA), + M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | |------! !------! | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L6] = KEYMAP( - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | |------! !------! | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L7] = KEYMAP( - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), /* - * .-------------------------------------. .-------------------------------------. - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | |------! !------! | | | | | | - * !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - * | | | | | | | | ! | | | | | | | - * '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------'.-------------. .-------------.'------------------------' - * | | | ! | | - * .------+------+------! !------+------+------. - * ! ! | | ! | ! ! - * ! ! !------! !------! ! ! - * | | | | ! | | | - * '--------------------' '--------------------' + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' */ [L8] = KEYMAP( - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), }; -const uint16_t PROGMEM fn_actions[] = { -}; +const uint16_t PROGMEM fn_actions[] = {}; #define UC_MODE_WIN 0 #define UC_MODE_LINUX 1 @@ -453,791 +462,791 @@ const uint16_t PROGMEM fn_actions[] = { static uint16_t unicode_mode = UC_MODE_WIN; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (!record->event.pressed) { - return MACRO_NONE; - } - // MACRODOWN only works in this function + if (!record->event.pressed) { + return MACRO_NONE; + } + // MACRODOWN only works in this function switch(id) { - case UMS: - unicode_mode = (unicode_mode + 1) % 2; - break; - - default: - break; + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; + + default: + break; } - if (unicode_mode == UC_MODE_WIN) { - switch(id) { - case UC_UPWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_1), U(LALT), END - ); + if (unicode_mode == UC_MODE_WIN) { + switch(id) { + case UC_GREEK_SMALL_LETTER_OMICRON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(F), U(LALT), END + ); case UC_LEFTWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_0), U(LALT), END - ); -case UC_DOWNWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_3), U(LALT), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_0), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_RHO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_1), U(LALT), END + ); +case UC_SUBSCRIPT_THREE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_3), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_EIGHTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(B), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_LAMDA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(B), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_THIRD: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_3), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_XI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(E), U(LALT), END + ); +case UC_THERE_DOES_NOT_EXIST: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_4), U(LALT), END + ); +case UC_SUPERSCRIPT_ONE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_9), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_BETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_2), U(LALT), END + ); +case UC_SUBSCRIPT_FIVE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_5), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_IOTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_9), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_FIFTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_5), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_PSI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_8), U(LALT), END + ); +case UC_SUBSCRIPT_NINE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_9), U(LALT), END + ); +case UC_SUPERSCRIPT_FOUR: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_4), U(LALT), END + ); case UC_RIGHTWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_2), U(LALT), END - ); -case UC_SUP_ONE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_9), U(LALT), END - ); -case UC_SUP_TWO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_2), U(LALT), END - ); -case UC_SUP_THREE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_3), U(LALT), END - ); -case UC_SUP_FOUR: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_4), U(LALT), END - ); -case UC_SUP_FIVE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_5), U(LALT), END - ); -case UC_FOR_ALL: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_0), U(LALT), END - ); -case UC_SUP_SIX: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_6), U(LALT), END - ); -case UC_SUP_SEVEN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_7), U(LALT), END - ); -case UC_SUP_EIGHT: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_8), U(LALT), END - ); -case UC_SUP_NINE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_9), U(LALT), END - ); -case UC_SUP_ZERO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_0), U(LALT), END - ); -case UC_MULTIPLICATION_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(D), T(KP_7), U(LALT), END - ); -case UC_FR_ONE_HALF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(D), U(LALT), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_2), U(LALT), END + ); +case UC_SUPERSCRIPT_SIX: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_6), U(LALT), END + ); +case UC_DOWNWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_3), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_PI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_0), U(LALT), END + ); +case UC_SUPERSCRIPT_TWO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_2), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_OMEGA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_9), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_PSI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_8), U(LALT), END + ); +case UC_SUBSCRIPT_FOUR: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_4), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_NU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(D), U(LALT), END + ); case UC_DIVISION_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(F), T(KP_7), U(LALT), END - ); -case UC_FR_ONE_QUARTER: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(C), U(LALT), END - ); -case UC_FR_ONE_FIFTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_5), U(LALT), END - ); -case UC_FR_ONE_SIXTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_9), U(LALT), END - ); -case UC_FR_ONE_EIGHTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(B), U(LALT), END - ); -case UC_PLUS_MINUS_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_1), U(LALT), END - ); -case UC_EMPTY_SET: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_5), U(LALT), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(F), T(KP_7), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_3), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_RHO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_1), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_SIXTH: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_9), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_GAMMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_3), U(LALT), END + ); +case UC_VULGAR_FRACTION_TWO_THIRDS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_4), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_NU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(D), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_ZETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_6), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_EPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_5), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_KAPPA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(A), U(LALT), END + ); +case UC_SUPERSCRIPT_SEVEN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_7), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_PI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_0), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_FINAL_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_2), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_XI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(E), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_THETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_8), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_ETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_7), U(LALT), END + ); +case UC_SUBSCRIPT_TWO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_2), U(LALT), END + ); +case UC_ASYMPTOTICALLY_EQUAL_TO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_4), T(KP_3), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_ALPHA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_1), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_PHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_6), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_PHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_6), U(LALT), END + ); case UC_INFINITY: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_1), T(E), U(LALT), END - ); -case UC_SUP_LATIN_SMALL_LETTER_N: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(F), U(LALT), END - ); -case UC_THERE_EXISTS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_3), U(LALT), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_1), T(E), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_OMICRON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(F), U(LALT), END + ); case UC_ELEMENT_OF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_8), U(LALT), END - ); -case UC_FR_ONE_THIRD: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_3), U(LALT), END - ); -case UC_NOT_EQUAL_TO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_6), T(KP_0), U(LALT), END - ); -case UC_FR_TWO_THIRDS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_4), U(LALT), END - ); -case UC_FR_THREE_QUARTERS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(E), U(LALT), END - ); -case UC_ASYMPTOTICALLY_EQUAL_TO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_4), T(KP_3), U(LALT), END - ); -case UC_THERE_DOES_NOT_EXIST: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_4), U(LALT), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_8), U(LALT), END + ); +case UC_MULTIPLICATION_SIGN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(D), T(KP_7), U(LALT), END + ); +case UC_SUBSCRIPT_ZERO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_0), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_SIGMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_3), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_OMEGA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_9), U(LALT), END + ); +case UC_SUBSCRIPT_ONE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_1), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_ZETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_6), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_TAU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_4), U(LALT), END + ); +case UC_SUPERSCRIPT_FIVE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_5), U(LALT), END + ); +case UC_THERE_EXISTS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_3), U(LALT), END + ); +case UC_PLUS_MINUS_SIGN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_1), U(LALT), END + ); +case UC_VULGAR_FRACTION_THREE_QUARTERS: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(E), U(LALT), END + ); +case UC_SUPERSCRIPT_THREE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_3), U(LALT), END + ); +case UC_EMPTY_SET: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_5), U(LALT), END + ); +case UC_UPWARDS_ARROW: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_1), U(LALT), END + ); +case UC_SUPERSCRIPT_NINE: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_9), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_DELTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_4), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_MU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(C), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_KAPPA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(A), U(LALT), END + ); +case UC_SUBSCRIPT_EIGHT: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_8), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_ALPHA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_1), U(LALT), END + ); +case UC_SUBSCRIPT_SEVEN: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_7), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_BETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_2), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_ETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_7), U(LALT), END + ); +case UC_SUPERSCRIPT_EIGHT: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_8), U(LALT), END + ); +case UC_SUPERSCRIPT_ZERO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_0), U(LALT), END + ); case UC_NOT_AN_ELEMENT_OF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_9), U(LALT), END - ); -case UC_SUB_ONE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_1), U(LALT), END - ); -case UC_SUB_TWO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_2), U(LALT), END - ); -case UC_SUB_THREE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_3), U(LALT), END - ); -case UC_SUB_FOUR: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_4), U(LALT), END - ); -case UC_SUB_FIVE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_5), U(LALT), END - ); -case UC_SUB_SIX: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_6), U(LALT), END - ); -case UC_SUB_SEVEN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_7), U(LALT), END - ); -case UC_SUB_EIGHT: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_8), U(LALT), END - ); -case UC_SUB_NINE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_9), U(LALT), END - ); -case UC_SUB_ZERO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_0), U(LALT), END - ); -case UC_GR_LC_CHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_7), U(LALT), END - ); -case UC_GR_LC_PI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_0), U(LALT), END - ); -case UC_GR_LC_PHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_6), U(LALT), END - ); -case UC_GR_LC_OMEGA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_9), U(LALT), END - ); -case UC_GR_LC_GAMMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_3), U(LALT), END - ); -case UC_GR_LC_ETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_7), U(LALT), END - ); -case UC_GR_LC_XI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(E), U(LALT), END - ); -case UC_GR_LC_KAPPA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(A), U(LALT), END - ); -case UC_GR_LC_LAMDA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(B), U(LALT), END - ); -case UC_GR_LC_ZETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_6), U(LALT), END - ); -case UC_GR_LC_UPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_5), U(LALT), END - ); -case UC_GR_LC_IOTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_9), U(LALT), END - ); -case UC_GR_LC_ALPHA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_1), U(LALT), END - ); -case UC_GR_LC_EPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_5), U(LALT), END - ); -case UC_GR_LC_OMICRON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(F), U(LALT), END - ); -case UC_GR_LC_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_3), U(LALT), END - ); -case UC_GR_LC_NU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(D), U(LALT), END - ); -case UC_GR_LC_RHO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_1), U(LALT), END - ); -case UC_GR_LC_TAU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_4), U(LALT), END - ); -case UC_GR_LC_DELTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_4), U(LALT), END - ); -case UC_GR_LC_FINAL_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_2), U(LALT), END - ); -case UC_GR_LC_THETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_8), U(LALT), END - ); -case UC_GR_LC_BETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_2), U(LALT), END - ); -case UC_GR_LC_MU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(C), U(LALT), END - ); -case UC_GR_LC_PSI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_8), U(LALT), END - ); -case UC_GR_UC_CHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_7), U(LALT), END - ); -case UC_GR_UC_PI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_0), U(LALT), END - ); -case UC_GR_UC_PHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_6), U(LALT), END - ); -case UC_GR_UC_OMEGA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_9), U(LALT), END - ); -case UC_GR_UC_GAMMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_3), U(LALT), END - ); -case UC_GR_UC_ETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_7), U(LALT), END - ); -case UC_GR_UC_XI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(E), U(LALT), END - ); -case UC_GR_UC_KAPPA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(A), U(LALT), END - ); -case UC_GR_UC_LAMDA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(B), U(LALT), END - ); -case UC_GR_UC_ZETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_6), U(LALT), END - ); -case UC_GR_UC_UPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_5), U(LALT), END - ); -case UC_GR_UC_IOTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_9), U(LALT), END - ); -case UC_GR_UC_ALPHA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_1), U(LALT), END - ); -case UC_GR_UC_EPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_5), U(LALT), END - ); -case UC_GR_UC_OMICRON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(F), U(LALT), END - ); -case UC_GR_UC_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_3), U(LALT), END - ); -case UC_GR_UC_NU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(D), U(LALT), END - ); -case UC_GR_UC_RHO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_1), U(LALT), END - ); -case UC_GR_UC_TAU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_4), U(LALT), END - ); -case UC_GR_UC_DELTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_4), U(LALT), END - ); -case UC_GR_UC_THETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_8), U(LALT), END - ); -case UC_GR_UC_BETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_2), U(LALT), END - ); -case UC_GR_UC_MU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(C), U(LALT), END - ); -case UC_GR_UC_PSI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_8), U(LALT), END - ); - default: - break; - } - } else if (unicode_mode == UC_MODE_LINUX) { - switch(id) { - case UC_UPWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_1), T(KP_ENTER), END - ); + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_9), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_UPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_5), U(LALT), END + ); +case UC_NOT_EQUAL_TO: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_6), T(KP_0), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_CHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_7), U(LALT), END + ); +case UC_FOR_ALL: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_0), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_TAU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_4), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_QUARTER: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(C), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_CHI: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_7), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_THETA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_8), U(LALT), END + ); +case UC_GREEK_SMALL_LETTER_IOTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_9), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_LAMDA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(B), U(LALT), END + ); +case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(F), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_UPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_5), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_MU: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(C), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_EPSILON: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_5), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_GAMMA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_3), U(LALT), END + ); +case UC_SUBSCRIPT_SIX: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_6), U(LALT), END + ); +case UC_GREEK_CAPITAL_LETTER_DELTA: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_4), U(LALT), END + ); +case UC_VULGAR_FRACTION_ONE_HALF: + return MACRODOWN( + D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(D), U(LALT), END + ); + default: + break; + } + } else if (unicode_mode == UC_MODE_LINUX) { + switch(id) { + case UC_GREEK_SMALL_LETTER_OMICRON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(F), T(KP_ENTER), END + ); case UC_LEFTWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_0), T(KP_ENTER), END - ); -case UC_DOWNWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_3), T(KP_ENTER), END - ); + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_0), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_RHO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_1), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_THREE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_3), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_EIGHTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(B), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_LAMDA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(B), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_THIRD: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_3), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_XI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(E), T(KP_ENTER), END + ); +case UC_THERE_DOES_NOT_EXIST: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_4), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_ONE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_BETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_2), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_FIVE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_5), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_IOTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_9), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_FIFTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_5), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_PSI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_8), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_NINE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_9), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_FOUR: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_4), T(KP_ENTER), END + ); case UC_RIGHTWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_2), T(KP_ENTER), END - ); -case UC_SUP_ONE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_9), T(KP_ENTER), END - ); -case UC_SUP_TWO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_2), T(KP_ENTER), END - ); -case UC_SUP_THREE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_3), T(KP_ENTER), END - ); -case UC_SUP_FOUR: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_4), T(KP_ENTER), END - ); -case UC_SUP_FIVE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_5), T(KP_ENTER), END - ); -case UC_FOR_ALL: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_0), T(KP_ENTER), END - ); -case UC_SUP_SIX: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_6), T(KP_ENTER), END - ); -case UC_SUP_SEVEN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_7), T(KP_ENTER), END - ); -case UC_SUP_EIGHT: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_8), T(KP_ENTER), END - ); -case UC_SUP_NINE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_9), T(KP_ENTER), END - ); -case UC_SUP_ZERO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_0), T(KP_ENTER), END - ); -case UC_MULTIPLICATION_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(D), T(KP_7), T(KP_ENTER), END - ); -case UC_FR_ONE_HALF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(D), T(KP_ENTER), END - ); + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_2), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_SIX: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_6), T(KP_ENTER), END + ); +case UC_DOWNWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_3), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_PI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_0), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_TWO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_2), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_OMEGA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_PSI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_8), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_FOUR: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_4), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_NU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(D), T(KP_ENTER), END + ); case UC_DIVISION_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(F), T(KP_7), T(KP_ENTER), END - ); -case UC_FR_ONE_QUARTER: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(C), T(KP_ENTER), END - ); -case UC_FR_ONE_FIFTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_5), T(KP_ENTER), END - ); -case UC_FR_ONE_SIXTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_9), T(KP_ENTER), END - ); -case UC_FR_ONE_EIGHTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(B), T(KP_ENTER), END - ); -case UC_PLUS_MINUS_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_1), T(KP_ENTER), END - ); -case UC_EMPTY_SET: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_5), T(KP_ENTER), END - ); + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(F), T(KP_7), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_3), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_RHO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_1), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_SIXTH: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_GAMMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_3), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_TWO_THIRDS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_4), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_NU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(D), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_ZETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_6), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_EPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_5), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_KAPPA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(A), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_SEVEN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_7), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_PI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_0), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_FINAL_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_2), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_XI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(E), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_THETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_8), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_ETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_7), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_TWO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_2), T(KP_ENTER), END + ); +case UC_ASYMPTOTICALLY_EQUAL_TO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_4), T(KP_3), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_ALPHA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_1), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_PHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_6), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_PHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_6), T(KP_ENTER), END + ); case UC_INFINITY: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_1), T(E), T(KP_ENTER), END - ); -case UC_SUP_LATIN_SMALL_LETTER_N: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(F), T(KP_ENTER), END - ); -case UC_THERE_EXISTS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_3), T(KP_ENTER), END - ); + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_1), T(E), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_OMICRON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(F), T(KP_ENTER), END + ); case UC_ELEMENT_OF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_8), T(KP_ENTER), END - ); -case UC_FR_ONE_THIRD: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_3), T(KP_ENTER), END - ); -case UC_NOT_EQUAL_TO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_6), T(KP_0), T(KP_ENTER), END - ); -case UC_FR_TWO_THIRDS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_4), T(KP_ENTER), END - ); -case UC_FR_THREE_QUARTERS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(E), T(KP_ENTER), END - ); -case UC_ASYMPTOTICALLY_EQUAL_TO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_4), T(KP_3), T(KP_ENTER), END - ); -case UC_THERE_DOES_NOT_EXIST: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_4), T(KP_ENTER), END - ); + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_8), T(KP_ENTER), END + ); +case UC_MULTIPLICATION_SIGN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(D), T(KP_7), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_ZERO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_0), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_SIGMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_3), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_OMEGA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_9), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_ONE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_1), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_ZETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_6), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_TAU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_4), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_FIVE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_5), T(KP_ENTER), END + ); +case UC_THERE_EXISTS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_3), T(KP_ENTER), END + ); +case UC_PLUS_MINUS_SIGN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_1), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_THREE_QUARTERS: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(E), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_THREE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_3), T(KP_ENTER), END + ); +case UC_EMPTY_SET: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_5), T(KP_ENTER), END + ); +case UC_UPWARDS_ARROW: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_1), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_NINE: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_DELTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_4), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_MU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(C), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_KAPPA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(A), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_EIGHT: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_8), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_ALPHA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_1), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_SEVEN: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_7), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_BETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_2), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_ETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_7), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_EIGHT: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_8), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_ZERO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_0), T(KP_ENTER), END + ); case UC_NOT_AN_ELEMENT_OF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_9), T(KP_ENTER), END - ); -case UC_SUB_ONE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_1), T(KP_ENTER), END - ); -case UC_SUB_TWO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_2), T(KP_ENTER), END - ); -case UC_SUB_THREE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_3), T(KP_ENTER), END - ); -case UC_SUB_FOUR: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_4), T(KP_ENTER), END - ); -case UC_SUB_FIVE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_5), T(KP_ENTER), END - ); -case UC_SUB_SIX: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_6), T(KP_ENTER), END - ); -case UC_SUB_SEVEN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_7), T(KP_ENTER), END - ); -case UC_SUB_EIGHT: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_8), T(KP_ENTER), END - ); -case UC_SUB_NINE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_9), T(KP_ENTER), END - ); -case UC_SUB_ZERO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_0), T(KP_ENTER), END - ); -case UC_GR_LC_CHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_7), T(KP_ENTER), END - ); -case UC_GR_LC_PI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_0), T(KP_ENTER), END - ); -case UC_GR_LC_PHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_6), T(KP_ENTER), END - ); -case UC_GR_LC_OMEGA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_9), T(KP_ENTER), END - ); -case UC_GR_LC_GAMMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_3), T(KP_ENTER), END - ); -case UC_GR_LC_ETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_7), T(KP_ENTER), END - ); -case UC_GR_LC_XI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(E), T(KP_ENTER), END - ); -case UC_GR_LC_KAPPA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(A), T(KP_ENTER), END - ); -case UC_GR_LC_LAMDA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(B), T(KP_ENTER), END - ); -case UC_GR_LC_ZETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_6), T(KP_ENTER), END - ); -case UC_GR_LC_UPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_5), T(KP_ENTER), END - ); -case UC_GR_LC_IOTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_9), T(KP_ENTER), END - ); -case UC_GR_LC_ALPHA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_1), T(KP_ENTER), END - ); -case UC_GR_LC_EPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_5), T(KP_ENTER), END - ); -case UC_GR_LC_OMICRON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(F), T(KP_ENTER), END - ); -case UC_GR_LC_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_3), T(KP_ENTER), END - ); -case UC_GR_LC_NU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(D), T(KP_ENTER), END - ); -case UC_GR_LC_RHO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_1), T(KP_ENTER), END - ); -case UC_GR_LC_TAU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_4), T(KP_ENTER), END - ); -case UC_GR_LC_DELTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_4), T(KP_ENTER), END - ); -case UC_GR_LC_FINAL_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_2), T(KP_ENTER), END - ); -case UC_GR_LC_THETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_8), T(KP_ENTER), END - ); -case UC_GR_LC_BETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_2), T(KP_ENTER), END - ); -case UC_GR_LC_MU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(C), T(KP_ENTER), END - ); -case UC_GR_LC_PSI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_8), T(KP_ENTER), END - ); -case UC_GR_UC_CHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_7), T(KP_ENTER), END - ); -case UC_GR_UC_PI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_0), T(KP_ENTER), END - ); -case UC_GR_UC_PHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_6), T(KP_ENTER), END - ); -case UC_GR_UC_OMEGA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_9), T(KP_ENTER), END - ); -case UC_GR_UC_GAMMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_3), T(KP_ENTER), END - ); -case UC_GR_UC_ETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_7), T(KP_ENTER), END - ); -case UC_GR_UC_XI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(E), T(KP_ENTER), END - ); -case UC_GR_UC_KAPPA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(A), T(KP_ENTER), END - ); -case UC_GR_UC_LAMDA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(B), T(KP_ENTER), END - ); -case UC_GR_UC_ZETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_6), T(KP_ENTER), END - ); -case UC_GR_UC_UPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_5), T(KP_ENTER), END - ); -case UC_GR_UC_IOTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_9), T(KP_ENTER), END - ); -case UC_GR_UC_ALPHA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_1), T(KP_ENTER), END - ); -case UC_GR_UC_EPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_5), T(KP_ENTER), END - ); -case UC_GR_UC_OMICRON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(F), T(KP_ENTER), END - ); -case UC_GR_UC_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_3), T(KP_ENTER), END - ); -case UC_GR_UC_NU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(D), T(KP_ENTER), END - ); -case UC_GR_UC_RHO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_1), T(KP_ENTER), END - ); -case UC_GR_UC_TAU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_4), T(KP_ENTER), END - ); -case UC_GR_UC_DELTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_4), T(KP_ENTER), END - ); -case UC_GR_UC_THETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_8), T(KP_ENTER), END - ); -case UC_GR_UC_BETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_2), T(KP_ENTER), END - ); -case UC_GR_UC_MU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(C), T(KP_ENTER), END - ); -case UC_GR_UC_PSI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_8), T(KP_ENTER), END - ); - default: - break; - } - } + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_UPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_5), T(KP_ENTER), END + ); +case UC_NOT_EQUAL_TO: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_6), T(KP_0), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_CHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_7), T(KP_ENTER), END + ); +case UC_FOR_ALL: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_0), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_TAU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_4), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_QUARTER: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(C), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_CHI: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_7), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_THETA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_8), T(KP_ENTER), END + ); +case UC_GREEK_SMALL_LETTER_IOTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_9), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_LAMDA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(B), T(KP_ENTER), END + ); +case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(F), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_UPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_5), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_MU: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(C), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_EPSILON: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_5), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_GAMMA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_3), T(KP_ENTER), END + ); +case UC_SUBSCRIPT_SIX: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_6), T(KP_ENTER), END + ); +case UC_GREEK_CAPITAL_LETTER_DELTA: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_4), T(KP_ENTER), END + ); +case UC_VULGAR_FRACTION_ONE_HALF: + return MACRODOWN( + D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(D), T(KP_ENTER), END + ); + default: + break; + } + } return MACRO_NONE; }; // Runs just one time when the keyboard initializes. -void * matrix_init_user(void) { +void matrix_init_user(void) { }; // Runs constantly in the background, in a loop. -void * matrix_scan_user(void) { +void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); ergodox_board_led_off(); diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md index 9c0c12528..1dc019ab0 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md @@ -1,8 +1,14 @@ # ManuNeo Ergodox Keyboard Layout +Compile this file to a `keymap.c` file using `compile_keymap.py` + + compile_keymap.py keymaps/german-manuneo/keymap.md + + # Layout Config { + "layout": "ergodox_ez", "includes_dir": "quantum/", "keymaps_includes": [ "ergodox_ez.h", @@ -10,22 +16,14 @@ "keymap_common.h", "keymap_extras/keymap_german.h", ], - "keymap_indexes": [ - [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44], - [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51], - [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57], - [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64], - [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69], - [ 32, 33], [70, 71 ], - [ 34], [72 ], - [ 35, 36, 37], [73, 74, 75 ], - ], "key_prefixes": ["DE_", "KC_"], "filler": "-+.'!x", "separator": "|", "macros": { - "MUC": "", + // TODO: implement macros + // "MUC": "", }, + // TODO: implement default unicode mode } @@ -34,189 +32,201 @@ ## Layer 0 - .-------------------------------------. .-------------------------------------. - |MO(5)| 1 | 2 | 3 | 4 | 5 | ACUT | ! GRV | 6 | 7 | 8 | 9 | 0 |CIRC | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - |MO(4)| X | P | F | W | G | HOME | !TG(2) | H | J | K | L | Q | Z | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - |MO(1)| U | I | A | E | O |------! !------! S | N | R | T | D | SS | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - |MO(3)| UE | OE | AE | C | V | END | ! TAB | B | M |COMM| DOT| UP | Y | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| - '------------------------'.-------------. .-------------.'------------------------' - | INS |TG(2) | !M(UMS)| DELT | - .------+------+------! !------+------+------. - ! ! | APP | ! PGUP | ! ! - ! ! !------! !------! ! ! - | BSPC | LSFT | ESC | ! PGDN |ENTER |SPACE | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + '------------------------' '------------------------' + .-----------. .-----------. + |INS |TG(2)| !M(UM)|DELT | + .-----+-----+-----! !-----+-----+-----. + ! ! | APP | ! PGUP| ! ! + ! ! !-----! !-----! ! ! + |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE| + '-----------------' '-----------------' ## Layer 1 - .-------------------------------------. .-------------------------------------. - | |EXLM|DQOT|PARA| | | | ! | | | | |RING| | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | |ASTR|PIPE|SLSH|LCBR|RCBR| | ! |HASH|LESS|MORE| |DQOT| | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | |UNDS|MINS|AMPR|LBRC|RBRC|------! !------!DLR |LPRN|RPRN|TILD|QUOT|QST | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | |PLUS| EQL| | | | ! |BSLS|PERC|SCLN|COLN| ↑ | | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | ← | ↓ | → | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | |EXLM|DQOT|PARA| | | | | | | | |RING| | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | ← | ↓ | → | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' ## Layer 2 - .-------------------------------------. .-------------------------------------. - | | F1 | F2 | F3 | F4 | F5 | F11 | ! F12 | F6 | F7 | F8 | F9 |F10 |PEQL | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | | | | | | | ! | | P7 | P8 | P9 |PAST|PSLS | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | |------! !------! | P4 | P5 | P6 |PMNS|PMNS | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | | | ! NLCK | | P1 | P2 | P3 |PPLS|PPLS | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! P0 |PCMM|PDOT|PENT|PENT| + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + ## Layer 3 http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html - .-------------------------------------. .-------------------------------------. - | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | ! | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | × | ½ | ÷ | ¼ | ⅕ | | ! | ⅙ | | ⅛ | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | ± | AT |EURO| ∅ |------! !------! ∞ | ⁿ | ∃ | ∈ | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | ! |EXLM| | ∄ | ∉ | | | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' ## Layer 4 - .-------------------------------------. .-------------------------------------. - | | ₁ | ₂ | ₃ | ₄ | ₅ | | ! | ₆ | ₇ | ₈ | ₉ | ₀ | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | χ | π | φ | ω | γ | | ! | η | ξ | κ | λ | | ζ | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | υ | ι | α | ε | ο |------! !------! σ | ν | ρ | τ | δ | ς | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | θ | | | | | ! | β | μ | | | | ψ | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + + .------------------------------------.------------------------------------. + | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | θ | | | | | | β | μ | | | | ψ | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' ## Layer 5 - .-------------------------------------. .-------------------------------------. - | | | | | | | | ! | | | | | | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | Χ | Π | Φ | Ω | Γ | | ! | Η | Ξ | Κ | Λ | | Ζ | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | Υ | Ι | Α | Ε | Ο |------! !------! Σ | Ν | Ρ | Τ | Δ | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | Θ | | | | | ! | Β | Μ | | | | Ψ | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | Θ | | | | | | Β | Μ | | | | Ψ | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' ## Layer 6 - .-------------------------------------. .-------------------------------------. - | | | | | | | | ! | | | | | | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | | | | | | | ! | | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | |------! !------! | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | | | ! | | | | | | | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + ## Layer 7 - .-------------------------------------. .-------------------------------------. - | | | | | | | | ! | | | | | | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | | | | | | | ! | | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | |------! !------! | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | | | ! | | | | | | | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' ## Layer 8 - .-------------------------------------. .-------------------------------------. - | | | | | | | | ! | | | | | | | - !-----+----+----+----+----+-----------! !------+----+----+----+----+----+-----! - | | | | | | | | ! | | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | |------! !------! | | | | | | - !-----+----+----+----x----x----! ! ! !----x----x----+----+----+-----! - | | | | | | | | ! | | | | | | | - '-----+----+----+----+----+-----------' '-----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------'.-------------. .-------------.'------------------------' - | | | ! | | - .------+------+------! !------+------+------. - ! ! | | ! | ! ! - ! ! !------! !------! ! ! - | | | | ! | | | - '--------------------' '--------------------' + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' -- cgit v1.2.3-24-g4f1b From a2d3c0bd93bf97264bb94510c126d4fd21b7b135 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Mon, 28 Mar 2016 23:42:55 +0200 Subject: add hex file --- .../keymaps/german-manuneo/german-manuneo.hex | 1624 ++++++++++++++++++++ 1 file changed, 1624 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex new file mode 100644 index 000000000..cb8b7fa8d --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex @@ -0,0 +1,1624 @@ +:100000000C94BD0F0C9401100C9401100C94011071 +:100010000C9401100C9401100C9401100C9401101C +:100020000C9401100C9401100C94791B0C944B1C33 +:100030000C9401100C9401100C9401100C940110FC +:100040000C9401100C94D6300C9401100C940110F7 +:100050000C9401100C94782A0C9401100C9401104B +:100060000C9401100C9401100C9401100C940110CC +:100070000C9401100C9401100C9401100C940110BC +:100080000C9401100C9401100C9401100C940110AC +:100090000C9401100C9401100C9401100C9401109C +:1000A0000C9401100C9401100C940110AB107810FA +:1000B0006310BD10E4101711F910FF1014113E1158 +:1000C0003511021138114E10F3102911321175102B +:1000D0006C10BA10B11099106F103010C6101A11B0 +:1000E00023112F119F10CF10AE1048102011ED10CA +:1000F0009010A5109C108410261193103910F01048 +:100100008A10C9106C12B410661054107E107B1047 +:10011000D210A2100E113F108D10B7102D10C0106C +:100120000B111111DB105D10F6104B1072105710EF +:10013000CC10FC103B113310A810C3100511D510C2 +:100140005A102C11EA10451096106010E110691039 +:1001500008114210D810E7103610511041111D112E +:1001600081103C10DE108710D311A0118B11E51106 +:100170000C123F12211227123C1266125D122A1233 +:10018000601276111B1251125A129D119411E21134 +:10019000D911C11197115811EE1142124B12571279 +:1001A000C711F711D611701148121512B811CD11DF +:1001B000C411AC114E12BB1161111812B211F11120 +:1001C0006F12DC118E117C11A611A311FA11CA1144 +:1001D00036126711B511DF115511E81133123912BA +:1001E000031285111E1273119A117F11F41124123A +:1001F00063125B11D011EB112D12FD1182115412FB +:1002000012126D11BE1188110912911130126A116A +:1002100000120F125E11791169124512A9116411B1 +:100220000612AF11B01CD21CBD1DD21CBD1D141D69 +:10023000371DBD1D8C1D9F1D8C208C20BA20BA201F +:10024000FC203821382338235021382347224722E5 +:10025000122338233823262301E001E10118021874 +:1002600002E002E10162026201620262010502052E +:1002700001070207015802580001E001E1011802DC +:100280001802E002E101620262015B025B016102AD +:1002900061015C025C015802580001E001E10118B3 +:1002A000021802E002E1015A025A01620262016090 +:1002B0000260015E025E015802580001E001E101A6 +:1002C00018021802E002E101620262015B025B01B6 +:1002D000610261015B025B015802580001E001E12B +:1002E0000118021802E002E101620262015B025B96 +:1002F00001610261015D025D015802580001E001E7 +:10030000E10118021802E002E101620262015B02EF +:100310005B0161026101060206015802580001E01A +:1003200001E10118021802E002E101620262015BD0 +:10033000025B01040204015D025D015802580001E4 +:10034000E001E10118021802E002E1015A025A013B +:10035000620262015F025F0109020901580258004E +:1003600001E001E10118021802E002E1016202620B +:10037000015B025B0161026101050205015802583F +:100380000001E001E10118021802E002E10162024D +:1003900062015B025B010502050161026101580215 +:1003A000580001E001E10118021802E002E10162D7 +:1003B0000262015B025B016102610160026001583F +:1003C00002580001E001E10118021802E002E10117 +:1003D000620262015B025B01060206015F025F01CD +:1003E0005802580001E001E10118021802E002E1A0 +:1003F0000162026201620262010502050106020653 +:10040000015802580001E001E10118021802E0025F +:10041000E101620262015B025B01040204015C0211 +:100420005C015802580001E001E10118021802E0E5 +:1004300002E1015A025A015A025A01620262016241 +:100440000262015802580001E001E101180218029D +:10045000E002E101620262015B025B01040204014D +:100460005F025F015802580001E001E10118021823 +:1004700002E002E1015A025A015A025A015E025E8A +:1004800001620262015802580001E001E101180214 +:100490001802E002E101620262015B025B010602F6 +:1004A00006015D025D015802580001E001E10118FA +:1004B000021802E002E1015A025A015A025A01628C +:1004C000026201610261015802580001E001E1018C +:1004D00018021802E002E1015A025A0162026201A6 +:1004E0005F025F01620262015802580001E001E10F +:1004F0000118021802E002E1015A025A0162026286 +:10050000015F025F01600260015802580001E001D2 +:10051000E10118021802E002E101620262015B02DD +:100520005B01610261015F025F015802580001E056 +:1005300001E10118021802E002E101620262015BBE +:10054000025B01610261015A025A0158025800011E +:10055000E001E10118021802E002E1015A025A0129 +:1005600062026201600260015F025F01580258008E +:1005700001E001E10118021802E002E101620262F9 +:10058000015B025B01610261015902590158025885 +:100590000001E001E10118021802E002E1015A0243 +:1005A0005A01620262016002600160026001580249 +:1005B000580001E001E10118021802E002E10162C5 +:1005C0000262015B025B01610261010402040158E5 +:1005D00002580001E001E10118021802E002E10105 +:1005E000620262015B025B0105020501060206016F +:1005F0005802580001E001E10118021802E002E18E +:1006000001620262015B025B01050205015C025CA2 +:10061000015802580001E001E10118021802E0024D +:10062000E1015A025A01620262015F025F01610246 +:1006300061015802580001E001E10118021802E0CE +:1006400002E1015A025A015902590161026101593C +:100650000259015802580001E001E1011802180294 +:10066000E002E1015A025A015A025A016202620191 +:100670005D025D015802580001E001E10118021815 +:1006800002E002E10162026201620262010502050A +:10069000015B025B015802580001E001E101180210 +:1006A0001802E002E10162026201620262010502D7 +:1006B0000501080208015802580001E001E1011893 +:1006C000021802E002E101620262016202620105B7 +:1006D000020501590259015802580001E001E101E7 +:1006E00018021802E002E1015A025A015A025A01A4 +:1006F000620262015B025B015802580001E001E105 +:100700000118021802E002E1015A025A0162026273 +:10071000015F025F015D025D015802580001E001C6 +:10072000E10118021802E002E101620262015B02CB +:100730005B01060206015C025C015802580001E000 +:1007400001E10118021802E002E101620262015BAC +:10075000025B01610261015E025E01580258000104 +:10076000E001E10118021802E002E1015A025A0117 +:100770006202620160026001590259015802580088 +:1007800001E001E10118021802E002E101620262E7 +:10079000015B025B01060206016102610158025819 +:1007A0000001E001E10118021802E002E101620229 +:1007B00062015B025B01040204015B025B015802FF +:1007C000580001E001E10118021802E002E1015ABB +:1007D000025A016202620160026001620262015813 +:1007E00002580001E001E10118021802E002E101F3 +:1007F0006202620162026201070207015F025F0199 +:100800005802580001E001E10118021802E002E17B +:10081000015A025A015A025A0162026201600260E0 +:10082000015802580001E001E10118021802E0023B +:10083000E101620262015B025B0161026101090286 +:1008400009015802580001E001E10118021802E014 +:1008500002E1015A025A015A025A01590259010889 +:100860000208015802580001E001E10118021802D3 +:10087000E002E101620262015B025B010602060125 +:100880005E025E015802580001E001E10118021801 +:1008900002E002E101620262015B025B0104020408 +:1008A000015E025E015802580001E001E1011802F8 +:1008B0001802E002E101620262015B025B010502D3 +:1008C0000501590259015802580001E001E10118DF +:1008D000021802E002E1015A025A015A025A015C6E +:1008E000025C015B025B015802580001E001E1017A +:1008F00018021802E002E1015A025A016202620182 +:10090000600260015A025A015802580001E001E1F8 +:100910000118021802E002E101620262015B025B5F +:1009200001050205015F025F015802580001E00164 +:10093000E10118021802E002E101620262015B02B9 +:100940005B0105020501600260015802580001E0E8 +:1009500001E10118021802E002E101620262015B9A +:10096000025B01610261010802080158025800019E +:10097000E001E10118021802E002E10162026201F5 +:100980005B025B01060206015A025A015802580036 +:1009900001E001E10118021802E002E101620262D5 +:1009A000015B025B01040204016202620158025809 +:1009B0000001E001E10118021802E002E1015A021F +:1009C0005A01620262015F025F015F025F01580229 +:1009D000580001E001E10118021802E002E10162A1 +:1009E0000262015B025B0105020501040204015879 +:1009F00002580001E001E10118021802E002E101E1 +:100A0000620262015B025B01050205015D025D019C +:100A10005802580001E001E10118021802E002E169 +:100A200001620262015B025B01050205015E025E7A +:100A3000015802580001E001E10118021802E00229 +:100A4000E101620262015B025B010502050107022E +:100A500007015802580001E001E10118021802E004 +:100A600002E1015A025A01590259015D025D015C1D +:100A7000025C015802580001E001E101180218026D +:100A8000E002E101620262015B025B010502050115 +:100A90005B025B015802580001E001E101180218F5 +:100AA00002E002E1015A025A01590259015D025D58 +:100AB00001610261015802580001E001E1011802E0 +:100AC0001802E002E101620262015B025B010602C0 +:100AD0000601590259015802580001E001E10118CC +:100AE000021802E002E101620262015B025B0106A0 +:100AF0000206015B025B015802580001E001E101BE +:100B000018021802E002E10162026201620262015F +:100B1000090209015F025F015802580001E001E18A +:100B20000118021802E002E101620262015B025B4D +:100B30000161026101070207015802580001E0014A +:100B4000E10118021802E002E1015A025A016202B0 +:100B50006201600260015C025C015802580001E021 +:100B600001E10118021802E002E101620262015B88 +:100B7000025B010402040160026001580258000196 +:100B8000E001E10118021802E002E10162026201E3 +:100B90005B025B010402040161026101580258001A +:100BA00001E001E10118021802E002E101620262C3 +:100BB0000162026201050205015A025A01580258F7 +:100BC0000001E001E10118021802E002E101620205 +:100BD00062015B025B0106020601620262015802C9 +:100BE000580001E001E10118021802E002E1015A97 +:100BF000025A0159025901610261015B025B01580D +:100C000002580001E001E10118021802E002E101CE +:100C10005A025A01620262015F025F015E025E01D6 +:100C20005802580001E001E10118021802E002E157 +:100C3000015A025A0159025901610261015A025ACC +:100C4000015802580001E001E10118021802E00217 +:100C5000E1015A025A01620262015F025F015C0215 +:100C60005C015802580001E001E10118021802E09D +:100C700002E1015A025A01620262016002600161EE +:100C80000261015802580001E001E1011802180256 +:100C9000E002E101620262015B025B010602060101 +:100CA000600260015802580001E001E101180218D9 +:100CB00002E002E1015A025A01590259015D025D46 +:100CC000015D025D015802580001E001E1011802D6 +:100CD0001802E002E101620262015B025B01610253 +:100CE0006101610261015802580001E001E101184F +:100CF000021802E002E1015A025A01620262016036 +:100D00000260015D025D015802580001E001E1014D +:100D100018021802E002E101620262015B025B015B +:100D2000050205015A025A015802580001E001E18A +:100D30000118021802E002E101620262016202622D +:100D40000105020501610261015802580001E0013C +:100D5000E10118021802E002E1015A025A015A02A6 +:100D60005A01620262015C025C015802580001E013 +:100D700001E10118021802E002E101620262015B76 +:100D8000025B010502050108020801580258000132 +:100D9000E001E10118021802E002E1015A025A01E1 +:100DA000590259015D025D015B025B015802580066 +:100DB00001E001E10118021802E002E101620262B1 +:100DC000015B025B0105020501050205015802589D +:100DD0000001E001E10118021802E002E1015A02FB +:100DE0005A01590259015D025D01050205015802CF +:100DF000580001E001E10118021802E002E1015A85 +:100E0000025A0162026201600260015B025B0158EA +:100E100002580001E001E10118021802E002E101BC +:100E2000620262015B025B01040204015902590182 +:100E30005802580001E001E10118021802E002E145 +:100E4000015A025A015902590161026101620262AA +:100E5000015802580001E001E10118021802E00205 +:100E6000E101620262015B025B0105020501090208 +:100E700009015802580001E201570257016202625B +:100E800001620262010502050107020702E2000198 +:100E9000E20157025701620262015B025B016102DB +:100EA00061015C025C02E20001E201570257015A53 +:100EB000025A0162026201600260015E025E02E2A9 +:100EC0000001E20157025701620262015B025B010D +:100ED000610261015B025B02E20001E2015702571D +:100EE00001620262015B025B01610261015D025D00 +:100EF00002E20001E20157025701620262015B0255 +:100F00005B016102610106020602E20001E2015793 +:100F1000025701620262015B025B01040204015D8F +:100F2000025D02E20001E201570257015A025A0132 +:100F3000620262015F025F0109020902E20001E24E +:100F40000157025701620262015B025B01610261AB +:100F50000105020502E20001E201570257016202A7 +:100F600062015B025B010502050161026102E200B0 +:100F700001E20157025701620262015B025B0161FB +:100F800002610160026002E20001E20157025701C2 +:100F9000620262015B025B01060206015F025F0200 +:100FA000E20001E20157025701620262016202623D +:100FB000010502050106020602E20001E2015702F4 +:100FC0005701620262015B025B01040204015C02E0 +:100FD0005C02E20001E201570257015A025A015A2B +:100FE000025A016202620162026202E20001E2014F +:100FF00057025701620262015B025B0104020401B5 +:101000005F025F02E20001E201570257015A025AF1 +:10101000015A025A015E025E0162026202E20001AE +:10102000E20157025701620262015B025B010602A4 +:1010300006015D025D02E20001E201570257015A1A +:10104000025A015A025A016202620161026102E21D +:101050000001E201570257015A025A01620262017D +:101060005F025F0162026202E20001E20157025781 +:10107000015A025A01620262015F025F016002606E +:1010800002E20001E20157025701620262015B02C3 +:101090005B01610261015F025F02E20001E2015750 +:1010A000025701620262015B025B01610261015A47 +:1010B000025A02E20001E201570257015A025A01A4 +:1010C00062026201600260015F025F02E20001E20F +:1010D0000157025701620262015B025B016102611A +:1010E0000159025902E20001E201570257015A0276 +:1010F0005A01620262016002600160026002E20065 +:1011000001E20157025701620262015B025B016169 +:1011100002610104020402E20001E20157025701E8 +:10112000620262015B025B01050205010602060222 +:10113000E20001E20157025701620262015B025BB9 +:1011400001050205015C025C02E20001E2015702B6 +:1011500057015A025A01620262015F025F01610295 +:101160006102E20001E201570257015A025A015995 +:101170000259016102610159025902E20001E201D2 +:10118000570257015A025A015A025A016202620179 +:101190005D025D02E20001E2015702570162026254 +:1011A0000162026201050205015B025B02E20001CD +:1011B000E201570257016202620162026201050206 +:1011C000050108020802E20001E20157025701622C +:1011D000026201620262010502050159025902E23E +:1011E0000001E201570257015A025A015A025A01FC +:1011F000620262015B025B02E20001E201570257F8 +:10120000015A025A01620262015F025F015D025DE2 +:1012100002E20001E20157025701620262015B0231 +:101220005B01060206015C025C02E20001E201577A +:10123000025701620262015B025B01610261015EB1 +:10124000025E02E20001E201570257015A025A010E +:10125000620262016002600159025902E20001E289 +:101260000157025701620262015B025B010602063E +:101270000161026102E20001E201570257016202CC +:1012800062015B025B01040204015B025B02E2009B +:1012900001E201570257015A025A016202620160DB +:1012A00002600162026202E20001E201570257019C +:1012B0006202620162026201070207015F025F02CD +:1012C000E20001E201570257015A025A015A025A3A +:1012D000016202620160026002E20001E201570263 +:1012E0005701620262015B025B0161026101090256 +:1012F0000902E20001E201570257015A025A015A5B +:10130000025A015902590108020802E20001E201F1 +:1013100057025701620262015B025B01060206018D +:101320005E025E02E20001E20157025701620262C0 +:10133000015B025B01040204015E025E02E2000145 +:10134000E20157025701620262015B025B01050282 +:10135000050159025902E20001E201570257015A00 +:10136000025A015A025A015C025C015B025B02E212 +:101370000001E201570257015A025A01620262015A +:10138000600260015A025A02E20001E2015702576C +:1013900001620262015B025B01050205015F025FFF +:1013A00002E20001E20157025701620262015B02A0 +:1013B0005B010502050160026002E20001E20157E3 +:1013C000025701620262015B025B01610261010876 +:1013D000020802E20001E2015702570162026201C3 +:1013E0005B025B01060206015A025A02E20001E2B8 +:1013F0000157025701620262015B025B01040204B1 +:101400000162026202E20001E201570257015A0240 +:101410005A01620262015F025F015F025F02E20045 +:1014200001E20157025701620262015B025B0105A2 +:1014300002050104020402E20001E2015702570121 +:10144000620262015B025B01050205015D025D0251 +:10145000E20001E20157025701620262015B025B96 +:1014600001050205015E025E02E20001E20157028F +:101470005701620262015B025B010502050107027E +:101480000702E20001E201570257015A025A0159CC +:101490000259015D025D015C025C02E20001E201B1 +:1014A00057025701620262015B025B0105020501FE +:1014B0005B025B02E20001E201570257015A025A45 +:1014C00001590259015D025D0161026102E2000100 +:1014D000E20157025701620262015B025B010602F0 +:1014E000060159025902E20001E201570257016266 +:1014F0000262015B025B01060206015B025B02E223 +:101500000001E201570257016202620162026201B8 +:10151000090209015F025F02E20001E2015702577E +:1015200001620262015B025B016102610107020765 +:1015300002E20001E201570257015A025A01620217 +:101540006201600260015C025C02E20001E201579C +:10155000025701620262015B025B01040204016046 +:10156000026002E20001E2015702570162026201D9 +:101570005B025B010402040161026102E20001E21C +:10158000015702570162026201620262010502050F +:10159000015A025A02E20001E201570257016202B7 +:1015A00062015B025B010602060162026202E20066 +:1015B00001E201570257015A025A015902590161C9 +:1015C0000261015B025B02E20001E2015702570186 +:1015D0005A025A01620262015F025F015E025E020C +:1015E000E20001E201570257015A025A0159025919 +:1015F00001610261015A025A02E20001E20157024E +:1016000057015A025A01620262015F025F015C02E5 +:101610005C02E20001E201570257015A025A0162DC +:101620000262016002600161026102E20001E20106 +:1016300057025701620262015B025B01060206016A +:1016400060026002E20001E201570257015A025AA9 +:1016500001590259015D025D015D025D02E2000176 +:10166000E20157025701620262015B025B01610203 +:10167000610161026102E20001E201570257015A71 +:10168000025A0162026201600260015D025D02E2D3 +:101690000001E20157025701620262015B025B0135 +:1016A000050205015A025A02E20001E201570257FF +:1016B00001620262016202620105020501610261CA +:1016C00002E20001E201570257015A025A015A028E +:1016D0005A01620262015C025C02E20001E201570F +:1016E000025701620262015B025B0105020501080B +:1016F000020802E20001E201570257015A025A01B0 +:10170000590259015D025D015B025B02E20001E2E8 +:101710000157025701620262015B025B010502058B +:101720000105020502E20001E201570257015A02D7 +:101730005A01590259015D025D0105020502E200EC +:1017400001E201570257015A025A01620262016026 +:101750000260015B025B02E20001E20157025701F5 +:10176000620262015B025B01040204015902590238 +:10177000E20001E201570257015A025A0159025987 +:10178000016102610162026202E20001E2015702AC +:101790005701620262015B025B0105020501090259 +:1017A0000902E200055204520152035201000000F6 +:1017B0001E001B0018002F00010029001F0013004D +:1017C0000C003300E300E1002000090004003400B5 +:1017D000E2002A0021001A0008000600E00065006F +:1017E00022000A0012001900000049002E004A00E1 +:1017F00000004D00000002542E02025400002B0095 +:1018000000005E0023000B001600050000004C00E5 +:1018100024000D0011001000E2004B0025000E0016 +:101820001500360001002C0026000F0017003700BD +:1018300050002800270014000700520051004E00FD +:1018400035001C002D001D004F00000001000100AC +:1018500001000100010000001E02300238020100F8 +:10186000010001001F026414380030000100010073 +:101870002002240223022702010001000100241497 +:1018800025140100010001000100271426140100A5 +:101890000000010001000100000001000000010043 +:1018A0000100010000000100000001000100310002 +:1018B00021022D1400000100010064002502220213 +:1018C000010001000100640226023602010001004D +:1018D00001000100301437023830010035021F02C8 +:1018E0003102553002300100010001002D020100DB +:1018F0003D30000001000100010001000100000076 +:101900003A00010001000100010001003B0001005C +:1019100001000100010001003C0001000100010084 +:10192000010001003D000100010001000100010073 +:101930003E00010001000100000001004400010020 +:1019400000000100000001004500010000005300FC +:10195000000001003F000100010001000000010043 +:1019600040005F005C00590062000100410060001F +:101970005D005A0085000100420061005E005B00CE +:101980006300010043005500560057005800010055 +:101990006700540056005700580000000100010085 +:1019A00001000100010000004D30393001005B30C2 +:1019B00001000100513058303C303B300100010043 +:1019C0005030013014145D30010001004A305930AC +:1019D00008145C30010001004930573004300030F9 +:1019E00000000100053001000000010000000100BE +:1019F0000100010000000100000001004F305A30DA +:101A000037301E02000001004E3001004B30010053 +:101A100001000100483056305430533001000100BD +:101A20004C30010003303A30010001005230010017 +:101A3000010001000100010001000100010001009E +:101A40000100000001000100010001000100000090 +:101A500042302030343001000100010046302E3089 +:101A6000263033300100010045302D301E3001009A +:101A70000100010040302B30223001000100010044 +:101A80003F3025302C300100000001000100010032 +:101A90000000010000000100010001000000010041 +:101AA000000001004430233031301F3000000100BD +:101AB000433035302A302930010001003E302730D4 +:101AC0003030010001000100413028303230010087 +:101AD0000100010047300100213001000100010038 +:101AE0000100363024302F300100000001000100D9 +:101AF0000100010001000000010008301B3001005E +:101B000001000100010015300D301A300100010004 +:101B10000100143006300100010001000100123004 +:101B20000A3001000100010001000C3013300100F7 +:101B300000000100010001000000010000000100A0 +:101B400001000100000001000000010001000B3055 +:101B5000183007300000010001001C301130103037 +:101B60000100010001000E301730010001000100EA +:101B700001000F30193001000100010001000100D7 +:101B8000093001000100010001001D300100163084 +:101B9000010000000100010001000100010000003F +:101BA000010001000100010001000100010001002D +:101BB000010001000100010001000100010001001D +:101BC000010001000100010001000100010001000D +:101BD00001000100010001000000010001000100FE +:101BE00000000100000001000100010000000100F0 +:101BF00000000100010001000100010000000100DF +:101C000001000100010001000100010001000100CC +:101C100001000100010001000100010001000100BC +:101C200001000100010001000100010001000100AC +:101C3000010001000100010001000000010001009D +:101C4000010001000100000001000100010001008D +:101C5000010001000100010001000100010001007C +:101C6000010001000100010001000100010001006C +:101C7000010001000100010001000100010001005C +:101C8000000001000100010000000100000001004F +:101C9000010001000000010000000100010001003E +:101CA000010001000000010001000100010001002D +:101CB000010001000100010001000100010001001C +:101CC000010001000100010001000100010001000C +:101CD00001000100010001000100010001000100FC +:101CE00001000000010001000100010001000000EE +:101CF00001000100010001000100010001000100DC +:101D000001000100010001000100010001000100CB +:101D100001000100010001000100010001000100BB +:101D200001000100010001000000010001000100AC +:101D3000000001000000010001000100000001009E +:101D4000000001000100010001000100000001008D +:101D5000010001000100010001000100010001007B +:101D6000010001000100010001000100010001006B +:101D7000010001000100010001000100010001005B +:101D800001000100010001000100000016034500F0 +:101D9000720067006F0044006F007800200045006B +:101DA0005A00000016034500720067006F004400EF +:101DB0006F007800200045005A0000000403090469 +:101DC00009026D00040100A0FA09040000010301EA +:101DD0000100092111010001223F000705810308CC +:101DE000000A090401000103010200092111010098 +:101DF00001224D000705820308000A0904020001C0 +:101E000003000000092111010001223600070583AB +:101E10000308000A0904030001030000000921115E +:101E2000010001223900070584031000011201108E +:101E30000100000008EDFE0713010001020001058A +:101E4000010906A101050719E029E71500250195FB +:101E5000087501810205081901290595057501918B +:101E600002950175039101050719002977150025D1 +:101E700001957875018102C005010980A1018502E3 +:101E800016010026B7001A01002AB7007510950147 +:101E90008100C0050C0901A1018503160100269CE3 +:101EA000021A01002A9C02751095018100C00501EB +:101EB0000902A1010901A10005091901290515005F +:101EC00025019505750181029501750381010501C3 +:101ED000093009311581257F950275088106093879 +:101EE0001581257F950175088106050C0A380215B4 +:101EF00081257F950175088106C0C005010906A1ED +:101F000001050719E029E7150025019508750181EC +:101F100002950175088101050819012905950575C6 +:101F20000191029501750391010507190029FF151B +:101F30000025FF950675088100C000000000000024 +:101F40000000000000010204060A0F17202C3A4A84 +:101F50005D71879DB3C7DAE9F5FCFFFCF5E9DAC7E7 +:101F6000B39D87715D4A3A2C20170F0A06040201BF +:101F70000000000000000000000011241FBECFEF91 +:101F8000DAE0DEBFCDBF04B603FE24C08091F001CD +:101F90009091F101A091F201B091F3018730904B43 +:101FA000A740B04BB9F41092F0011092F1011092D9 +:101FB000F2011092F30114BE84B7877F84BF88E1D9 +:101FC0000FB6F89480936000109260000FBEE0E0BE +:101FD000FFE3099511E0A0E0B1E0E0E3F5E602C01F +:101FE00005900D92A433B107D9F711E0A4E3B1E055 +:101FF00001C01D92A03FB107E1F70E94BF180C94E9 +:1020000096320C940000FC018281811103C080E0B3 +:1020100090E008956E3561F42091340130913501DE +:102020002F5F3F4F217033273093350120933401C8 +:1020300020913401309135012115310509F024C179 +:10204000862F90E08E35910528F4FC01EA5AFF4F67 +:102050000C944B3280E090E0089582E797E1089578 +:1020600089E597E1089580E497E1089587E297E193 +:1020700008958EE097E1089585EF96E108958CED3F +:1020800096E1089583EC96E108958AEA96E1089531 +:1020900081E996E1089588E796E108958FE596E154 +:1020A000089586E496E108958DE296E1089584E12D +:1020B00096E108958BEF95E1089582EE95E10895FC +:1020C00089EC95E1089580EB95E1089587E995E124 +:1020D00008958EE795E1089585E695E108958CE4ED +:1020E00095E1089583E395E108958AE195E10895E6 +:1020F00081E095E1089588EE94E108958FEC94E1F4 +:10210000089586EB94E108958DE994E1089584E8BB +:1021100094E108958BE694E1089582E594E10895B1 +:1021200089E394E1089580E294E1089587E094E1E1 +:1021300008958EEE93E1089585ED93E108958CEB7B +:1021400093E1089583EA93E108958AE893E108957D +:1021500081E793E1089588E593E108958FE393E1A2 +:10216000089586E293E108958DE093E1089584EF68 +:1021700092E108958BED92E1089582EC92E1089549 +:1021800089EA92E1089580E992E1089587E792E172 +:1021900008958EE592E1089585E492E108958CE238 +:1021A00092E1089583E192E108958AEF91E1089523 +:1021B00081EE91E1089588EC91E108958FEA91E133 +:1021C000089586E991E108958DE791E1089584E607 +:1021D00091E108958BE491E1089582E391E10895FE +:1021E00089E191E1089580E091E1089587EE90E121 +:1021F00008958EEC90E1089585EB90E108958CE9C7 +:1022000090E1089583E890E108958AE690E10895C9 +:1022100081E590E1089588E390E108958FE190E1F0 +:10222000089586E090E108958DEE9FE0089584ED95 +:102230009FE008958BEB9FE0089582EA9FE0089568 +:1022400089E89FE0089580E79FE0089587E59FE093 +:1022500008958EE39FE0089585E29FE008958CE065 +:102260009FE0089583EF9EE008958AED9EE0089533 +:1022700081EC9EE0089588EA9EE008958FE89EE054 +:10228000089586E79EE008952130310509F0BFCE1C +:10229000862F90E08E35910528F4FC01EC54FF4F19 +:1022A0000C944B3280E090E0089584E39EE0089522 +:1022B00083E19EE0089582EF9DE0089581ED9DE029 +:1022C000089580EB9DE008958FE89DE008958EE6E7 +:1022D0009DE008958DE49DE008958CE29DE00895D1 +:1022E0008BE09DE008958AEE9CE0089589EC9CE0E7 +:1022F000089588EA9CE0089587E89CE0089586E6C2 +:102300009CE0089585E49CE0089584E29CE00895B3 +:1023100083E09CE0089582EE9BE0089581EC9BE0D1 +:10232000089580EA9BE008958FE79BE008958EE58D +:102330009BE008958DE39BE008958CE19BE0089578 +:102340008BEF9AE008958AED9AE0089589EB9AE080 +:10235000089588E99AE0089587E79AE0089586E568 +:102360009AE0089585E39AE0089584E19AE008955B +:1023700083EF99E0089582ED99E0089581EB99E06B +:10238000089580E999E008958FE699E008958EE434 +:1023900099E008958DE299E008958CE099E0089520 +:1023A0008BEE98E008958AEC98E0089589EA98E029 +:1023B000089588E898E0089587E698E0089586E40F +:1023C00098E0089585E298E0089584E098E0089503 +:1023D00083EE97E0089582EC97E0089581EA97E014 +:1023E000089580E897E008958FE597E008958EE3DB +:1023F00097E008958DE197E008958CEF96E00895B9 +:102400008BED96E008958AEB96E0089589E996E0D1 +:10241000089588E796E0089587E596E0089586E3B5 +:1024200096E0089585E196E0089584EF95E008959B +:1024300083ED95E0089582EB95E0089581E995E0BC +:10244000089580E795E008958FE495E008958EE281 +:1024500095E008958DE095E008958CEE94E0089560 +:102460008BEC94E008958AEA94E0089589E894E07A +:10247000089588E694E0089587E494E0089586E25C +:1024800094E0089585E094E0089584EE93E0089543 +:1024900083EC93E0089582EA93E0089581E893E065 +:1024A000089580E693E008958FE393E008958EE128 +:1024B00093E008958DEF92E008958CED92E00895F9 +:1024C0008BEB92E008958AE992E0089589E792E023 +:1024D000089588E592E008958BE897E1089585E5F1 +:1024E0009EE0089508956091B3017091B4018091C8 +:1024F000B5019091B6010E94A42956985E9825983E +:102500002D9826982E9827982F988330A9F028F494 +:10251000813051F0823069F012C0843041F0853052 +:1025200071F4259A2D9A08C0259A2D9A0895259A16 +:102530002D9A269A2E9A0895279A2F9A089556989A +:102540005E9808950C94731256985E9825982D986D +:1025500026982E9827982F988FEF90E090938900D7 +:102560008093880090938B0080938A0090938D00D5 +:1025700080938C00259A2D9A2FEF80E792E02150CE +:1025800080409040E1F700C00000269A2E9A2FEF7D +:1025900080E792E0215080409040E1F700C00000C9 +:1025A000279A2F9A2FEF80E792E0215080409040A9 +:1025B000E1F700C0000025982D982FEF80E792E00A +:1025C000215080409040E1F700C0000026982E98EE +:1025D0002FEF80E792E0215080409040E1F700C06B +:1025E000000027982F9856985E9825982D98269841 +:1025F0002E9827982F98089589EA8093800089E083 +:102600008093810024982C983F988AB18F748AB95E +:102610006E98479A8BB1806B8BB9769A0E94A41200 +:102620000C94721280E28093000180913601811136 +:102630000EC00E94611381E0809336012FEF83ED7D +:1026400090E3215080409040E1F700C0000080E41A +:102650000E9467138093000181112EC00E94911384 +:1026600080930001811128C00E9491138093000182 +:10267000811122C08FE30E94911380930001811188 +:102680001BC00E94891380E40E946713809300019D +:10269000811112C08CE00E9491138093000181117E +:1026A0000BC00E94911380930001811105C08FE33C +:1026B0000E949113809300010E9489138091000170 +:1026C00008951092B9008AE08093B800089594EAC2 +:1026D0009093BC009091BC0097FFFCCF9091B90003 +:1026E000987F983021F0903111F081E00895809327 +:1026F000BB0084E88093BC008091BC0087FFFCCFC6 +:102700008091B900887F883111F0803471F780E0C2 +:10271000089584E98093BC008091BC0084FDFCCFC7 +:1027200008958093BB0084E88093BC008091BC0036 +:1027300087FFFCCF9091B900987F81E0983209F42F +:1027400080E0089584E88093BC008091BC0087FFFE +:10275000FCCF8091BB00089580910001811115C0CC +:1027600080E40E9467138093000181110CC082E114 +:102770000E94911380930001811105C08FEF0E9488 +:102780009113809300010E94891384B1807F84B9E2 +:1027900085B1807F85B98AB1837F8AB98BB1837F08 +:1027A0008BB93E98469808950E94121380930001B9 +:1027B0000E94AC1380B38C7080BB81B3836F81BBEC +:1027C000E6E4F1E0A8E3B1E011921D9281E0E43586 +:1027D000F807D1F70C94FC12BF92CF92DF92EF92E0 +:1027E000FF920F931F93CF93DF9380910001882373 +:1027F00079F0809137018F5F80933701811108C094 +:102800000E94121380930001811102C00E94A41241 +:1028100008E311E0C0E0D0E0DD24D39482E0C82ECC +:10282000EE24E394F12CC73000F580910001811172 +:1028300062C080E40E94671380930001811112C07E +:1028400082E10E9491138093000181110BC0C701A6 +:102850000C2E01C0880F0A94EAF780950E9491130C +:10286000809300010E94891346C0CA30A1F028F469 +:10287000C83059F0C93061F005C0CC3089F070F033 +:10288000CD3089F0209A289810C0219A29980DC03F +:10289000229A2A980AC0239A2B9807C0529A01C0FC +:1028A000539A5B9802C03E9A4698E0EAEA95F1F79F +:1028B0008FB179995AC092E081708D25892B7C9BCC +:1028C00002C090E001C094E0892B7D9B02C090E0A3 +:1028D00001C098E0892B7E9B02C090E001C090E18E +:1028E000892B9FB19095991F9927991F9295990FC0 +:1028F000907E892B0FC08091000181114BC080E434 +:102900000E94671380930001882389F1B12C0E94F3 +:1029100089138B2DF8019081981719F08083C0924C +:1029200001010E94AC1321960F5F1F4FCE30D105DD +:1029300009F079CF80910101882371F18150809352 +:102940000101882339F08FE99FE00197F1F700C07A +:10295000000022C0A6E4B1E0E8E3F1E081918D93AC +:1029600091E0E634F907D1F717C090E0A5CF83E1F5 +:102970000E949113809300018111C8CF81E40E94CD +:102980006713809300018111C1CF0E94A213B82E5A +:10299000B094BDCF80E0BECF0E94A21281E0DF9153 +:1029A000CF911F910F91FF90EF90DF90CF90BF904C +:1029B0000895E82FF0E0EA5BFE4F808108950895C6 +:1029C0008B3B910578F4883A910540F5853A91055D +:1029D000D0F48430910508F0B1C08130910509F43C +:1029E000ADC06BC0803E910508F467C0883E91057C +:1029F00008F4A4C09C01205F31092031310508F0A2 +:102A00005CC090650895853A910509F459C0863AED +:102A1000910509F458C083E890E40895883A910537 +:102A200009F454C0893A910509F453C08A3A9105D2 +:102A300009F452C08B3A910509F451C08C3A9105C2 +:102A400009F450C08D3A910509F44FC0803B9105BF +:102A500009F44EC08E3A910509F44DC08F3A9105A4 +:102A600009F44CC0813B910509F44BC0823B9105B0 +:102A700009F44AC0833B910509F449C0843B9105A0 +:102A800009F448C0853B910509F447C0863B910590 +:102A900009F446C0873B910509F445C0883B910580 +:102AA00009F444C0893B910509F443C08A3B910570 +:102AB00009F042C08AE296E4089580E090E008952B +:102AC00081E890E4089582E890E4089582EE94E429 +:102AD000089589EE94E408958AEE94E4089585EBD0 +:102AE00094E4089586EB94E4089587EB94E40895C4 +:102AF0008CEC94E408958DEC94E4089583E895E4D7 +:102B000008958AE895E4089582E995E4089584E9B2 +:102B100095E4089581E296E4089583E296E40895A9 +:102B200084E296E4089585E296E4089586E296E4C8 +:102B3000089587E296E4089580E094E40895089566 +:102B400096E0799FF001112494E5899FE00DF11D35 +:102B50001124E60FF11DEE0FFF1FEC55F84E859185 +:102B600094910895880F991F8C5D994EFC01859171 +:102B700094910895880F991F8C55984EFC0185916A +:102B80009491089526E0729FF001112444E5849FFA +:102B9000E00DF11D1124E60FF11DEE0FFF1FEC55A6 +:102BA000F84E25913491C9019A9581159F4110F4F1 +:102BB000C9010895C90190528115904128F4C901B5 +:102BC0009F700E94BA150895C901905381159041D4 +:102BD00020F4C9019927906C0895211580E53807E4 +:102BE00069F40E9459239FEF24E34CE09150204068 +:102BF0004040E1F700C000000C949D2A213080E5A0 +:102C0000380731F48091CE0181608093CE01089520 +:102C1000C90190558115904108F050C0832F992724 +:102C20008F70992781309105D9F4A90143705527F8 +:102C300002C0880F991F4A95E2F79C68A90164E0D9 +:102C4000440F551F6A95E1F744275370842B952B49 +:102C500073E0220F331F7A95E1F7207633271DC0EA +:102C60008230910529F4922F8827816F906A089508 +:102C700083309105A9F4A9014370552781E090E0C4 +:102C800002C0880F991F4A95E2F79C6843E0220F23 +:102C9000331F4A95E1F7207E3770822B932B0895DE +:102CA0000497F1F4A9014370552781E090E002C038 +:102CB000880F991F4A95E2F79A68E8CFC9019057A3 +:102CC0008115904120F4C9019F7090620895C90157 +:102CD00090588115904120F4C9019F70906A089521 +:102CE000203E3105E0F4203C310558F52133310513 +:102CF00009F470C048F42932310509F464C02A325D +:102D0000310509F46EC074C029333105F1F0223861 +:102D10003105D9F02533310509F44EC069C0233E91 +:102D2000310589F138F4203E3105C1F0223E3105EC +:102D3000E1F05EC0263E310569F1273E3105A9F17B +:102D400057C0C9010E94B21508958091E10180FD2C +:102D500002C081FF4DC080EE90E04BC08091E10148 +:102D600080FFF9CF89E390E044C08091E10182FFC8 +:102D70000EC08091E10184FF03C080E090E039C083 +:102D800083EE90E036C08091E10182FFF2CF82EEC7 +:102D900090E02FC08091E10183FF0BC08091E101A1 +:102DA00084FDEBCF87EE90E024C08091E10183FFAA +:102DB000F5CF86EE90E01DC08091E10185FF07C050 +:102DC00089E290E016C08091E10185FFF9CF85E3AB +:102DD00090E00FC08091E10186FF07C08AE290E099 +:102DE00008C08091E10186FFF9CF81E390E001C046 +:102DF000C9010E94E014089508950C94FC16809176 +:102E000064010895CF93DF9300D01F92CDB7DEB752 +:102E10002091E701243019F523E029839B838A83DD +:102E20002093E9008FEF9091E800815095FD06C056 +:102E300095ED9A95F1F700008111F5CF8091E800AA +:102E400085FF0DC040E050E063E070E0CE010196E8 +:102E50000E946C198091E8008E778093E8000F90B3 +:102E60000F900F90DF91CF910895CF93DF9300D013 +:102E70001F92CDB7DEB72091E701243021F522E083 +:102E800029839B838A8383E08093E9008FEF90916D +:102E9000E800815095FD06C095ED9A95F1F7000088 +:102EA0008111F5CF8091E80085FF0DC040E050E032 +:102EB00063E070E0CE0101960E946C198091E800F9 +:102EC0008E778093E8000F900F900F90DF91CF9155 +:102ED00008952091E7012430F1F422E02093E900E5 +:102EE0002FEF3091E800215035FD06C035ED3A95C1 +:102EF000F1F700002111F5CF2091E80025FF0BC06C +:102F000040E050E065E070E00E946C198091E800BC +:102F10008E778093E8000895CF93DF93EC01809142 +:102F2000E701843009F046C090910C019923D9F053 +:102F300090910D019923B9F08093E9008FEF909162 +:102F4000E800815095FD06C095E19A95F1F70000E3 +:102F50008111F5CF8091E80085FF2CC040E050E062 +:102F600060E170E017C081E08093E9008FEF9091FD +:102F7000E800815095FD06C095ED9A95F1F70000A7 +:102F80008111F5CF8091E80085FF14C040E050E04A +:102F900068E070E0CE010E946C198091E8008E77A5 +:102FA0008093E80080E1FE01A4E5B1E001900D927C +:102FB0008A95E1F7DF91CF9108958091E601811123 +:102FC00009C00E94FE1A0E945B1B8091E20084608F +:102FD0008093E20008951092E601089508950C94FC +:102FE000C3300E94342A0E94C9300E94F81D0C94FC +:102FF000FD1642E061EC81E00E94781A42E061EC4B +:1030000082E00E94781A42E061EC83E00E94781A24 +:1030100042E161EC84E00C94781A8091E9018330FC +:1030200009F455C030F4813071F0823009F48EC05B +:1030300008958A3009F47AC08B3009F460C0893071 +:1030400009F09CC020C08091E801813A09F096C047 +:103050008091E800877F8093E8008091EC01909157 +:10306000ED01892B21F060E080E090E003C060E199 +:1030700084E591E070E00E94B5198091E8008B77BB +:103080008093E80008958091E801813209F076C0CC +:103090008091EC019091ED01009719F0039709F0F0 +:1030A0006DC08091E800877F8093E8008091E80000 +:1030B00082FD05C08091E7018111F8CF5FC080914A +:1030C000F100809364018091E8008B7753C0809178 +:1030D000E801813A09F052C08091EC019091ED0134 +:1030E000892B09F04BC08091E800877F8093E8002E +:1030F0008091E80080FFFCCF80910C0136C0809168 +:10310000E8018132D9F58091EC019091ED01892B94 +:10311000A9F58091E800877F8093E8000E94AD1AAE +:103120008091EA0180930C010C9459238091E8016D +:10313000813221F58091E800877F8093E8000E942A +:10314000AD1A8091EB018093650108958091E801AB +:10315000813AA1F48091E800877F8093E800809114 +:10316000E80080FFFCCF809165018093F1008091A1 +:10317000E8008E778093E8000C94AD1A089584B728 +:10318000877F84BF88E10FB6F89480936000109227 +:1031900060000FBE90E080E80FB6F8948093610065 +:1031A000909361000FBE0E94471E0E94FE1A0E946B +:1031B0005B1B8091E20084608093E20078940E941F +:1031C000D61D0E94491E82E091E00E94F31D0E94DC +:1031D000B1308091E701853069F40E94F729809130 +:1031E000E5018823B1F30E941F2A882391F30E94EE +:1031F0005619EFCF0E944F1EECCF292F33272330D3 +:103200003105A9F06CF42130310509F442C02230B7 +:10321000310509F043C08DE690E020EC3DE142C06D +:1032200021323105C9F02232310519F137C0992711 +:103230008130910541F08230910541F0892B71F583 +:10324000ECEBFDE105C0E4EAFDE102C0ECE8FDE1E4 +:10325000849190E09F0126C0643000F5E62FF0E0F5 +:10326000EE0FFF1FEE5DFE4F2081318189E090E07F +:1032700019C0643098F4E62FF0E0DF01AA0FBB1FFD +:10328000A65EBE4F2D913C91EA5EFE4F808190E09C +:1032900009C082E190E02DE23EE104C080E090E0D0 +:1032A00020E030E0FA0131832083089580E189BD78 +:1032B00082E189BD09B400FEFDCF8091D8008F7DE9 +:1032C0008093D8008091E00082608093E00080913C +:1032D000E00081FDFCCF0895CF92DF92EF92FF9244 +:1032E0000F931F93CF93DF937C018B01EA010E9420 +:1032F000CE1A811131C0209731F088819981081B45 +:10330000190BE80EF91EC12CD12C0115110519F16C +:103310008091E80085FD14C08091E8008E7780934D +:10332000E800209741F0888199818C0D9D1D99833B +:10333000888385E011C00E94CE1A882331F30CC027 +:10334000F70181917F018093F10001501109FFEF96 +:10335000CF1ADF0ADACF80E0DF91CF911F910F9172 +:10336000FF90EF90DF90CF9008952091EE01309183 +:10337000EF012617370748F06115710539F42091E0 +:10338000E8002E772093E80001C0B901FC0120E09D +:1033900061157105B9F18091E701882309F440C0F6 +:1033A000853009F43FC08091E80083FD3DC08091E5 +:1033B000E80082FF06C08091E80082FF26C080E01E +:1033C00008958091E80080FFE3CF2091F300809181 +:1033D000F20090E0922B6115710551F08830910553 +:1033E00038F421912093F100615071090196F3CFD7 +:1033F00021E0089709F020E08091E8008E77809323 +:10340000E800C6CF2111C7CFD6CF8091E70188232E +:1034100039F0853039F08091E80083FFCCCF04C0CB +:1034200082E0089583E0089581E008952091EE01FF +:103430003091EF012617370748F06115710539F40F +:103440002091E8002E772093E80001C0B901FC012B +:1034500020E061157105C1F18091E701882309F42D +:1034600041C0853009F440C08091E80083FD3EC032 +:103470008091E80082FF06C08091E80082FF27C0AB +:1034800080E008958091E80080FFE3CF2091F30071 +:103490008091F20090E0922B6115710559F088300F +:1034A000910540F424912093F10031966150710907 +:1034B0000196F2CF21E0089709F020E08091E80022 +:1034C0008E778093E800C5CF2111C6CFD5CF8091EC +:1034D000E701882339F0853039F08091E80083FFD7 +:1034E000CBCF04C082E0089583E0089581E0089581 +:1034F000982F973058F59093E900981739F070910C +:10350000EC002091ED005091F00003C0242F762FA5 +:1035100050E021FF19C03091EB003E7F3093EB006B +:103520003091ED003D7F3093ED003091EB00316044 +:103530003093EB007093EC002093ED005093F0007B +:103540002091EE0027FF07C09F5FD3CF8F7080933D +:10355000E90081E0089580E008958091E80187FD09 +:1035600005C08091E80080FF0EC012C08091E80085 +:1035700082FD05C08091E7018111F8CF0895809107 +:10358000E8008B7708C08091E7018111EACF0895A8 +:103590008091E8008E778093E80008958091E400A0 +:1035A0009091E50045E62091EC0020FF21C020919C +:1035B000E80020FD21C02091E701222389F0253079 +:1035C00089F02091EB0025FD0FC02091E40030919F +:1035D000E5002817390739F3415041F0C901E3CF1D +:1035E00082E0089583E0089581E0089584E00895DD +:1035F0002091E80022FFDFCF80E008950E946C1B3D +:103600000E94741BE0EEF0E0808181608083E8ED31 +:10361000F0E080818F77808319BCA7EDB0E08C91BA +:103620008E7F8C9380818F7E80831092E601089537 +:103630000F931F93CF93DF930E946C1B0E94741B08 +:10364000C8EDD0E088818F778883888180688883FF +:1036500088818F7D888319BC1092E7011092E30165 +:103660001092E5011092E40100EE10E0F801808173 +:103670008B7F808388818160888342E060E080E086 +:103680000E94781AE1EEF0E080818E7F8083E2EE86 +:10369000F0E0808181608083808188608083F80190 +:1036A00080818E7F8083888180618883DF91CF9144 +:1036B0001F910F910895E8EDF0E080818F7E808367 +:1036C000E7EDF0E080818160808384E082BF81E06B +:1036D0008093E6010C94181BE8EDF0E080818E7F6A +:1036E00080831092E20008951092DA001092E100B7 +:1036F00008951F920F920FB60F9211242F933F93AC +:103700004F935F936F937F938F939F93AF93BF93E9 +:10371000EF93FF938091E10082FF0BC08091E20064 +:1037200082FF07C08091E1008B7F8093E1000E94BF +:10373000D51D8091DA0080FF1FC08091D80080FFE6 +:103740001BC08091DA008E7F8093DA008091D900CF +:1037500080FF0DC080E189BD82E189BD09B400FE12 +:10376000FDCF81E08093E7010E94DD1705C019BC01 +:103770001092E7010E94EB178091E10080FF19C0D1 +:103780008091E20080FF15C08091E2008E7F8093DF +:10379000E2008091E20080618093E2008091D80095 +:1037A00080628093D80019BC85E08093E7010E9475 +:1037B000EF178091E10084FF30C08091E20084FF28 +:1037C0002CC080E189BD82E189BD09B400FEFDCF36 +:1037D0008091D8008F7D8093D8008091E1008F7E0A +:1037E0008093E1008091E2008F7E8093E2008091DF +:1037F000E20081608093E2008091E301882311F070 +:1038000084E007C08091E30087FF02C083E001C02D +:1038100081E08093E7010E94F1178091E10083FF2E +:1038200029C08091E20083FF25C08091E100877F5D +:103830008093E10082E08093E7011092E3018091A0 +:10384000E1008E7F8093E1008091E2008E7F809383 +:10385000E2008091E20080618093E20042E060E05B +:1038600080E00E94781A8091F00088608093F000D8 +:103870000E94EE17FF91EF91BF91AF919F918F91B1 +:103880007F916F915F914F913F912F910F900FBE5C +:103890000F901F9018951F920F920FB60F92112440 +:1038A0002F933F934F935F936F937F938F939F9348 +:1038B000AF93BF93CF93EF93FF93C091E900CF7085 +:1038C0008091EC001092E9008091F000877F809356 +:1038D000F00078940E94871C1092E9008091F0001B +:1038E00088608093F000C093E900FF91EF91CF9141 +:1038F000BF91AF919F918F917F916F915F914F9108 +:103900003F912F910F900FBE0F901F9018951F930E +:10391000CF93DF93CDB7DEB7AA970FB6F894DEBF8B +:103920000FBECDBFE8EEF1E08091F100819321E080 +:10393000E03FF207C9F70E940D188091E80083FF6D +:103940001CC12091E8013091E901832F90E08A3079 +:10395000910508F012C1FC01EE5EFE4F0C944B3253 +:10396000203881F0223809F008C18091EC018F7075 +:103970008093E9008091EB0085FB882780F9109205 +:10398000E90006C08091E4019091E5019111826007 +:103990009091E800977F9093E8008093F100109257 +:1039A000F100C5C0822F8D7F09F0E7C0222319F0F6 +:1039B000223061F0E2C08091EA01813009F0DDC07F +:1039C000333009F080E08093E50128C08091EA015E +:1039D000811124C02091EC012F7009F4CEC02093F6 +:1039E000E9008091EB0080FF19C08091EB0033303B +:1039F00011F4806211C080618093EB0081E090E05F +:103A0000022E01C0880F0A94EAF78093EA00109210 +:103A1000EA008091EB0088608093EB001092E9004F +:103A20008091E800877F86C02111A7C01091EA012C +:103A30001F778091E3008078812B8093E300809151 +:103A4000E800877F8093E8000E94AD1A8091E8002B +:103A500080FFFCCF8091E30080688093E300112316 +:103A600011F083E001C082E08093E70186C0205816 +:103A7000223008F082C08091EA019091EB018C3DE8 +:103A800023E0920779F583E08A838AE289834FB73E +:103A9000F894DE01139620E03EE051E2E32FF0E0DF +:103AA00050935700E49120FF03C0E295EF703F5F11 +:103AB000EF708E2F90E0EA3010F0C79601C0C096EC +:103AC0008D939D932F5F243149F74FBF8091E8007C +:103AD000877F8093E8006AE270E0CE0101960E9441 +:103AE000B51914C0AE014F5F5F4F6091EC010E94A9 +:103AF000FD18009709F441C02091E800277F20932A +:103B0000E800BC0189819A810E94161A8091E80020 +:103B10008B778093E80031C0203879F58091E800F8 +:103B2000877F8093E8008091E3018093F10080918A +:103B3000E8008E778093E8000E94AD1A1EC0211124 +:103B40001CC09091EA019230C0F48091E800877F18 +:103B50008093E8009093E3010E94AD1A8091E30105 +:103B6000811104C08091E30087FF02C084E001C09E +:103B700081E08093E7010E94F9178091E80083FFBC +:103B80000AC08091E800877F8093E8008091EB0075 +:103B900080628093EB00AA960FB6F894DEBF0FBE4A +:103BA000CDBFDF91CF911F9108950895CF9380915C +:103BB000E7018823B1F08091E9008F709091EC00CB +:103BC00090FF02C090E801C090E0C92FC82B10926E +:103BD000E9008091E80083FD0E94871CCF70C093AC +:103BE000E900CF91089590936B0180936A01089545 +:103BF000E0916A01F0916B01309721F00190F08122 +:103C0000E02D099480E00895E0916A01F0916B0144 +:103C1000309721F00280F381E02D09940895E0911E +:103C20006A01F0916B01309721F00480F581E02D5D +:103C300009940895209168013091690182179307D2 +:103C400071F09093690180936801E0916A01F091AD +:103C50006B01309721F00680F781E02D09940895DB +:103C600020916601309167018217930771F090935C +:103C7000670180936601E0916A01F0916B013097D2 +:103C800021F00084F185E02D0994089508950C94A5 +:103C9000461E0E943A2A0E94D4130C94002BCF9205 +:103CA000DF92EF92FF920F931F93CF93DF93CDB7E5 +:103CB000DEB72B970FB6F894DEBF0FBECDBF0E94C4 +:103CC000EC133DE6E32E31E0F32E00E010E0C02ED1 +:103CD000802F0E94D914F701D1907F01D826B1F42A +:103CE0000F5F1F4F0E30110591F78FEF89838A8385 +:103CF0001B820E94432A8160782F9D838C83498197 +:103D00005A816B818D810E94F21E41C09091CE013B +:103D100091FF04C08B870E94DF148B8520E030E088 +:103D20004D2D50E0922FBA01022E02C07595679575 +:103D30000A94E2F760FF25C02E83CF82EE24E3943D +:103D4000F12C02C0EE0CFF1C9A95E2F790E08E2158 +:103D50009F2121E0892B09F420E028870E94432A33 +:103D60008160782F9A8789874E815F8168858A85EF +:103D70000E94F21EF801E359FE4F80818E25808358 +:103D800006C02F5F3F4F2630310561F6A9CF0E9454 +:103D9000E42D10916C010E94F81D1817A1F00E94EB +:103DA000F81D80936C012B960FB6F894DEBF0FBE02 +:103DB000CDBFDF91CF911F910F91FF90EF90DF90DA +:103DC000CF900C94FD162B960FB6F894DEBF0FBE65 +:103DD000CDBFDF91CF911F910F91FF90EF90DF90BA +:103DE000CF900895CF93DF93CDB7DEB72B970FB663 +:103DF000F894DEBF0FBECDBF4F83588769877A879F +:103E00008B87DE01119686E0FD0111928A95E9F714 +:103E100085E0FE01379601900D928A95E1F7498180 +:103E20005A816B817C818D819E810E9425262B96F3 +:103E30000FB6F894DEBF0FBECDBFDF91CF910895CE +:103E4000CF93C82F882309F4C1C0823859F40E9447 +:103E5000F81D81FDBBC089E30E94C4280E947E2911 +:103E600089E30CC0833879F40E94F81D80FDAEC050 +:103E700083E50E94C4280E947E2983E50E940429CC +:103E8000CF910C947E29843859F40E94F81D82FD4C +:103E90009DC087E40E94C4280E947E2987E4EECF5B +:103EA0008CEF8C0F813A48F48C2F0E9419308111CD +:103EB0008DC08C2F0E94C428E3CF80E28C0F883005 +:103EC00048F4C77081E001C0880FCA95EAF70E94E4 +:103ED0004529D6CF8BE58C0F833078F4C53A29F08D +:103EE000C63A31F482E890E005C081E890E002C073 +:103EF00083E890E0CF910C941A1E88E58C0F8331F3 +:103F000008F064C0C83A39F1C93A41F1CA3A49F1F6 +:103F1000CB3A51F1CC3A59F1CD3A61F1C03B69F15C +:103F2000CE3A71F1CF3A79F1C13B81F1C23B89F1CF +:103F3000C33B91F1C43B99F1C53BA1F1C63BA9F14B +:103F4000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5A7 +:103F50008AE292E038C082EE90E035C089EE90E0CF +:103F600032C08AEE90E02FC085EB90E02CC086EB4B +:103F700090E029C087EB90E026C08CEC90E023C055 +:103F80008DEC90E020C083E891E01DC08AE891E0CC +:103F90001AC082E991E017C084E991E014C081E27F +:103FA00092E011C083E292E00EC084E292E00BC086 +:103FB00085E292E008C086E292E005C087E292E0E6 +:103FC00002C080E090E0CF910C94301ECF91089514 +:103FD000882309F44BC0823859F40E94F81D81FFF0 +:103FE00045C089E30E94C4280E947E2989E30CC051 +:103FF000833871F40E94F81D80FF38C083E50E9469 +:10400000C4280E947E2983E50E9404290C947E29FD +:10401000843859F40E94F81D82FF28C087E40E946A +:10402000C4280E947E2987E4EFCF9CEF980F913A35 +:1040300058F390E2980F983050F4877091E001C0E7 +:10404000990F8A95EAF7892F0E944B29DFCF9BE5CC +:10405000980F933020F480E090E00C941A1E885A58 +:10406000833120F480E090E00C94301E0895882382 +:1040700021F00E9445290C947E290895882321F07F +:104080000E944B290C947E290895CF92DF92EF92E3 +:10409000FF920F931F93CF93DF93CDB7DEB728978F +:1040A0000FB6F894DEBF0FBECDBF8C0185E0F801DE +:1040B000DE01119601900D928A95E1F7F801408199 +:1040C0003181F280258122952F7083819481892B03 +:1040D00031F03F3F31F481E04F3F19F403C081E0FC +:1040E00001C080E080FDC4C249833A8389819A81FE +:1040F0002F830E9482289E8388870E9481280E94A5 +:1041000054274E81E42FE295EF70F0E0E45EFE4F1D +:104110002F8168850C944B32842F807F142F1F7061 +:10412000882311F01295107FFF2059F0112309F414 +:1041300054C2812F68870E9455290E947E29688574 +:104140004CC2862F0E94E81F112309F491C2812FCF +:104150000E945B2928960FB6F894DEBF0FBECDBF34 +:10416000DF91CF911F910F91FF90EF90DF90CF9053 +:104170000C947E29342F307F842F8F70303211F0D1 +:104180008295807F662319F0613019F12BC0FF20E2 +:10419000B1F0222309F493C1213009F090C128968F +:1041A0000FB6F894DEBF0FBECDBFDF91CF911F9148 +:1041B0000F91FF90EF90DF90CF900C946529222310 +:1041C00019F0213009F454C28E830E9468298E812F +:1041D00089C1FF2021F0223008F04AC270C12111AC +:1041E00047C280C1FF2021F0222309F468C1F5C134 +:1041F000222309F477C105C2242F26952695237022 +:1042000030E02115310521F021303105C9F030C2EF +:10421000FF2021F0862F942F937002C080E090E061 +:1042200028960FB6F894DEBF0FBECDBFDF91CF91B9 +:104230001F910F91FF90EF90DF90CF900C941A1E7A +:10424000FF2021F0862F942F937002C080E090E031 +:1042500028960FB6F894DEBF0FBECDBFDF91CF9189 +:104260001F910F91FF90EF90DF90CF900C94301E34 +:10427000862FFF2019F00E94EC2C02C00E94542DC2 +:1042800028960FB6F894DEBF0FBECDBFDF91CF9159 +:104290001F910F91FF90EF90DF90CF900C94D92D4C +:1042A000842F837009F076C0F110E2C1262F229589 +:1042B00026952770220F220F862F8F70C82ED12CA3 +:1042C000E12CF12C022E04C0CC0CDD1CEE1CFF1CDA +:1042D0000A94D2F764FF10C06FE070E080E090E0D5 +:1042E00004C0660F771F881F991F2A95D2F7609523 +:1042F00070958095909503C060E070E0CB01242F0D +:10430000269526952370422F50E042305105D1F07A +:104310004330510559F16C297D298E299F2941305F +:10432000510541F128960FB6F894DEBF0FBECDBF00 +:10433000DF91CF911F910F91FF90EF90DF90CF9081 +:104340000C9479276C297D298E299F2928960FB6F0 +:10435000F894DEBF0FBECDBFDF91CF911F910F91BB +:10436000FF90EF90DF90CF900C9493270E947927D5 +:10437000C701B60128960FB6F894DEBF0FBECDBFB9 +:10438000DF91CF911F910F91FF90EF90DF90CF9031 +:104390000C945F27FF2019F0842F817001C086954F +:1043A000882309F465C1262F229526952770220FB0 +:1043B000220F862F8F70C82ED12CE12CF12C022ECB +:1043C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF69 +:1043D00010C06FE070E080E090E004C0660F771FCF +:1043E000881F991F2A95D2F76095709580959095B2 +:1043F00003C060E070E0CB01242F26952695237042 +:10440000422F50E042305105D1F04330510559F16F +:104410006C297D298E299F294130510541F128962B +:104420000FB6F894DEBF0FBECDBFDF91CF911F91C5 +:104430000F91FF90EF90DF90CF900C944D286C2956 +:104440007D298E299F2928960FB6F894DEBF0FBECE +:10445000CDBFDF91CF911F910F91FF90EF90DF9033 +:10446000CF900C9467280E944D28C701B60128966A +:104470000FB6F894DEBF0FBECDBFDF91CF911F9175 +:104480000F91FF90EF90DF90CF900C943328603F16 +:10449000C9F118F4603E50F49BC0623F09F460C05B +:1044A00008F44AC0633F09F46FC092C0162F1F7012 +:1044B000842F8F71FF2099F00E94CC27812F28969E +:1044C0000FB6F894DEBF0FBECDBFDF91CF911F9125 +:1044D0000F91FF90EF90DF90CF900C9437200E94C7 +:1044E000ED27812F28960FB6F894DEBF0FBECDBF03 +:1044F000DF91CF911F910F91FF90EF90DF90CF90C0 +:104500000C943E20FF20A1F02111B2C0842F8F71A6 +:1045100028960FB6F894DEBF0FBECDBFDF91CF91C6 +:104520001F910F91FF90EF90DF90CF900C94122885 +:10453000223008F09DC0EACFFF20A1F0842F8F71B8 +:1045400028960FB6F894DEBF0FBECDBFDF91CF9196 +:104550001F910F91FF90EF90DF90CF900C94CC279C +:10456000FF2061F3842F8F7128960FB6F894DEBF79 +:104570000FBECDBFDF91CF911F910F91FF90EF90B4 +:10458000DF90CF900C94ED27FF2091F0842F8F7156 +:1045900028960FB6F894DEBF0FBECDBFDF91CF9146 +:1045A0001F910F91FF90EF90DF90CF900C94B72761 +:1045B00028960FB6F894DEBF0FBECDBFDF91CF9126 +:1045C0001F910F91FF90EF90DF90CF900C94AD274B +:1045D000FF20A1F0222309F4B1CF862F28960FB631 +:1045E000F894DEBF0FBECDBFDF91CF911F910F9129 +:1045F000FF90EF90DF90CF900C94201F222309F4BE +:10460000B1CF862F28960FB6F894DEBF0FBECDBF70 +:10461000DF91CF911F910F91FF90EF90DF90CF909E +:104620000C94E81F4F70C8010E94031028960FB623 +:10463000F894DEBF0FBECDBFDF91CF911F910F91D8 +:10464000FF90EF90DF90CF900C94D2264F70C8016E +:1046500028960FB6F894DEBF0FBECDBFDF91CF9185 +:104660001F910F91FF90EF90DF90CF900C949F15CA +:1046700028960FB6F894DEBF0FBECDBFDF91CF9165 +:104680001F910F91FF90EF90DF90CF9008950E94BF +:1046900062290E9437290E947E290E94852E0E944D +:1046A000D92D80E090E00E941A1E80E090E00C94EA +:1046B000301E0E9452290C9447230E948228292FE1 +:1046C00022952F7030E02C3031054CF42A30310522 +:1046D0006CF4225031092230310590F407C02C309F +:1046E000310551F02F30310539F00AC0803E10F00D +:1046F000803F31F481E0089593FB882780F9089585 +:1047000080E00895CF93DF9300D000D01F92CDB703 +:10471000DEB70F900F900F900F900F90DF91CF9119 +:104720000895CF93DF9300D000D000D0CDB7DEB78F +:1047300026960FB6F894DEBF0FBECDBFDF91CF91A6 +:1047400008951F93CF93DF93C0917B0116E0809172 +:104750007C01C81799F0D0E01C9FF0011D9FF00D5F +:104760001124E358FE4F408151816281738184811D +:1047700095810E9491232196C770E9CFDF91CF9157 +:104780001F9108954091AD015091AE016091AF012C +:104790007091B0018091B1019091B2010C9491237C +:1047A000CF938091B20182958F7009F05FC08091A4 +:1047B000AF01882309F45AC020917B01A0917C01AC +:1047C0006091AD017091AE018091B0019091B10105 +:1047D00031E06F3F09F030E0B32FC6E02A1709F44B +:1047E00045C0009721F07F3F21F44B2F03C041E0EB +:1047F00001C040E030E040FD35C0C29FF001C39FE2 +:10480000F00D1124E358FE4F418174132BC04081F9 +:10481000641328C04281411125C043815481481747 +:10482000590710F441505109481B590B483C510598 +:10483000C8F48091B2018F7080618093B20186E0EC +:10484000829FF001839FF00D1124EE57FE4F80816F +:104850008F70806180838DEA91E00E944520CF9126 +:104860000C94A1232F5F3F4F2770B8CFCF910895AD +:10487000CF92DF92EF92FF920F931F93CF93DF932C +:10488000CDB7DEB762970FB6F894DEBF0FBECDBFCF +:104890008C0185E0F801DE011D9601900D928A954C +:1048A000E1F7D8014C9111965C91119712966C9199 +:1048B00012971396ED90FC9014977091AD01E091D2 +:1048C000AE012091B0013091B1012115310531F0D7 +:1048D000EF3F31F481E07F3F19F403C081E001C074 +:1048E00080E0B82FB170CB2E80FD6CC1D090AF01AD +:1048F000DD2009F4F5C0F091B201E216F30638F0BC +:10490000C701821B930B883C910548F09BC0209502 +:1049100030952E0D3F1D283C310508F093C08F2F98 +:10492000807F09F052C0E51314C0741312C0D62E54 +:1049300061110FC0FF70F061F093B2010E94C223B9 +:104940008DEA91E00E9445208091B201F8018583B3 +:104950006CC1EF2831F05F3F31F481E04F3F19F433 +:1049600003C081E001C080E080FD03C081E08627B4 +:1049700001C080E0F82FF170FF2E80FF1CC08091F5 +:104980007B0120917C0136E0821709F428C190E078 +:10499000389FF001399FF00D1124E358FE4F7181CB +:1049A000571306C07081471303C07281671303C099 +:1049B00001968770E9CFD62E662309F436C180911F +:1049C000B20181608093B20153C0E51308C0741333 +:1049D00006C0611104C0D8011596FC93AEC04D8786 +:1049E0005E878D859E856A8B0E945D236A898823F8 +:1049F00029F1D62E662311F12091B201822F8295E2 +:104A00008F7090E002970CF460C08091AD0190919E +:104A1000AE0198878F831986FB86EA862C87CE01A4 +:104A2000079651C0E51731F14D875E878D859E85CC +:104A30006A8B0E945D236A8981112EC0C8010E9481 +:104A40004520A4C08F2F807F69F77E2DF98AE88AE0 +:104A500089890E9482238DEA91E00E944520EDEA37 +:104A6000F1E086E0DF011D928A95E9F70E94C223FA +:104A7000D12CDBC07413D8CF6111D6CFD8011596D5 +:104A8000FC93C8010E944520EDEAF1E086E0DF01D9 +:104A90001D928A95E9F7C9C0D62E662379F2209136 +:104AA000B201822F82958F7090E0029774F080910E +:104AB000AD019091AE019A8389831B82FD82EC82C5 +:104AC0002E83CE0101960E94452086E0F801ADEAD2 +:104AD000B1E001900D928A95E1F70E94D0236FC05A +:104AE000E216F30628F0C701821B930B9C0104C059 +:104AF000209530952E0D3F1D283C310508F052C001 +:104B0000D62E662309F49ACFE5132CC074132AC05D +:104B10008091B20180FD1DC0982F92959F70C9F0C1 +:104B2000D80115968C9315979F3039F09F5F929519 +:104B3000907F8F70892B15968C93C8010E94452019 +:104B400086E0F801ADEAB1E001900D928A95E1F7B7 +:104B500036C086E0F801ADEAB1E001900D928A9589 +:104B6000E1F763C04D875E878D859E850E945D233A +:104B7000882379F086E0F801ADEAB1E001900D926A +:104B80008A95E1F70E94D0230E94C223DD24D394AA +:104B90004CC08091B20181608093B201C8010E9433 +:104BA000452043C07E2DF98AE88A89890E948223A4 +:104BB000EDEAF1E086E0DF011D928A95E9F70E94B7 +:104BC000C22333C0662309F439CF4D875E878D85B4 +:104BD0009E850E945D23882309F430CFCBCF4D877B +:104BE0005E878D859E850E948228292F22952F70B1 +:104BF00030E0223031052CF49F7041F0811106C065 +:104C00000CC0243031052CF49F7049F4805E88304C +:104C100020F0C8010E944520CF2CDC2C06C0D80112 +:104C200015969C91907F91F7F8CF8D2D62960FB6D7 +:104C3000F894DEBF0FBECDBFDF91CF911F910F91D2 +:104C4000FF90EF90DF90CF9008951F93CF93DF9365 +:104C5000CDB7DEB72C970FB6F894DEBF0FBECDBF31 +:104C60004F83588769877A878B879C87CE01079601 +:104C70000E9438248823C1F02F8138858A859B853E +:104C8000892B31F03F3F11F080E003C02F3FE1F767 +:104C900081E0811147C04F81588569857A858B8570 +:104CA0009C850E9491233EC086E0FE013796DE017E +:104CB000119601900D928A95E1F7FF81E8854A856A +:104CC0005B854115510531F0EF3F31F481E0FF3F45 +:104CD00019F403C081E001C080E080FD23C0209171 +:104CE0007C0130E0C90101968770992760917B01B2 +:104CF00070E086179707F1F1F983EA835D834C83AF +:104D000096E0929FD001939FB00D1124A358BE4FFF +:104D1000FE01319601900D929A95E1F780937C0106 +:104D20000E94A12316E080917B0190917C0189175C +:104D300079F1189FC001112483589E4F0E94382496 +:104D4000882331F1E0917B011E9FF0011124E3588B +:104D5000FE4F4081518162817381848195810E94DF +:104D6000912380917B0190E0019687709927809331 +:104D70007B01D9CF0E94592310927C0110927B01B4 +:104D8000EDEAF1E086E0DF011D928A95E9F7CACFEE +:104D90002C960FB6F894DEBF0FBECDBFDF91CF913A +:104DA0001F910895EF92FF920F931F93CF93DF937C +:104DB0009C01009709F471C0F12CEE24E394E90101 +:104DC0002196F9018491843740F4843008F056C06C +:104DD000813081F0823021F160C0853709F449C00B +:104DE000C0F19CE7980F903708F057C08F770E946A +:104DF000E81F46C089010E5F1F4FFE01849190E2BB +:104E0000980F983050F48770FE2D01C0FF0F8A95DF +:104E1000EAF78F2F0E94552915C00E94201F14C049 +:104E200089010E5F1F4FFE01849190E2980F983028 +:104E300068F48770FE2D01C0FF0F8A95EAF78F2F67 +:104E40000E945B290E947E29E8011AC00E94E81F87 +:104E5000FBCF2E5F3F4FFE01C491CC2341F08FE981 +:104E60009FE00197F1F700C00000C150F6CFE901C3 +:104E700007C0FE01F490E901229602C00E94201FA3 +:104E80008F2D882341F0EFE9FFE03197F1F700C063 +:104E900000008150F6CF9E0192CFDF91CF911F91FC +:104EA0000F91FF90EF90089508956093B70170936C +:104EB000B8018093B9019093BA010C9447230F93E2 +:104EC0001F930091B7011091B8012091B901309161 +:104ED000BA01062B172B282B392B0093B7011093FF +:104EE000B8012093B9013093BA011F910F910C942E +:104EF00047230F931F930091B7011091B8012091A0 +:104F0000B9013091BA0106231723282339230093CE +:104F1000B7011093B8012093B9013093BA011F91E2 +:104F20000F910C9447230F931F930091B701109199 +:104F3000B8012091B9013091BA0106271727282717 +:104F400039270093B7011093B8012093B90130932A +:104F5000BA011F910F910C9447231092B301109244 +:104F6000B4011092B5011092B6010C94472341E0B0 +:104F700050E060E070E004C0440F551F661F771FCB +:104F80008A95D2F74093B3015093B4016093B50171 +:104F90007093B6010C94472341E050E060E070E06C +:104FA00004C0440F551F661F771F8A95D2F7809162 +:104FB000B3019091B401A091B501B091B601842BD9 +:104FC000952BA62BB72B8093B3019093B401A0939C +:104FD000B501B093B6010C94472341E050E060E086 +:104FE00070E004C0440F551F661F771F8A95D2F7E3 +:104FF00040955095609570958091B3019091B40162 +:10500000A091B501B091B60184239523A623B723BF +:105010008093B3019093B401A093B501B093B6010E +:105020000C94472341E050E060E070E004C0440F7E +:10503000551F661F771F8A95D2F78091B301909113 +:10504000B401A091B501B091B60184279527A62798 +:10505000B7278093B3019093B401A093B501B093A7 +:10506000B6010C9447230F931F930091B301109145 +:10507000B4012091B5013091B601062B172B282BD6 +:10508000392B0093B3011093B4012093B5013093F1 +:10509000B6011F910F910C9447230F931F9300911A +:1050A000B3011091B4012091B5013091B6010623EE +:1050B0001723282339230093B3011093B4012093BD +:1050C000B5013093B6011F910F910C9447230F93B4 +:1050D0001F930091B3011091B4012091B50130915B +:1050E000B60106271727282739270093B301109305 +:1050F000B4012093B5013093B6011F910F910C9428 +:1051000047230895CF92DF92EF92FF920F931F9360 +:10511000CF93DF93EC01C090B701D090B801E0903D +:10512000B901F090BA018091B3019091B401A091BE +:10513000B501B091B601C82AD92AEA2AFB2A0FE1A3 +:1051400010E0B701A601002E04C07695679557952B +:1051500047950A94D2F740FF07C0BE01802F0E94F6 +:10516000C2158130910539F40150110950F7BE0183 +:1051700080E00E94C215DF91CF911F910F91FF90A7 +:10518000EF90DF90CF90089590910C019923D9F082 +:1051900090910D019923B9F0982F96959695969533 +:1051A0009F3088F5E0910E01F0910F01E90FF11D9C +:1051B000877021E030E001C0220F8A95EAF78181F3 +:1051C000822B8183089540910E0150910F0120E0C0 +:1051D00030E09FEFFA01E20FF31F6281681799F048 +:1051E0009F3F19F4611101C0922F2F5F3F4F2E3066 +:1051F000310581F79F3F39F0FA01E90FF11D97FD65 +:10520000FA9582830895089590910C019923E1F015 +:1052100090910D019923C1F0982F969596959695AA +:105220009F3020F5E0910E01F0910F01E90FF11D83 +:10523000877021E030E001C0220F8A95EAF72095BF +:10524000818128232183089540910E0150910F01FF +:1052500020E030E0FA01E20FF31F9281981301C0C1 +:1052600012822F5F3F4F2E303105A1F7089581E064 +:1052700090E0E0910E01F0910F01E80FF91F10820C +:10528000019680319105A9F708959091CD01982B51 +:105290009093CD01089580959091CD01982390939E +:1052A000CD0108951092CD0108959091CC01982BD5 +:1052B0009093CC01089580959091CC019823909380 +:1052C000CC0108951092CC0108958093BB010895FC +:1052D0001092BB01089540910E0150910F0120E002 +:1052E00030E080E0FA01E20FF31F918191118F5FAE +:1052F0002F5F3F4F2F303105A9F70895E0910E0140 +:10530000F0910F018091CD018083E0910E01F09129 +:105310000F0180819091CC01892B80839091BB01FA +:10532000992361F0E0910E01F0910F018081892BAA +:1053300080830E946B2981111092BB0180910E0124 +:1053400090910F010C94041ECF92DF92EF92FF9286 +:105350000F931F936C01EE24FF24C114D104E104C8 +:10536000F10421F46B017C0180E001C080E133276E +:105370002F2D1E2D0D2D011511052105310519F0BB +:10538000885F6801790197018601A4E03695279529 +:1053900017950795AA95D1F7011511052105310536 +:1053A00019F08C5F6801790197018601F2E036956A +:1053B000279517950795FA95D1F701151105210540 +:1053C000310519F08E5F68017901B701A601769564 +:1053D000679557954795452B462B472B09F08F5FCF +:1053E0001F910F91FF90EF90DF90CF9008958091E3 +:1053F000E701843009F11092CF0120E488E190E0C8 +:105400000FB6F894A895809360000FBE20936000BB +:1054100083B7817F846083BF83B7816083BF7894C3 +:10542000889583B78E7F83BF88E10FB6F894809309 +:105430006000109260000FBE089508950895CF9304 +:105440000E941D2A0E94EC130E941E2AC0E08C2F8D +:105450000E94D914811105C0CF5FCE30C1F780E022 +:1054600001C081E0CF9108950E9459230E94F81D48 +:105470000C94FD1682E084BD93E095BD9AEF97BD34 +:1054800080936E0008952FB7F8948091D001909189 +:10549000D101A091D201B091D3012FBF0895CF9235 +:1054A000DF92EF92FF920F931F932FB7F8944091E2 +:1054B000D0015091D1016091D2017091D3012FBFE1 +:1054C0006A017B01EE24FF248C0120E030E0C0164D +:1054D000D106E206F30610F441505109481B590B5E +:1054E000CA011F910F91FF90EF90DF90CF90089528 +:1054F0001F920F920FB60F9211248F939F93AF9329 +:10550000BF938091D0019091D101A091D201B0912F +:10551000D3010196A11DB11D8093D0019093D101BB +:10552000A093D201B093D301BF91AF919F918F917E +:105530000F900FBE0F901F9018950E94FE1AF894BE +:105540002FEF87EA91E6215080409040E1F700C0BC +:10555000000087E090EBDC018093F0019093F10173 +:10556000A093F201B093F3012CE088E190E00FB634 +:10557000F894A895809360000FBE20936000FFCF41 +:10558000EF92FF920F931F93CF93DF93E82EF12CAE +:105590008F2D0E94D914C0E0D0E0082F10E09801B0 +:1055A0000C2E02C0359527950A94E2F720FD05C020 +:1055B0002196C630D10599F709C06C2F7F2D80E068 +:1055C0000E94A015E812F4CF81E005C0F3948EE0AC +:1055D000F812DECF80E0DF91CF911F910F91FF9005 +:1055E000EF900895CF93C82F8CE20E94C02A8823A1 +:1055F00021F08C2FCF910C94C02A80E0CF91089598 +:10560000CF930E94452C811102C00E942B2CC5E62D +:10561000C15049F00E94EC138FE39CE90197F1F728 +:1056200000C00000F5CF89E20E94F22A811111C169 +:105630008AE20E94F22A81110E942B2C85E00E94AE +:10564000F22A81110E949D2A0E94502C8093CE0143 +:1056500087E00E94F22A882399F18BE10E94F22AC6 +:10566000882351F09091CE0191FB882780F921E0A9 +:10567000822780FB91F922C08EE00E94F22A8823C3 +:1056800051F09091CE0192FB882780F921E082278A +:1056900080FB92F913C080E10E94F22A9091CE0122 +:1056A000882341F093FB882780F921E0822780FB43 +:1056B00093F904C0892F809580FB90F99093CE01D7 +:1056C0008091CE010E94542C0E94622C8093E101B3 +:1056D00080EE0E94F22A882341F08091E101982F08 +:1056E000909590FB80F98093E10189E30E94F22A72 +:1056F000882359F09091E10191FB882780F921E0FE +:10570000822780FB91F99093E10182EE0E94F22AB8 +:10571000882359F09091E10192FB882780F921E0DC +:10572000822780FB92F99093E10186EE0E94F22A93 +:10573000882359F09091E10193FB882780F921E0BB +:10574000822780FB93F99093E10183EE0E94F22A75 +:10575000882359F09091E10194FB882780F921E09A +:10576000822780FB94F99093E10185E30E94F22A5D +:10577000882359F09091E10195FB882780F921E079 +:10578000822780FB95F99093E10181E30E94F22A40 +:10579000882359F09091E10196FB882780F921E058 +:1057A000822780FB96F99093E10181E10E94F22A21 +:1057B000882359F09091E10197FB882780F921E037 +:1057C000822780FB97F99093E1018091E1010E948B +:1057D000662C8091E10187FB882780F980930D0179 +:1057E00087E20E94F22AC82F8EE10E94F22A8111DC +:1057F000C2608FE10E94F22A8111C46080E20E949F +:10580000F22A8111C86081E20E94F22A8111C061EE +:1058100082E20E94F22A8111C06283E20E94F22A8F +:105820008111C06484E20E94F22A882311F0C068CA +:1058300002C0CC2329F08C2F0E945D2C6C2F03C05A +:105840000E94592C682F70E080E090E0CF910C947A +:105850005527CF9108956DEE7EEF80E090E00E9495 +:10586000813260E082E090E00E94733260E083E089 +:1058700090E00E94733260E084E090E00E94733216 +:1058800060E085E090E00C94733280E090E00E944C +:105890006D3221E08D3E9E4F09F020E0822F089569 +:1058A00082E090E00C946532682F82E090E00C94E6 +:1058B000733283E090E00C946532682F83E090E0CF +:1058C0000C94733284E090E00C946532682F84E08D +:1058D00090E00C9473328091D60180FF0BC06091F0 +:1058E000130185E0689FB001112475956795759542 +:1058F00067952AC081FF09C06091130185E0689F08 +:10590000B0011124759567951FC082FF07C0609193 +:10591000130185E0689FB001112416C04091D701A2 +:105920004423C9F060911201461788F720911301B2 +:1059300085E0289F90011124429FC001439F900D54 +:10594000112470E00E9437326038710540F461150F +:10595000710539F002C065E070E0862F08958FE789 +:10596000089581E008958091D60180FF08C060917C +:10597000110170E0759567957595679521C081FF58 +:1059800006C06091110170E07595679519C082FF9E +:1059900004C06091110170E010C08091D70188238C +:1059A000C1F0609110018617A0F790911101989FA6 +:1059B000C001112470E00E9437326038710528F46C +:1059C0006115710521F0862F08958FE7089581E014 +:1059D000089561E070E0F4CF803F21F40E946B2CC9 +:1059E000819504C0813F29F40E946B2C8093DA01D9 +:1059F0000895823F21F40E946B2C819504C0833F5F +:105A000029F40E946B2C8093D9010895893F19F4E1 +:105A10000E94B32C05C08A3F31F40E94B32C8195BB +:105A20008093DB0108958B3F21F40E94B32C819574 +:105A300004C08C3F29F40E94B32C8093DC010895AC +:105A4000843F21F48091D801816017C0853F21F403 +:105A50008091D801826011C0863F21F48091D801E5 +:105A600084600BC0873F21F48091D801886005C015 +:105A7000883F31F48091D80180618093D8010895E6 +:105A80008D3F21F48091D60181600BC08E3F21F4BF +:105A90008091D601826005C08F3F29F48091D601A4 +:105AA00084608093D6010895803F39F48091DA01B3 +:105AB00087FF6CC01092DA0169C0813F29F48091A0 +:105AC000DA011816BCF362C09091D901823F29F423 +:105AD00097FF5CC01092D90159C0833F19F4191681 +:105AE000CCF354C0893F41F48091DB0118160CF0CF +:105AF0004DC01092DB014AC08A3F29F48091DB013E +:105B000087FF44C0F6CF8B3F39F48091DC0187FFDB +:105B10003DC01092DC013AC08C3F29F48091DC0139 +:105B20001816BCF333C0843F21F48091D8018E7FD6 +:105B300017C0853F21F48091D8018D7F11C0863F29 +:105B400021F48091D8018B7F0BC0873F21F4809195 +:105B5000D801877F05C0883F31F48091D8018F7EBE +:105B60008093D80113C08D3F21F48091D6018E7FA0 +:105B70000BC08E3F21F48091D6018D7F05C08F3FF1 +:105B800029F48091D6018B7F8093D6018091D90131 +:105B900081110EC08091DA0181110AC08091DB0170 +:105BA000811106C08091DC01811102C01092D701E1 +:105BB000089588ED91E00E940F1E0E94432A909361 +:105BC000D5018093D40108951F93CF93DF938091E3 +:105BD000D4019091D5010E944F2A4091D7014423CE +:105BE00021F02091140130E006C0209115015AE007 +:105BF000259F900111248217930708F482C0809199 +:105C0000D9011091DA01D091DB01C091DC01811141 +:105C100007C0111105C0D11103C0CC2309F471C014 +:105C20004F3F19F04F5F4093D701181624F40E949C +:105C30006B2C8093D9018091D90187FF05C00E9408 +:105C40006B2C81958093D901111624F40E946B2C42 +:105C50008093DA018091DA0187FF05C00E946B2CE6 +:105C600081958093DA016091D901662339F1109111 +:105C7000DA01112319F1772767FD7095872F972F88 +:105C80000E94483123E333E343E35FE30E94AC31F6 +:105C90000E9415316093D901612F772767FD7095B8 +:105CA000872F972F0E94483123E333E343E35FE3D9 +:105CB0000E94AC310E9415316093DA011D1624F464 +:105CC0000E94B32C8093DB018091DB0187FF05C02C +:105CD0000E94B32C81958093DB011C1624F40E9452 +:105CE000B32C8093DC018091DC0187FF05C00E940A +:105CF000B32C81958093DC01DF91CF911F910C949F +:105D0000D92DDF91CF911F910895E8EDF1E085E065 +:105D1000DF011D928A95E9F71092D7011092D60102 +:105D20000895833081F128F4813059F08230D1F028 +:105D30000895853009F449C0B8F1863009F456C099 +:105D4000089520911501862F90E0820F911D8F3FBD +:105D5000910520F4620F6093150108958FEF8093F1 +:105D60001501089520911401862F90E0820F911D56 +:105D70008F3F910520F4620F6093140108958FEF17 +:105D800080931401089520911301862F90E0820FD3 +:105D9000911D8F3F910520F4620F609313010895C8 +:105DA0008FEF80931301089520911201862F90E0C8 +:105DB000820F911D8F3F910520F4620F60931201B5 +:105DC00008958FEF80931201089520911101862F7D +:105DD00090E0820F911D8F3F910520F4620F609338 +:105DE000110108958FEF8093110108952091100102 +:105DF000862F90E0820F911D8F3F910520F4620F56 +:105E00006093100108958FEF8093100108958330FF +:105E100011F128F4813049F0823091F008958530F5 +:105E200081F120F18630C1F1089580911501681744 +:105E300020F4861B80931501089510921501089592 +:105E400080911401681720F4861B80931401089533 +:105E500010921401089580911301681720F4861B95 +:105E600080931301089510921301089580911201F7 +:105E7000681720F4861B8093120108951092120176 +:105E8000089580911101681720F4861B80931101F9 +:105E9000089510921101089580911001681720F45F +:105EA000861B8093100108951092100108958D3182 +:105EB00009F442C020F58E3009F479C070F48730BF +:105EC00009F45EC020F4863009F442C033C0883043 +:105ED000D1F18B3009F4A7C02DC0863109F4A3C0DD +:105EE00038F4803109F46DC0813109F47BC022C0DF +:105EF000893109F498C08B3109F44FC01BC0853338 +:105F000009F479C048F4873209F475C008F478C000 +:105F1000893209F470C00EC0833438F48A3308F033 +:105F200071C0883309F47FC005C0833409F463C0AD +:105F30008834C1F080E008950E94CF300E94F81D9F +:105F40000E94FD1670C00E94502C0E94622C6BC0F3 +:105F50008091CE01817F8E7F8093CE0181E08093FE +:105F6000DE0108950E9459232FEF83ED90E3215025 +:105F700080409040E1F700C000000E949D2A53C07D +:105F80009091CE01892F817090FF03C0917F9E7FF9 +:105F900026C091609093CE0146C09091CE0191FBB6 +:105FA000882780F921E0822780FB91F913C0909126 +:105FB000CE0192FB882780F921E0822780FB92F9AD +:105FC00009C09091CE0193FB882780F921E08227B8 +:105FD00080FB93F99093CE01882329F191609093EF +:105FE000CE0108950E94592380910D0191E08927E7 +:105FF00080930D0118C061E070E080E090E00FC078 +:1060000023EE01C027EC280F61E070E080E090E013 +:1060100004C0660F771F881F991F2A95D2F70E9428 +:1060200055270E94592381E0089580E0089580E07B +:106030000895CF93C82F8091DE01813079F018F058 +:106040008230D1F184C0A0910E01B0910F018C91EA +:10605000813169F0823209F07CC009C0A0910E0143 +:10606000B0910F018C91813111F0823249F48C2F63 +:106070000E94153081111DC08C2F0E94572F1AC00D +:106080008C2F0E941730811114C0C43179F048F46C +:10609000CB3079F0C03109F060C082E08093DE013E +:1060A00008C0C93219F0C83321F057C01092DE0180 +:1060B00054C081E0817053C0C93289F118F5C431F0 +:1060C00071F1A8F4C73009F046C08AE08093150149 +:1060D00094E19093140193E0909313018093120143 +:1060E00088E08093110188E28093100134C0CE5182 +:1060F000C63088F5EC2FF0E0E65DFE4F808180939E +:10610000DD0129C0CE34E9F020F4CB3421F56AE07A +:1061100013C0C13579F0C235F1F461E00DC0809152 +:10612000DD01882319F01092DD0115C081E0809314 +:10613000DE0115C061E006C08091DD010E94912E54 +:106140000AC06AE08091DD010E94072F04C010920E +:10615000DE0180E004C081E002C080E0ABCFCF91DF +:106160000895E1E8F0E0808188608083808181602B +:1061700080838FB7F89493E09093890090ED90938B +:1061800088008FBF0895EFE6F0E080818260808311 +:106190000895EFE6F0E080818D7F80830895EFE63B +:1061A000F0E0808192E08927808308951F920F920A +:1061B0000FB60F9211242F933F934F935F936F93DA +:1061C0007F938F939F93AF93BF93EF93FF938091B0 +:1061D000DF019091E00101969093E0018093DF014F +:1061E000811103C082E00E94FD16E091E001E69576 +:1061F000E695F0E0E65CF04EE4918091DF018E13CD +:1062000003C080E00E94FD16FF91EF91BF91AF9116 +:106210009F918F917F916F915F914F913F912F91BE +:106220000F900FBE0F901F90189504D06894B11175 +:106230008DC0089570D088F09F5790F0B92F99279E +:10624000B751A0F0D1F0660F771F881F991F1AF081 +:10625000BA95C9F712C0B13081F077D0B1E0089596 +:1062600074C0672F782F8827B85F39F0B93FCCF317 +:10627000869577956795B395D9F73EF49095809577 +:10628000709561957F4F8F4F9F4F0895E89409C097 +:1062900097FB3EF490958095709561957F4F8F4F59 +:1062A0009F4F9923A9F0F92F96E9BB279395F6956F +:1062B000879577956795B795F111F8CFFAF4BB0FED +:1062C00011F460FF1BC06F5F7F4F8F4F9F4F16C051 +:1062D000882311F096E911C0772321F09EE8872FDB +:1062E000762F05C0662371F096E8862F70E060E097 +:1062F0002AF09A95660F771F881FDAF7880F969510 +:10630000879597F9089557FD9058440F551F59F0F8 +:106310005F3F71F04795880F97FB991F61F09F3F92 +:1063200079F087950895121613061406551FF2CFBB +:106330004695F1DF08C0161617061806991FF1CF0B +:1063400086957105610508940895E894BB27662732 +:106350007727CB0197F908950BD078C069D028F042 +:106360006ED018F0952309F05AC05FC01124EECF0B +:10637000CADFA0F3959FD1F3950F50E0551F629FA0 +:10638000F001729FBB27F00DB11D639FAA27F00D8E +:10639000B11DAA1F649F6627B00DA11D661F829FB5 +:1063A0002227B00DA11D621F739FB00DA11D621F9A +:1063B000839FA00D611D221F749F3327A00D611DB7 +:1063C000231F849F600D211D822F762F6A2F112499 +:1063D0009F5750408AF0E1F088234AF0EE0FFF1FEC +:1063E000BB1F661F771F881F91505040A9F79E3F23 +:1063F000510570F014C0AACF5F3FECF3983EDCF378 +:10640000869577956795B795F795E7959F5FC1F75F +:10641000FE2B880F911D9695879597F9089597F90A +:106420009F6780E870E060E008959FEF80EC08953A +:1064300000240A9416161706180609060895002463 +:106440000A9412161306140605060895092E0394DD +:10645000000C11F4882352F0BB0F40F4BF2B11F451 +:1064600060FF04C06F5F7F4F8F4F9F4F089597FB72 +:10647000072E16F4009407D077FD09D00E94513200 +:1064800007FC05D03EF4909581959F4F0895709537 +:1064900061957F4F0895EE0FFF1F0590F491E02D59 +:1064A0000994AA1BBB1B51E107C0AA1FBB1FA6175B +:1064B000B70710F0A61BB70B881F991F5A95A9F7AD +:1064C00080959095BC01CD010895F999FECF92BDBC +:1064D00081BDF89A992780B50895A8E1B0E042E01F +:1064E00050E00C948832262FF999FECF1FBA92BD46 +:1064F00081BD20BD0FB6F894FA9AF99A0FBE0196A5 +:1065000008950E947332272F0C947432DC01CB0162 +:10651000FC01F999FECF06C0F2BDE1BDF89A3196B3 +:1065200000B40D9241505040B8F70895F894FFCF51 +:106530002002FF168C176917351702170101BC01DD +:1065400028080A03140A3F4D3639FB1EAE1E781E7A +:106550003F1ED21DEB1D041E1D1E01020304050675 +:04656000070809001F +:00000001FF -- cgit v1.2.3-24-g4f1b From 1d13aa933bbb57bf0c1fe0196981b81233c3df97 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Mon, 28 Mar 2016 19:45:20 -0500 Subject: Minor Tweaks and Documentation Fixed compiler warning by including bootloader.h in keymap_common.c. Changed FORCE_NKRO to only be applied if NKRO_ENABLE is defined. Added extra documentation to the template config.h --- quantum/keymap_common.c | 1 + quantum/template/config.h | 53 ++++++++++++++++++++++++++++++++++++---------- tmk_core/common/keyboard.c | 2 +- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 7068ca4f3..2eef4f15a 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -25,6 +25,7 @@ along with this program. If not, see . #include "debug.h" #include "backlight.h" #include "keymap_midi.h" +#include "bootloader.h" #include #include diff --git a/quantum/template/config.h b/quantum/template/config.h index dae4b6313..e6fb7866c 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -32,36 +32,67 @@ along with this program. If not, see . #define MATRIX_ROWS 2 #define MATRIX_COLS 3 -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom +/* + * 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 COLS (int []){ F1, F0, B0 } #define ROWS (int []){ D0, D5 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ #define BACKLIGHT_LEVELS 3 -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - /* 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 Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ +/* + * 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 - * These options allow the magic key functionality to be changed. This is useful - * if your keyboard/keypad is missing keys and you want magic key support. + * 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 */ diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index e66808485..302b3ec87 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -92,7 +92,7 @@ void keyboard_init(void) backlight_init(); #endif -#ifdef FORCE_NKRO +#if defined(NKRO_ENABLE) && defined(FORCE_NKRO) keyboard_nkro = true; #endif -- cgit v1.2.3-24-g4f1b From 60570f3e37c27e7583ccab862bbd88f8f38f1d8c Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Mon, 28 Mar 2016 22:02:52 -0400 Subject: Added clarifying steps to Windows section of build guide --- BUILD_GUIDE.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index e8b242e4e..22df53c30 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -3,11 +3,13 @@ ## Build Environment Setup ### Windows -1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! +1. If you have ever installed WinAVR, uninstall it. +2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. +3. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. +4. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. +5. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. +6. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! +7. Future build commands should be run from the standard Windows command prompt, which you can find by searching for "command prompt" from the start menu or start screen. Ignore the "MHV AVR Shell". ### Mac If you're using [homebrew,](http://brew.sh/) you can use the following commands: -- cgit v1.2.3-24-g4f1b From ac22d1c185fe3caf3581650390309aa8232e55bb Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Tue, 29 Mar 2016 13:02:14 +0200 Subject: added CTL_Shift / Hash macro --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 35 ++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 0349c749b..df8d99650 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -16,6 +16,7 @@ #define M_DE_PLUS_CTRLALT 12 #define M_DE_CIRC_CTRLCMD 13 #define M_TOGGLE_5 14 +#define M_CTL_SFT_HASH 15 #define SM_SMILE 4 #define SM_SMIRK 5 @@ -30,15 +31,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 |CTL_SFT| | # | 6 | 7 | 8 | 9 | 0 | ß | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | LALT | A | S | D | F | G |------| |------| H | J | K | L | ö | ä/RALT| - * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| - * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * ,-----------------------------------------------------. ,--------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 |CTL_SFT/#| |CTL_SFT/#| 6 | 7 | 8 | 9 | 0 | ß | + * |--------+------+------+------+------+----------------| |---------+------+------+------+------+------+--------| + * | TAB | Q | W | E | R | T | CMD | | CMD | Z | U | I | O | P | ü | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LALT | A | S | D | F | G |---------| |---------| H | J | K | L | ö | ä/RALT| + * |--------+------+------+------+------+------| LALT | | RALT |------+------+------+------+------+--------| + * | LShift |Y/Ctrl| X | C | V | B | | | | N | M | , | . |-/Ctrl| RShift | + * `--------+------+------+------+------+----------------' `-------------+------+------+------+------+--------' * |event.pressed) { + start=timer_read(); + return MACRO(D(LCTRL),D(LSFT),END); + } else { + if (timer_elapsed(start) > 150){ + return MACRO(U(LCTRL),U(LSFT),END); + } else { + return MACRO(U(LCTRL),U(LSFT),T(BSLS),END); + } + } + break; case M_DE_CIRC_CTRLCMD: if (record->event.pressed) { start = timer_read(); -- cgit v1.2.3-24-g4f1b From 2ae44470e01287c48f3852ac54a87d7fc4e747c2 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 12:06:32 -0400 Subject: Fix error in Planck makefile comment [This comment](https://www.reddit.com/r/olkb/comments/428umx/rgb_underglow/czaivbc) states that because both audio output and RGB support require the user of timer 3, they can't be enabled at the same time. That makes sense, I can see where audio.c uses timer 3. But this comment in the code states that the incompatibility is with MIDI support, which doesn't make sense based on what I see in the code. Please enlighten me if I'm mistaken. --- keyboard/planck/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 307b0c7f4..03d260176 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -143,7 +143,7 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. +# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. ifdef BACKLIGHT_ENABLE SRC += backlight.c -- cgit v1.2.3-24-g4f1b From 77fa2b0056f10c079af541a746fb12cb96fabe72 Mon Sep 17 00:00:00 2001 From: mbarkhau Date: Tue, 29 Mar 2016 18:35:47 +0200 Subject: Update compile_keymap.py --- .../keymaps/german-manuneo/compile_keymap.py | 24 ++++++++++------------ 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py index 9767b1e07..af6867222 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -121,32 +121,30 @@ def loads(raw_data): // # start of the comment (.*) # the comment $ # until the end of line - """, re.MULTILINE | re.VERBOSE - ) - + """, re.MULTILINE | re.VERBOSE) + INLINE_COMMENT_RE = re.compile(r""" - (?:[\,\"\[\]\{\}\d]) # anythig that might end a expression + ([\,\"\[\]\{\}\d]) # anythig that might end a expression \s+ # comment must be preceded by whitespace // # start of the comment \s # and succeded by whitespace - ([^\"\]\}\{\[]*) # the comment (except things which might be json) + (?:[^\"\]\}\{\[]*) # the comment (except things which might be json) $ # until the end of line - """, re.MULTILINE | re.VERBOSE - ) - + """, re.MULTILINE | re.VERBOSE) + TRAILING_COMMA_RE = re.compile(r""" , # the comma - \s* # arbitrary whitespace (including newlines) + (?:\s*) # arbitrary whitespace + $ # only works if the trailing comma is followed by newline + (\s*) # arbitrary whitespace ([\]\}]) # end of an array or object - """, re.MULTILINE | re.VERBOSE - ) - + """, re.MULTILINE | re.VERBOSE) if isinstance(raw_data, bytes): raw_data = raw_data.decode('utf-8') raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data) raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data) - raw_data = TRAILING_COMMA_RE.sub(r"\1", raw_data) + raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data) return json.loads(raw_data) -- cgit v1.2.3-24-g4f1b From 8f1ea16ad5e34446bad63bf2357432f256c4298a Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 16:35:06 -0400 Subject: Fix #198 --- 1-setup-path-win.bat | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 49fb00e14..6957dbc3f 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -1,9 +1,14 @@ @echo off -setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1 + +reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul +echo. + if NOT ["%errorlevel%"]==["0"] ( - echo FAILED. Rerun with administrator privileges. - pause + echo FAILED. You probably just need to run the script with administrator privileges. ) else ( echo Success! - pause + setx QMK QMK > nul ) + +echo. +pause -- cgit v1.2.3-24-g4f1b From 95fba250ef2029ccdedb34500c5d1e96f6d065cf Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Tue, 29 Mar 2016 21:53:36 -0400 Subject: Updated several keyboard folders to use new keymap naming scheme --- BUILD_GUIDE.md | 5 +- keyboard/alps64/Makefile | 4 +- keyboard/alps64/keymap_hasu.c | 151 ----------- keyboard/alps64/keymap_plain.c | 12 - keyboard/alps64/keymaps/default.c | 12 + keyboard/alps64/keymaps/hasu.c | 151 +++++++++++ keyboard/atomic/Makefile | 4 +- keyboard/atomic/README.md | 4 +- keyboard/atomic/keymaps/abienz.c | 36 +++ keyboard/atomic/keymaps/default.c | 79 ++++++ keyboard/atomic/keymaps/keymap_abienz.c | 36 --- keyboard/atomic/keymaps/keymap_default.c | 79 ------ keyboard/atomic/keymaps/keymap_michelle.c | 183 ------------- keyboard/atomic/keymaps/michelle.c | 183 +++++++++++++ keyboard/atreus/Makefile | 4 +- keyboard/atreus/README.md | 4 +- keyboard/atreus/keymaps/default.c | 51 ++++ keyboard/atreus/keymaps/gerb.c | 66 +++++ keyboard/atreus/keymaps/keymap_default.c | 51 ---- keyboard/atreus/keymaps/keymap_gerb.c | 66 ----- keyboard/gh60/Makefile | 4 +- keyboard/gh60/Makefile.pjrc | 4 +- keyboard/gh60/README.md | 14 +- keyboard/gh60/keymap_hasu.c | 145 ----------- keyboard/gh60/keymap_hhkb.c | 52 ---- keyboard/gh60/keymap_plain.c | 11 - keyboard/gh60/keymap_poker.c | 104 -------- keyboard/gh60/keymap_poker_bit.c | 50 ---- keyboard/gh60/keymap_poker_set.c | 82 ------ keyboard/gh60/keymap_spacefn.c | 55 ---- keyboard/gh60/keymaps/hasu.c | 145 +++++++++++ keyboard/gh60/keymaps/hhkb.c | 52 ++++ keyboard/gh60/keymaps/plain.c | 11 + keyboard/gh60/keymaps/poker.c | 104 ++++++++ keyboard/gh60/keymaps/poker_bit.c | 50 ++++ keyboard/gh60/keymaps/poker_set.c | 82 ++++++ keyboard/gh60/keymaps/spacefn.c | 55 ++++ keyboard/hhkb/Makefile | 8 +- keyboard/hhkb/Makefile.pjrc | 4 +- keyboard/hhkb/Makefile.rn42 | 8 +- keyboard/hhkb/README.md | 2 +- keyboard/hhkb/keymap_hasu.c | 282 --------------------- keyboard/hhkb/keymap_hhkb.c | 95 ------- keyboard/hhkb/keymap_jp.c | 50 ---- keyboard/hhkb/keymap_spacefn.c | 116 --------- keyboard/hhkb/keymaps/hasu.c | 282 +++++++++++++++++++++ keyboard/hhkb/keymaps/hhkb.c | 95 +++++++ keyboard/hhkb/keymaps/jp.c | 50 ++++ keyboard/hhkb/keymaps/spacefn.c | 116 +++++++++ keyboard/hhkb_qmk/Makefile | 4 +- keyboard/hhkb_qmk/README.md | 4 +- keyboard/hhkb_qmk/keymaps/default.c | 78 ++++++ keyboard/hhkb_qmk/keymaps/keymap_default.c | 78 ------ keyboard/hhkb_qmk/keymaps/keymap_lxol.c | 208 --------------- keyboard/hhkb_qmk/keymaps/lxol.c | 208 +++++++++++++++ keyboard/jd45/Makefile | 4 +- keyboard/jd45/keymaps/default.c | 31 +++ keyboard/jd45/keymaps/justin.c | 101 ++++++++ keyboard/jd45/keymaps/keymap_default.c | 31 --- keyboard/jd45/keymaps/keymap_justin.c | 101 -------- keyboard/planck/README.md | 4 +- keyboard/planck/common_keymaps/keymap_mitch.c | 49 ---- .../old_keymap_files/common_keymaps/keymap_mitch.c | 49 ++++ quantum/template/README.md | 2 +- 64 files changed, 2132 insertions(+), 2129 deletions(-) delete mode 100644 keyboard/alps64/keymap_hasu.c delete mode 100644 keyboard/alps64/keymap_plain.c create mode 100644 keyboard/alps64/keymaps/default.c create mode 100644 keyboard/alps64/keymaps/hasu.c create mode 100644 keyboard/atomic/keymaps/abienz.c create mode 100644 keyboard/atomic/keymaps/default.c delete mode 100644 keyboard/atomic/keymaps/keymap_abienz.c delete mode 100644 keyboard/atomic/keymaps/keymap_default.c delete mode 100644 keyboard/atomic/keymaps/keymap_michelle.c create mode 100644 keyboard/atomic/keymaps/michelle.c create mode 100644 keyboard/atreus/keymaps/default.c create mode 100644 keyboard/atreus/keymaps/gerb.c delete mode 100644 keyboard/atreus/keymaps/keymap_default.c delete mode 100644 keyboard/atreus/keymaps/keymap_gerb.c delete mode 100644 keyboard/gh60/keymap_hasu.c delete mode 100644 keyboard/gh60/keymap_hhkb.c delete mode 100644 keyboard/gh60/keymap_plain.c delete mode 100644 keyboard/gh60/keymap_poker.c delete mode 100644 keyboard/gh60/keymap_poker_bit.c delete mode 100644 keyboard/gh60/keymap_poker_set.c delete mode 100644 keyboard/gh60/keymap_spacefn.c create mode 100644 keyboard/gh60/keymaps/hasu.c create mode 100644 keyboard/gh60/keymaps/hhkb.c create mode 100644 keyboard/gh60/keymaps/plain.c create mode 100644 keyboard/gh60/keymaps/poker.c create mode 100644 keyboard/gh60/keymaps/poker_bit.c create mode 100644 keyboard/gh60/keymaps/poker_set.c create mode 100644 keyboard/gh60/keymaps/spacefn.c delete mode 100644 keyboard/hhkb/keymap_hasu.c delete mode 100644 keyboard/hhkb/keymap_hhkb.c delete mode 100644 keyboard/hhkb/keymap_jp.c delete mode 100644 keyboard/hhkb/keymap_spacefn.c create mode 100644 keyboard/hhkb/keymaps/hasu.c create mode 100644 keyboard/hhkb/keymaps/hhkb.c create mode 100644 keyboard/hhkb/keymaps/jp.c create mode 100644 keyboard/hhkb/keymaps/spacefn.c create mode 100644 keyboard/hhkb_qmk/keymaps/default.c delete mode 100644 keyboard/hhkb_qmk/keymaps/keymap_default.c delete mode 100644 keyboard/hhkb_qmk/keymaps/keymap_lxol.c create mode 100644 keyboard/hhkb_qmk/keymaps/lxol.c create mode 100644 keyboard/jd45/keymaps/default.c create mode 100644 keyboard/jd45/keymaps/justin.c delete mode 100644 keyboard/jd45/keymaps/keymap_default.c delete mode 100644 keyboard/jd45/keymaps/keymap_justin.c delete mode 100644 keyboard/planck/common_keymaps/keymap_mitch.c create mode 100644 keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md index 22df53c30..f7a57d2fc 100644 --- a/BUILD_GUIDE.md +++ b/BUILD_GUIDE.md @@ -44,7 +44,10 @@ If you have any problems building the firmware, you can try using a tool called 4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process. ## Customizing, Building, and Deploying Your Firmware -1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. + +Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly. + +1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. 2. To build a keymap other than the default, type `KEYMAP=` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`. 3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP= dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the .hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html) diff --git a/keyboard/alps64/Makefile b/keyboard/alps64/Makefile index e90dcedb6..7634c4280 100644 --- a/keyboard/alps64/Makefile +++ b/keyboard/alps64/Makefile @@ -53,9 +53,9 @@ SRC = keymap_common.c \ led.c ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymap_plain.c $(SRC) + SRC := keymaps/default.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/alps64/keymap_hasu.c b/keyboard/alps64/keymap_hasu.c deleted file mode 100644 index d297d72fe..000000000 --- a/keyboard/alps64/keymap_hasu.c +++ /dev/null @@ -1,151 +0,0 @@ -#include "keymap_common.h" - -/* - * Hasu - */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | - * |-----------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|FN1 | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift | - * |-----------------------------------------------------------| - * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | - * `-----------------------------------------------------------' - */ - [0] = KEYMAP_AEK( \ - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN1, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, \ - LCTL,LGUI,LALT, FN4, RALT,FN5, FN0), - - /* HHKB mode[HHKB Fn] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` | - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Del | - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | - * |-----------------------------------------------------------| - * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | - * `-----------------------------------------------------------' - */ - [1] = KEYMAP_AEK( \ - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ - CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, DEL, \ - LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \ - LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT, \ - LCTL,LGUI,LALT, TRNS, RALT,RGUI,TRNS), - - /* Vi mode[Slash] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del | - * |-----------------------------------------------------------| - * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | - * |-----------------------------------------------------------| - * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | - * `-----------------------------------------------------------' - */ - [2] = KEYMAP_AEK( \ - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ - TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, DEL, \ - LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \ - LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,RCTL), - - /* Mouse mode(IJKL)[Semicolon] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * |-----------------------------------------------------------| - * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | - * `-----------------------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [3] = KEYMAP_AEK( \ - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ - FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \ - LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \ - LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS), - - /* Layer 4: Mouse mode(IJKL)[Space] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * |-----------------------------------------------------------| - * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | - * `-----------------------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [4] = KEYMAP_AEK( \ - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ - FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \ - LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \ - LCTL,LGUI,LALT, TRNS, TRNS,TRNS,TRNS), -}; - - -/* id for user defined function/macro */ -enum function_id { - NONE, -}; - -enum macro_id { - ALT_TAB, -}; - - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer - [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer - [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* - [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon* - [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space - [5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer(IJKL) - [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter - [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift - [8] = ACTION_MACRO(ALT_TAB), // Application switching - [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT), - [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT), -}; - - -/* - * Macro definition - */ -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case ALT_TAB: - return (record->event.pressed ? - MACRO( D(LALT), D(TAB), END ) : - MACRO( U(TAB), END )); - } - return MACRO_NONE; -} diff --git a/keyboard/alps64/keymap_plain.c b/keyboard/alps64/keymap_plain.c deleted file mode 100644 index a54899196..000000000 --- a/keyboard/alps64/keymap_plain.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "keymap_common.h" - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - KEYMAP( \ - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ - LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \ - LCTL,LGUI,LALT, SPC, APP, RALT,RGUI,RCTL), -}; -const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/alps64/keymaps/default.c b/keyboard/alps64/keymaps/default.c new file mode 100644 index 000000000..a54899196 --- /dev/null +++ b/keyboard/alps64/keymaps/default.c @@ -0,0 +1,12 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP( \ + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ + LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \ + LCTL,LGUI,LALT, SPC, APP, RALT,RGUI,RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/alps64/keymaps/hasu.c b/keyboard/alps64/keymaps/hasu.c new file mode 100644 index 000000000..d297d72fe --- /dev/null +++ b/keyboard/alps64/keymaps/hasu.c @@ -0,0 +1,151 @@ +#include "keymap_common.h" + +/* + * Hasu + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|FN1 | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift | + * |-----------------------------------------------------------| + * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | + * `-----------------------------------------------------------' + */ + [0] = KEYMAP_AEK( \ + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN1, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT, \ + LCTL,LGUI,LALT, FN4, RALT,FN5, FN0), + + /* HHKB mode[HHKB Fn] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| ` | + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Del | + * |-----------------------------------------------------------| + * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * |Shift | | | | | | +| -|End|PgD|Dow|Shift | + * |-----------------------------------------------------------| + * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | + * `-----------------------------------------------------------' + */ + [1] = KEYMAP_AEK( \ + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ + CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS,UP, NO, DEL, \ + LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \ + LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT, \ + LCTL,LGUI,LALT, TRNS, RALT,RGUI,TRNS), + + /* Vi mode[Slash] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del | + * |-----------------------------------------------------------| + * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| + * |-----------------------------------------------------------| + * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | + * |-----------------------------------------------------------| + * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | + * `-----------------------------------------------------------' + */ + [2] = KEYMAP_AEK( \ + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ + TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, DEL, \ + LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \ + LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,RCTL), + + /* Mouse mode(IJKL)[Semicolon] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * |-----------------------------------------------------------| + * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | + * `-----------------------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [3] = KEYMAP_AEK( \ + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ + FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \ + LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \ + LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS), + + /* Layer 4: Mouse mode(IJKL)[Space] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * |-----------------------------------------------------------| + * |Ctrl |Gui |Alt | Space |Alt |Fn5 |Ctrl | + * `-----------------------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [4] = KEYMAP_AEK( \ + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, GRV, \ + FN8, NO, NO, NO, NO, NO, NO, WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \ + LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT, \ + LCTL,LGUI,LALT, TRNS, TRNS,TRNS,TRNS), +}; + + +/* id for user defined function/macro */ +enum function_id { + NONE, +}; + +enum macro_id { + ALT_TAB, +}; + + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // HHKB layer + [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER), // HHKB layer + [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* + [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon* + [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space + [5] = ACTION_LAYER_MOMENTARY(3), // Mousekey layer(IJKL) + [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter + [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift + [8] = ACTION_MACRO(ALT_TAB), // Application switching + [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT), + [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT), +}; + + +/* + * Macro definition + */ +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch (id) { + case ALT_TAB: + return (record->event.pressed ? + MACRO( D(LALT), D(TAB), END ) : + MACRO( U(TAB), END )); + } + return MACRO_NONE; +} diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index e678b4efa..da6d0ac60 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -54,9 +54,9 @@ SRC = atomic.c \ backlight.c ifdef KEYMAP - SRC := keymaps/keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymaps/keymap_default.c $(SRC) + SRC := keymaps/default.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/atomic/README.md b/keyboard/atomic/README.md index c8e83cf55..0e42370ba 100644 --- a/keyboard/atomic/README.md +++ b/keyboard/atomic/README.md @@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. +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 `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/atomic/keymaps/abienz.c b/keyboard/atomic/keymaps/abienz.c new file mode 100644 index 000000000..589a64dc4 --- /dev/null +++ b/keyboard/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/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c new file mode 100644 index 000000000..f37d9d9a5 --- /dev/null +++ b/keyboard/atomic/keymaps/default.c @@ -0,0 +1,79 @@ +#include "atomic.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* 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_DEL }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 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_BSLS, 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_ENT, 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_RSFT, KC_UP, KC_PGDN }, +// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ +// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ +// │ X │ │ X │ +// └─────────────────┘ └─────────────────┘ +// ┌─ 2u ────────────┐ +// │ X │ +// └─────────────────┘ + { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, 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[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(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/keyboard/atomic/keymaps/keymap_abienz.c b/keyboard/atomic/keymaps/keymap_abienz.c deleted file mode 100644 index 589a64dc4..000000000 --- a/keyboard/atomic/keymaps/keymap_abienz.c +++ /dev/null @@ -1,36 +0,0 @@ -#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/keyboard/atomic/keymaps/keymap_default.c b/keyboard/atomic/keymaps/keymap_default.c deleted file mode 100644 index f37d9d9a5..000000000 --- a/keyboard/atomic/keymaps/keymap_default.c +++ /dev/null @@ -1,79 +0,0 @@ -#include "atomic.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = { /* 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_DEL }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 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_BSLS, 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_ENT, 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_RSFT, KC_UP, KC_PGDN }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, 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[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(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/keyboard/atomic/keymaps/keymap_michelle.c b/keyboard/atomic/keymaps/keymap_michelle.c deleted file mode 100644 index 2364c46a1..000000000 --- a/keyboard/atomic/keymaps/keymap_michelle.c +++ /dev/null @@ -1,183 +0,0 @@ -#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/keyboard/atomic/keymaps/michelle.c b/keyboard/atomic/keymaps/michelle.c new file mode 100644 index 000000000..2364c46a1 --- /dev/null +++ b/keyboard/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/keyboard/atreus/Makefile b/keyboard/atreus/Makefile index 2e542d62e..a6fddd70d 100644 --- a/keyboard/atreus/Makefile +++ b/keyboard/atreus/Makefile @@ -53,9 +53,9 @@ TARGET_DIR = . SRC = atreus.c ifdef KEYMAP - SRC := keymaps/keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymaps/keymap_default.c $(SRC) + SRC := keymaps/default.c $(SRC) endif ifdef TEENSY2 diff --git a/keyboard/atreus/README.md b/keyboard/atreus/README.md index 4db7ac120..aacf2841f 100644 --- a/keyboard/atreus/README.md +++ b/keyboard/atreus/README.md @@ -177,10 +177,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/atreus/keymaps/default.c b/keyboard/atreus/keymaps/default.c new file mode 100644 index 000000000..1c4280ff5 --- /dev/null +++ b/keyboard/atreus/keymaps/default.c @@ -0,0 +1,51 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include "atreus.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _RS 1 +#define _LW 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } +}, +[_RS] = { /* [> RAISE <] */ + {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} +}, +[_LW] = { /* [> LOWER <] */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, + {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET} +}}; + +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); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/atreus/keymaps/gerb.c b/keyboard/atreus/keymaps/gerb.c new file mode 100644 index 000000000..1ba3942e3 --- /dev/null +++ b/keyboard/atreus/keymaps/gerb.c @@ -0,0 +1,66 @@ +// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks +// with the Colemak and Dvorak support yet, but everything else works nicely. + +#include "atreus.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _L1 3 +#define _L2 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } + }, + [_CM] = { /* Colemak */ + {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN}, + {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } + }, + [_DV] = { /* Dvorak */ + {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L }, + {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S }, + {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT } + }, + [_L1] = { /* LAYER 1 */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC}, + {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC}, + {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL } + }, + [_L2] = { /* LAYER 2 */ + {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 }, + {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 }, + {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 }, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET } + } +}; + +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); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/atreus/keymaps/keymap_default.c b/keyboard/atreus/keymaps/keymap_default.c deleted file mode 100644 index 1c4280ff5..000000000 --- a/keyboard/atreus/keymaps/keymap_default.c +++ /dev/null @@ -1,51 +0,0 @@ -// this is the style you want to emulate. -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, - -#include "atreus.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _RS 1 -#define _LW 2 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ - {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P }, - {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } -}, -[_RS] = { /* [> RAISE <] */ - {KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, - {KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, - {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS}, - {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} -}, -[_LW] = { /* [> LOWER <] */ - {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, - {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, - {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET} -}}; - -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); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/keymap_gerb.c deleted file mode 100644 index 1ba3942e3..000000000 --- a/keyboard/atreus/keymaps/keymap_gerb.c +++ /dev/null @@ -1,66 +0,0 @@ -// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks -// with the Colemak and Dvorak support yet, but everything else works nicely. - -#include "atreus.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QW 0 -#define _CM 1 -#define _DV 2 -#define _L1 3 -#define _L2 4 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P }, - {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } - }, - [_CM] = { /* Colemak */ - {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN}, - {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O }, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH}, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT } - }, - [_DV] = { /* Dvorak */ - {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L }, - {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S }, - {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT } - }, - [_L1] = { /* LAYER 1 */ - {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC}, - {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC}, - {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS}, - {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL } - }, - [_L2] = { /* LAYER 2 */ - {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 }, - {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 }, - {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 }, - {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET } - } -}; - -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); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/gh60/Makefile b/keyboard/gh60/Makefile index daba0f644..4c8f9dc8a 100644 --- a/keyboard/gh60/Makefile +++ b/keyboard/gh60/Makefile @@ -53,9 +53,9 @@ SRC = keymap_common.c \ led.c ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymap_poker.c $(SRC) + SRC := keymaps/poker.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index 11bd3b784..8ed73a248 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -53,9 +53,9 @@ SRC = keymap_common.c \ led.c ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymap_poker.c $(SRC) + SRC := keymaps/poker.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/gh60/README.md b/keyboard/gh60/README.md index 510cb5c8b..41a757ea3 100644 --- a/keyboard/gh60/README.md +++ b/keyboard/gh60/README.md @@ -21,7 +21,7 @@ Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason t ## Keymap -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document(you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, and see keymap document(you can find in top README.md) and existent keymap files. To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like: @@ -29,8 +29,8 @@ To build firmware binary hex file with a certain keymap just do `make` with `KEY ### 1 Poker -[keymap_poker.c](keymap_poker.c) emulates original Poker layers -while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. +[poker.c](keymaps/poker.c) emulates original Poker layers +while both [poker_bit.c](keymaps/poker_bit.c) and [poker_set.c](keymaps/poker_set.c) implement the same layout in different ways and they fix a minor issue of original Poker and enhance arrow keys. Fn + Esc = ` Fn + {left, down, up, right} = {home, pgdown, pgup, end} @@ -63,7 +63,7 @@ while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](key ### 2. Plain Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. -See [keymap_plain.c](keymap_plain.c) for detail. +See [plain.c](keymaps/plain.c) for detail. #### 1.0 Plain Default layer ,-----------------------------------------------------------. @@ -80,11 +80,11 @@ See [keymap_plain.c](keymap_plain.c) for detail. ### 3. Hasu -This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. +This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [hasu.c](keymaps/hasu.c) for detail. ### 4. SpaceFN -This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [spacefn.c](keymaps/spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). #### 4.0 Default layer ,-----------------------------------------------------------. @@ -113,7 +113,7 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual ### 5. HHKB -[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +[hhkb.c](keymaps/hhkb.c) emulates original HHKB layers. #### 5.0: Default layer ,-----------------------------------------------------------. |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| diff --git a/keyboard/gh60/keymap_hasu.c b/keyboard/gh60/keymap_hasu.c deleted file mode 100644 index e6af28585..000000000 --- a/keyboard/gh60/keymap_hasu.c +++ /dev/null @@ -1,145 +0,0 @@ -#include "keymap_common.h" - -/* - * Hasu - */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Caps | A| S| D| F| G| H| J| K| L|Fn3| '|Return | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift | - * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Alt |Fn4 |Fn4 |Fn1 | - * `-----------------------------------------------------------' - */ - KEYMAP_ANSI( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - LCTL,A, S, D, F, G, H, J, K, L, FN2, QUOT, ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, FN9, \ - LCTL,LGUI,LALT, SPC, RALT,FN3, FN3, FN0), - /* Keymap 1: colemak */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \ - BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \ - LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), - /* Keymap 2: dvorak */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \ - TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \ - CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \ - LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), - /* Keymap 3: workman */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \ - BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \ - LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), - - /* Overlay 4: HHKB mode - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Inser| - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | - * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Alt |Gui |App | | - * `-----------------------------------------------------------' - */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,INS, \ - LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,FN4, TRNS), - /* Overlay 5: Vi mode (Slash) - * ,-----------------------------------------------------------. - * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | - * |-----------------------------------------------------------| - * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | | - * |-----------------------------------------------------------| - * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | | |Hom|PgD|PgU|End| |Shift | - * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| - * `-----------------------------------------------------------' - */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \ - TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \ - LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP, RGHT,TRNS,TRNS, ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), - /* Overlay 6: Mouse mode (Semicolon/App) - * ,-----------------------------------------------------------. - * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|MwU|MwR| | | | | - * |-----------------------------------------------------------| - * |Contro| |Ac0|Ac1|Ac1| |McL|McD|McU|McR| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | - * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space | | | | | - * `-----------------------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \ - TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \ - LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS, ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS, RSFT, \ - LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS,RCTL), - /* Overlay 7: Layout selector - * ,-----------------------------------------------------------. - * | Lq| Lc| Ld| Lw| | | | | | | | | | | - * |-----------------------------------------------------------| - * | |Lq |Lw | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | |Ld | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | |Lc | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - * Lq: set Qwerty layout - * Lc: set Colemak layout - * Ld: set Dvorak layout - * Lw: set Workman layout - */ - KEYMAP_ANSI( - FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), -}; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(4), - [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), - [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), - [3] = ACTION_LAYER_MOMENTARY(6), - [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector - [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout - [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout - [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout - [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout - [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV), -}; diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c deleted file mode 100644 index ce1b816ec..000000000 --- a/keyboard/gh60/keymap_hhkb.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "keymap_common.h" - -/* - * HHKB Layout - */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: Default layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | - * |-----------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn | - * |-----------------------------------------------------------| - * | |Gui |Alt | Space | |Alt |Gui | | - * `-----------------------------------------------------------' - */ - KEYMAP_HHKB( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - 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,FN0, \ - NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO), - /* 1: HHKB Fn layer - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | - * |-----------------------------------------------------------| - * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - */ - KEYMAP_HHKB( - PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \ - TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), -}; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), -}; diff --git a/keyboard/gh60/keymap_plain.c b/keyboard/gh60/keymap_plain.c deleted file mode 100644 index 3138c1807..000000000 --- a/keyboard/gh60/keymap_plain.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "keymap_common.h" - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \ - LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \ - LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), -}; -const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/gh60/keymap_poker.c b/keyboard/gh60/keymap_poker.c deleted file mode 100644 index 7a612ee44..000000000 --- a/keyboard/gh60/keymap_poker.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "keymap_common.h" - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 1: colemak */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \ - BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \ - LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 2: dvorak */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \ - TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \ - CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \ - LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 3: workman */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \ - BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \ - LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 4: Poker with Arrow */ - KEYMAP_ANSI( - 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, UP, \ - TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), - /* 5: Poker with Esc */ - KEYMAP_ANSI( - ESC, 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), - /* 6: Poker Fn - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | - * |-----------------------------------------------------------| - * | |FnQ| Up| | | | | | |Cal| |Hom|Ins|FnL | - * |-----------------------------------------------------------| - * | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| | - * |-----------------------------------------------------------| - * | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| | - * |-----------------------------------------------------------| - * | | | | FnS | | | | | - * `-----------------------------------------------------------' - * Fn: to Fn overlay - * FnL: to Layout selector overaly - * FnQ: toggle Esc overlay - * FnS: toggle Arrow overlay - */ - KEYMAP_ANSI( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ - TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS), - /* 7: Layout selector - * ,-----------------------------------------------------------. - * | Lq| Lc| Ld| Lw| | | | | | | | | | | - * |-----------------------------------------------------------| - * | |Lq |Lw | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | |Ld | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | |Lc | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - * Lq: set Qwerty layout - * Lc: set Colemak layout - * Ld: set Dvorak layout - * Lw: set Workman layout - */ - KEYMAP_ANSI( - FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), -}; -const uint16_t PROGMEM fn_actions[] = { - /* Poker Layout */ - [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay - [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay - [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay - [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc) - [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector - [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout - [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout - [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout - [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout -}; diff --git a/keyboard/gh60/keymap_poker_bit.c b/keyboard/gh60/keymap_poker_bit.c deleted file mode 100644 index b8870fdd8..000000000 --- a/keyboard/gh60/keymap_poker_bit.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "keymap_common.h" - -// Poker fix with toggle and bit operation -// Fn + Esc = ` -// Fn + {left, down, up, right} = {home, pgdown, pgup, end} -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - 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, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 4: Poker Default + Fn'd */ - [4] = KEYMAP_ANSI( - TRNS,F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - CAPS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ - TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS), - /* 5: Poker with Arrow */ - KEYMAP_ANSI( - 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, PGUP, \ - TRNS,TRNS,TRNS, TRNS, FN3, HOME,PGDN,END), - /* 6: Poker with Esc */ - KEYMAP_ANSI( - ESC, 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), - /* 7: Poker with Arrow + Fn'd */ - KEYMAP_ANSI( - 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, UP, \ - TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), -}; -const uint16_t PROGMEM fn_actions[] = { - /* Poker Layout */ - [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) - [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle - [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle - [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow) - [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc) -}; diff --git a/keyboard/gh60/keymap_poker_set.c b/keyboard/gh60/keymap_poker_set.c deleted file mode 100644 index aaa31fc57..000000000 --- a/keyboard/gh60/keymap_poker_set.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "keymap_common.h" - -// Poker fix with set(state transition) -// Fn + Esc = ` -// Fn + {left, down, up, right} = {home, pgdown, pgup, end} -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - KEYMAP_ANSI( - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - 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, \ - LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), - /* 1: Poker with Arrow */ - KEYMAP_ANSI( - 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, UP, \ - TRNS,TRNS,TRNS, TRNS, FN1, LEFT,DOWN,RGHT), - /* 2: Poker with Esc */ - KEYMAP_ANSI( - ESC, 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, FN2, TRNS,TRNS,TRNS), - /* 3: Poker with Arrow and Esc */ - KEYMAP_ANSI( - ESC, 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, UP, \ - TRNS,TRNS,TRNS, TRNS, FN3, LEFT,DOWN,RGHT), - /* 4: Poker Fn'd */ - KEYMAP_ANSI( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,FN6, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ - TRNS,TRNS,TRNS, FN5, FN4, TRNS,TRNS,TRNS), - /* 5: Poker Fn'd arrow */ - KEYMAP_ANSI( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,FN7, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \ - TRNS,TRNS,TRNS, FN4, FN5, HOME,PGDN,END), - /* 6: Poker Fn'd Esc */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,FN4, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ - TRNS,TRNS,TRNS, FN7, FN6, TRNS,TRNS,TRNS), - /* 7: Poker Fn'd Arrow + Esc */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,FN5, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ - TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \ - TRNS,TRNS,TRNS, FN6, FN7, HOME,PGDN,END), -}; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - /* Poker Layout */ - [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press - [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press - [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press - [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press - - //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release - [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release - [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release - [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release - [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release - - [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc) -}; diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymap_spacefn.c deleted file mode 100644 index 8077dcee7..000000000 --- a/keyboard/gh60/keymap_spacefn.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "keymap_common.h" - -/* - * SpaceFN - * http://geekhack.org/index.php?topic=51069.0 - */ -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | - * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| - * `-----------------------------------------------------------' - */ - KEYMAP_ANSI( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \ - LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL), - - /* Overlay 1: SpaceFN - * ,-----------------------------------------------------------. - * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | - * |-----------------------------------------------------------| - * | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins | - * |-----------------------------------------------------------| - * | | | | | | |PgU|Lef|Dow|Rig| | | | - * |-----------------------------------------------------------| - * | | | | | |Spc|PgD|` |~ | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - */ - KEYMAP_ANSI( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ - TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS, TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), -}; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), - [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde -}; diff --git a/keyboard/gh60/keymaps/hasu.c b/keyboard/gh60/keymaps/hasu.c new file mode 100644 index 000000000..e6af28585 --- /dev/null +++ b/keyboard/gh60/keymaps/hasu.c @@ -0,0 +1,145 @@ +#include "keymap_common.h" + +/* + * Hasu + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L|Fn3| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .|Fn2|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Fn4 |Fn4 |Fn1 | + * `-----------------------------------------------------------' + */ + KEYMAP_ANSI( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + LCTL,A, S, D, F, G, H, J, K, L, FN2, QUOT, ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, FN1, FN9, \ + LCTL,LGUI,LALT, SPC, RALT,FN3, FN3, FN0), + /* Keymap 1: colemak */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \ + BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \ + LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), + /* Keymap 2: dvorak */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \ + TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \ + CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \ + LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), + /* Keymap 3: workman */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \ + BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \ + LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, FN0), + + /* Overlay 4: HHKB mode + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Inser| + * |-----------------------------------------------------------| + * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * |Shift | | | | | | +| -|End|PgD|Dow|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |App | | + * `-----------------------------------------------------------' + */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,INS, \ + LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, ENT, \ + LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,FN4, TRNS), + /* Overlay 5: Vi mode (Slash) + * ,-----------------------------------------------------------. + * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | + * |-----------------------------------------------------------| + * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | | + * |-----------------------------------------------------------| + * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | | |Hom|PgD|PgU|End| |Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \ + TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \ + LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP, RGHT,TRNS,TRNS, ENT, \ + LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), + /* Overlay 6: Mouse mode (Semicolon/App) + * ,-----------------------------------------------------------. + * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|MwU|MwR| | | | | + * |-----------------------------------------------------------| + * |Contro| |Ac0|Ac1|Ac1| |McL|McD|McU|McR| | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space | | | | | + * `-----------------------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, \ + TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \ + LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS, ENT, \ + LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS, RSFT, \ + LCTL,LGUI,LALT, BTN1, TRNS,TRNS,TRNS,RCTL), + /* Overlay 7: Layout selector + * ,-----------------------------------------------------------. + * | Lq| Lc| Ld| Lw| | | | | | | | | | | + * |-----------------------------------------------------------| + * | |Lq |Lw | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | |Ld | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | |Lc | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + * Lq: set Qwerty layout + * Lc: set Colemak layout + * Ld: set Dvorak layout + * Lw: set Workman layout + */ + KEYMAP_ANSI( + FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ + TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ + TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(4), + [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), + [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), + [3] = ACTION_LAYER_MOMENTARY(6), + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout + [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV), +}; diff --git a/keyboard/gh60/keymaps/hhkb.c b/keyboard/gh60/keymaps/hhkb.c new file mode 100644 index 000000000..ce1b816ec --- /dev/null +++ b/keyboard/gh60/keymaps/hhkb.c @@ -0,0 +1,52 @@ +#include "keymap_common.h" + +/* + * HHKB Layout + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Default layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn | + * |-----------------------------------------------------------| + * | |Gui |Alt | Space | |Alt |Gui | | + * `-----------------------------------------------------------' + */ + KEYMAP_HHKB( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + 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,FN0, \ + NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO), + /* 1: HHKB Fn layer + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP_HHKB( + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \ + TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), +}; diff --git a/keyboard/gh60/keymaps/plain.c b/keyboard/gh60/keymaps/plain.c new file mode 100644 index 000000000..3138c1807 --- /dev/null +++ b/keyboard/gh60/keymaps/plain.c @@ -0,0 +1,11 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \ + LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \ + LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/gh60/keymaps/poker.c b/keyboard/gh60/keymaps/poker.c new file mode 100644 index 000000000..7a612ee44 --- /dev/null +++ b/keyboard/gh60/keymaps/poker.c @@ -0,0 +1,104 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 1: colemak */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN,LBRC,RBRC,BSLS, \ + BSPC,A, R, S, T, D, H, N, E, I, O, QUOT, ENT, \ + LSFT,Z, X, C, V, B, K, M, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 2: dvorak */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC,RBRC,BSPC, \ + TAB, QUOT,COMM,DOT, P, Y, F, G, C, R, L, SLSH,EQL, BSLS, \ + CAPS,A, O, E, U, I, D, H, T, N, S, MINS, ENT, \ + LSFT,SCLN,Q, J, K, X, B, M, W, V, Z, RSFT, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 3: workman */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN,LBRC,RBRC,BSLS, \ + BSPC,A, S, H, T, G, Y, N, E, O, I, QUOT, ENT, \ + LSFT,Z, X, M, C, V, K, L, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 4: Poker with Arrow */ + KEYMAP_ANSI( + 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, UP, \ + TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), + /* 5: Poker with Esc */ + KEYMAP_ANSI( + ESC, 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), + /* 6: Poker Fn + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | + * |-----------------------------------------------------------| + * | |FnQ| Up| | | | | | |Cal| |Hom|Ins|FnL | + * |-----------------------------------------------------------| + * | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| | + * |-----------------------------------------------------------| + * | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| | + * |-----------------------------------------------------------| + * | | | | FnS | | | | | + * `-----------------------------------------------------------' + * Fn: to Fn overlay + * FnL: to Layout selector overaly + * FnQ: toggle Esc overlay + * FnS: toggle Arrow overlay + */ + KEYMAP_ANSI( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + TRNS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ + TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS), + /* 7: Layout selector + * ,-----------------------------------------------------------. + * | Lq| Lc| Ld| Lw| | | | | | | | | | | + * |-----------------------------------------------------------| + * | |Lq |Lw | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | |Ld | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | |Lc | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + * Lq: set Qwerty layout + * Lc: set Colemak layout + * Ld: set Dvorak layout + * Lw: set Workman layout + */ + KEYMAP_ANSI( + FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ + TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ + TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay + [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay + [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay + [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc) + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout +}; diff --git a/keyboard/gh60/keymaps/poker_bit.c b/keyboard/gh60/keymaps/poker_bit.c new file mode 100644 index 000000000..b8870fdd8 --- /dev/null +++ b/keyboard/gh60/keymaps/poker_bit.c @@ -0,0 +1,50 @@ +#include "keymap_common.h" + +// Poker fix with toggle and bit operation +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + 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, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 4: Poker Default + Fn'd */ + [4] = KEYMAP_ANSI( + TRNS,F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + CAPS,FN2, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ + TRNS,TRNS,TRNS, FN1, TRNS,TRNS,TRNS,TRNS), + /* 5: Poker with Arrow */ + KEYMAP_ANSI( + 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, PGUP, \ + TRNS,TRNS,TRNS, TRNS, FN3, HOME,PGDN,END), + /* 6: Poker with Esc */ + KEYMAP_ANSI( + ESC, 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), + /* 7: Poker with Arrow + Fn'd */ + KEYMAP_ANSI( + 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, UP, \ + TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) + [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle + [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle + [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow) + [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc) +}; diff --git a/keyboard/gh60/keymaps/poker_set.c b/keyboard/gh60/keymaps/poker_set.c new file mode 100644 index 000000000..aaa31fc57 --- /dev/null +++ b/keyboard/gh60/keymaps/poker_set.c @@ -0,0 +1,82 @@ +#include "keymap_common.h" + +// Poker fix with set(state transition) +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP_ANSI( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + 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, \ + LCTL,LGUI,LALT, SPC, FN0, RGUI,APP, RCTL), + /* 1: Poker with Arrow */ + KEYMAP_ANSI( + 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, UP, \ + TRNS,TRNS,TRNS, TRNS, FN1, LEFT,DOWN,RGHT), + /* 2: Poker with Esc */ + KEYMAP_ANSI( + ESC, 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, FN2, TRNS,TRNS,TRNS), + /* 3: Poker with Arrow and Esc */ + KEYMAP_ANSI( + ESC, 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, UP, \ + TRNS,TRNS,TRNS, TRNS, FN3, LEFT,DOWN,RGHT), + /* 4: Poker Fn'd */ + KEYMAP_ANSI( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + TRNS,FN6, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ + TRNS,TRNS,TRNS, FN5, FN4, TRNS,TRNS,TRNS), + /* 5: Poker Fn'd arrow */ + KEYMAP_ANSI( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + TRNS,FN7, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \ + TRNS,TRNS,TRNS, FN4, FN5, HOME,PGDN,END), + /* 6: Poker Fn'd Esc */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + TRNS,FN4, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, TRNS, \ + TRNS,TRNS,TRNS, FN7, FN6, TRNS,TRNS,TRNS), + /* 7: Poker Fn'd Arrow + Esc */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ + TRNS,FN5, UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \ + TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END, TRNS, \ + TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL, PGUP, \ + TRNS,TRNS,TRNS, FN6, FN7, HOME,PGDN,END), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press + [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press + [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press + [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press + + //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release + [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release + [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release + [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release + [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release + + [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc) +}; diff --git a/keyboard/gh60/keymaps/spacefn.c b/keyboard/gh60/keymaps/spacefn.c new file mode 100644 index 000000000..8077dcee7 --- /dev/null +++ b/keyboard/gh60/keymaps/spacefn.c @@ -0,0 +1,55 @@ +#include "keymap_common.h" + +/* + * SpaceFN + * http://geekhack.org/index.php?topic=51069.0 + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + KEYMAP_ANSI( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL), + + /* Overlay 1: SpaceFN + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | | | | | | |PgU|Lef|Dow|Rig| | | | + * |-----------------------------------------------------------| + * | | | | | |Spc|PgD|` |~ | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP_ANSI( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, \ + TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP, END, PSCR,SLCK,PAUS,INS, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS, TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), + [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde +}; diff --git a/keyboard/hhkb/Makefile b/keyboard/hhkb/Makefile index 5a179bd24..d434246ce 100644 --- a/keyboard/hhkb/Makefile +++ b/keyboard/hhkb/Makefile @@ -129,17 +129,17 @@ NKRO_ENABLE = yes # USB Nkey Rollover # Keymap file # ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else ifdef HHKB_JP - SRC := keymap_jp.c $(SRC) + SRC := keymaps/jp.c $(SRC) else - SRC := keymap_hhkb.c $(SRC) + SRC := keymaps/hhkb.c $(SRC) endif endif -ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) +ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) OPT_DEFS += -DHHKB_JP endif diff --git a/keyboard/hhkb/Makefile.pjrc b/keyboard/hhkb/Makefile.pjrc index 7d0f8c3a9..403a8ec60 100644 --- a/keyboard/hhkb/Makefile.pjrc +++ b/keyboard/hhkb/Makefile.pjrc @@ -18,9 +18,9 @@ SRC = keymap_common.c \ led.c ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else - SRC := keymap_hasu.c $(SRC) + SRC := keymaps/hasu.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/hhkb/Makefile.rn42 b/keyboard/hhkb/Makefile.rn42 index cbb2b744c..a730442af 100644 --- a/keyboard/hhkb/Makefile.rn42 +++ b/keyboard/hhkb/Makefile.rn42 @@ -122,17 +122,17 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # Keymap file # ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/$(KEYMAP).c $(SRC) else ifdef HHKB_JP - SRC := keymap_jp.c $(SRC) + SRC := keymaps/jp.c $(SRC) else - SRC := keymap_hhkb.c $(SRC) + SRC := keymaps/hhkb.c $(SRC) endif endif -ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) +ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP)))) OPT_DEFS += -DHHKB_JP endif diff --git a/keyboard/hhkb/README.md b/keyboard/hhkb/README.md index fcd72e194..e20c23d82 100644 --- a/keyboard/hhkb/README.md +++ b/keyboard/hhkb/README.md @@ -76,7 +76,7 @@ Use [Teensy Loader] if your controller is Teensy/Teensy++. ##Keymap -To define your own keymap create file named `keymap_.c` and see [keymap document](../../doc/keymap.md) and existent keymap files. +To define your own keymap create a file in the keymaps folder named `.c` and see keymap document (you can find in top README.md) and existent keymap files. ##Hardware diff --git a/keyboard/hhkb/keymap_hasu.c b/keyboard/hhkb/keymap_hasu.c deleted file mode 100644 index a5602ded3..000000000 --- a/keyboard/hhkb/keymap_hasu.c +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Hasu: my personal keymap - */ -#include "keymap_common.h" - - -#ifdef KEYMAP_SECTION_ENABLE -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { -#else -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { -#endif - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn6 | - * |-----------------------------------------------------------| - * |Fn7 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1| - * `-----------------------------------------------------------' - * |Gui|Alt | Fn4 |Fn5 |Gui| - * `-------------------------------------------' - */ - [0] = \ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN6, \ - FN7, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \ - LGUI,LALT, FN4, FN5, RGUI), - - /* Layer 1: HHKB mode[HHKB Fn] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | | - * `-----------------------------------------------------------' - * |Gui|Alt | Space |Alt |Gui| - * `-------------------------------------------' - */ - [1] = \ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \ - LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ - LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \ - LGUI,LALT, TRNS, RALT,RGUI), - - /* Layer 2: Vi mode[Slash] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | - * `-----------------------------------------------------------' - * |Gui|Alt | Space |Alt |Gui| - * `-------------------------------------------' - */ - [2] = \ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \ - LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \ - LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \ - LGUI,LALT, SPC, RALT,RGUI), - - /* Layer 3: Mouse mode(IJKL)[Semicolon] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [3] = \ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \ - LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,FN3, NO, ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \ - LGUI,LALT, BTN1, TRNS,TRNS), - - /* Layer 4: Mouse mode(IJKL)[Space] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Fn |Fn | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - [4] = \ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \ - LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \ - LGUI,LALT, TRNS, TRNS,TRNS), - -#if 0 - /* Layer 3: Mouse mode(HJKL)[Semicolon] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Mb1 |Alt |Fn0| - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - TAB, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, NO, NO, BSPC, \ - LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \ - LGUI,LALT, BTN1, RALT,TRNS), - - /* Layer4: Mouse mode(HJKL)[Space] - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|MwU|MwR| |Wbk|Wfr|Alt-T| - * |-----------------------------------------------------------| - * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Fn0 |Alt |Fn0| - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - FN8, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, FN9, FN10,FN8, \ - LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,BTN1,NO, ENT, \ - LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,NO, \ - LGUI,LALT, TRNS, RALT,RGUI), -#endif -#if 0 - /* Layer x: Matias half-qwerty keyboard style[Space] - * ,-----------------------------------------------------------. - * | -| 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | |Esc| - * |-----------------------------------------------------------| - * |Backs| P| O| I| U| Y| T| R| E| W| Q| | |Tab | - * |-----------------------------------------------------------| - * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control | - * |-----------------------------------------------------------| - * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt | Fn0 |Alt |Gui| - * `--------------------------------------------' - */ - KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, NO, ESC, \ - BSPC,P, O, I, U, Y, T, R, E, W, Q, NO, NO, TAB, \ - LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \ - LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \ - LGUI,LALT, TRNS, RALT,RGUI), -#endif -}; - - - -/* id for user defined functions */ -enum function_id { - LSHIFT_LPAREN, -}; - -enum macro_id { - HELLO, - VOLUP, - ALT_TAB, -}; - - -/* - * Fn action definition - */ -#ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { -#else -const uint16_t fn_actions[] PROGMEM = { -#endif - [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) - [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps) - [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* - [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon* - [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space - [5] = ACTION_LAYER_MOMENTARY(4), // Mousekey layer(IJKL) - [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter - [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift - [8] = ACTION_MACRO(ALT_TAB), // Application switching - [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT), - [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT), - -// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace -// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc -// [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '(' -// [x] = ACTION_MACRO(HELLO), // Macro: say hello -// [x] = ACTION_MACRO(VOLUP), // Macro: media key -}; - - -/* - * Macro definition - */ -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case HELLO: - return (record->event.pressed ? - MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : - MACRO_NONE ); - case VOLUP: - return (record->event.pressed ? - MACRO( D(VOLU), U(VOLU), END ) : - MACRO_NONE ); - case ALT_TAB: - return (record->event.pressed ? - MACRO( D(LALT), D(TAB), END ) : - MACRO( U(TAB), END )); - } - return MACRO_NONE; -} - - - -/* - * user defined action function - */ -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - if (record->event.pressed) dprint("P"); else dprint("R"); - dprintf("%d", record->tap.count); - if (record->tap.interrupted) dprint("i"); - dprint("\n"); - - switch (id) { - case LSHIFT_LPAREN: - // Shift parentheses example: LShft + tap '(' - // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses - // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899 - if (record->event.pressed) { - if (record->tap.count > 0 && !record->tap.interrupted) { - if (record->tap.interrupted) { - dprint("tap interrupted\n"); - register_mods(MOD_BIT(KC_LSHIFT)); - } - } else { - register_mods(MOD_BIT(KC_LSHIFT)); - } - } else { - if (record->tap.count > 0 && !(record->tap.interrupted)) { - add_weak_mods(MOD_BIT(KC_LSHIFT)); - send_keyboard_report(); - register_code(KC_9); - unregister_code(KC_9); - del_weak_mods(MOD_BIT(KC_LSHIFT)); - send_keyboard_report(); - record->tap.count = 0; // ad hoc: cancel tap - } else { - unregister_mods(MOD_BIT(KC_LSHIFT)); - } - } - break; - } -} diff --git a/keyboard/hhkb/keymap_hhkb.c b/keyboard/hhkb/keymap_hhkb.c deleted file mode 100644 index 86ad0f5ee..000000000 --- a/keyboard/hhkb/keymap_hhkb.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * HHKB Layout - */ -#include "keymap_common.h" - - -#ifdef KEYMAP_SECTION_ENABLE -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { -#else -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { -#endif - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * `-----------------------------------------------------------' - * |Alt|Gui | Space |Gui |Alt| - * `-------------------------------------------' - */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - 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,FN0, \ - LALT,LGUI, SPC, RGUI,RALT), - - /* Layer 1: HHKB mode (HHKB Fn) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | - * `-----------------------------------------------------------' - * | | | | | | - * `-------------------------------------------' - */ - KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \ - TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \ - TRNS,TRNS, TRNS, TRNS,TRNS), -}; - - - -/* - * Fn action definition - */ -#ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_MOMENTARY(2), - [2] = ACTION_LAYER_MOMENTARY(3), - [3] = ACTION_LAYER_MOMENTARY(4), - [4] = ACTION_LAYER_MOMENTARY(5), - [5] = ACTION_LAYER_MOMENTARY(6), - [6] = ACTION_LAYER_MOMENTARY(7), - [7] = ACTION_LAYER_TOGGLE(1), - [8] = ACTION_LAYER_TOGGLE(2), - [9] = ACTION_LAYER_TOGGLE(3), - [10] = ACTION_LAYER_TAP_TOGGLE(1), - [11] = ACTION_LAYER_TAP_TOGGLE(2), - [12] = ACTION_LAYER_TAP_TOGGLE(3), - [13] = ACTION_LAYER_TAP_KEY(1, KC_A), - [14] = ACTION_LAYER_TAP_KEY(2, KC_F), - [15] = ACTION_LAYER_TAP_KEY(3, KC_J), - [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE), - [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON), - [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE), - [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH), - [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE), - [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE), - [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE), - [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER), - [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), - [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE), - [26] = ACTION_MODS_ONESHOT(MOD_LCTL), - [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC), - [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE), - [29] = ACTION_MODS_ONESHOT(MOD_LSFT), - [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC), - [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE), -}; -#else -const uint16_t fn_actions[] PROGMEM = { - [0] = ACTION_LAYER_MOMENTARY(1), -}; -#endif diff --git a/keyboard/hhkb/keymap_jp.c b/keyboard/hhkb/keymap_jp.c deleted file mode 100644 index 48d0ee70b..000000000 --- a/keyboard/hhkb/keymap_jp.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * HHKB JP Layout - */ -#include "keymap_common.h" - - -#ifdef KEYMAP_SECTION_ENABLE -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { -#else -const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { -#endif - /* Layer 0: Default Layer */ - KEYMAP_JP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, \ - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS,ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, UP, RSFT, \ - FN0, ZKHK,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT), - - /* Layer 1: HHKB mode (HHKB Fn) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | - * |------------------------------------------------------` | - * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | | - * |-----------------------------------------------------------| - * | || | | | | | | | | || | | | - * `-----------------------------------------------------------' - */ - KEYMAP_JP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \ - TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS), -}; - - - -/* - * Fn action definition - */ -#ifdef KEYMAP_SECTION_ENABLE -const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { -#else -const uint16_t fn_actions[] PROGMEM = { -#endif - [0] = ACTION_LAYER_MOMENTARY(1), -}; diff --git a/keyboard/hhkb/keymap_spacefn.c b/keyboard/hhkb/keymap_spacefn.c deleted file mode 100644 index deff920ae..000000000 --- a/keyboard/hhkb/keymap_spacefn.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * SpaceFN - * http://geekhack.org/index.php?topic=51069.0 - */ -#include "keymap_common.h" - - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * `-----------------------------------------------------------' - * |Gui|Alt | SpaceFN |Alt |Gui| - * `-------------------------------------------' - */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, BSPC, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ - 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,FN0, \ - LGUI,LALT, FN1, RALT,RGUI), - - /* Layer 1: HHKB mode (HHKB Fn) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * | | | | | | | +| -|End|PgD|Dow| | | - * `-----------------------------------------------------------' - * | | | | | | - * `-------------------------------------------' - */ - KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \ - TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \ - TRNS,TRNS, SPC, TRNS,TRNS), - - /* Layer 2: SpaceFN - * ,-----------------------------------------------------------. - * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Del| - * |-----------------------------------------------------------| - * | | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins | - * |-----------------------------------------------------------| - * | | | | | | |PgU|Lef|Dow|Rig| | | | - * |-----------------------------------------------------------| - * | | | | | |Spc|PgD|` |~ | | | | | - * `-----------------------------------------------------------' - * | | | | | | - * `-------------------------------------------' - */ - KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, \ - TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO, \ - TRNS,TRNS, TRNS, TRNS,TRNS), -}; - - -/* - * user defined action function - */ -enum function_id { - CTRL_SPACE_I, // Ctrl + Up(SpaceFN) -> PgUp -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ -# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL)) - static uint8_t ctrl_space_i_prev_ctrl; - - switch (id) { - // Ctrl + Up(SpaceFN) -> PgUp - case CTRL_SPACE_I: - ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (ctrl_space_i_prev_ctrl) { - del_mods(ctrl_space_i_prev_ctrl); // remove Ctrl - add_key(KC_PGUP); - send_keyboard_report(); // send PgUp without Ctrl - add_mods(ctrl_space_i_prev_ctrl); // return Ctrl but not sent - } else { - add_key(KC_UP); - send_keyboard_report(); - } - } else { - if (ctrl_space_i_prev_ctrl) { - del_key(KC_PGUP); - send_keyboard_report(); - } else { - del_key(KC_UP); - send_keyboard_report(); - } - } - break; - } -} - - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_MOMENTARY(1), - [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), - [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde - [3] = ACTION_FUNCTION(CTRL_SPACE_I), // Ctrl + Up(SpaceFN) -> PgUp -}; diff --git a/keyboard/hhkb/keymaps/hasu.c b/keyboard/hhkb/keymaps/hasu.c new file mode 100644 index 000000000..a5602ded3 --- /dev/null +++ b/keyboard/hhkb/keymaps/hasu.c @@ -0,0 +1,282 @@ +/* + * Hasu: my personal keymap + */ +#include "keymap_common.h" + + +#ifdef KEYMAP_SECTION_ENABLE +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { +#endif + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn6 | + * |-----------------------------------------------------------| + * |Fn7 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1| + * `-----------------------------------------------------------' + * |Gui|Alt | Fn4 |Fn5 |Gui| + * `-------------------------------------------' + */ + [0] = \ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN6, \ + FN7, Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \ + LGUI,LALT, FN4, FN5, RGUI), + + /* Layer 1: HHKB mode[HHKB Fn] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * |Shift | | | | | | +| -|End|PgD|Dow|Shift | | + * `-----------------------------------------------------------' + * |Gui|Alt | Space |Alt |Gui| + * `-------------------------------------------' + */ + [1] = \ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \ + LCTL,VOLD,VOLU,MUTE,NO, NO, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ + LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \ + LGUI,LALT, TRNS, RALT,RGUI), + + /* Layer 2: Vi mode[Slash] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs| + * |-----------------------------------------------------------| + * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | | + * `-----------------------------------------------------------' + * |Gui|Alt | Space |Alt |Gui| + * `-------------------------------------------' + */ + [2] = \ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \ + LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \ + LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \ + LGUI,LALT, SPC, RALT,RGUI), + + /* Layer 3: Mouse mode(IJKL)[Semicolon] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Fn | |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Mb1 |Fn |Fn | + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [3] = \ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \ + LCTL,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,FN3, NO, ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \ + LGUI,LALT, BTN1, TRNS,TRNS), + + /* Layer 4: Mouse mode(IJKL)[Space] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |Mb2|McL|McD|McR|Mb1| |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Mb1 |Fn |Fn | + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + [4] = \ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + FN8, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \ + LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,TRNS, \ + LGUI,LALT, TRNS, TRNS,TRNS), + +#if 0 + /* Layer 3: Mouse mode(HJKL)[Semicolon] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| + * |-----------------------------------------------------------| + * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Mb1 |Alt |Fn0| + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + TAB, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, NO, NO, BSPC, \ + LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \ + LGUI,LALT, BTN1, RALT,TRNS), + + /* Layer4: Mouse mode(HJKL)[Space] + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Tab | | | | | |MwL|MwD|MwU|MwR| |Wbk|Wfr|Alt-T| + * |-----------------------------------------------------------| + * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return | + * |-----------------------------------------------------------| + * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Fn0 |Alt |Fn0| + * `--------------------------------------------' + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + FN8, NO, NO, NO, NO, NO, NO, WH_D,WH_U,RGHT,NO, FN9, FN10,FN8, \ + LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,BTN1,NO, ENT, \ + LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,FN9, FN10,NO, RSFT,NO, \ + LGUI,LALT, TRNS, RALT,RGUI), +#endif +#if 0 + /* Layer x: Matias half-qwerty keyboard style[Space] + * ,-----------------------------------------------------------. + * | -| 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | |Esc| + * |-----------------------------------------------------------| + * |Backs| P| O| I| U| Y| T| R| E| W| Q| | |Tab | + * |-----------------------------------------------------------| + * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control | + * |-----------------------------------------------------------| + * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | | + * `-----------------------------------------------------------' + * |Gui |Alt | Fn0 |Alt |Gui| + * `--------------------------------------------' + */ + KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, NO, ESC, \ + BSPC,P, O, I, U, Y, T, R, E, W, Q, NO, NO, TAB, \ + LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \ + LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \ + LGUI,LALT, TRNS, RALT,RGUI), +#endif +}; + + + +/* id for user defined functions */ +enum function_id { + LSHIFT_LPAREN, +}; + +enum macro_id { + HELLO, + VOLUP, + ALT_TAB, +}; + + +/* + * Fn action definition + */ +#ifdef KEYMAP_SECTION_ENABLE +const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +#else +const uint16_t fn_actions[] PROGMEM = { +#endif + [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used) + [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps) + [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash* + [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon* + [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC), // Mousekey layer with Space + [5] = ACTION_LAYER_MOMENTARY(4), // Mousekey layer(IJKL) + [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter + [7] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift + [8] = ACTION_MACRO(ALT_TAB), // Application switching + [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT), + [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT), + +// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace +// [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc +// [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '(' +// [x] = ACTION_MACRO(HELLO), // Macro: say hello +// [x] = ACTION_MACRO(VOLUP), // Macro: media key +}; + + +/* + * Macro definition + */ +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch (id) { + case HELLO: + return (record->event.pressed ? + MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : + MACRO_NONE ); + case VOLUP: + return (record->event.pressed ? + MACRO( D(VOLU), U(VOLU), END ) : + MACRO_NONE ); + case ALT_TAB: + return (record->event.pressed ? + MACRO( D(LALT), D(TAB), END ) : + MACRO( U(TAB), END )); + } + return MACRO_NONE; +} + + + +/* + * user defined action function + */ +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + if (record->event.pressed) dprint("P"); else dprint("R"); + dprintf("%d", record->tap.count); + if (record->tap.interrupted) dprint("i"); + dprint("\n"); + + switch (id) { + case LSHIFT_LPAREN: + // Shift parentheses example: LShft + tap '(' + // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses + // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899 + if (record->event.pressed) { + if (record->tap.count > 0 && !record->tap.interrupted) { + if (record->tap.interrupted) { + dprint("tap interrupted\n"); + register_mods(MOD_BIT(KC_LSHIFT)); + } + } else { + register_mods(MOD_BIT(KC_LSHIFT)); + } + } else { + if (record->tap.count > 0 && !(record->tap.interrupted)) { + add_weak_mods(MOD_BIT(KC_LSHIFT)); + send_keyboard_report(); + register_code(KC_9); + unregister_code(KC_9); + del_weak_mods(MOD_BIT(KC_LSHIFT)); + send_keyboard_report(); + record->tap.count = 0; // ad hoc: cancel tap + } else { + unregister_mods(MOD_BIT(KC_LSHIFT)); + } + } + break; + } +} diff --git a/keyboard/hhkb/keymaps/hhkb.c b/keyboard/hhkb/keymaps/hhkb.c new file mode 100644 index 000000000..86ad0f5ee --- /dev/null +++ b/keyboard/hhkb/keymaps/hhkb.c @@ -0,0 +1,95 @@ +/* + * HHKB Layout + */ +#include "keymap_common.h" + + +#ifdef KEYMAP_SECTION_ENABLE +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { +#endif + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * `-----------------------------------------------------------' + * |Alt|Gui | Space |Gui |Alt| + * `-------------------------------------------' + */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + 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,FN0, \ + LALT,LGUI, SPC, RGUI,RALT), + + /* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * `-----------------------------------------------------------' + * | | | | | | + * `-------------------------------------------' + */ + KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \ + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \ + TRNS,TRNS, TRNS, TRNS,TRNS), +}; + + + +/* + * Fn action definition + */ +#ifdef KEYMAP_SECTION_ENABLE +const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { + [0] = ACTION_LAYER_MOMENTARY(1), + [1] = ACTION_LAYER_MOMENTARY(2), + [2] = ACTION_LAYER_MOMENTARY(3), + [3] = ACTION_LAYER_MOMENTARY(4), + [4] = ACTION_LAYER_MOMENTARY(5), + [5] = ACTION_LAYER_MOMENTARY(6), + [6] = ACTION_LAYER_MOMENTARY(7), + [7] = ACTION_LAYER_TOGGLE(1), + [8] = ACTION_LAYER_TOGGLE(2), + [9] = ACTION_LAYER_TOGGLE(3), + [10] = ACTION_LAYER_TAP_TOGGLE(1), + [11] = ACTION_LAYER_TAP_TOGGLE(2), + [12] = ACTION_LAYER_TAP_TOGGLE(3), + [13] = ACTION_LAYER_TAP_KEY(1, KC_A), + [14] = ACTION_LAYER_TAP_KEY(2, KC_F), + [15] = ACTION_LAYER_TAP_KEY(3, KC_J), + [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE), + [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON), + [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE), + [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH), + [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE), + [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE), + [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE), + [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER), + [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), + [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE), + [26] = ACTION_MODS_ONESHOT(MOD_LCTL), + [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC), + [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE), + [29] = ACTION_MODS_ONESHOT(MOD_LSFT), + [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC), + [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE), +}; +#else +const uint16_t fn_actions[] PROGMEM = { + [0] = ACTION_LAYER_MOMENTARY(1), +}; +#endif diff --git a/keyboard/hhkb/keymaps/jp.c b/keyboard/hhkb/keymaps/jp.c new file mode 100644 index 000000000..48d0ee70b --- /dev/null +++ b/keyboard/hhkb/keymaps/jp.c @@ -0,0 +1,50 @@ +/* + * HHKB JP Layout + */ +#include "keymap_common.h" + + +#ifdef KEYMAP_SECTION_ENABLE +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { +#endif + /* Layer 0: Default Layer */ + KEYMAP_JP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, \ + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,BSLS,ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RO, UP, RSFT, \ + FN0, ZKHK,LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT), + + /* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | + * |------------------------------------------------------` | + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | | + * |-----------------------------------------------------------| + * | || | | | | | | | | || | | | + * `-----------------------------------------------------------' + */ + KEYMAP_JP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \ + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \ + TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS), +}; + + + +/* + * Fn action definition + */ +#ifdef KEYMAP_SECTION_ENABLE +const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = { +#else +const uint16_t fn_actions[] PROGMEM = { +#endif + [0] = ACTION_LAYER_MOMENTARY(1), +}; diff --git a/keyboard/hhkb/keymaps/spacefn.c b/keyboard/hhkb/keymaps/spacefn.c new file mode 100644 index 000000000..deff920ae --- /dev/null +++ b/keyboard/hhkb/keymaps/spacefn.c @@ -0,0 +1,116 @@ +/* + * SpaceFN + * http://geekhack.org/index.php?topic=51069.0 + */ +#include "keymap_common.h" + + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| `|BSp| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * `-----------------------------------------------------------' + * |Gui|Alt | SpaceFN |Alt |Gui| + * `-------------------------------------------' + */ + KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ + 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,FN0, \ + LGUI,LALT, FN1, RALT,RGUI), + + /* Layer 1: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * `-----------------------------------------------------------' + * | | | | | | + * `-------------------------------------------' + */ + KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC, \ + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS, \ + TRNS,TRNS, SPC, TRNS,TRNS), + + /* Layer 2: SpaceFN + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |Del| + * |-----------------------------------------------------------| + * | | | |Esc| | | |Hom|Up |End|Psc|Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | | | | | | |PgU|Lef|Dow|Rig| | | | + * |-----------------------------------------------------------| + * | | | | | |Spc|PgD|` |~ | | | | | + * `-----------------------------------------------------------' + * | | | | | | + * `-------------------------------------------' + */ + KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,DEL, \ + TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS, \ + TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO, \ + TRNS,TRNS, TRNS, TRNS,TRNS), +}; + + +/* + * user defined action function + */ +enum function_id { + CTRL_SPACE_I, // Ctrl + Up(SpaceFN) -> PgUp +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +# define MODS_CTRL_MASK (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL)) + static uint8_t ctrl_space_i_prev_ctrl; + + switch (id) { + // Ctrl + Up(SpaceFN) -> PgUp + case CTRL_SPACE_I: + ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (ctrl_space_i_prev_ctrl) { + del_mods(ctrl_space_i_prev_ctrl); // remove Ctrl + add_key(KC_PGUP); + send_keyboard_report(); // send PgUp without Ctrl + add_mods(ctrl_space_i_prev_ctrl); // return Ctrl but not sent + } else { + add_key(KC_UP); + send_keyboard_report(); + } + } else { + if (ctrl_space_i_prev_ctrl) { + del_key(KC_PGUP); + send_keyboard_report(); + } else { + del_key(KC_UP); + send_keyboard_report(); + } + } + break; + } +} + + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), + [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), + [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde + [3] = ACTION_FUNCTION(CTRL_SPACE_I), // Ctrl + Up(SpaceFN) -> PgUp +}; diff --git a/keyboard/hhkb_qmk/Makefile b/keyboard/hhkb_qmk/Makefile index 8bd44100b..21ba261a2 100644 --- a/keyboard/hhkb_qmk/Makefile +++ b/keyboard/hhkb_qmk/Makefile @@ -54,9 +54,9 @@ SRC = hhkb_qmk.c \ matrix.c ifdef KEYMAP - SRC := keymaps/keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/keymaps/$(KEYMAP).c $(SRC) else - SRC := keymaps/keymap_default.c $(SRC) + SRC := keymaps/keymaps/default.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/hhkb_qmk/README.md b/keyboard/hhkb_qmk/README.md index 606025c41..389407b3a 100644 --- a/keyboard/hhkb_qmk/README.md +++ b/keyboard/hhkb_qmk/README.md @@ -171,10 +171,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. +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 `.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|] ``` -Keymaps follow the format **__keymap\_\.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboard/hhkb_qmk/keymaps/default.c b/keyboard/hhkb_qmk/keymaps/default.c new file mode 100644 index 000000000..bcd8ead37 --- /dev/null +++ b/keyboard/hhkb_qmk/keymaps/default.c @@ -0,0 +1,78 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * default HHKB Layout + */ +#include "hhkb_qmk.h" + +#define BASE 0 +#define HHKB 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* BASE Level: Default Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [BASE] = KEYMAP( // default layer + 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer HHKB: HHKB mode (HHKB Fn) + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | | | | | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + + |------+------+----------------------+------+------+ + | **** | **** | ******************** | **** | **** | + |------+------+----------------------+------+------+ + + */ + + [HHKB] = KEYMAP( + KC_PWR, 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_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; + + +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); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/hhkb_qmk/keymaps/keymap_default.c b/keyboard/hhkb_qmk/keymaps/keymap_default.c deleted file mode 100644 index bcd8ead37..000000000 --- a/keyboard/hhkb_qmk/keymaps/keymap_default.c +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- eval: (turn-on-orgtbl); -*- - * default HHKB Layout - */ -#include "hhkb_qmk.h" - -#define BASE 0 -#define HHKB 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* BASE Level: Default Layer - |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| - | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | | - |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | - |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| - - |------+------+-----------------------+------+------| - | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | - |------+------+-----------------------+------+------| - */ - - [BASE] = KEYMAP( // default layer - 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ - KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), - - - - /* Layer HHKB: HHKB mode (HHKB Fn) - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | | | | | | | + | - | End | PgD | Dow | | | | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - - |------+------+----------------------+------+------+ - | **** | **** | ******************** | **** | **** | - |------+------+----------------------+------+------+ - - */ - - [HHKB] = KEYMAP( - KC_PWR, 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_INS, KC_DEL, \ - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)}; - - -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); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/hhkb_qmk/keymaps/keymap_lxol.c b/keyboard/hhkb_qmk/keymaps/keymap_lxol.c deleted file mode 100644 index 3256fda51..000000000 --- a/keyboard/hhkb_qmk/keymaps/keymap_lxol.c +++ /dev/null @@ -1,208 +0,0 @@ -/* -*- eval: (turn-on-orgtbl); -*- - * lxol HHKB Layout - */ -#include "hhkb_qmk.h" - -#define BASE 0 -#define WIN 1 -#define HHKB 2 -#define RGUILEV 3 -#define LGUILEV 4 -#define RALTLEV 5 -#define LALTLEV 6 - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Layer 0: Default Layer - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - - |------+------+-------+------+------| - | LAlt | LGUI | Space | RGUI | RAlt | - |------+------+-------+------+------| - */ - - [BASE] = KEYMAP( // layer 0 : default - - - 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ - KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), - - - - /* Layer 1: HHKB mode (HHKB Fn) - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - | | | | | | | + | - | End | PgD | Dow | | | | | - |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| - - |---+---+---+---+---| - | | | | | | - |---+---+---+---+---| - */ - - [HHKB] = KEYMAP( - KC_PWR, 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_INS, KC_DEL, \ - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - - /* Layer LGUI: All keys with RGUI modifier - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - - |------+------+-------+------+------| - | LAlt | LGUI | Space | RGUI | RAlt | - |------+------+-------+------+------| - */ - - [RGUILEV] = KEYMAP( // Right GUI layer by KC_L - - RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \ - RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \ - RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \ - RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \ - KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT), - - /* Layer LGUI: All keys with LGUI modifier - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - - |------+------+-------+------+------| - | LAlt | LGUI | Space | LGUI | RAlt | - |------+------+-------+------+------| - */ - - [LGUILEV] = KEYMAP( // Right GUI layer by KC_L - - LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \ - LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \ - LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \ - KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \ - KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT), - - /* Layer LALT: All keys with RALT modifier - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - - |------+------+-------+------+------| - | LAlt | LGUI | Space | RGUI | RAlt | - |------+------+-------+------+------| - */ - - [RALTLEV] = KEYMAP( // Right ALT layer by KC_L - - RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \ - RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \ - RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \ - RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \ - KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT), - - /* Layer LALT: All keys with LALT modifier - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| - - |------+------+-------+------+------| - | LAlt | LGUI | Space | LGUI | RAlt | - |------+------+-------+------+------| - */ - - [LALTLEV] = KEYMAP( // Right ALT layer by KC_L - - LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \ - LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \ - LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \ - KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \ - KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT), - - - /* Layer WIN: Win layer - |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | - |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| - | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | - |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| - | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | - |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| - - |------+------+-------+------+------| - | LGui | LAlt | Space | RGui | Ralt | - |------+------+-------+------+------| - */ - - [WIN] = KEYMAP( // BASE level with swapped GUI/ALT - - - 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_BSLS, KC_GRV, \ - 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_BSPC, \ - KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ - KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)}; - - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter* -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/hhkb_qmk/keymaps/lxol.c b/keyboard/hhkb_qmk/keymaps/lxol.c new file mode 100644 index 000000000..3256fda51 --- /dev/null +++ b/keyboard/hhkb_qmk/keymaps/lxol.c @@ -0,0 +1,208 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * lxol HHKB Layout + */ +#include "hhkb_qmk.h" + +#define BASE 0 +#define WIN 1 +#define HHKB 2 +#define RGUILEV 3 +#define LGUILEV 4 +#define RALTLEV 5 +#define LALTLEV 6 + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer 0: Default Layer + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [BASE] = KEYMAP( // layer 0 : default + + + 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer 1: HHKB mode (HHKB Fn) + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + | | | | | | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----| + + |---+---+---+---+---| + | | | | | | + |---+---+---+---+---| + */ + + [HHKB] = KEYMAP( + KC_PWR, 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_INS, KC_DEL, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + + /* Layer LGUI: All keys with RGUI modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [RGUILEV] = KEYMAP( // Right GUI layer by KC_L + + RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \ + RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \ + RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \ + RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \ + KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT), + + /* Layer LGUI: All keys with LGUI modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | LGUI | RAlt | + |------+------+-------+------+------| + */ + + [LGUILEV] = KEYMAP( // Right GUI layer by KC_L + + LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \ + LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \ + LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \ + KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \ + KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT), + + /* Layer LALT: All keys with RALT modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | RGUI | RAlt | + |------+------+-------+------+------| + */ + + [RALTLEV] = KEYMAP( // Right ALT layer by KC_L + + RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \ + RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \ + RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \ + RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \ + KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT), + + /* Layer LALT: All keys with LALT modifier + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---| + + |------+------+-------+------+------| + | LAlt | LGUI | Space | LGUI | RAlt | + |------+------+-------+------+------| + */ + + [LALTLEV] = KEYMAP( // Right ALT layer by KC_L + + LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \ + LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \ + LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \ + KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \ + KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT), + + + /* Layer WIN: Win layer + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | | + |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---| + + |------+------+-------+------+------| + | LGui | LAlt | Space | RGui | Ralt | + |------+------+-------+------+------| + */ + + [WIN] = KEYMAP( // BASE level with swapped GUI/ALT + + + 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_BSLS, KC_GRV, \ + 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_BSPC, \ + KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter* +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboard/jd45/Makefile b/keyboard/jd45/Makefile index 076dced82..f6a8d10c5 100644 --- a/keyboard/jd45/Makefile +++ b/keyboard/jd45/Makefile @@ -54,9 +54,9 @@ SRC = jd45.c \ backlight.c ifdef KEYMAP - SRC := keymaps/keymap_$(KEYMAP).c $(SRC) + SRC := keymaps/keymaps/(KEYMAP).c $(SRC) else - SRC := keymaps/keymap_default.c $(SRC) + SRC := keymaps/keymaps/default.c $(SRC) endif CONFIG_H = config.h diff --git a/keyboard/jd45/keymaps/default.c b/keyboard/jd45/keymaps/default.c new file mode 100644 index 000000000..05dd46e79 --- /dev/null +++ b/keyboard/jd45/keymaps/default.c @@ -0,0 +1,31 @@ +#include "jd45.h" +#include "backlight.h" + +/* this keymap is to provide a basic keyboard layout for testing the matrix + * for more practical and complicated keymap refer to other keymaps in the same folder + */ +/* JD45 keymap definition macro + */ +#define KEYMAP( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \ + K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \ + K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \ + K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \ +) { \ + { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ + { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \ + { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \ + { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \ +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( + ESC, Q, W, E, R, T, Y, U, I, O, P, QUOT, BSPC, + TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, + PAUSE, LCTL, LALT, DEL, SPC, DEL, LEFT, UP, DOWN, RIGHT ), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; diff --git a/keyboard/jd45/keymaps/justin.c b/keyboard/jd45/keymaps/justin.c new file mode 100644 index 000000000..f261b5463 --- /dev/null +++ b/keyboard/jd45/keymaps/justin.c @@ -0,0 +1,101 @@ +#include "jd45.h" +#include "backlight.h" + +/* JD45 keymap definition macro + */ +#define KEYMAP( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \ + K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \ + K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \ + K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \ +) { \ + { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ + { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \ + { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \ + { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \ +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( + ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC, + FN8, A, R, S, T, D, H, N, E, I, O, ENT, + LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, FN6, + FN4, LGUI, FN7, FN2, FN1, SPC, FN5, RALT, FN3, FN0 ), +[1] = KEYMAP( + TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END, PGDN, DOWN, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ), +[2] = KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, + TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ), +[3] = KEYMAP( + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + 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 ), +[4] = KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, + TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ), +}; + +enum macro_id { + PSWD1, + PSWD2, + PSWD3, +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS), + [1] = ACTION_LAYER_MOMENTARY(1), // FN1 + [2] = ACTION_LAYER_MOMENTARY(2), // FN2 + [3] = ACTION_LAYER_MOMENTARY(3), // FN3 + [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV), + [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI), + [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS), + [7] = ACTION_LAYER_MODS(4, MOD_LSFT), // FN4 + [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB), + + [10] = ACTION_MACRO(PSWD1), + [11] = ACTION_MACRO(PSWD2), + [12] = ACTION_MACRO(PSWD3), + + [29] = ACTION_BACKLIGHT_TOGGLE(), + [30] = ACTION_BACKLIGHT_INCREASE(), + [31] = ACTION_BACKLIGHT_DECREASE() + +}; + +/* + * Macro definition + */ +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch (id) { + case PSWD1: + return (record->event.pressed ? + MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : + MACRO_NONE ); + case PSWD2: + return (record->event.pressed ? + MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : + MACRO_NONE ); + case PSWD3: + return (record->event.pressed ? + MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : + MACRO_NONE ); + //case VOLUP: + // return (record->event.pressed ? + // MACRO( D(VOLU), U(VOLU), END ) : + // MACRO_NONE ); + //case ALT_TAB: + // return (record->event.pressed ? + // MACRO( D(LALT), D(TAB), END ) : + // MACRO( U(TAB), END )); + } + return MACRO_NONE; +} diff --git a/keyboard/jd45/keymaps/keymap_default.c b/keyboard/jd45/keymaps/keymap_default.c deleted file mode 100644 index 05dd46e79..000000000 --- a/keyboard/jd45/keymaps/keymap_default.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "jd45.h" -#include "backlight.h" - -/* this keymap is to provide a basic keyboard layout for testing the matrix - * for more practical and complicated keymap refer to other keymaps in the same folder - */ -/* JD45 keymap definition macro - */ -#define KEYMAP( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \ - K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \ - K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \ -) { \ - { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ - { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \ - { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \ - { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \ -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( - ESC, Q, W, E, R, T, Y, U, I, O, P, QUOT, BSPC, - TAB, A, S, D, F, G, H, J, K, L, SCLN, ENT, - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, - PAUSE, LCTL, LALT, DEL, SPC, DEL, LEFT, UP, DOWN, RIGHT ), -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; diff --git a/keyboard/jd45/keymaps/keymap_justin.c b/keyboard/jd45/keymaps/keymap_justin.c deleted file mode 100644 index f261b5463..000000000 --- a/keyboard/jd45/keymaps/keymap_justin.c +++ /dev/null @@ -1,101 +0,0 @@ -#include "jd45.h" -#include "backlight.h" - -/* JD45 keymap definition macro - */ -#define KEYMAP( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \ - K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \ - K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \ - K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \ -) { \ - { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ - { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO }, \ - { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO }, \ - { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_##K43, KC_NO, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO } \ -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( - ESC, Q, W, F, P, G, J, L, U, Y, SCLN, QUOT, BSPC, - FN8, A, R, S, T, D, H, N, E, I, O, ENT, - LSFT, Z, X, C, V, B, K, M, COMM, DOT, SLSH, FN6, - FN4, LGUI, FN7, FN2, FN1, SPC, FN5, RALT, FN3, FN0 ), -[1] = KEYMAP( - TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END, PGDN, DOWN, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ), -[2] = KEYMAP( - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, - TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ), -[3] = KEYMAP( - TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, - 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 ), -[4] = KEYMAP( - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, 7, 8, 9, 0, TRNS, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC, 4, 5, 6, DOT, TRNS, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC, 1, 2, 3, BSLS, TRNS, - TRNS,FN29, TRNS, TRNS, TRNS, PAUSE, EQL, MINS, TRNS, TRNS ), -}; - -enum macro_id { - PSWD1, - PSWD2, - PSWD3, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS), - [1] = ACTION_LAYER_MOMENTARY(1), // FN1 - [2] = ACTION_LAYER_MOMENTARY(2), // FN2 - [3] = ACTION_LAYER_MOMENTARY(3), // FN3 - [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV), - [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI), - [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS), - [7] = ACTION_LAYER_MODS(4, MOD_LSFT), // FN4 - [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB), - - [10] = ACTION_MACRO(PSWD1), - [11] = ACTION_MACRO(PSWD2), - [12] = ACTION_MACRO(PSWD3), - - [29] = ACTION_BACKLIGHT_TOGGLE(), - [30] = ACTION_BACKLIGHT_INCREASE(), - [31] = ACTION_BACKLIGHT_DECREASE() - -}; - -/* - * Macro definition - */ -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case PSWD1: - return (record->event.pressed ? - MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : - MACRO_NONE ); - case PSWD2: - return (record->event.pressed ? - MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : - MACRO_NONE ); - case PSWD3: - return (record->event.pressed ? - MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : - MACRO_NONE ); - //case VOLUP: - // return (record->event.pressed ? - // MACRO( D(VOLU), U(VOLU), END ) : - // MACRO_NONE ); - //case ALT_TAB: - // return (record->event.pressed ? - // MACRO( D(LALT), D(TAB), END ) : - // MACRO( U(TAB), END )); - } - return MACRO_NONE; -} diff --git a/keyboard/planck/README.md b/keyboard/planck/README.md index 3ba0cc152..d9a1e3bee 100644 --- a/keyboard/planck/README.md +++ b/keyboard/planck/README.md @@ -16,13 +16,13 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, 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|] ``` -Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. ### Notable forks (which some of the keymap files are from) - [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) diff --git a/keyboard/planck/common_keymaps/keymap_mitch.c b/keyboard/planck/common_keymaps/keymap_mitch.c deleted file mode 100644 index f7df7bbba..000000000 --- a/keyboard/planck/common_keymaps/keymap_mitch.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "keymap_common.h" - -const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( - TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, - LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, - LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN3, - ESC, DEL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), -[1] = KEYMAP( - GRV, GRV, FN22, FN19, FN10, TRNS, TRNS, 7, 8, 9, 0, BSPC, - TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4, 5, 6, TRNS, BSLS, - TRNS, MINS, FN20, EQL, FN21, TRNS, TRNS, 1, 2, 3, TRNS, ENT, - TRNS, TRNS, TRNS, TRNS, TRNS, SPC, FN1, TRNS, PGDN, PGUP, TRNS), -[2] = KEYMAP( - FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL, - TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25, - TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT, - TRNS, TRNS, TRNS, TRNS, FN2, ENT, TRNS, TRNS, PGDN, PGUP, TRNS), -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(1), // Switch layer raise - [2] = ACTION_LAYER_MOMENTARY(2), // Switch layer lower - - [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap - - // Numeric shift modifiers - [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0), - [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1), - [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2), - [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3), - [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4), - [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5), - [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6), - [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7), - [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8), - [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9), - - // Other shift modifiers - [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _ - [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // + - [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // ~ - [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // { - [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // } - [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // | - - // Switch windows in app - [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV), -}; diff --git a/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c b/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c new file mode 100644 index 000000000..f7df7bbba --- /dev/null +++ b/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c @@ -0,0 +1,49 @@ +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( + TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC, + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, + LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN3, + ESC, DEL, LALT, LGUI, FN2, SPC, FN1, LEFT, DOWN, UP, RGHT), +[1] = KEYMAP( + GRV, GRV, FN22, FN19, FN10, TRNS, TRNS, 7, 8, 9, 0, BSPC, + TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4, 5, 6, TRNS, BSLS, + TRNS, MINS, FN20, EQL, FN21, TRNS, TRNS, 1, 2, 3, TRNS, ENT, + TRNS, TRNS, TRNS, TRNS, TRNS, SPC, FN1, TRNS, PGDN, PGUP, TRNS), +[2] = KEYMAP( + FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL, + TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25, + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT, + TRNS, TRNS, TRNS, TRNS, FN2, ENT, TRNS, TRNS, PGDN, PGUP, TRNS), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(1), // Switch layer raise + [2] = ACTION_LAYER_MOMENTARY(2), // Switch layer lower + + [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap + + // Numeric shift modifiers + [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0), + [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1), + [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2), + [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3), + [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4), + [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6), + [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7), + [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8), + [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9), + + // Other shift modifiers + [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _ + [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // + + [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // ~ + [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // { + [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // } + [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // | + + // Switch windows in app + [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV), +}; diff --git a/quantum/template/README.md b/quantum/template/README.md index dc163a2f4..39f9f59d1 100644 --- a/quantum/template/README.md +++ b/quantum/template/README.md @@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` in the keymaps folder, 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: ``` -- cgit v1.2.3-24-g4f1b From ac0729787ff0e8d1bd1202a28f5edf9125c00b0c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:43:07 -0400 Subject: preonic update --- keyboard/preonic/Makefile | 56 +++-- keyboard/preonic/Makefile.pjrc | 116 ---------- keyboard/preonic/PCB_GUIDE.md | 116 ---------- keyboard/preonic/README.md | 49 +--- keyboard/preonic/__avr_gdbinit | 6 - keyboard/preonic/analog.c | 53 ----- keyboard/preonic/analog.h | 36 --- keyboard/preonic/beeps.c | 246 --------------------- keyboard/preonic/beeps.h | 12 - keyboard/preonic/config.h | 18 +- keyboard/preonic/config_definitions.h | 50 ----- keyboard/preonic/extended_keymap_common.c | 216 ------------------ keyboard/preonic/extended_keymap_common.h | 181 --------------- .../extended_keymaps/extended_keymap_default.c | 70 ------ .../extended_keymaps/extended_keymap_lock.c | 81 ------- keyboard/preonic/keymap_midi.c | 110 --------- keyboard/preonic/keymap_midi.h | 220 ------------------ keyboard/preonic/led.c | 38 ---- keyboard/preonic/matrix.c | 234 -------------------- quantum/keymap_midi.c | 4 +- 20 files changed, 66 insertions(+), 1846 deletions(-) delete mode 100644 keyboard/preonic/Makefile.pjrc delete mode 100644 keyboard/preonic/PCB_GUIDE.md delete mode 100644 keyboard/preonic/__avr_gdbinit delete mode 100644 keyboard/preonic/analog.c delete mode 100644 keyboard/preonic/analog.h delete mode 100644 keyboard/preonic/beeps.c delete mode 100644 keyboard/preonic/beeps.h delete mode 100644 keyboard/preonic/config_definitions.h delete mode 100644 keyboard/preonic/extended_keymap_common.c delete mode 100644 keyboard/preonic/extended_keymap_common.h delete mode 100644 keyboard/preonic/extended_keymaps/extended_keymap_default.c delete mode 100644 keyboard/preonic/extended_keymaps/extended_keymap_lock.c delete mode 100644 keyboard/preonic/keymap_midi.c delete mode 100644 keyboard/preonic/keymap_midi.h delete mode 100644 keyboard/preonic/led.c delete mode 100644 keyboard/preonic/matrix.c diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 0145e44bc..664aff732 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -27,7 +27,7 @@ # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # -# make debug = Start either simulavr or avarice as specified for debugging, +# make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # # make filename.s = Just compile filename.c into the assembler code only. @@ -39,25 +39,41 @@ #---------------------------------------------------------------------------- # Target file name (without extension). -TARGET = preonic_lufa +TARGET = preonic + # Directory common source filess exist TOP_DIR = ../.. +TMK_DIR = ../../tmk_core # Directory keyboard dependent files exist TARGET_DIR = . # # project specific files -SRC = extended_keymap_common.c \ - matrix.c \ - led.c \ - backlight.c +SRC = preonic.c + +ifdef keymap + KEYMAP = $(keymap) +endif ifdef KEYMAP - SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") + KEYMAP_FILE = keymaps/$(KEYMAP).c else - SRC := extended_keymaps/extended_keymap_default.c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") + KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +else +$(error Keymap file does not exist) +endif endif +else +ifneq ("$(wildcard keymaps/default.c)","") + KEYMAP_FILE = keymaps/default.c +else + KEYMAP_FILE = keymaps/default/keymap.c +endif +endif +SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -120,24 +136,26 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = yes # MIDI controls -BACKLIGHT_ENABLE = yes - -ifdef MIDI_ENABLE - SRC += keymap_midi.c \ - beeps.c +MIDI_ENABLE = YES # MIDI controls +AUDIO_ENABLE = YES # Audio output on port C6 +# UNICODE_ENABLE = YES # Unicode +# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. + +ifdef BACKLIGHT_ENABLE + SRC += backlight.c endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) +VPATH += $(TMK_DIR) -include $(TOP_DIR)/protocol/lufa.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk +include $(TOP_DIR)/quantum/quantum.mk diff --git a/keyboard/preonic/Makefile.pjrc b/keyboard/preonic/Makefile.pjrc deleted file mode 100644 index be83ba18b..000000000 --- a/keyboard/preonic/Makefile.pjrc +++ /dev/null @@ -1,116 +0,0 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device. -# Please customize your programmer settings(PROGRAM_CMD) -# -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -# make dfu = Download the hex file to the device, using dfu-programmer (must -# have dfu-programmer installed). -# -# make flip = Download the hex file to the device, using Atmel FLIP (must -# have Atmel FLIP installed). -# -# make dfu-ee = Download the eeprom file to the device, using dfu-programmer -# (must have dfu-programmer installed). -# -# make flip-ee = Download the eeprom file to the device, using Atmel FLIP -# (must have Atmel FLIP installed). -# -# make debug = Start either simulavr or avarice as specified for debugging, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- - -# Target file name (without extension). -TARGET = gh60_pjrc - -# Directory common source filess exist -TOP_DIR = ../.. - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# project specific files -SRC = keymap_common.c \ - matrix.c \ - led.c - -ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) -else - SRC := keymap_jack.c $(SRC) -endif - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -MCU = atmega32u4 -#MCU = at90usb1286 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -F_CPU = 16000000 - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+5000) -EXTRAKEY_ENABLE = yes # Audio control and System control(+600) -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover(+500) -#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support - - -# Search Path -VPATH += $(TARGET_DIR) -VPATH += $(TOP_DIR) - -include $(TOP_DIR)/protocol/pjrc.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk - -plain: OPT_DEFS += -DKEYMAP_PLAIN -plain: all - -poker: OPT_DEFS += -DKEYMAP_POKER -poker: all - -poker_set: OPT_DEFS += -DKEYMAP_POKER_SET -poker_set: all - -poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT -poker_bit: all diff --git a/keyboard/preonic/PCB_GUIDE.md b/keyboard/preonic/PCB_GUIDE.md deleted file mode 100644 index c3004c75a..000000000 --- a/keyboard/preonic/PCB_GUIDE.md +++ /dev/null @@ -1,116 +0,0 @@ -# Planck Firmware Guide - -## Setting up the environment - -### Windows -1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler. -2. Install [DFU-Programmer][dfu-prog] (the -win one). -3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver. - -### Mac -1. Install [CrossPack](http://www.obdev.at/products/crosspack/index.html) or install Xcode from the App Store and install the Command Line Tools from `Xcode->Preferences->Downloads`. -2. Install [DFU-Programmer][dfu-prog]. - -### Linux -1. Install AVR GCC with your favorite package manager. -2. Install [DFU-Programmer][dfu-prog]. - -##Verify Your Installation -1. Clone the following repository: https://github.com/jackhumbert/tmk_keyboard -2. Open a Terminal and `cd` into `tmk_keyboard/keyboard/planck` -3. Run `make`. This should output a lot of information about the build process. - -## Using the built-in functions - -Here is a list of some of the functions available from the command line: - -* `make clean`: clean the environment - may be required in-between builds -* `make`: compile the code -* `make COMMON=true`: compile with the common (non-extended) keymap -* `make MATRIX=`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`. -* `make KEYMAP=`: compile with the extended keymap file `extended_keymaps/extended_keymap_.c` -* `make COMMON=true KEYMAP=`: compile with the common keymap file `common_keymaps/keymap_.c` -* `make dfu`: build and flash the layout to the PCB -* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash) - -Generally, the instructions to flash the PCB are as follows: - -1. Make changes to the appropriate keymap file -2. Save the file -3. `make clean` -4. Press the reset button on the PCB/press the key with the `RESET` keycode -5. `make dfu` - use the necessary `KEYMAP=` and/or `COMMON=true` arguments here. - -## Extended keymap - -### Keymap - -Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_keymap_common.h). - -You can use modifiers with keycodes like this: - - LCTL(KC_C) - -Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like: - - LCTL(LALT(KC_C)) - -That will generate Ctrl+Alt+c. The entire list of these functions is here: - -* `LCTL()`: Left control -* `LSFT()` / `S()`: Left shift -* `LALT()`: Left alt/opt -* `LGUI()`: Left win/cmd -* `RCTL()`: Right control -* `RSFT()`: Right shift -* `RALT()`: Right alt/opt -* `RGUI()`: Right win/cmd - -`S(KC_1)`-like entries are useful in writing keymaps for the Planck. - -### Other keycodes - -A number of other keycodes have been added that you may find useful: - -* `CM_`: the Colemak equivalent of a key (in place of `KC_`), when using Colemak in software (`CM_O` generates `KC_SCLN`) -* `RESET`: jump to bootloader for flashing (same as press the reset button) -* `BL_STEP`: step through the backlight brightnesses -* `BL_<0-15>`: set backlight brightness to 0-15 -* `BL_DEC`: lower the backlight brightness -* `BL_INC`: raise the backlight brightness -* `BL_TOGG`: toggle the backlight on/off - -### Function layers - -The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC()` notation. `F()` is a shortcut for this. - -The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action). - -### Macros - -Macros have been setup in the `extended_keymaps/extended_keymaps_default.c` file so that you can use `M()` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`): - - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_A), END); - break; - case 1: - return MACRODOWN(TYPE(KC_B), END); - break; - case 2: - return MACRODOWN(TYPE(KC_C), END); - break; - case 3: - return MACRODOWN(TYPE(KC_D), END); - break; - } - return MACRO_NONE; - -`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke. - -[cygwin]: https://www.cygwin.com/ -[mingw]: http://www.mingw.org/ -[mhv]: https://infernoembedded.com/products/avr-tools -[winavr]: http://winavr.sourceforge.net/ -[crosspack]: http://www.obdev.at/products/crosspack/index.html -[dfu-prog]: http://dfu-programmer.sourceforge.net/ diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index ee824d26e..3ba0cc152 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -2,54 +2,29 @@ Planck keyboard firmware ====================== DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). -## Extended Keymap -If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies: +## Quantum MK Firmware -- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able) -- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit -- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards) -- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too) +For the full Quantum feature list, see [the parent README.md](/README.md). -### Some notes on usage: +## Building -- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix -- Keep an eye on the Makefile - this needs to include the correct files to work -- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent - -## Build - -Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup) - -Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST). +Download or clone the whole firmware and navigate to the keyboard/planck 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 move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows: -``` -$ make -``` - -## Keymap -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_.c` and see keymap document (you can find in top README.md) and existent keymap files. - -####**Extended Keymaps** - -To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[common|jack|] -``` -_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\.c__** +### Default +To build with the default keymap, simply run `make`. -####**Common Keymaps** +### 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 file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. -Building with a common keymap is as simple as adding the COMMON option. Note that only +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: ``` -$ make KEYMAP=[common|jack|] COMMON=true +$ make KEYMAP=[default|jack|] ``` -_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\.c__** +Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. -## Notable TMK forks (which some of the keymap files are from) +### Notable forks (which some of the keymap files are from) - [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) - [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c) - [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck) diff --git a/keyboard/preonic/__avr_gdbinit b/keyboard/preonic/__avr_gdbinit deleted file mode 100644 index afc51e6d1..000000000 --- a/keyboard/preonic/__avr_gdbinit +++ /dev/null @@ -1,6 +0,0 @@ -define reset -SIGNAL SIGHUP -end -file planck_lufa.elf -target remote localhost:4242 -break main diff --git a/keyboard/preonic/analog.c b/keyboard/preonic/analog.c deleted file mode 100644 index 49b84ee0e..000000000 --- a/keyboard/preonic/analog.c +++ /dev/null @@ -1,53 +0,0 @@ -// Simple analog to digitial conversion - -#include -#include -#include -#include "analog.h" - - -static uint8_t aref = (1<= 12) return 0; - return adc_read(pgm_read_byte(pin_to_mux + pin)); -#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) - if (pin >= 8) return 0; - return adc_read(pin); -#else - return 0; -#endif -} - -// Mux input -int16_t adc_read(uint8_t mux) -{ -#if defined(__AVR_AT90USB162__) - return 0; -#else - uint8_t low; - - ADCSRA = (1< - -void analogReference(uint8_t mode); -int16_t analogRead(uint8_t pin); -int16_t adc_read(uint8_t mux); - -#define ADC_REF_POWER (1< -#include -#include -#include - -#define PI 3.14159265 - -void delay_us(int count) { - while(count--) { - _delay_us(1); - } -} - -int voices = 0; -double frequency = 0; -int volume = 0; -int position = 0; - -double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -bool sliding = false; -#define RANGE 1000 -volatile int i=0; //elements of the wave - - -void beeps() { - play_notes(); -} - -void send_freq(double freq, int vol) { - int duty = (((double)F_CPU) / freq); - ICR3 = duty; // Set max to the period - OCR3A = duty >> (0x10 - vol); // Set compare to half the period -} - -void stop_all_notes() { - voices = 0; - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - - for (int i = 0; i < 8; i++) { - frequencies[i] = 0; - volumes[i] = 0; - } -} - -void stop_note(double freq) { - for (int i = 7; i >= 0; i--) { - if (frequencies[i] == freq) { - frequencies[i] = 0; - volumes[i] = 0; - for (int j = i; (j < 7); j++) { - frequencies[j] = frequencies[j+1]; - frequencies[j+1] = 0; - volumes[j] = volumes[j+1]; - volumes[j+1] = 0; - } - } - } - voices--; - if (voices < 0) - voices = 0; - if (voices == 0) { - TCCR3A = 0; - TCCR3B = 0; - frequency = 0; - volume = 0; - } else { - double freq = frequencies[voices - 1]; - int vol = volumes[voices - 1]; - if (frequency < freq) { - sliding = true; - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } else if (frequency > freq) { - sliding = true; - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - sliding = false; - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - } -} - -void init_notes() { - // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10); - // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); - - // DDRC |= (1<<6); - - // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30); - - // ICR3 = 0xFFFF; - // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element - - - // cli(); - - // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz, - // this gives a timer interrupt at 15625Hz. */ - // TIMSK3 = (1 << OCIE3A); - - // /* clear/reset timer on match */ - // // TCCR3A = 1<> 8) & 0x00FF) -// #define lowByte(c) (c & 0x00FF) - -ISR(TIMER3_COMPA_vect) { - - if (ICR3 > 0 && !sliding) { - switch (position) { - case 0: { - int duty = (((double)F_CPU) / (frequency)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 1: { - int duty = (((double)F_CPU) / (frequency*2)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - case 2: { - int duty = (((double)F_CPU) / (frequency*3)); - ICR3 = duty; // Set max to the period - OCR3A = duty >> 1; // Set compare to half the period - break; - } - } - position = (position + 1) % 3; - } -// /* OCR2A has been cleared, per TCCR2A above */ -// // OCR3A = 127; - -// // pos1 += incr1; -// // pos2 += incr2; -// // pos3 += incr3; - -// // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)]; - -// // OCR3A = sample; - - -// OCR3A=pgm_read_byte(&sinewave[pos1]); -// pos1++; -// // PORTC &= ~(1<<6); - -// /* buffered, 1x gain, active mode */ -// // SPDR = highByte(sample) | 0x70; -// // while (!(SPSR & (1< 0) { - DDRC |= (1<<6); - - TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); - TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); - - if (frequency != 0) { - if (frequency < freq) { - for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) { - send_freq(f, vol); - } - } else if (frequency > freq) { - for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) { - send_freq(f, vol); - } - } - } - send_freq(freq, vol); - frequency = freq; - volume = vol; - - frequencies[voices] = frequency; - volumes[voices] = volume; - voices++; - } - // ICR3 = 0xFFFF; - // for (int i = 0; i < 10000; i++) { - // OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF; - // // _delay_us(50); - // } - - // TCCR3A = 0; - // TCCR3B = 0; -} - -// void note(int x, float length) { -// DDRC |= (1<<6); -// int t = (int)(440*pow(2,-x/12.0)); // starting note -// for (int y = 0; y < length*1000/t; y++) { // note length -// PORTC |= (1<<6); -// delay_us(t); -// PORTC &= ~(1<<6); -// delay_us(t); -// } -// PORTC &= ~(1<<6); -// } - -// void true_note(float x, float y, float length) { -// for (uint32_t i = 0; i < length * 50; i++) { -// uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); -// for (int u = 0; u < 8; u++) { -// if (v & (1 << u) && !(PORTC&(1<<6))) -// PORTC |= (1<<6); -// else if (PORTC&(1<<6)) -// PORTC &= ~(1<<6); -// } -// } -// PORTC &= ~(1<<6); -// } \ No newline at end of file diff --git a/keyboard/preonic/beeps.h b/keyboard/preonic/beeps.h deleted file mode 100644 index 378983c60..000000000 --- a/keyboard/preonic/beeps.h +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include -#include -#include - -void note(int x, float length); -void beeps(); -void true_note(float x, float y, float length); -void play_note(double freq, int vol); -void stop_note(double freq); -void stop_all_notes(); -void init_notes(); \ No newline at end of file diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index cad269c9d..5528667fa 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -18,11 +18,11 @@ along with this program. If not, see . #ifndef CONFIG_H #define CONFIG_H -#include "config_definitions.h" +#include "config_common.h" /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6062 +#define PRODUCT_ID 0x6061 #define DEVICE_VER 0x0001 #define MANUFACTURER Ortholinear Keyboards #define PRODUCT The Preonic Keyboard @@ -34,7 +34,10 @@ along with this program. If not, see . /* Planck PCB default pin-out */ #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } -#define ROWS (int []){ D1, D0, D5, B5, B6 } +#define ROWS (int []){ D2, D5, B5, B6, D3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST @@ -55,6 +58,15 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* ws2812 RGB LED */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin PD1 +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboard/preonic/config_definitions.h b/keyboard/preonic/config_definitions.h deleted file mode 100644 index fd138b884..000000000 --- a/keyboard/preonic/config_definitions.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef CONFIG_DEFINITIONS_H -#define CONFIG_DEFINITIONS_H - -#define B0 0x20 -#define B1 0x21 -#define B2 0x22 -#define B3 0x23 -#define B4 0x24 -#define B5 0x25 -#define B6 0x26 -#define B7 0x27 -#define C0 0x30 -#define C1 0x31 -#define C2 0x32 -#define C3 0x33 -#define C4 0x34 -#define C5 0x35 -#define C6 0x36 -#define C7 0x37 -#define D0 0x40 -#define D1 0x41 -#define D2 0x42 -#define D3 0x43 -#define D4 0x44 -#define D5 0x45 -#define D6 0x46 -#define D7 0x47 -#define E0 0x50 -#define E1 0x51 -#define E2 0x52 -#define E3 0x53 -#define E4 0x54 -#define E5 0x55 -#define E6 0x56 -#define E7 0x57 -#define F0 0x60 -#define F1 0x61 -#define F2 0x62 -#define F3 0x63 -#define F4 0x64 -#define F5 0x65 -#define F6 0x66 -#define F7 0x67 - - - - - -#endif - diff --git a/keyboard/preonic/extended_keymap_common.c b/keyboard/preonic/extended_keymap_common.c deleted file mode 100644 index 4fa80de7c..000000000 --- a/keyboard/preonic/extended_keymap_common.c +++ /dev/null @@ -1,216 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ - -#include "extended_keymap_common.h" -#include "report.h" -#include "keycode.h" -#include "action_layer.h" -#include "action.h" -#include "action_macro.h" -#include "debug.h" -#include "backlight.h" -#include "keymap_midi.h" -#include - -static action_t keycode_to_action(uint16_t keycode); - -/* converts key to action */ -action_t action_for_key(uint8_t layer, keypos_t key) -{ - // 16bit keycodes - important - uint16_t keycode = keymap_key_to_keycode(layer, key); - - if (keycode >= 0x0100 && keycode < 0x2000) { - // Has a modifier - action_t action; - // Split it up - action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); - return action; - } else if (keycode >= 0x2000 && keycode < 0x3000) { - // Is a shortcut for function layer, pull last 12bits - return keymap_func_to_action(keycode & 0xFFF); - } else if (keycode >= 0x3000 && keycode < 0x4000) { - action_t action; - action.code = ACTION_MACRO(keycode & 0xFF); - return action; - } else if (keycode >= BL_0 & keycode <= BL_15) { - action_t action; - action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); - return action; - } else if (keycode == BL_DEC) { - action_t action; - action.code = ACTION_BACKLIGHT_DECREASE(); - return action; - } else if (keycode == BL_INC) { - action_t action; - action.code = ACTION_BACKLIGHT_INCREASE(); - return action; - } else if (keycode == BL_TOGG) { - action_t action; - action.code = ACTION_BACKLIGHT_TOGGLE(); - return action; - } else if (keycode == BL_STEP) { - action_t action; - action.code = ACTION_BACKLIGHT_STEP(); - return action; - } else if (keycode == RESET) { - bootloader_jump(); - return; - } else if (keycode == DEBUG) { - print("\nDEBUG: enabled.\n"); - debug_enable = true; - return; - } else if (keycode >= 0x6000 && keycode < 0x7000) { - action_t action; - action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); - return action; - } - - switch (keycode) { - case KC_FN0 ... KC_FN31: - return keymap_fn_to_action(keycode); -#ifdef BOOTMAGIC_ENABLE - case KC_CAPSLOCK: - case KC_LOCKING_CAPS: - if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { - return keycode_to_action(KC_LCTL); - } - return keycode_to_action(keycode); - case KC_LCTL: - if (keymap_config.swap_control_capslock) { - return keycode_to_action(KC_CAPSLOCK); - } - return keycode_to_action(KC_LCTL); - case KC_LALT: - if (keymap_config.swap_lalt_lgui) { - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_LGUI); - } - return keycode_to_action(KC_LALT); - case KC_LGUI: - if (keymap_config.swap_lalt_lgui) { - return keycode_to_action(KC_LALT); - } - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_LGUI); - case KC_RALT: - if (keymap_config.swap_ralt_rgui) { - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_RGUI); - } - return keycode_to_action(KC_RALT); - case KC_RGUI: - if (keymap_config.swap_ralt_rgui) { - return keycode_to_action(KC_RALT); - } - if (keymap_config.no_gui) { - return keycode_to_action(ACTION_NO); - } - return keycode_to_action(KC_RGUI); - case KC_GRAVE: - if (keymap_config.swap_grave_esc) { - return keycode_to_action(KC_ESC); - } - return keycode_to_action(KC_GRAVE); - case KC_ESC: - if (keymap_config.swap_grave_esc) { - return keycode_to_action(KC_GRAVE); - } - return keycode_to_action(KC_ESC); - case KC_BSLASH: - if (keymap_config.swap_backslash_backspace) { - return keycode_to_action(KC_BSPACE); - } - return keycode_to_action(KC_BSLASH); - case KC_BSPACE: - if (keymap_config.swap_backslash_backspace) { - return keycode_to_action(KC_BSLASH); - } - return keycode_to_action(KC_BSPACE); -#endif - default: - return keycode_to_action(keycode); - } -} - - -/* Macro */ -__attribute__ ((weak)) -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - return MACRO_NONE; -} - -/* Function */ -__attribute__ ((weak)) -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ -} - -/* translates keycode to action */ -static action_t keycode_to_action(uint16_t keycode) -{ - action_t action; - switch (keycode) { - case KC_A ... KC_EXSEL: - case KC_LCTRL ... KC_RGUI: - action.code = ACTION_KEY(keycode); - break; - case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: - action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); - break; - case KC_AUDIO_MUTE ... KC_WWW_FAVORITES: - action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode)); - break; - case KC_MS_UP ... KC_MS_ACCEL2: - action.code = ACTION_MOUSEKEY(keycode); - break; - case KC_TRNS: - action.code = ACTION_TRANSPARENT; - break; - default: - action.code = ACTION_NO; - break; - } - return action; -} - - -/* translates key to keycode */ -uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - // Read entire word (16bits) - return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]); -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint16_t keycode) -{ - return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; -} - -action_t keymap_func_to_action(uint16_t keycode) -{ - // For FUNC without 8bit limit - return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) }; -} diff --git a/keyboard/preonic/extended_keymap_common.h b/keyboard/preonic/extended_keymap_common.h deleted file mode 100644 index 7ccfa1b03..000000000 --- a/keyboard/preonic/extended_keymap_common.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -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 . -*/ - -#ifndef KEYMAP_H -#define KEYMAP_H - -#include -#include -#include "action.h" -#include -#include "keycode.h" -#include "keymap.h" -#include "action_macro.h" -#include "report.h" -#include "host.h" -// #include "print.h" -#include "debug.h" - -#ifdef BOOTMAGIC_ENABLE -/* NOTE: Not portable. Bit field order depends on implementation */ -typedef union { - uint16_t raw; - struct { - bool swap_control_capslock:1; - bool capslock_to_control:1; - bool swap_lalt_lgui:1; - bool swap_ralt_rgui:1; - bool no_gui:1; - bool swap_grave_esc:1; - bool swap_backslash_backspace:1; - bool nkro:1; - }; -} keymap_config_t; -keymap_config_t keymap_config; -#endif - - -/* translates key to keycode */ -uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key); - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint16_t keycode); - -/* translates Fn keycode to action */ -action_t keymap_func_to_action(uint16_t keycode); - -extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -extern const uint16_t fn_actions[]; - -// Ability to use mods in layouts -#define LCTL(kc) kc | 0x0100 -#define LSFT(kc) kc | 0x0200 -#define LALT(kc) kc | 0x0400 -#define LGUI(kc) kc | 0x0800 -#define RCTL(kc) kc | 0x1100 -#define RSFT(kc) kc | 0x1200 -#define RALT(kc) kc | 0x1400 -#define RGUI(kc) kc | 0x1800 - -// Alias for function layers than expand past FN31 -#define FUNC(kc) kc | 0x2000 - -// Aliases -#define S(kc) LSFT(kc) -#define F(kc) FUNC(kc) - -// For software implementation of colemak -#define CM_Q KC_Q -#define CM_W KC_W -#define CM_F KC_E -#define CM_P KC_R -#define CM_G KC_T -#define CM_J KC_Y -#define CM_L KC_U -#define CM_U KC_I -#define CM_Y KC_O -#define CM_SCLN KC_P - -#define CM_A KC_A -#define CM_R KC_S -#define CM_S KC_D -#define CM_T KC_F -#define CM_D KC_G -#define CM_H KC_H -#define CM_N KC_J -#define CM_E KC_K -#define CM_I KC_L -#define CM_O KC_SCLN - -#define CM_Z KC_Z -#define CM_X KC_X -#define CM_C KC_C -#define CM_V KC_V -#define CM_B KC_B -#define CM_K KC_N -#define CM_M KC_M -#define CM_COMM KC_COMM -#define CM_DOT KC_DOT -#define CM_SLSH KC_SLSH - -// Make it easy to support these in macros -#define KC_CM_Q CM_Q -#define KC_CM_W CM_W -#define KC_CM_F CM_F -#define KC_CM_P CM_P -#define KC_CM_G CM_G -#define KC_CM_J CM_J -#define KC_CM_L CM_L -#define KC_CM_U CM_U -#define KC_CM_Y CM_Y -#define KC_CM_SCLN CM_SCLN - -#define KC_CM_A CM_A -#define KC_CM_R CM_R -#define KC_CM_S CM_S -#define KC_CM_T CM_T -#define KC_CM_D CM_D -#define KC_CM_H CM_H -#define KC_CM_N CM_N -#define KC_CM_E CM_E -#define KC_CM_I CM_I -#define KC_CM_O CM_O - -#define KC_CM_Z CM_Z -#define KC_CM_X CM_X -#define KC_CM_C CM_C -#define KC_CM_V CM_V -#define KC_CM_B CM_B -#define KC_CM_K CM_K -#define KC_CM_M CM_M -#define KC_CM_COMM CM_COMM -#define KC_CM_DOT CM_DOT -#define KC_CM_SLSH CM_SLSH - -#define M(kc) kc | 0x3000 - -#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) - -#define BL_ON 0x4009 -#define BL_OFF 0x4000 -#define BL_0 0x4000 -#define BL_1 0x4001 -#define BL_2 0x4002 -#define BL_3 0x4003 -#define BL_4 0x4004 -#define BL_5 0x4005 -#define BL_6 0x4006 -#define BL_7 0x4007 -#define BL_8 0x4008 -#define BL_9 0x4009 -#define BL_10 0x400A -#define BL_11 0x400B -#define BL_12 0x400C -#define BL_13 0x400D -#define BL_14 0x400E -#define BL_15 0x400F -#define BL_DEC 0x4010 -#define BL_INC 0x4011 -#define BL_TOGG 0x4012 -#define BL_STEP 0x4013 - -#define RESET 0x5000 -#define DEBUG 0x5001 - -#define MIDI(n) n | 0x6000 - -#endif diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_default.c b/keyboard/preonic/extended_keymaps/extended_keymap_default.c deleted file mode 100644 index b52f60fd0..000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_default.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "extended_keymap_common.h" -#include "backlight.h" -#include "lufa.h" -#include "debug.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, 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, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[4] = { /* TENKEY */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -} -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(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: - if (record->event.pressed) { - register_code(KC_RSFT); - midi_send_noteon(&midi_device, 1, 64, 127); - backlight_step(); - } else { - unregister_code(KC_RSFT); - midi_send_noteoff(&midi_device, 1, 64, 127); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c b/keyboard/preonic/extended_keymaps/extended_keymap_lock.c deleted file mode 100644 index ec7bc776a..000000000 --- a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c +++ /dev/null @@ -1,81 +0,0 @@ -#include "extended_keymap_common.h" -#include "backlight.h" -#include "action_layer.h" -#include "keymap_midi.h" -#include "beeps.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = { /* Qwerty */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - // Space is repeated to accommadate for both spacebar wiring positions -}, -[1] = { /* Colemak */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT}, - {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[2] = { /* RAISE */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F11, KC_F12, 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, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[3] = { /* LOWER */ - {KC_GRV, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, - {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[4] = { /* TENKEY */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_7, KC_KP_8, KC_KP_9, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_4, KC_KP_5, KC_KP_6, KC_SCLN, KC_QUOT}, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_1, KC_KP_2, KC_KP_3, KC_SLSH, KC_ENT}, - {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_SPC, KC_KP_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, -[5] = { - { MIDI12 }, - { MIDI12 }, - { MIDI12 }, - { MIDI12 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), MIDI, MIDI, MIDI, MIDI} -} - -}; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: - if (record->event.pressed) { - // register_code(KC_RSFT); - backlight_set(BACKLIGHT_LEVELS); - default_layer_and(0); - default_layer_or((1<<5)); - } else { - // unregister_code(KC_RSFT); - backlight_set(0); - default_layer_and(0); - default_layer_or(0); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboard/preonic/keymap_midi.c b/keyboard/preonic/keymap_midi.c deleted file mode 100644 index a0fa59990..000000000 --- a/keyboard/preonic/keymap_midi.c +++ /dev/null @@ -1,110 +0,0 @@ -/* -Copyright 2015 Jack Humbert - -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 . -*/ - -#include "extended_keymap_common.h" -#include "keymap_midi.h" -#include - -uint8_t starting_note = 0x0C; -int offset = 7; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - if (id != 0) { - if (record->event.pressed) { - midi_send_noteon(&midi_device, opt, (id & 0xFF), 127); - } else { - midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127); - } - } - - if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - starting_note++; - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - return; - } else { - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); - stop_all_notes(); - return; - } - } - if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - starting_note--; - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - return; - } else { - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1))); - stop_all_notes(); - return; - } - } - - if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - offset++; - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - stop_all_notes(); - for (int i = 0; i <= 7; i++) { - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - _delay_us(80000); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); - _delay_us(8000); - } - return; - } - if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - offset--; - midi_send_cc(&midi_device, 0, 0x7B, 0); - midi_send_cc(&midi_device, 1, 0x7B, 0); - midi_send_cc(&midi_device, 2, 0x7B, 0); - midi_send_cc(&midi_device, 3, 0x7B, 0); - midi_send_cc(&midi_device, 4, 0x7B, 0); - stop_all_notes(); - for (int i = 0; i <= 7; i++) { - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC); - _delay_us(80000); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1))); - _delay_us(8000); - } - return; - } - - if (record->event.pressed) { - // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); - play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); - } else { - // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); - stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); - } -} \ No newline at end of file diff --git a/keyboard/preonic/keymap_midi.h b/keyboard/preonic/keymap_midi.h deleted file mode 100644 index c5917f884..000000000 --- a/keyboard/preonic/keymap_midi.h +++ /dev/null @@ -1,220 +0,0 @@ -/* -Copyright 2015 Jack Humbert - -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 . -*/ - -#ifndef KEYMAP_MIDI_H -#define KEYMAP_MIDI_H - -#define MIDI 0x6000 -#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 - -#define CHNL(note, channel) (note + (channel << 8)) - -#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } - -#define N_CN1 (0x600C + (12 * -1) + 0 ) -#define N_CN1S (0x600C + (12 * -1) + 1 ) -#define N_DN1F (0x600C + (12 * -1) + 1 ) -#define N_DN1 (0x600C + (12 * -1) + 2 ) -#define N_DN1S (0x600C + (12 * -1) + 3 ) -#define N_EN1F (0x600C + (12 * -1) + 3 ) -#define N_EN1 (0x600C + (12 * -1) + 4 ) -#define N_FN1 (0x600C + (12 * -1) + 5 ) -#define N_FN1S (0x600C + (12 * -1) + 6 ) -#define N_GN1F (0x600C + (12 * -1) + 6 ) -#define N_GN1 (0x600C + (12 * -1) + 7 ) -#define N_GN1S (0x600C + (12 * -1) + 8 ) -#define N_AN1F (0x600C + (12 * -1) + 8 ) -#define N_AN1 (0x600C + (12 * -1) + 9 ) -#define N_AN1S (0x600C + (12 * -1) + 10) -#define N_BN1F (0x600C + (12 * -1) + 10) -#define N_BN1 (0x600C + (12 * -1) + 11) -#define N_C0 (0x600C + (12 * 0) + 0 ) -#define N_C0S (0x600C + (12 * 0) + 1 ) -#define N_D0F (0x600C + (12 * 0) + 1 ) -#define N_D0 (0x600C + (12 * 0) + 2 ) -#define N_D0S (0x600C + (12 * 0) + 3 ) -#define N_E0F (0x600C + (12 * 0) + 3 ) -#define N_E0 (0x600C + (12 * 0) + 4 ) -#define N_F0 (0x600C + (12 * 0) + 5 ) -#define N_F0S (0x600C + (12 * 0) + 6 ) -#define N_G0F (0x600C + (12 * 0) + 6 ) -#define N_G0 (0x600C + (12 * 0) + 7 ) -#define N_G0S (0x600C + (12 * 0) + 8 ) -#define N_A0F (0x600C + (12 * 0) + 8 ) -#define N_A0 (0x600C + (12 * 0) + 9 ) -#define N_A0S (0x600C + (12 * 0) + 10) -#define N_B0F (0x600C + (12 * 0) + 10) -#define N_B0 (0x600C + (12 * 0) + 11) -#define N_C1 (0x600C + (12 * 1) + 0 ) -#define N_C1S (0x600C + (12 * 1) + 1 ) -#define N_D1F (0x600C + (12 * 1) + 1 ) -#define N_D1 (0x600C + (12 * 1) + 2 ) -#define N_D1S (0x600C + (12 * 1) + 3 ) -#define N_E1F (0x600C + (12 * 1) + 3 ) -#define N_E1 (0x600C + (12 * 1) + 4 ) -#define N_F1 (0x600C + (12 * 1) + 5 ) -#define N_F1S (0x600C + (12 * 1) + 6 ) -#define N_G1F (0x600C + (12 * 1) + 6 ) -#define N_G1 (0x600C + (12 * 1) + 7 ) -#define N_G1S (0x600C + (12 * 1) + 8 ) -#define N_A1F (0x600C + (12 * 1) + 8 ) -#define N_A1 (0x600C + (12 * 1) + 9 ) -#define N_A1S (0x600C + (12 * 1) + 10) -#define N_B1F (0x600C + (12 * 1) + 10) -#define N_B1 (0x600C + (12 * 1) + 11) -#define N_C2 (0x600C + (12 * 2) + 0 ) -#define N_C2S (0x600C + (12 * 2) + 1 ) -#define N_D2F (0x600C + (12 * 2) + 1 ) -#define N_D2 (0x600C + (12 * 2) + 2 ) -#define N_D2S (0x600C + (12 * 2) + 3 ) -#define N_E2F (0x600C + (12 * 2) + 3 ) -#define N_E2 (0x600C + (12 * 2) + 4 ) -#define N_F2 (0x600C + (12 * 2) + 5 ) -#define N_F2S (0x600C + (12 * 2) + 6 ) -#define N_G2F (0x600C + (12 * 2) + 6 ) -#define N_G2 (0x600C + (12 * 2) + 7 ) -#define N_G2S (0x600C + (12 * 2) + 8 ) -#define N_A2F (0x600C + (12 * 2) + 8 ) -#define N_A2 (0x600C + (12 * 2) + 9 ) -#define N_A2S (0x600C + (12 * 2) + 10) -#define N_B2F (0x600C + (12 * 2) + 10) -#define N_B2 (0x600C + (12 * 2) + 11) -#define N_C3 (0x600C + (12 * 3) + 0 ) -#define N_C3S (0x600C + (12 * 3) + 1 ) -#define N_D3F (0x600C + (12 * 3) + 1 ) -#define N_D3 (0x600C + (12 * 3) + 2 ) -#define N_D3S (0x600C + (12 * 3) + 3 ) -#define N_E3F (0x600C + (12 * 3) + 3 ) -#define N_E3 (0x600C + (12 * 3) + 4 ) -#define N_F3 (0x600C + (12 * 3) + 5 ) -#define N_F3S (0x600C + (12 * 3) + 6 ) -#define N_G3F (0x600C + (12 * 3) + 6 ) -#define N_G3 (0x600C + (12 * 3) + 7 ) -#define N_G3S (0x600C + (12 * 3) + 8 ) -#define N_A3F (0x600C + (12 * 3) + 8 ) -#define N_A3 (0x600C + (12 * 3) + 9 ) -#define N_A3S (0x600C + (12 * 3) + 10) -#define N_B3F (0x600C + (12 * 3) + 10) -#define N_B3 (0x600C + (12 * 3) + 11) -#define N_C4 (0x600C + (12 * 4) + 0 ) -#define N_C4S (0x600C + (12 * 4) + 1 ) -#define N_D4F (0x600C + (12 * 4) + 1 ) -#define N_D4 (0x600C + (12 * 4) + 2 ) -#define N_D4S (0x600C + (12 * 4) + 3 ) -#define N_E4F (0x600C + (12 * 4) + 3 ) -#define N_E4 (0x600C + (12 * 4) + 4 ) -#define N_F4 (0x600C + (12 * 4) + 5 ) -#define N_F4S (0x600C + (12 * 4) + 6 ) -#define N_G4F (0x600C + (12 * 4) + 6 ) -#define N_G4 (0x600C + (12 * 4) + 7 ) -#define N_G4S (0x600C + (12 * 4) + 8 ) -#define N_A4F (0x600C + (12 * 4) + 8 ) -#define N_A4 (0x600C + (12 * 4) + 9 ) -#define N_A4S (0x600C + (12 * 4) + 10) -#define N_B4F (0x600C + (12 * 4) + 10) -#define N_B4 (0x600C + (12 * 4) + 11) -#define N_C5 (0x600C + (12 * 5) + 0 ) -#define N_C5S (0x600C + (12 * 5) + 1 ) -#define N_D5F (0x600C + (12 * 5) + 1 ) -#define N_D5 (0x600C + (12 * 5) + 2 ) -#define N_D5S (0x600C + (12 * 5) + 3 ) -#define N_E5F (0x600C + (12 * 5) + 3 ) -#define N_E5 (0x600C + (12 * 5) + 4 ) -#define N_F5 (0x600C + (12 * 5) + 5 ) -#define N_F5S (0x600C + (12 * 5) + 6 ) -#define N_G5F (0x600C + (12 * 5) + 6 ) -#define N_G5 (0x600C + (12 * 5) + 7 ) -#define N_G5S (0x600C + (12 * 5) + 8 ) -#define N_A5F (0x600C + (12 * 5) + 8 ) -#define N_A5 (0x600C + (12 * 5) + 9 ) -#define N_A5S (0x600C + (12 * 5) + 10) -#define N_B5F (0x600C + (12 * 5) + 10) -#define N_B5 (0x600C + (12 * 5) + 11) -#define N_C6 (0x600C + (12 * 6) + 0 ) -#define N_C6S (0x600C + (12 * 6) + 1 ) -#define N_D6F (0x600C + (12 * 6) + 1 ) -#define N_D6 (0x600C + (12 * 6) + 2 ) -#define N_D6S (0x600C + (12 * 6) + 3 ) -#define N_E6F (0x600C + (12 * 6) + 3 ) -#define N_E6 (0x600C + (12 * 6) + 4 ) -#define N_F6 (0x600C + (12 * 6) + 5 ) -#define N_F6S (0x600C + (12 * 6) + 6 ) -#define N_G6F (0x600C + (12 * 6) + 6 ) -#define N_G6 (0x600C + (12 * 6) + 7 ) -#define N_G6S (0x600C + (12 * 6) + 8 ) -#define N_A6F (0x600C + (12 * 6) + 8 ) -#define N_A6 (0x600C + (12 * 6) + 9 ) -#define N_A6S (0x600C + (12 * 6) + 10) -#define N_B6F (0x600C + (12 * 6) + 10) -#define N_B6 (0x600C + (12 * 6) + 11) -#define N_C7 (0x600C + (12 * 7) + 0 ) -#define N_C7S (0x600C + (12 * 7) + 1 ) -#define N_D7F (0x600C + (12 * 7) + 1 ) -#define N_D7 (0x600C + (12 * 7) + 2 ) -#define N_D7S (0x600C + (12 * 7) + 3 ) -#define N_E7F (0x600C + (12 * 7) + 3 ) -#define N_E7 (0x600C + (12 * 7) + 4 ) -#define N_F7 (0x600C + (12 * 7) + 5 ) -#define N_F7S (0x600C + (12 * 7) + 6 ) -#define N_G7F (0x600C + (12 * 7) + 6 ) -#define N_G7 (0x600C + (12 * 7) + 7 ) -#define N_G7S (0x600C + (12 * 7) + 8 ) -#define N_A7F (0x600C + (12 * 7) + 8 ) -#define N_A7 (0x600C + (12 * 7) + 9 ) -#define N_A7S (0x600C + (12 * 7) + 10) -#define N_B7F (0x600C + (12 * 7) + 10) -#define N_B7 (0x600C + (12 * 7) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) - -#endif \ No newline at end of file diff --git a/keyboard/preonic/led.c b/keyboard/preonic/led.c deleted file mode 100644 index 2c0574660..000000000 --- a/keyboard/preonic/led.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#include -#include "stdint.h" -#include "led.h" - - -void led_set(uint8_t usb_led) -{ - // // Using PE6 Caps Lock LED - // if (usb_led & (1<. -*/ - -/* - * scan matrix - */ -#include -#include -#include -#include -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" - -#ifndef DEBOUNCE -# define DEBOUNCE 10 -#endif -static uint8_t debouncing = DEBOUNCE; - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} - -void matrix_init(void) -{ - // To use PORTF disable JTAG with writing JTD bit twice within four cycles. - MCUCR |= (1<event.pressed) { // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); + // midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); } else { // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127); - midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); + // midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127); stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); } } \ No newline at end of file -- cgit v1.2.3-24-g4f1b From b8ac5095708b5023f5e3e375b22534f8b395741f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:45:37 -0400 Subject: .hex files --- keyboard/preonic/Makefile | 4 +- keyboard/preonic/preonic_pcb.hex | 1702 +++++++++++++++++++++++++++++++ keyboard/preonic/preonic_pcb_silent.hex | 1189 +++++++++++++++++++++ 3 files changed, 2893 insertions(+), 2 deletions(-) create mode 100644 keyboard/preonic/preonic_pcb.hex create mode 100644 keyboard/preonic/preonic_pcb_silent.hex diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 664aff732..89c48e50a 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = YES # MIDI controls -AUDIO_ENABLE = YES # Audio output on port C6 +# MIDI_ENABLE = YES # MIDI controls +# AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. diff --git a/keyboard/preonic/preonic_pcb.hex b/keyboard/preonic/preonic_pcb.hex new file mode 100644 index 000000000..5bdc190e1 --- /dev/null +++ b/keyboard/preonic/preonic_pcb.hex @@ -0,0 +1,1702 @@ +:100000000C94D4020C9418030C9418030C94180349 +:100010000C9418030C9418030C9418030C941803F4 +:100020000C9418030C9418030C94E8160C94BA174B +:100030000C946C290C9418030C9418030C9418035A +:100040000C9418030C9418030C9418030C941803C4 +:100050000C9418030C94D9290C9418030C941803CD +:100060000C9418030C9418030C9418030C941803A4 +:100070000C9418030C9418030C9418030C94180394 +:100080000C941C0E0C9418030C9418030C94180375 +:100090000C9418030C9418030C9418030C94180374 +:1000A0000C9418030C9418030C941803076342363D +:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9 +:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD +:1000D0000000803F08000000BE922449123EABAAF7 +:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52 +:1000F000AA3E00000000BF000000803F000000009A +:1001000000084178D3BB4387D1133D190E3CC3BDD2 +:100110004282AD2B3E68EC8276BED98FE1A93E4C7F +:1001200080EFFFBE01C4FF7F3F00000000003500EC +:100130001E001F00200021002200230024002500B3 +:10014000260027002A002B0014001A0008001500C2 +:1001500017001C0018000C00120013002A002900D0 +:1001600004001600070009000A000B000D000E0035 +:100170000F0033003400E1001D001B0006001900D1 +:10018000050011001000360037003800280000304C +:10019000E000E200E30003522C002C000452500067 +:1001A000510052004F0035001E001F0020002100AA +:1001B0002200230024002500260027002A002B000F +:1001C00014001A00090013000A000D000F001800A7 +:1001D0001C0033002A002900040015001600170037 +:1001E00007000B00110008000C0012003400E100B1 +:1001F0001D001B000600190005000E00100036004F +:100200003700380028000030E000E200E30003522D +:100210002C002C0004525000510052004F003500B9 +:100220001E001F00200021002200230024002500C2 +:10023000260027002A002B00340036003700130068 +:100240001C0009000A00060015000F002A00290002 +:1002500004001200080018000C0007000B00170033 +:10026000110016003800E100330014000D000E00EC +:100270001B00050010001A0019001D0028000030A6 +:10028000E000E200E30003522C002C000452500076 +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00350212 +:1002B0001E021F0220022102220223022402250222 +:1002C000260227022A0001003A003B003C003D00C4 +:1002D0003E003F002D022E022F02300231020100AB +:1002E00040004100420043004400450000530153D8 +:1002F0000253005001000100010001000100010053 +:10030000010001000100AB00AA00A900AE00350009 +:100310001E001F00200021002200230024002500D1 +:10032000260027002A0035001E001F0020002100A3 +:100330002200230024002500260027002A000100B7 +:100340003A003B003C003D003E003F002D002E00E7 +:100350002F00300031000100400041004200430006 +:1003600044004500005301530253005001000100B6 +:100370000100010001000100010001000100AB00CB +:10038000AA00A900AE002A035400680065002000FE +:100390005000720065006F006E006900630020006D +:1003A0004B006500790062006F006100720064001C +:1003B00000002C034F007200740068006F006C0096 +:1003C00069006E0065006100720020004B0065004E +:1003D000790062006F006100720064007300000029 +:1003E000040309040902D000060100A0FA09040070 +:1003F000000103010100092111010001223F000752 +:1004000005810308000A0904010001030102000933 +:100410002111010001224D000705820308000A098D +:10042000040200010300000009211101000122362D +:10043000000705830308000A090403000203000003 +:10044000000921110100012220000705840320007A +:100450000107050403200001090404000001010054 +:100460000009240100010900010509040500020139 +:1004700003000007240100014100062402010100DD +:1004800006240202020009240301030102010009FB +:1004900024030204010101000905060240000500D1 +:1004A0000005250101010905850240000500000540 +:1004B000250101031201100100000008EDFE61603A +:1004C0000100010200010631FF0974A1010975153F +:1004D0000025FF9520750881020976150025FF95F6 +:1004E0002075089102C005010980A101850216014D +:1004F0000026B7001A01002AB70075109501810087 +:10050000C0050C0901A1018503160100269C021AF1 +:1005100001002A9C02751095018100C005010902A5 +:10052000A1010901A10005091901290515002501ED +:100530009505750181029501750381010501093059 +:1005400009311581257F95027508810609381581C5 +:10055000257F950175088106050C0A38021581254D +:100560007F950175088106C0C005010906A1010536 +:100570000719E029E7150025019508750181029505 +:100580000175088101050819012905950575019175 +:10059000029501750391010507190029FF15002532 +:1005A000FF950675088100C011241FBECFEFDAE069 +:1005B000DEBFCDBF04B603FE24C080910404909139 +:1005C0000504A0910604B09107048730904BA74022 +:1005D000B04BB9F410920404109205041092060472 +:1005E0001092070414BE84B7877F84BF88E10FB6DA +:1005F000F89480936000109260000FBEE0E0F8E392 +:10060000099512E0A0E0B1E0EEE1F9E602C0059044 +:100610000D92A832B107D9F714E0A8E2B2E001C008 +:100620001D92A430B107E1F70E94A0130C948D3401 +:100630000C94000061110DC0FC018281882331F00F +:1006400085EE0E94671E0E94683003C085EE0E94FE +:100650002F1F80E090E008950E940F0E40E050E0D0 +:1006600069E070E080E091E00C94600F08950E94D2 +:1006700049036E9A769A8CE293E0892B11F00C94E0 +:100680002C03089586E393E0892B11F00C94360334 +:100690000895279A2F988FEF9FEF9093870080936C +:1006A00086008AE08093800089E1809381000C9429 +:1006B000113081110BC080918000877F8093800072 +:1006C00010928D0010928C002F9808952F988330EF +:1006D00041F4809180008860809380008FEF9FEFCD +:1006E00012C09091800098609093800023E030E0E9 +:1006F000281B3109220F331F8FEF9FEF02C0969501 +:1007000087952A95E2F790938D0080938C00089549 +:100710008B3B910568F4883A910530F5853A91054F +:10072000C0F48430910598F4019709F06FC071C04E +:10073000803E910508F46AC0883E910540F09C0116 +:10074000205F31092031310508F060C05CC09C0198 +:10075000A1C0853A910509F45FC0863A910509F474 +:100760005EC023E830E496C0883A910509F45AC087 +:10077000893A910509F459C08A3A910509F458C09B +:100780008B3A910509F457C08C3A910509F456C08B +:100790008D3A910509F455C0803B910509F454C088 +:1007A0008E3A910509F453C08F3A910509F452C06D +:1007B000813B910509F451C0823B910509F450C079 +:1007C000833B910509F44FC0843B910509F44EC069 +:1007D000853B910509F44DC0863B910509F44CC059 +:1007E000873B910509F44BC0883B910509F44AC049 +:1007F000893B910509F449C08A3B910509F048C03D +:100800002AE236E447C09C01306544C020E030E075 +:1008100041C021E030E03EC021E830E43BC022E8A6 +:1008200030E438C022EE34E435C029EE34E432C07E +:100830002AEE34E42FC025EB34E42CC026EB34E45C +:1008400029C027EB34E426C02CEC34E423C02DEC83 +:1008500034E420C023E835E41DC02AE835E41AC09A +:1008600022E935E417C024E935E414C021E236E476 +:1008700011C023E236E40EC024E236E40BC025E2C8 +:1008800036E408C026E236E405C027E236E402C0BA +:1008900020E034E4C90108959CE0799FF00111241F +:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71 +:1008B000FF1FE25DFE4F25913491C9010895880F15 +:1008C000991F82559040FC0125913491C9010895EA +:1008D000880F991F825D9E4FFC0125913491C901BB +:1008E00008950E944C049C019A9581159F4110F433 +:1008F000C9010895C90190528115904128F4C90198 +:100900009F700E9468040895C90190538115904119 +:1009100020F4C9019927906C0895C901905440971B +:1009200028F4C9018F709927946D0895203180E4CF +:10093000380719F480E091ED0895213190E43907EA +:1009400019F480E090ED0895223140E4340719F461 +:1009500080E092ED0895233180E4380719F480E0B7 +:1009600093ED0895211590E5390799F40E945623D7 +:1009700040E065E088E491E00E94600F2FEF44E3DF +:100980008CE0215040408040E1F700C000000C9412 +:10099000FE29213090E5390731F48091F002816021 +:1009A0008093F0020895C90190558115904108F097 +:1009B00062C0432F55274F70552741305105F9F438 +:1009C000C90174E0880F991F7A95E1F78827937021 +:1009D000B901E3E0660F771FEA95E1F760767727C4 +:1009E000862B972B9C682370332702C0440F551F1A +:1009F0002A95E2F74F715527842B952B08954230A5 +:100A0000510529F4922F8827816F906A0895433009 +:100A10005105B9F4C90153E0880F991F5A95E1F7C0 +:100A2000807E97702370332741E050E002C0440F6E +:100A3000551F2A95E2F74F715527842B952B9C68FB +:100A400008954430510589F5C90143E0880F991F85 +:100A50004A95E1F7807E97702370332741E050E09C +:100A600002C0440F551F2A95E2F74F715527842B7A +:100A7000952B9A680895C90190568115904118F4F4 +:100A8000C901906F0895C90190578115904120F4D4 +:100A9000C9019F7090620895C901905881159041D5 +:100AA00020F4C9019F70906A0895203E3105E0F45A +:100AB000203C310568F52133310509F475C048F44F +:100AC0002932310509F46BC02A32310509F07BC0A7 +:100AD00075C02933310501F122383105E9F025339C +:100AE000310509F070C051C0233E3105B1F140F429 +:100AF000203E3105D1F0223E310509F064C01CC012 +:100B0000263E310579F1273E310509F05CC038C039 +:100B1000C9010E945F0408958091010380FD02C015 +:100B200081FF51C080EE90E04FC08091010380FFB3 +:100B3000F9CF89E390E048C08091010382FF0AC0A9 +:100B40008091010384FF03C080E090E03DC083EE0C +:100B500090E03AC082EE90E037C08091010382FFBE +:100B6000EFCFF8CF8091010383FF07C0809101038D +:100B700084FDEACF87EE90E027C086EE90E024C0A7 +:100B80008091010383FFF2CFF8CF8091010385FFAD +:100B900003C089E290E018C085E390E015C0809121 +:100BA000010385FDF9CFF5CF8091010386FF03C0D6 +:100BB0008AE290E009C081E390E006C080910103E1 +:100BC00086FDF9CFF5CFC9010E94880308950895E5 +:100BD0005F926F927F928F929F92AF92BF92CF92CD +:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6 +:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9 +:100C00002F5F3F4F4E018BE0880E911C60E070E03B +:100C100000E010E0E12CF12CC12CD12CA12CB12C46 +:100C20008AE0782E622E532E41E050E0E3E9F1E0B5 +:100C3000A62DB52D872D01900D928A95E1F7F9012A +:100C4000819191919F01FC01E07FFF27E032F10546 +:100C500059F48F709927FA0102C0EE0FFF1F8A9591 +:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E +:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC +:100C8000DF2A29C0E034F10559F48F709927FA0161 +:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063 +:100CA000E035F10559F48F709927FA0102C0EE0F73 +:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2 +:100CC00051F48F709927FA0102C0EE0FFF1F8A9529 +:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9 +:100CE0008A2D8095892384B985B18A2985B997B1E0 +:100CF0008C2D8095892387B988B18C2988B99AB1C0 +:100D00008E2D809589238AB98BB18E298BB99DB19F +:100D1000802F809589238DB98EB1802B8EB990B3A9 +:100D2000862F8095892380BB81B3862B81BB2A9631 +:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC +:100D40000F91FF90EF90DF90CF90BF90AF909F906A +:100D50008F907F906F905F9008955F926F927F92D7 +:100D60008F929F92AF92BF92CF92DF92EF92FF92BB +:100D70000F931F93CF93DF93CDB7DEB768970FB66E +:100D8000F894DEBF0FBECDBF85B7806885BF85B73D +:100D9000806885BF0E94E8059E012F5F3F4F4E018E +:100DA00089E1880E911C60E070E000E010E0E12C29 +:100DB000F12CC12CD12CA12CB12C98E1792E622ED2 +:100DC000532E41E050E0EDE9F1E0A62DB52D872D41 +:100DD00001900D928A95E1F7F901819191919F011E +:100DE000FC01E07FFF27E032F10559F48F7099276D +:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62 +:100E000037C0E033F10559F48F709927FA0102C019 +:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1 +:100E2000F10559F48F709927FA0102C0EE0FFF1FE8 +:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446 +:100E40008F709927FA0102C0EE0FFF1F8A95E2F713 +:100E50000E2B1F2B0DC0E036F10551F48F70992732 +:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F +:100E70002815390509F0A7CF94B18A2D80958923CB +:100E800084B985B18A2985B997B18C2D809589233C +:100E900087B988B18C2988B99AB18E2D809589231C +:100EA0008AB98BB18E298BB99DB1802F809589230A +:100EB0008DB98EB1802B8EB990B3862F8095892302 +:100EC00080BB81B3862B81BB10922902109228022D +:100ED000109233021092320210922B0210922A02C8 +:100EE000109235021092340210922D0210922C02B0 +:100EF000109237021092360210922F0210922E0298 +:100F0000109239021092380210923102109230027F +:100F100010923B0210923A0287E393E0892BB9F0DA +:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC +:100F30001F910F91FF90EF90DF90CF90BF90AF90F7 +:100F40009F908F907F906F905F900C94370368967E +:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA +:100F60000F91FF90EF90DF90CF90BF90AF909F9048 +:100F70008F907F906F905F9008955F926F927F92B5 +:100F80008F929F92AF92BF92CF92DF92EF92FF9299 +:100F90000F931F93CF93DF93CDB7DEB7A2970FB612 +:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17 +:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26 +:100FC0003AE0532E470101E010E048E1642E55E07D +:100FD000752EE3E9F1E0D401852D01900D928A95FB +:100FE000E1F7F701819191917F019C01207F3327E7 +:100FF0002032310589F424B18F709927A80102C0ED +:10100000440F551F8A95E2F7CA01242B24B995B1E4 +:101010008095892385B94FC02033310589F427B1E4 +:101020008F709927F80102C0EE0FFF1F8A95E2F733 +:10103000CF012E2B27B998B18095892388B93BC061 +:101040002034310589F42AB18F709927A80102C094 +:10105000440F551F8A95E2F7CA01242B2AB99BB188 +:10106000809589238BB927C02035310589F42DB1AE +:101070008F709927F80102C0EE0FFF1F8A95E2F7E3 +:10108000CF012E2B2DB99EB1809589238EB913C027 +:101090002036310581F420B38F709927A80102C052 +:1010A000440F551F8A95E2F7CA01242B20BB91B348 +:1010B0008095892381BB50EA5A95F1F7BE016F5F95 +:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC +:1010D0001196462D01900D924A95E1F7FB01419141 +:1010E0005191BF01FA01E07FFF27E032F10511F4D1 +:1010F000E3B113C0E033F10511F4E6B10EC0E03402 +:10110000F10511F4E9B109C0E035F10511F4ECB1D4 +:1011100004C0E036F105B9F4EFB1F0E04F705527A7 +:1011200002C0F595E7954A95E2F7E0FD08C0A801F1 +:10113000022E02C0440F551F0A94E2F702C040E09D +:1011400050E0842B952B2F5F3F4F2C30310509F059 +:10115000BCCFF601208131812817390721F0918316 +:101160008083709270010E94E805F2E0CF0ED11CDE +:10117000EA14FB0409F02DCF809170018823A1F1BE +:10118000815080937001882339F08FE99FE00197A7 +:10119000F1F700C0000028C0809132029091330224 +:1011A0009093290280932802809134029091350215 +:1011B00090932B0280932A028091360290913702FD +:1011C00090932D0280932C028091380290913902E5 +:1011D00090932F0280932E0280913A0290913B02CD +:1011E000909331028093300282E493E0892B11F0D6 +:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4 +:10120000CDBFDF91CF911F910F91FF90EF90DF90B5 +:10121000CF90BF90AF909F908F907F906F905F9096 +:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D +:10123000918108950895CF92DF92EF92FF920F93DC +:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601 +:10125000F894DEBF0FBECDBF8C01862F642F88238C +:1012600079F0F80192812FE7482F992329F083E044 +:1012700093E00E94C41904C083E093E00E94D41953 +:10128000F80180818B3091F59181943009F0A8C2EA +:101290009281809173019923B1F08F5F80937301E4 +:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207 +:1012B0009A95E1F7E0917101F0917201EE0FFF1F35 +:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03 +:1012D000BD4F01900D929A95E1F7E0917101F09167 +:1012E0007201EE0FFF1F21E332E093C08A3009F054 +:1012F000CBC0F8019181943009F072C29281809143 +:101300007301992309F473C081508093730196E4AB +:10131000E5EBF1E0DE01A551BE4F01900D929A95EB +:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA +:1013300031E02C0F3D1FE20FF31F60817181680FB8 +:10134000711D882777FD8095982F0E94AC3120E091 +:1013500030E040E451E40E94113120E030E040E808 +:1013600050E40E94A9309B01AC0160E070E080E095 +:1013700090E40E94C33221E230ED42E053E40E9447 +:1013800060324CE050E00E94BB0F20E04BE760E091 +:1013900083E093E00E94B41920E04BE761E083E032 +:1013A00093E00E94B41920E04BE762E083E093E011 +:1013B0000E94B41920E04BE763E083E093E00E94D1 +:1013C000B41920E04BE764E083E093E0C454DD4FC0 +:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146 +:1013E0000F91FF90EF90DF90CF900C94B41996E49A +:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501 +:10140000E1F7E0917101F0917201EE0FFF1F25EA03 +:1014100031E02C0F3D1FE20FF31F60817181680FD7 +:10142000711D882777FD8095982F0E94AC3120E0B0 +:1014300030E040E451E40E94113120E030E040E827 +:1014400050E40E94A9309B01AC0160E070E080E0B4 +:1014500090E40E94C33221E230ED42E053E40E9466 +:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F +:101470000FBECDBFDF91CF911F910F91FF90EF90E5 +:10148000DF90CF900C94BE0C893009F0D3C0F801E6 +:101490009181943009F0A4C19281992309F4A0C1EB +:1014A00080917101909172010196909372018093E5 +:1014B000710120E04BE760E083E093E00E94B41903 +:1014C00020E04BE761E083E093E00E94B41920E064 +:1014D0004BE762E083E093E00E94B41920E04BE721 +:1014E00063E083E093E00E94B41920E04BE764E0FE +:1014F00083E093E00E94B4190E94BE0C00E010E06B +:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5 +:10151000BE4F9F2D01900D929A95E1F7E0917101D8 +:10152000F0917201E00FF11FEE0FFF1F2FE531E088 +:101530002C0F3D1FE20FF31F60817181680F711D39 +:10154000882777FD8095982F0E94AC3120E030E00D +:1015500040E451E40E94113120E030E040E850E4E2 +:101560000E94A9309B01AC0160E070E080E090E453 +:101570000E94C33221E230ED42E053E40E94603227 +:101580004CE050E00E94BB0F3FEF87EE93E03150FC +:1015900080409040E1F700C0000080917301E5EBCE +:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E +:1015B000E1F7E0917101F0917201E00FF11FEE0F80 +:1015C000FF1F29E131E02C0F3D1FE20FF31F608167 +:1015D0007181680F711D882777FD8095982F0E9473 +:1015E000AC3120E030E040E451E40E94113120E0D1 +:1015F00030E040E850E40E94A9309B01AC0160E07B +:1016000070E080E090E40E94C33221E230ED42E0DD +:1016100053E40E9460320E94EB0C8FEF9CE701972D +:10162000F1F700C000000F5F1F4F0830110509F0EF +:1016300069CF94C1883009F0D3C0F801918194300A +:1016400009F0CEC09281992309F4CAC0809171013A +:10165000909172010197909372018093710120E043 +:101660004BE760E083E093E00E94B41920E04BE791 +:1016700061E083E093E00E94B41920E04BE762E070 +:1016800083E093E00E94B41920E04BE763E083E03D +:1016900093E00E94B41920E04BE764E083E093E01C +:1016A0000E94B4190E94BE0C00E010E056E4F52E32 +:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C +:1016C00001900D929A95E1F7E0917101F09172010C +:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39 +:1016E000E20FF31F60817181680F711D882777FDFC +:1016F0008095982F0E94AC3120E030E040E451E426 +:101700000E94113120E030E040E850E40E94A9300E +:101710009B01AC0160E070E080E090E40E94C33285 +:1017200021E230ED42E053E40E9460324CE050E0B0 +:101730000E94BB0F3FEF87EE93E031508040904016 +:10174000E1F700C0000080917301E5EBF1E0DE01FC +:10175000A357BF4F9F2D01900D929A95E1F7E0910D +:101760007101F0917201E00FF11FEE0FFF1F2DE8E4 +:1017700030E02C0F3D1FE20FF31F60817181680F75 +:10178000711D882777FD8095982F0E94AC3120E04D +:1017900030E040E451E40E94113120E030E040E8C4 +:1017A00050E40E94A9309B01AC0160E070E080E051 +:1017B00090E40E94C33221E230ED42E053E40E9403 +:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD +:1017D00000000F5F1F4F0830110509F069CFBEC030 +:1017E000F801228190917301222309F45DC026E45F +:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568 +:10180000E1F7E0917101F0917201E80FF11DEE0F27 +:10181000FF1F27E430E02C0F3D1FE20FF31F608114 +:101820007181690F711D882777FD8095982F0E941F +:10183000AC3120E030E040E451E40E9411316B0112 +:101840007C01F801818165E070E0681B71098827DF +:1018500077FD8095982F0E94AC319B01AC01C701A8 +:10186000B6010E94A9309B01AC0160E070E080E00D +:1018700090E40E94C33221E230ED42E053E40E9442 +:1018800060324FE050E0C454DD4F0FB6F894DEBF35 +:101890000FBECDBFDF91CF911F910F91FF90EF90C1 +:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176 +:1018B000119601900D922A95E1F7E0917101F09156 +:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39 +:1018D0003D1FE20FF31F60817181690F711D882721 +:1018E00077FD8095982F0E94AC3120E030E040E4F5 +:1018F00051E40E9411316B017C01F801818165E0A6 +:1019000070E0681B7109882777FD8095982F0E94E9 +:10191000AC319B01AC01C701B6010E94A9309B010B +:10192000AC0160E070E080E090E40E94C33221E20C +:1019300030ED42E053E40E946032C454DD4F0FB6F4 +:10194000F894DEBF0FBECDBFDF91CF911F910F91F5 +:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0 +:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0 +:101970000F91FF90EF90DF90CF9008951092870223 +:1019800010928602809171008D7F8093710080910A +:1019900090008F7780939000109248021092470237 +:1019A00010928002109281021092820210928302A1 +:1019B00010927F0210927E02EEE5F2E0AEE4B2E019 +:1019C00011921192119211921D921D9282E0EE37A6 +:1019D000F807B1F708956F927F928F929F92AF921E +:1019E000BF92CF92DF92EF92FF920F931F93CF930C +:1019F000DF936B017C010EE712E04CE5A42E42E080 +:101A0000B42EC7E0D0E0A7019601F801929182912F +:101A1000729162918F010E940D31882349F02197C4 +:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB +:101A3000F8011082118212821382F5011182108244 +:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA +:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5 +:101A600055816681778140835183628373831482B9 +:101A700015821682178212962D913C91139711961A +:101A80003C932E9313961C921E92129734961296A4 +:101A90008730910519F7C3CF809186029091870214 +:101AA000019797FD05C0909387028093860204C03A +:101AB0001092870210928602E0918602F0918702CE +:101AC0003097C9F4809171008D7F8093710080916F +:101AD00090008F7780939000109280021092810284 +:101AE000109282021092830210927F0210927E0264 +:101AF0001092470285C03197DF01AA0FBB1FAA0FC2 +:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23 +:101B1000FF1FE25BFD4FC081D18160908002709019 +:101B200081028090820290908302A7019601662D27 +:101B3000772D882D992D0E940D3187FF25C0262DE8 +:101B4000372D482D592DC701B6010E94A83020E03D +:101B500030E04AEF54E40E9411315B018C012A2DE0 +:101B60003B2D402F512F662D772D882D992D0E94CA +:101B7000A9303B014C01A7019601772D992D0E94B8 +:101B80000D31181664F72EC0A7019601662D772D2A +:101B9000882D992D0E945C32181634F5A701960104 +:101BA000662D772D882D992D0E94A83020E030E0F9 +:101BB0004AEF54E40E9411315B018C012A2D3B2D28 +:101BC000402F512F662D772D882D992D0E94A830FA +:101BD0003B014C01A7019601772D992D0E945C32A3 +:101BE00087FFECCF10924D02C0928002D09281020A +:101BF000E0928202F0928302D0937F02C0937E0231 +:101C0000DF91CF911F910F91FF90EF90DF90CF90D8 +:101C1000BF90AF909F908F907F906F9008953E9A65 +:101C2000E1E7F0E080818D7F808382E08093900007 +:101C30008AE18093910008951F920F920FB60F9240 +:101C40001124CF92DF92EF92FF922F933F934F9305 +:101C50005F936F937F938F939F93AF93BF93CF9334 +:101C6000DF93EF93FF9380914702882309F479C0B3 +:101C700020E030E0A90160918002709181028091A2 +:101C80008202909183020E945C3218160CF069C0A7 +:101C900020E030E040E251E46091490270914A0254 +:101CA00080914B0290914C020E945C321816BCF459 +:101CB00080918402909185020196609186027091D4 +:101CC00087020E9448349093850280938402109288 +:101CD000490210924A0210924B0210924C02C0919B +:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC +:101CF000DD4F288139814A815B8160E074E284E7AD +:101D00009BE40E9411310E94793170939700609397 +:101D10009600288139814A815B8160E074E284E722 +:101D20009BE40E9411310E947931759567957093FB +:101D300099006093980020E030E040E85FE3609114 +:101D4000490270914A0280914B0290914C020E948C +:101D5000A9306093490270934A0280934B0290939A +:101D60004C0280914802882309F493C0C09043023A +:101D7000D0904402E0904502F090460220E030E02E +:101D8000A901C701B6010E945C321816F4F4A7013C +:101D9000960160E074E284E79BE40E9411310E94A6 +:101DA00079317093970060939600A701960160E0E7 +:101DB00074E284E79BE40E9411310E9479317595A9 +:101DC0006795709399006093980060913D027091BF +:101DD0003E026F5F7F4F70933E0260933D0280E052 +:101DE00090E00E94AA3120913F0230914002409140 +:101DF0004102509142020E945C3287FD4AC08091AC +:101E00003C028F5F80933C029091F0038917A0F011 +:101E10008091F503882319F010923C020DC0809147 +:101E200071008D7F80937100809190008F778093F7 +:101E30009000109248022DC0E091F103F091F2035E +:101E400080913C0298E0899FE00DF11D1124808172 +:101E50009181A281B3818093430290934402A09325 +:101E60004502B093460220E030E040E85EE3648142 +:101E70007581868197810E94603260933F027093E2 +:101E80004002809341029093420210923E021092CF +:101E90003D02FF91EF91DF91CF91BF91AF919F9163 +:101EA0008F917F916F915F914F913F912F91FF9013 +:101EB000EF90DF90CF900F900FBE0F901F9018956E +:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174 +:101ED00080914702882331F04A8369830E94BE0CB7 +:101EE00069814A8181E0809348021093F203009354 +:101EF000F1036093F0034093F503109249021092AE +:101F00004A0210924B0210924C0210923C02F801CD +:101F10004081518162817381409343025093440216 +:101F2000609345027093460220E030E040E85EE3B3 +:101F300064817581868197810E94603260933F023F +:101F400070934002809341029093420210923E02AD +:101F500010923D02809171008260809371008091A7 +:101F600090008068809390000F900F90DF91CF9148 +:101F70001F910F9108956F927F928F929F92AF92CF +:101F8000BF92CF92DF92EF92FF920F931F93CF9366 +:101F9000DF936B017C01EA018091480281110E946C +:101FA000BE0C81E08093470220E030E0A901C70128 +:101FB000B6010E945C3218160CF09AC06090800244 +:101FC00070908102809082029090830220E030E045 +:101FD000A901662D772D882D992D0E940D31811133 +:101FE00028C0C0928002D0928102E0928202F092D8 +:101FF0008302D0937F02C0937E02809186029091EB +:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C +:10201000C082D182E282F382FC01EE0FFF1FE25BFD +:10202000FD4FD183C08301969093870280938602EF +:102030005FC0A7019601662D772D882D992D0E94EE +:102040000D3187FF25C0262D372D482D592DC7016D +:10205000B6010E94A83020E030E04AEF54E40E942C +:1020600011315B018C012A2D3B2D402F512F662D04 +:10207000772D882D992D0E94A9303B014C01A70195 +:102080009601772D992D0E940D31181664F7A9CF6E +:10209000A7019601662D772D882D992D0E945C321F +:1020A00018160CF09ECFA7019601662D772D882D6E +:1020B000992D0E94A83020E030E04AEF54E40E94BD +:1020C00011315B018C012A2D3B2D402F512F662DA4 +:1020D000772D882D992D0E94A8303B014C01A70136 +:1020E0009601772D992D0E945C3287FFECCF79CF36 +:1020F000809171008260809371008091900080686F +:1021000080939000DF91CF911F910F91FF90EF90FE +:10211000DF90CF90BF90AF909F908F907F906F9007 +:102120000895809191020895CF93DF9300D01F927C +:10213000CDB7DEB72091FA03243021F523E02983BF +:102140009B838A832093E9008FEF06C095ED9A95D3 +:10215000F1F70000882329F09091E800815095FF65 +:10216000F5CF8091E80085FF0DC040E050E063E0CE +:1021700070E0CE0101960E947E148091E8008E7777 +:102180008093E8000F900F900F90DF91CF9108950A +:10219000CF93DF9300D01F92CDB7DEB72091FA0323 +:1021A000243029F522E029839B838A8383E080936E +:1021B000E9008FEF06C095ED9A95F1F700008823AE +:1021C00029F09091E800815095FFF5CF8091E800CB +:1021D00085FF0DC040E050E063E070E0CE01019665 +:1021E0000E947E148091E8008E778093E8000F9023 +:1021F0000F900F90DF91CF9108952091FA03243032 +:10220000F9F422E02093E9002FEF06C035ED3A956E +:10221000F1F70000222329F03091E800215035FF2A +:10222000F5CF2091E80025FF0BC040E050E065E0CD +:1022300070E00E947E148091E8008E778093E80021 +:102240000895CF93DF93EC018091FA03843041F538 +:1022500081E08093E9008FEF06C095ED9A95F1F744 +:102260000000882329F09091E800815095FFF5CF78 +:102270008091E80085FF14C040E050E068E070E025 +:10228000CE010E947E148091E8008E778093E80052 +:1022900088E0FE01A9E8B2E001900D928A95E1F78D +:1022A000DF91CF910895BF92CF92DF92EF92FF928C +:1022B0000F931F93CF93DF937C01B62EE90100E0CB +:1022C00010E0C42ED12C0BC04991202F2B0D2F775D +:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5 +:1022E0001D0594F3DF91CF911F910F91FF90EF9017 +:1022F000DF90CF90BF90089570E06F5F7F4F6F7059 +:1023000077270C94B4190F931F93CF93C42F633086 +:10231000710509F04AC0842F807F803849F18039E7 +:1023200009F043C0622F6F7770E080E090E00E9478 +:10233000AC3120E030E040E451E40E9411319B01D7 +:10234000AC0160E070E080E090E40E94C3320F775F +:1023500010E023E0159507952A95E1F72DEC3CEC6C +:1023600042E053E40E946032A8010E94BB0F1DC0EE +:10237000622F6F7770E080E090E00E94AC3120E047 +:1023800030E040E451E40E9411319B01AC0160E077 +:1023900070E080E090E40E94C3322DEC3CEC42E01F +:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1 +:1023B0001F910F910C94BE0CCF911F910F91089516 +:1023C0000F931F93CF93DF93CDB7DEB727970FB649 +:1023D000F894DEBF0FBECDBF8C0114C08A810E946D +:1023E0008E199A819D839B819E839C819F838111FD +:1023F0001EC089818430B1F08730A1F08630A1F011 +:102400008530A1F0BE016F5F7F4F84E791E00E94AD +:10241000FB1C8111E3CF84E791E00E94EC1C0E9439 +:1024200067190DC083E003C082E001C081E0AE0106 +:102430004B5F5F4F682FC8010E94211AE3CF279698 +:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5 +:102450000F910895EF92FF920F93CF93DF9300D0E7 +:1024600000D000D0CDB7DEB77B014A832B830C832D +:10247000842F2E834D830E948E192E814D818111D0 +:102480001BC082E0E816F10479F083E0E816F1045D +:1024900021F0EA94EF2821F50BC0073F11F487E003 +:1024A00001C084E089830BC0273FD9F786E0FACFCB +:1024B000473FB9F785E0F6CF42954F704983BE019B +:1024C0006F5F7F4F84E791E00E94B11C84E791E049 +:1024D0000E94CF1C84E791E00E94EC1C0E946719C7 +:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119 +:1024F0000F91FF90EF9008958091F903811109C029 +:102500000E946D160E94CA168091E200846080933A +:10251000E20008951092F9030895089508950C9427 +:102520006129809192028F5F8093920262E30E9400 +:102530002834911135C01092920280919302882321 +:1025400079F18091FA03843049F58091E9008F7028 +:102550009091EC0090FF02C090E801C090E0982BB1 +:1025600084E08093E9008091EB0080FF14C08091AB +:10257000EE0087FD03C00FC01092F1008091E800CB +:1025800085FDFACF8091E80080FF05C08091E800CA +:102590008E778093E8009F709093E90010929302E9 +:1025A000089542E061EC81E00E94E31542E061ECB5 +:1025B00082E00E94E31542E061EC83E00E94E315B3 +:1025C00042E261EC84E00E94E31542E361E885E0C9 +:1025D0000E94E31542E360E886E00C94E3158091E5 +:1025E000FC03833009F454C030F4813071F0823040 +:1025F00009F0A5C08CC08A3009F479C08B3009F489 +:102600005FC0893009F09BC020C08091FB03813AF4 +:1026100009F095C08091E800877F8093E800809161 +:10262000FF0390910004892B21F060E080E090E0AE +:1026300003C068E089E892E070E00E941C15809178 +:10264000E8008B778093E80008958091FB03813246 +:1026500009F075C08091FF0390910004892B09F067 +:102660006EC08091E800877F8093E80005C080916C +:10267000FA03882309F463C08091E80082FFF7CF52 +:102680008091F100809391028091E8008B7753C094 +:102690008091FB03813A09F052C08091FF03909131 +:1026A0000004892B09F04BC08091E800877F80935C +:1026B000E8008091E80080FFFCCF80918A0136C05D +:1026C0008091FB038132D9F58091FF039091000442 +:1026D000892BA9F58091E800877F8093E8000E940C +:1026E0001A168091FD0380938A010C9456238091E1 +:1026F000FB03813221F58091E800877F8093E80019 +:102700000E941A168091FE0380938802089580919A +:10271000FB03813AA1F48091E800877F8093E80071 +:102720008091E80080FFFCCF809188028093F100C7 +:102730008091E8008E778093E8000C941A16089533 +:1027400083E093E00E94F0196AE272E183E093E093 +:102750000E94461A60EE71E183E093E00E944A1AFB +:1027600084B7877F84BF88E10FB6F89480936000B8 +:10277000109260000FBE90E080E80FB6F89480934E +:102780006100909361000FBE0E94741D0E946D163F +:102790000E94CA168091E20084608093E2007894DF +:1027A00063E871E183E093E00E94EC196CE771E16A +:1027B00083E093E00E94E41963E571E183E093E034 +:1027C0000E94E8190E940F0E0E9467190E94761D50 +:1027D00080E891E00E94201D0BC00E941E2980917C +:1027E000F803882329F00E94492981110E94681466 +:1027F0008091FA03853089F383E093E00E94F91B0E +:102800000E94801DF5CF292F332723303105B1F0E9 +:102810004CF42130310509F44DC02230310509F066 +:102820004EC007C02132310541F12232310591F10C +:1028300046C0E0EDF0E084EE93E045C0992781309A +:10284000910569F08230910589F0892B09F037C034 +:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0 +:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2 +:10287000E491F0E086E893E026C0643000F5E62FAE +:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF +:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1 +:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA +:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085 +:1028C000F0E080E090E0DA018D939C93CF010895D1 +:1028D00080E189BD82E189BD09B400FEFDCF809110 +:1028E000D8008F7D8093D8008091E0008260809333 +:1028F000E0008091E00081FDFCCF0895BF92CF926F +:10290000DF92EF92FF920F931F93CF93DF937C019F +:102910008B01EA010E943B16B82E811133C020972B +:1029200031F028813981021B130BE20EF31EC12CFA +:10293000D12C23C08091E80085FD15C08091E8006E +:102940008E778093E800209749F0888199818C0DDB +:102950009D1D9983888325E0B22E14C00E943B16EA +:10296000882359F00EC0F70181917F018093F10017 +:1029700001501109FFEFCF1ADF0A01151105D1F639 +:1029800001C0B82E8B2DDF91CF911F910F91FF9039 +:10299000EF90DF90CF90BF900895BF92CF92DF92DB +:1029A000EF92FF920F931F93CF93DF937C018B01E4 +:1029B000EA010E943B16B82E811133C0209731F0F6 +:1029C00028813981021B130BE20EF31EC12CD12C7E +:1029D00023C08091E80085FD15C08091E8008B77C9 +:1029E0008093E800209749F0888199818C0D9D1D86 +:1029F0009983888345E0B42E14C00E943B16882337 +:102A000059F00EC08091F100F70181937F010150D0 +:102A10001109FFEFCF1ADF0A01151105D1F601C028 +:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA +:102A3000DF90CF90BF90089540910104509102041F +:102A40004617570748F06115710539F44091E800C1 +:102A50004E774093E80001C0BA01FC0140E033C06A +:102A60008091FA03882309F444C0853009F443C0F7 +:102A70008091E80083FD41C08091E80082FD33C071 +:102A80008091E80080FF1FC09091F3008091F200D8 +:102A9000392F20E0A901482BCA0106C0419140937B +:102AA000F1006150710901966115710519F08830C6 +:102AB0009105A0F341E0089709F040E08091E8001B +:102AC0008E778093E8006115710551F64111C8CFEA +:102AD0000AC08091FA03882361F0853061F080910B +:102AE000E80083FD0AC08091E80082FFF2CF80E019 +:102AF000089582E0089583E0089581E0089540916B +:102B00000104509102044617570748F061157105FA +:102B100039F44091E8004E774093E80001C0BA01D3 +:102B2000FC0140E034C08091FA03882309F445C0D9 +:102B3000853009F444C08091E80083FD42C0809153 +:102B4000E80082FD34C08091E80080FF20C09091B1 +:102B5000F3008091F200392F20E0A901482BCA012F +:102B600007C044914093F10031966150710901967C +:102B70006115710519F08830910598F341E00897C7 +:102B800009F040E08091E8008E778093E8006115BD +:102B9000710549F64111C7CF0AC08091FA03882315 +:102BA00061F0853061F08091E80083FD0AC080917A +:102BB000E80082FFF2CF80E0089582E0089583E08C +:102BC000089581E00895982F2CC09093E9009817FC +:102BD00039F07091EC002091ED005091F00003C0AD +:102BE000242F762F50E021FD02C09F5F1AC0309144 +:102BF000EB003E7F3093EB003091ED003D7F309352 +:102C0000ED003091EB0031603093EB007093EC00FD +:102C10002093ED005093F0002091EE0027FDE5CFCA +:102C200007C0973090F28F708093E90081E008959B +:102C300080E008958091FB0387FD05C08091E80046 +:102C400080FF0EC012C08091E80082FD05C0809117 +:102C5000FA038111F8CF08958091E8008B7708C0BE +:102C60008091FA038111EACF08958091E8008E7770 +:102C70008093E80008958091E4009091E50045E696 +:102C80002091EC0020FD1FC023C02091FA032223D5 +:102C900091F0253091F02091EB0025FD10C020919E +:102CA000E4003091E5002817390751F34150C9017C +:102CB00039F784E0089582E0089583E0089581E083 +:102CC000089580E008952091E80020FFDECFF9CF3D +:102CD0002091E80022FFD9CFF4CF0E94DB160E949A +:102CE000E316E0EEF0E0808181608083E8EDF0E0C3 +:102CF00080818F77808319BCA7EDB0E08C918E7FA7 +:102D00008C9380818F7E80831092F90308950F93B6 +:102D10001F93CF93DF930E94DB160E94E316C8ED4A +:102D2000D0E088818F7788838881806888838881D4 +:102D30008F7D888319BC1092FA031092F6031092CB +:102D4000F8031092F70300EE10E0F80180818B7F0A +:102D5000808388818160888342E060E080E00E9417 +:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B +:102D7000808181608083808188608083F801808188 +:102D80008E7F8083888180618883DF91CF911F91BE +:102D90000F910895E8EDF0E080818F7E8083E7ED6C +:102DA000F0E080818160808384E082BF81E0809355 +:102DB000F9030C948716E8EDF0E080818E7F808324 +:102DC0001092E20008951092DA001092E100089546 +:102DD0001F920F920FB60F9211242F933F934F9390 +:102DE0005F936F937F938F939F93AF93BF93EF9373 +:102DF000FF938091E10082FF0BC08091E20082FF8F +:102E000007C08091E1008B7F8093E1000E949112C6 +:102E10008091DA0080FF1FC08091D80080FF1BC026 +:102E20008091DA008E7F8093DA008091D90080FF54 +:102E30000DC080E189BD82E189BD09B400FEFDCFEE +:102E400081E08093FA030E947C1205C019BC1092A5 +:102E5000FA030E948A128091E10080FF19C08091DC +:102E6000E20080FF15C08091E2008E7F8093E20037 +:102E70008091E20080618093E2008091D8008062BE +:102E80008093D80019BC85E08093FA030E948E12CB +:102E90008091E10084FF30C08091E20084FF2CC06B +:102EA00080E189BD82E189BD09B400FEFDCF80913A +:102EB000D8008F7D8093D8008091E1008F7E809331 +:102EC000E1008091E2008F7E8093E2008091E20039 +:102ED00081608093E2008091F603882311F084E002 +:102EE00007C08091E30087FF02C083E001C081E05A +:102EF0008093FA030E948F128091E10083FF29C022 +:102F00008091E20083FF25C08091E100877F80935C +:102F1000E10082E08093FA031092F6038091E100D1 +:102F20008E7F8093E1008091E2008E7F8093E200AB +:102F30008091E20080618093E20042E060E080E006 +:102F40000E94E3158091F00088608093F0000E9459 +:102F50008D12FF91EF91BF91AF919F918F917F91D2 +:102F60006F915F914F913F912F910F900FBE0F90F6 +:102F70001F9018951F920F920FB60F9211242F9346 +:102F80003F934F935F936F937F938F939F93AF93F1 +:102F9000BF93CF93EF93FF938091E9008F7090914F +:102FA000EC0090FF02C090E801C090E0C92FC82B50 +:102FB0001092E9008091F000877F8093F000789470 +:102FC0000E94FE171092E9008091F00088608093C3 +:102FD000F000CF70C093E900FF91EF91CF91BF91C6 +:102FE000AF919F918F917F916F915F914F913F91A1 +:102FF0002F910F900FBE0F901F9018951F93CF9396 +:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37 +:10301000CDBFEBEFF3E08091F100819324E0E3304A +:10302000F207C9F70E94EF128091E80083FF37C1D1 +:103030008091FB039091FC03953009F488C038F42B +:103040009130B1F170F0933009F029C131C098305E +:1030500009F4F8C0993009F404C1963009F01FC191 +:103060009DC0803821F0823809F019C108C08091D4 +:10307000F7039091F803992389F082600FC0809143 +:10308000FF03909100048F7099278093E90080914D +:10309000EB0085FB882780F91092E9009091E80009 +:1030A000977F9093E8008093F1001092F100D5C0D3 +:1030B000882319F0823009F0F2C08F7121F082303C +:1030C00009F0EDC00BC08091FD03813009F0E7C02D +:1030D000933009F080E08093F8032FC08091FD03C6 +:1030E00081112BC08091FF03909100048F7099276C +:1030F000009709F4D4C08093E9002091EB0020FFF1 +:103100001CC02091FC03233021F48091EB008062ED +:1031100012C09091EB0090619093EB0021E030E0C1 +:1031200001C0220F8A95EAF72093EA001092EA0084 +:103130008091EB0088608093EB001092E900809111 +:10314000E800877F8093E8000E941A16A8C08111CA +:10315000A6C08091FD039091FE038F779927182FC9 +:103160009091E3009078982B9093E3008091E80091 +:10317000877F8093E8000E941A168091E80080FF04 +:10318000FCCF8091E30080688093E300112311F06D +:1031900083E001C082E08093FA0381C080588230CE +:1031A00008F07DC08091FD039091FE038C3D23E0EB +:1031B000920779F583E08A838AE289834FB7F8948E +:1031C000DE01139620E03EE051E2E32FF0E0509361 +:1031D0005700E49120FF03C0E295EF703F5FEF706E +:1031E0008E2F90E0EA3010F0C79601C0C0968D9304 +:1031F0009D932F5F243149F74FBF8091E800877F6F +:103200008093E8006AE270E0CE0101960E941C15EE +:1032100013C0AE01455D5F4F6091FF030E94031430 +:103220000097E9F12091E800277F2093E800BC0196 +:103230008BA59CA50E947F158091E8008B778093D9 +:10324000E8002DC0803859F58091E800877F809391 +:10325000E8008091F6038093F1008091E8008E777A +:1032600071CF81111CC09091FD039230C0F4809108 +:10327000E800877F8093E8009093F6030E941A1677 +:103280008091F603811104C08091E30087FF02C0A2 +:1032900084E001C081E08093FA030E94D112809102 +:1032A000E80083FF0AC08091E800877F8093E800F0 +:1032B0008091EB0080628093EB00AC960FB6F8949F +:1032C000DEBF0FBECDBFDF91CF911F910895CF9389 +:1032D0008091FA038823B1F08091E9008F7090917A +:1032E000EC0090FF02C090E801C090E0C92FC82B0D +:1032F0001092E9008091E80083FD0E94FE17CF70D4 +:10330000C093E900CF910895881F8827881F0895EA +:1033100091E0883F08F490E0892F0895982F907FDE +:10332000903B99F038F4903981F0903A71F09038F0 +:10333000C9F40BC0903DA1F018F4903C99F410C072 +:10334000903E19F0903F71F402C083E00895E82F99 +:10335000E15FEF3038F4F0E0E15FFD4F80810895E8 +:1033600082E0089580E008950F932F774F776F7074 +:10337000606BDC01ED91FC91022F242F462F63E05E +:1033800070E009950F9108950F932F774F776F7025 +:103390006069DC01ED91FC91022F242F462F63E040 +:1033A00070E009950F9108950F932F774F776F7005 +:1033B0006068DC01ED91FC91022F242F462F63E021 +:1033C00070E009950F910895FC017383628308955D +:1033D000FC01738F628F0895FC01758F648F0895CF +:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A +:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8 +:103400001D821C821F821E82198618861B861A86C0 +:103410001D861C861F861E86198A188A1B8A1A8A90 +:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60 +:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199 +:103440000895CF92DF92FF920F931F93CF93DF9354 +:103450001F92CDB7DEB7F62E6A018C0108511F4FBF +:1034600008C0F60161916F01C80149830E94341CB4 +:1034700049818C2D841B8F15A0F30F90DF91CF9184 +:103480001F910F91FF90DF90CF900895FC01718301 +:1034900060830895FC0171A360A30895AF92BF9269 +:1034A000CF92DF92EF92FF920F931F93CF93DF9310 +:1034B00000D01F92CDB7DEB77C016B01142FB22E66 +:1034C000A02EDC0195968C9195978430F1F45A9654 +:1034D000ED91FC915B97309709F4D8C0CB0101972F +:1034E00063E070E00E943434DB01AA0FBB1FA60F1B +:1034F000B71F49832A830B834C2D4A1B9E012F5FE4 +:103500003F4FBD01C7010995B1C06230710509F493 +:1035100053C06330710529F06130710509F09CC01A +:1035200083C0842F807F803A01F130F48038B9F075 +:10353000803909F0ABC00DC0803EE9F0803F09F151 +:10354000803B09F0A3C0D7011296ED91FC9113972F +:1035500023C0D7011496ED91FC9115971DC0D7019A +:103560001696ED91FC91179717C0D7011896ED911B +:10357000FC91199711C0D7011A96ED91FC911B97F8 +:103580000BC0423F09F082C0D7011C96ED91FC911F +:103590001D97309731F47AC0309709F477C0123F05 +:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C +:1035B0004B2DC70109955AC0842F807F803D59F05B +:1035C000803F79F0803C09F061C0D7011E96ED91F3 +:1035D000FC911F9719C0D7015096ED91FC9151971E +:1035E00013C0433F31F4D7015296ED91FC915397AC +:1035F00008C0413F09F04AC0D7015496ED91FC91B3 +:103600005597309741F442C0309709F43FC0133FBB +:1036100011F0113F19F44B2D612F03C0612F6F7012 +:103620004B2DC701099522C0842F0E948819882339 +:1036300031F0D7015696ED91FC91579707C0163F90 +:1036400029F5D7015896ED91FC9159973097F1F0F3 +:10365000612FC70109950AC064307105A8F416C02E +:103660000A2D2B2D412FB601C7010995D7015E9672 +:10367000ED91FC915F97309789F00A2D2B2D412F0A +:10368000B601C70109950AC0C12CD12CD7015C969F +:10369000ED91FC915D97309719F7E8CF0F900F905F +:1036A0000F90DF91CF911F910F91FF90EF90DF90DE +:1036B000CF90BF90AF900895EF92FF920F931F931A +:1036C000CF93DF93EC01162F862F0E948819882351 +:1036D00069F0FDA081E08DA300E020E0412F61E0D2 +:1036E00070E0CE010E944E1AFDA27CC0812F0E9484 +:1036F00084194DA1882309F440C0443029F01AA34D +:1037000021E030E03FA32EA3812F0E948E1981304B +:1037100031F070F0823051F0833059F507C08DA33D +:1037200000E020E0412F61E070E01EC08DA35AC090 +:10373000103F19F0173FE9F404C084E08DA31AA3E9 +:103740003FC02EA13FA1C90163E070E00E94343464 +:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8 +:103760006EA30CA12BA14AA1CE010E944E1A1DA24C +:1037700039C01DA21FA21EA235C0442399F12EA15B +:103780003FA1C90163E070E00E9434347C01FE0176 +:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC +:1037A0008130910591F082E0E816F104D9F40CA182 +:1037B0002BA14AA1CE010E944E1A8DA1843091F016 +:1037C00081E090E09FA38EA30DC0423059F400E049 +:1037D0002BA14AA1CE010E944E1A8DA1843011F076 +:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A +:1037F0000895CF92DF92EF92FF920F931F93CF9392 +:10380000DF93EC01E8A1F9A1309709F009958E0149 +:1038100008511F4FC8010E94661CE12CF12CC82ED4 +:10382000D12C0FC060E0C8010E947A1C682FCE0125 +:103830000E945C1B61E0C8010E948B1C8FEFE81A9C +:10384000F80AEC14FD0470F3DF91CF911F910F91F2 +:10385000FF90EF90DF90CF900895FC014283748336 +:1038600063831182108208950F931F93CF93DF9388 +:10387000EC01062F0E94AC1C182F298130E0C901F1 +:1038800001966A8170E00E944834488150E08417B4 +:10389000950729F4812F0E94AF1C80E012C0EB81B4 +:1038A000FC81E20FF31F00832981822F90E00196B3 +:1038B0006A8170E00E9448348983812F0E94AF1C86 +:1038C00081E0DF91CF911F910F910895CF93DF9306 +:1038D000EC010E94AC1C29819881291710F0C22F9D +:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E +:1038F000CF910895FC012081862F90E0820F911DC9 +:10390000628170E00E9448340380F481E02DE80F6A +:10391000F91F808108950F931F93CF93DF931F9218 +:10392000CDB7DEB78C0169830E94AC1C482FF8012B +:1039300080816981262F30E0280F311D6281C90105 +:1039400070E00E9448348083842F0F90DF91CF91E4 +:103950001F910F910C94AF1C8FB7F89408958FBFEF +:103960000895FC01CB012091FA032430B1F42181A8 +:103970002F702093E90040E050E064E070E00E9486 +:103980007E1481110BC09091E80095FD07C09091C5 +:10399000E8009E779093E800089582E008952091D2 +:1039A000FA032430A9F4FC0181818F708093E9002F +:1039B0003091F3002091F200932F80E0822B892B2D +:1039C00049F08091E8008E778093E8000C943B16D4 +:1039D00082E0089580E008952091FA03243051F4A4 +:1039E000FC0121812F702093E9002091E80020FD47 +:1039F0000C94CF1C0895FC01CB012091FA032430D4 +:103A000011F080E0089526812F702093E900209125 +:103A1000E80022FFF6CF2091E80025FFF2CF40E03A +:103A200050E064E070E00E94CD148091E80085FDD4 +:103A300005C08091E8008B778093E80081E00895CD +:103A400090939502809394020895E0919402F091EE +:103A50009502309721F00190F081E02D099480E0EB +:103A60000895E0919402F0919502309721F0028040 +:103A7000F381E02D09940895E0919402F09195026C +:103A8000309721F00480F581E02D0994089520916C +:103A90009602309197028217930771F090939702E4 +:103AA00080939602E0919402F0919502309721F074 +:103AB0000680F781E02D09940895209198023091B5 +:103AC00099028217930771F090939902809398025C +:103AD000E0919402F0919502309721F00084F185F5 +:103AE000E02D0994089508950C94731D0E94952962 +:103AF0000E94AD060E94692A0C9411300C94E705CF +:103B00005F926F927F928F929F92AF92BF92CF926D +:103B1000DF92EF92FF920F931F93CF93DF93CDB776 +:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456 +:103B3000BD079AE9C92E92E0D92E00E010E0AA2430 +:103B4000A394B12C502E802F0E9411093C01F60144 +:103B5000E190F1906F01E826F926E114F10431F4C7 +:103B60000F5F1F4F0530110569F73AC08091F002D1 +:103B700081FD0E941A0920E030E04501022E02C0BA +:103B8000880C991C0A94E2F7C4018E219F21892B8D +:103B900009F12E835F826820792081E0672809F48B +:103BA00080E088870E949E298160782F9A87898784 +:103BB0004E815F8168858A850E94391EF801EE0F6B +:103BC000FF1FE656FD4F80819181882599259183BD +:103BD000808316C02F5F3F4F2C30310571F6C0CF68 +:103BE0008FEF89838A831B820E949E298160782FB0 +:103BF0009D838C8349815A816B818D810E94391EFE +:103C00000E94562D1091A4020E94251D1817D9F06C +:103C10000E94251D8093A4022A960FB6F894DEBF59 +:103C20000FBECDBFDF91CF911F910F91FF90EF900D +:103C3000DF90CF90BF90AF909F908F907F906F90CC +:103C40005F900C947E1D2A960FB6F894DEBF0FBECF +:103C5000CDBFDF91CF911F910F91FF90EF90DF903B +:103C6000CF90BF90AF909F908F907F906F905F901C +:103C70000895CF93DF93CDB7DEB72B970FB6F894A7 +:103C8000DEBF0FBECDBF4F83588769877A878B878A +:103C9000DE01119686E0FD0111928A95E9F785E033 +:103CA000FE01379601900D928A95E1F749815A817C +:103CB0006B817C818D819E810E9415262B960FB68B +:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3 +:103CD000C82F882309F4C1C0823859F40E94251DD9 +:103CE00081FDBBC089E30E947C280E94F82889E3FB +:103CF0000CC0833879F40E94251D80FDAEC083E599 +:103D00000E947C280E94F82883E50E949E28CF917B +:103D10000C94F828843859F40E94251D82FD9DC01A +:103D200087E40E947C280E94F82887E4EECF845024 +:103D3000813A48F48C2F0E94732F81118EC08C2FF2 +:103D40000E947C28E4CF8C2F805E883050F4C770AE +:103D500081E090E001C0880FCA95EAF70E94BF2871 +:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD +:103D700031F482E890E005C081E890E002C083E879 +:103D800090E0CF910C94471D8C2F885A833108F016 +:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B +:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB +:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B +:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9 +:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF +:103DE00092E038C082EE90E035C089EE90E032C0BB +:103DF0008AEE90E02FC085EB90E02CC086EB90E03F +:103E000029C087EB90E026C08CEC90E023C08DECBD +:103E100090E020C083E891E01DC08AE891E01AC0DC +:103E200082E991E017C084E991E014C081E292E058 +:103E300011C083E292E00EC084E292E00BC085E202 +:103E400092E008C086E292E005C087E292E002C0FC +:103E500080E090E0CF910C945D1DCF910895882370 +:103E600009F44DC0823859F40E94251D81FF47C0D6 +:103E700089E30E947C280E94F82889E30CC08338DB +:103E800071F40E94251D80FF3AC083E50E947C28C2 +:103E90000E94F82883E50E949E280C94F828843814 +:103EA00059F40E94251D82FF2AC087E40E947C28C5 +:103EB0000E94F82887E4EFCF982F9450913A08F4A5 +:103EC000EACF982F905E983058F4282F277081E021 +:103ED00090E001C0880F2A95EAF70E94C528DDCF3F +:103EE000982F955A933020F480E090E00C94471D71 +:103EF000885A833120F480E090E00C945D1D089591 +:103F0000882321F00E94BF280C94F8280895882364 +:103F100021F00E94C5280C94F8280895BF92CF92F2 +:103F2000DF92EF92FF920F931F93CF93DF93CDB762 +:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A +:103F400085E0F801DE01119601900D928A95E1F766 +:103F5000F80130812181F280558152955F70838113 +:103F60009481892B39F02F3F41F481E090E03F3F6D +:103F700031F003C081E090E002C080E090E080FD7D +:103F800073C339832A8389819A815E830E94392889 +:103F9000B92E8F830E9438280E9460272B2D2295EE +:103FA0002F7030E05E816F812530310509F4E6C065 +:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA +:103FC0008F70223031050CF045C017C02C30310500 +:103FD0004CF42A3031050CF0E7C12830310509F0E6 +:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6 +:103FF0002F30310509F038C323C3182F411101C0F8 +:1040000002C01295107FFF2059F0112309F46BC2F2 +:10401000812F6F830E94CF280E94F8286F8163C28E +:10402000862F0E942F1F112309F41EC3812F0E9487 +:10403000D52827960FB6F894DEBF0FBECDBFDF910F +:10404000CF911F910F91FF90EF90DF90CF90BF9095 +:104050000C94F828403211F08295807F662319F085 +:10406000613071F523C0FF20B1F0511101C032C0A1 +:10407000513081F527960FB6F894DEBF0FBECDBF45 +:10408000DF91CF911F910F91FF90EF90DF90CF9034 +:10409000BF900C94DF28511101C003C0513009F4C6 +:1040A000E3C28E830E94E2288E819AC1FF2021F014 +:1040B000563008F0D9C20EC0553008F0D5C290C1B4 +:1040C000FF20C9F0552331F0F801958190FF0BC214 +:1040D0009F70958327960FB6F894DEBF0FBECDBFB5 +:1040E000DF91CF911F910F91FF90EF90DF90CF90D4 +:1040F000BF900C94801F552309F472C109C22B2D67 +:1041000026952695237030E02115310529F02130C0 +:10411000310509F0A9C219C0FF2021F0862F9B2D7F +:10412000937002C080E090E027960FB6F894DEBF4F +:104130000FBECDBFDF91CF911F910F91FF90EF90F8 +:10414000DF90CF90BF900C94471DFF2021F0862F69 +:104150009B2D937002C080E090E027960FB6F894F4 +:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA +:10417000EF90DF90CF90BF900C945D1D862FFF20B5 +:1041800019F00E945C2C02C00E94C42C27960FB626 +:10419000F894DEBF0FBECDBFDF91CF911F910F917D +:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14 +:1041B000837009F079C0F11057C2262F22952695F9 +:1041C0002770220F220F862F8F70C82ED12CE12C42 +:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A +:1041E000D2F764FF10C06FE070E080E090E004C0A0 +:1041F000660F771F881F991F2A95D2F760957095D3 +:104200008095909503C060E070E0CB012B2D269542 +:1042100026952370422F50E042305105D9F04330AB +:10422000510569F16C297D298E299F29413051055D +:1042300051F127960FB6F894DEBF0FBECDBFDF91C8 +:10424000CF911F910F91FF90EF90DF90CF90BF9093 +:104250000C9475276C297D298E299F2927960FB6E6 +:10426000F894DEBF0FBECDBFDF91CF911F910F91AC +:10427000FF90EF90DF90CF90BF900C9487270E9423 +:104280007527C701B60127960FB6F894DEBF0FBE9B +:10429000CDBFDF91CF911F910F91FF90EF90DF90F5 +:1042A000CF90BF900C946327FF2019F08B2D817065 +:1042B00001C08695882309F4D7C1262F229526951B +:1042C0002770220F220F862F8F70C82ED12CE12C41 +:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439 +:1042E000D2F764FF10C06FE070E080E090E004C09F +:1042F000660F771F881F991F2A95D2F760957095D2 +:104300008095909503C060E070E0CB012B2D269541 +:1043100026952370422F50E042305105D9F04330AA +:10432000510569F16C297D298E299F29413051055C +:1043300051F127960FB6F894DEBF0FBECDBFDF91C7 +:10434000CF911F910F91FF90EF90DF90CF90BF9092 +:104350000C9414286C297D298E299F2927960FB645 +:10436000F894DEBF0FBECDBFDF91CF911F910F91AB +:10437000FF90EF90DF90CF90BF900C9426280E9482 +:104380001428C701B60127960FB6F894DEBF0FBEFA +:10439000CDBFDF91CF911F910F91FF90EF90DF90F4 +:1043A000CF90BF900C940228603F59F120F4603EFA +:1043B00008F494C008C0623F09F467C0F0F1633F9D +:1043C00009F08CC065C0162F1F708B2D8F71FF20D8 +:1043D00021F00E94AD27812F7DCE0E94C827812F1A +:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9 +:1043F0001F910F91FF90EF90DF90CF90BF900C94A2 +:10440000871FFF20B1F0553008F02EC18B2D8F7122 +:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8 +:104420001F910F91FF90EF90DF90CF90BF900C9471 +:10443000E727563008F018C1E9CFFF2099F08B2DFF +:104440008F7127960FB6F894DEBF0FBECDBFDF91F8 +:10445000CF911F910F91FF90EF90DF90CF90BF9081 +:104460000C94AD278B2D8F7127960FB6F894DEBF75 +:104470000FBECDBFDF91CF911F910F91FF90EF90B5 +:10448000DF90CF90BF900C94C827F110EBCFD7CF1F +:10449000FF2099F08B2D8F7127960FB6F894DEBF11 +:1044A0000FBECDBFDF91CF911F910F91FF90EF9085 +:1044B000DF90CF90BF900C949E2727960FB6F8946C +:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047 +:1044D000EF90DF90CF90BF900C949927FF20A9F028 +:1044E000552309F4ACCF862F27960FB6F894DEBF7C +:1044F0000FBECDBFDF91CF911F910F91FF90EF9035 +:10450000DF90CF90BF900C94671E552309F4AACF7B +:10451000862F27960FB6F894DEBF0FBECDBFDF9172 +:10452000CF911F910F91FF90EF90DF90CF90BF90B0 +:104530000C942F1F4B2D4F70C8010E941A03279611 +:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4 +:104550000F91FF90EF90DF90CF90BF900C94CB26FF +:10456000F11082C09B2D9F70492F50E042305105C1 +:1045700099F144F44115510569F04130510509F0B4 +:1045800073C019C043305105C1F14430510509F0E1 +:104590006BC044C027960FB6F894DEBF0FBECDBFE8 +:1045A000DF91CF911F910F91FF90EF90DF90CF900F +:1045B000BF900C94223027960FB6F894DEBF0FBE42 +:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2 +:1045D000CF90BF900C94393027960FB6F894DEBF79 +:1045E0000FBECDBFDF91CF911F910F91FF90EF9044 +:1045F000DF90CF90BF900C94553027960FB6F8946B +:10460000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10461000EF90DF90CF90BF900C946830862F279654 +:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3 +:104630000F91FF90EF90DF90CF90BF900C948C3053 +:104640004B2D4F70C80127960FB6F894DEBF0FBEF2 +:10465000CDBFDF91CF911F910F91FF90EF90DF9031 +:10466000CF90BF900C941B0927960FB6F894DEBF2D +:104670000FBECDBFDF91CF911F910F91FF90EF90B3 +:10468000DF90CF90BF9008950E94DC280E94B1284F +:104690000E94F8280E94F72D0E944B2D80E090E0A8 +:1046A0000E94471D80E090E00C945D1D0E94CC2884 +:1046B0000C9444230E943928292F22952F7030E032 +:1046C0002C3031054CF42A3031056CF4225031097C +:1046D0002230310590F407C02C30310551F02F30D5 +:1046E000310559F406C0803E10F0803F31F481E07E +:1046F000089593FB882780F9089580E00895CF936B +:10470000DF9300D000D01F92CDB7DEB70F900F908F +:104710000F900F900F90DF91CF910895CF93DF937B +:1047200000D000D000D0CDB7DEB726960FB6F894F3 +:10473000DEBF0FBECDBFDF91CF9108951F93CF9302 +:10474000DF93C091DB0216E012C0D0E01C9FF001A5 +:104750001D9FF00D1124E555FD4F4081518162816F +:104760007381848195810E948E232196C7708091E8 +:10477000DC02C813EACFDF91CF911F9108954091D9 +:10478000A5025091A6026091A7027091A8028091A3 +:10479000A9029091AA020C948E230F931F93CF939A +:1047A000DF938091AA0282958F7009F069C0809191 +:1047B000A702882309F464C0A091DB02D091DC0237 +:1047C000B091A502C091A6028091A8029091A90281 +:1047D00021E030E0BF3F11F020E030E0122FBC01BB +:1047E0006095709506E04AC0009721F0CF3F29F40C +:1047F000212F05C021E030E002C020E030E020FDA4 +:104800003BC04A2F50E0049FF001059FF00D11249A +:10481000E555FD4F2181C2132FC02081B2132CC05A +:104820002281211129C0238134812817390718F0EA +:10483000281B390B02C0260F371F283C3105E0F436 +:104840008091AA028F7080618093AA0286E0849F83 +:10485000F001859FF00D1124E055FD4F80818F7090 +:104860008061808385EA92E00E948E1FDF91CF9164 +:104870001F910F910C949E23AF5FA770AD13B4CF1F +:10488000DF91CF911F910F910895EF92FF920F93B7 +:104890001F93CF93DF93CDB7DEB762970FB6F8942F +:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695 +:1048B00001900D928A95E1F7D8014C9111965C9187 +:1048C000119712966C9112971396ED90FC90149795 +:1048D0007091A502E091A6028091A8029091A90290 +:1048E000009739F0EF3F41F421E030E07F3F31F0B5 +:1048F00003C021E030E002C020E030E020FD5CC1D8 +:104900002091A702222309F4F1C0E816F90628F045 +:104910009701281B390BC90104C0809590958E0D15 +:104920009F1D883C910508F098C08091AA02982F9D +:10493000907F09F064C0E51314C0741312C06111B4 +:1049400010C08F7080618093AA020E94BF2385EA05 +:1049500092E00E948E1F8091AA02D80115968C9336 +:1049600043C1EF2839F05F3F41F481E090E04F3FD1 +:1049700031F003C081E090E002C080E090E080FD73 +:1049800003C081E0862702C080E090E080FF2EC057 +:104990008091DB022091DC0236E013C090E0389F6A +:1049A000F001399FF00D1124E555FD4F718157132A +:1049B00006C07081471303C07281671317C0019648 +:1049C00087708213EBCF12C19F7059F0882309F4CE +:1049D0000BC107C09F7029F0F8019581907F09F401 +:1049E00003C1805E883008F4FFC0D2C0662309F49A +:1049F000FBC08091AA0281608093AA02F5C0E513F2 +:104A000008C0741306C0611104C0D80115968C93B8 +:104A10009DC04D875E878D859E856A8B0E945A2337 +:104A20006A89882309F4B4C0662309F4B1C02091CF +:104A3000AA02822F82958F7090E002970CF4C6C074 +:104A40008091A5029091A60298878F831986FB8694 +:104A5000EA862C87CE01079646C08091AA02982F3D +:104A6000907F59F47E2DF98AE88A89890E947F23F4 +:104A700085EA92E00E948E1F95C0E51311C0741361 +:104A80000FC061110DC0F8018583C8010E948E1FFF +:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F +:104AA0004D875E878D859E856A8B0E945A236A8911 +:104AB000882309F46DC0662309F46AC02091AA0214 +:104AC000822F82958F7090E002970CF47FC08091C6 +:104AD000A5029091A6029A8389831B82FD82EC82B3 +:104AE0002E83CE0101960E948E1F70C0E816F90633 +:104AF00028F09701281B390BC90104C080959095B7 +:104B00008E0D9F1D883C910508F046C0662309F470 +:104B10003FC0E51330C074132EC02091AA0220FDBF +:104B200021C0322F32953F70832F90E00097D1F053 +:104B3000D80115962C9315970F9741F0832F8F5F0F +:104B40008295807F2F70282B15962C93C8010E9488 +:104B50008E1F86E0F801A5EAB2E001900D928A95D9 +:104B6000E1F73EC086E0F801A5EAB2E001900D92BF +:104B70008A95E1F737C04D875E878D859E850E94B7 +:104B80005A23811123C08091AA0281608093AA02D6 +:104B9000C8010E948E1F26C07E2DF98AE88A898965 +:104BA0000E947F23E5EAF2E086E0DF011D928A950C +:104BB000E9F70E94BF2318C0662351F34D875E8733 +:104BC0008D859E850E945A23882311F386E0F80183 +:104BD000A5EAB2E001900D928A95E1F70E94CD23FB +:104BE0000E94BF2381E014C080E012C04D875E8721 +:104BF0008D859E850E943928292F22952F7030E0BF +:104C0000223031050CF4E0CE243031050CF6E2CE32 +:104C100062960FB6F894DEBF0FBECDBFDF91CF9185 +:104C20001F910F91FF90EF9008951F93CF93DF9303 +:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51 +:104C40004F83588769877A878B879C87CE01079621 +:104C50000E9445248823D9F02F8138858A859B8539 +:104C6000892B39F03F3F19F080E090E004C02F3FDE +:104C7000D9F781E090E0892B09F06DC04F8158850C +:104C800069857A858B859C850E948E2364C086E029 +:104C9000FE013796DE01119601900D928A95E1F79B +:104CA000FF81E8854A855B854115510539F0EF3F65 +:104CB00041F481E090E0FF3F31F003C081E090E0FB +:104CC00002C080E090E080FD46C02091DC0230E030 +:104CD000C9010196877099276091DB0270E0861701 +:104CE000970709F440C0F983EA835D834C8396E01B +:104CF000929FD001939FB00D1124A555BD4FFE0189 +:104D0000319601900D929A95E1F78093DC020E9412 +:104D10009E2321C0189FC001112485559D4F0E94DC +:104D20004524882371F1E091DB021E9FF0011124DC +:104D3000E555FD4F40815181628173818481958168 +:104D40000E948E238091DB0290E001968770992764 +:104D50008093DB0201C016E08091DB029091DC02BF +:104D60008913D8CF0EC00E9456231092DC021092F5 +:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1 +:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1 +:104D9000CF911F910895DF92EF92FF920F931F938F +:104DA000CF93DF93EC01009709F46EC0D12CEE2471 +:104DB000E394F12C8E010F5F1F4FFE018491843725 +:104DC00048F4843008F04CC0813071F0823009F032 +:104DD0005BC01EC0853709F43FC080F1982F9458FE +:104DE000903708F051C03FC02296F8018491982F67 +:104DF000905E983050F48770FE2D01C0FF0F8A95A9 +:104E0000EAF78F2F0E94CF2813C00E94671E2FC081 +:104E10002296F8018491982F905E983060F4877004 +:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B +:104E30000E94F8281CC00E942F1F19C02296F8015A +:104E4000049107C08FE99FE00197F1F700C00000CF +:104E500001500111F7CF0BC02296F801D49007C082 +:104E60000E94671E03C08F770E942F1FE8018D2DBF +:104E700007C08150EFE9FFE03197F1F700C0000073 +:104E8000882309F497CFF5CFDF91CF911F910F9130 +:104E9000FF90EF90DF9008956093E1027093E2023B +:104EA0008093E3029093E4020C9444236093DD0228 +:104EB0007093DE028093DF029093E0020C9444230F +:104EC00008950C944C270F931F930091E1021091C9 +:104ED000E2022091E3023091E402602B712B822BDD +:104EE000932B1F910F910C944C270F931F930091BC +:104EF000E1021091E2022091E3023091E40260238A +:104F00007123822393231F910F910C944C270F93AD +:104F10001F930091E1021091E2022091E30230918F +:104F2000E40260277127822793271F910F910C9429 +:104F30004C2760E070E0CB010C94562741E050E034 +:104F400060E070E004C0440F551F661F771F8A950C +:104F5000D2F7CB01BA010C94562741E050E060E053 +:104F600070E004C0440F551F661F771F8A95D2F763 +:104F70008091DD029091DE02A091DF02B091E0020B +:104F8000482B592B6A2B7B2BCB01BA010C9456274B +:104F900041E050E060E070E004C0440F551F661F20 +:104FA000771F8A95D2F740955095609570958091BE +:104FB000DD029091DE02A091DF02B091E002482371 +:104FC00059236A237B23CB01BA010C94562741E075 +:104FD00050E060E070E004C0440F551F661F771F6B +:104FE0008A95D2F78091DD029091DE02A091DF02D6 +:104FF000B091E002482759276A277B27CB01BA01E5 +:105000000C9456270F931F930091DD021091DE023E +:105010002091DF023091E002602B712B822B932BC9 +:105020001F910F910C9456270F931F930091DD024F +:105030001091DE022091DF023091E00260237123A3 +:10504000822393231F910F910C9456270F931F9344 +:105050000091DD021091DE022091DF023091E0022A +:1050600060277127822793271F910F910C94562751 +:105070000895CF92DF92EF92FF920F931F93CF93F9 +:10508000DF93EC01C090E102D090E202E090E302F5 +:10509000F090E4028091DD029091DE02A091DF02A7 +:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF +:1050B000B701A601002E04C07695679557954795D0 +:1050C0000A94D2F740FF08C0BE01802F0E947104ED +:1050D0008130910509F007C00150110948F7BE0160 +:1050E00080E00E947104DF91CF911F910F91FF909A +:1050F000EF90DF90CF90089540918B0150918C01FB +:1051000020E030E09FEFFA01E20FF31F62816817A1 +:10511000A1F09F3F19F4611101C0922F2F5F3F4F03 +:105120002630310581F707C0FA01E90FF11D97FD1F +:10513000FA95828308959F3FB9F7089540918B01B6 +:1051400050918C0120E030E0FA01E20FF31F9281D0 +:10515000981301C012822F5F3F4F26303105A1F70F +:10516000089581E090E0E0918B01F0918C01E80FCF +:10517000F91F1082019688309105A9F70895909142 +:10518000E502982B9093E502089580959091E502B1 +:1051900098239093E50208951092E5020895909166 +:1051A000E602982B9093E602089580959091E6028E +:1051B00098239093E60208951092E6020895809352 +:1051C000E70208951092E702089540918B015091F3 +:1051D0008C0120E030E080E0FA01E20FF31F9181C2 +:1051E00091118F5F2F5F3F4F27303105A9F7089549 +:1051F000E0918B01F0918C018091E5028083E09138 +:105200008B01F0918C0180819091E602892B808343 +:105210009091E702992361F0E0918B01F0918C016C +:105220008081892B80830E94E52881110E94E228D9 +:1052300080918B0190918C010C94311D8091FA0327 +:10524000843021F11092F10220E488E190E00FB661 +:10525000F894A895809360000FBE2093600080E0D2 +:105260000E94590383B7817F846083BF83B78160C5 +:1052700083BF7894889583B78E7F83BF88E10FB60C +:10528000F89480936000109260000FBE0895089516 +:105290000895CF9380E00E9459030E9447290E94FD +:1052A000BD070E944829C0E08C2F0E941109892B5C +:1052B00029F4CF5FC530C1F780E001C081E0CF9114 +:1052C00008950E94562380E00E9459030E941130E5 +:1052D0000E94251D0C94E7051F920F920FB60F92A6 +:1052E00011248F939F93AF93BF938091F10281110B +:1052F00013C08091F2029091F302A091F402B09158 +:10530000F5024196A11DB11D8093F2029093F30224 +:10531000A093F402B093F502BF91AF919F918F914A +:105320000F900FBE0F901F90189582E084BD93E000 +:1053300095BD9AEF97BD80936E0008958FB7F8944E +:105340004091F2025091F3026091F4027091F502E3 +:105350008FBFCA010895CF92DF92EF92FF920F9311 +:105360001F932FB7F8944091F2025091F30260918D +:10537000F4027091F5022FBF6A017B01EE24FF2435 +:105380008C0120E030E0C016D106E206F30620F0E2 +:105390009A01281B390B05C09C0120953095240FDC +:1053A000351FC9011F910F91FF90EF90DF90CF90B3 +:1053B00008951F920F920FB60F9211248F939F930F +:1053C000AF93BF938091F2029091F302A091F40207 +:1053D000B091F5020196A11DB11D8093F202909348 +:1053E000F302A093F402B093F502BF91AF919F91A5 +:1053F0008F910F900FBE0F901F9018950E946D1601 +:10540000F8942FEF87EA91E6215080409040E1F731 +:1054100000C0000087E090EBDC01809304049093CF +:105420000504A0930604B09307042CE088E190E003 +:105430000FB6F894A895809360000FBE209360008B +:10544000FFCFCF92DF92EF92FF920F931F93CF93F4 +:10545000DF93C82ED12C01E010E08D2D0E941109A0 +:105460007C01C0E0D0E098010C2E02C0220F331F57 +:105470000A94E2F72E213F21232B29F42196CC30E8 +:10548000D10589F708C06C2F7D2D80E00E944C0467 +:10549000C812F4CF06C0D39485E0D812DECF80E0E6 +:1054A00001C081E0DF91CF911F910F91FF90EF90AC +:1054B000DF90CF900895CF93C82F8CE20E94212ACD +:1054C000882321F08C2FCF910C94212A80E0CF915A +:1054D0000895CF930E94AC2B811102C00E948D2BA6 +:1054E000C5E608C00E94BD078FE39CE90197F1F76C +:1054F00000C00000C150B1F789E20E945B2A81110F +:105500000AC18AE20E945B2A81110E948D2B85E0EC +:105510000E945B2A81110E94FE290E94B72B809372 +:10552000F00287E00E945B2A882399F18BE10E94B8 +:105530005B2A882351F09091F00291FB882780F933 +:1055400021E0822780FB91F922C08EE00E945B2A35 +:10555000882351F09091F00292FB882780F921E096 +:10556000822780FB92F913C080E10E945B2A909110 +:10557000F002882341F093FB882780F921E08227FD +:1055800080FB93F904C0892F809580FB90F990935C +:10559000F0028091F0020E94BB2B0E94C92B8093E5 +:1055A000010380EE0E945B2A882341F08091010371 +:1055B000982F909590FB80F98093010389E30E94D6 +:1055C0005B2A882359F09091010391FB882780F989 +:1055D00021E0822780FB91F99093010382EE0E94E3 +:1055E0005B2A882359F09091010392FB882780F968 +:1055F00021E0822780FB92F99093010386EE0E94BE +:105600005B2A882359F09091010393FB882780F946 +:1056100021E0822780FB93F99093010383EE0E949F +:105620005B2A882359F09091010394FB882780F925 +:1056300021E0822780FB94F99093010385E30E9487 +:105640005B2A882359F09091010395FB882780F904 +:1056500021E0822780FB95F99093010381E30E946A +:105660005B2A882359F09091010396FB882780F9E3 +:1056700021E0822780FB96F99093010381E10E944B +:105680005B2A882359F09091010397FB882780F9C2 +:1056900021E0822780FB97F9909301038091010319 +:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8 +:1056B0005B2A8111C2608FE10E945B2A8111C46064 +:1056C00080E20E945B2A8111C86081E20E945B2A0D +:1056D0008111C06182E20E945B2A8111C06283E273 +:1056E0000E945B2A8111C06484E20E945B2A8823A5 +:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B +:105700006C2F03C00E94C02B682F70E080E090E0F7 +:10571000CF910C946127CF9108956DEE7EEF80E0DC +:1057200090E00E94783460E082E090E00E946A3469 +:1057300060E083E090E00E946A3460E084E090E002 +:105740000E946A3460E085E090E00E946A3460E084 +:1057500086E090E00C946A3480E090E00E9464342B +:1057600021E08D3E9E4F09F020E0822F089582E0D7 +:1057700090E00C945C34682F82E090E00C946A34E2 +:1057800083E090E00C945C34682F83E090E00C940C +:105790006A3484E090E00C945C34682F84E090E0FC +:1057A0000C946A3486E090E00C945C34682F86E0B8 +:1057B00090E00C946A348091FE0280FF0BC06091EF +:1057C000900185E0689FB0011124759567957595E6 +:1057D00067952AC081FF09C06091900185E0689FAC +:1057E000B0011124759567951FC082FF07C06091B5 +:1057F000900185E0689FB001112416C04091F80225 +:105800004423C9F060918F01461788F720919001D9 +:1058100085E0289F90011124429FC001439F900D75 +:10582000112470E00E9448346038710540F461151D +:10583000710539F002C065E070E0862F08958FE7AA +:10584000089581E008958091FE0280FF08C0609174 +:105850008E0170E0759567957595679521C081FFFC +:1058600006C060918E0170E07595679519C082FF42 +:1058700004C060918E0170E010C08091F80288230E +:10588000C1F060918D018617A0F790918E01989FCD +:10589000C001112470E00E9448346038710528F47A +:1058A0006115710521F0862F08958FE7089581E035 +:1058B000089561E070E0F4CF803F21F40E94DB2B7B +:1058C000819504C0813F29F40E94DB2B8093FB0269 +:1058D0000895823F21F40E94DB2B819504C0833F11 +:1058E00029F40E94DB2B8093FA020895893F19F472 +:1058F0000E94232C05C08A3F31F40E94232C8195FD +:105900008093FC0208958B3F21F40E94232C819503 +:1059100004C08C3F29F40E94232C8093FD0208953B +:10592000843F21F48091F902816017C0853F21F402 +:105930008091F902826011C0863F21F48091F902C2 +:1059400084600BC0873F21F48091F902886005C014 +:10595000883F31F48091F90280618093F9020895C3 +:105960008D3F21F48091FE0281600BC08E3F21F4B7 +:105970008091FE02826005C08F3F29F48091FE0273 +:1059800084608093FE020895803F29F48091FB0299 +:1059900087FF6EC007C0813F41F48091FB0218165B +:1059A0000CF066C01092FB0263C09091FA02823F35 +:1059B00019F497FF5DC005C0833F31F419160CF050 +:1059C00057C01092FA0254C0893F31F48091FC0212 +:1059D00018160CF04DC006C08A3F39F48091FC02C5 +:1059E00087FF46C01092FC0243C08B3F29F4809190 +:1059F000FD0287FF3DC006C08C3F39F48091FD0257 +:105A00001816B4F51092FD0233C0843F21F4809142 +:105A1000F9028E7F05C0853F31F48091F9028D7FB8 +:105A20008093F90225C0863F21F48091F9028B7F93 +:105A3000F7CF873F21F48091F902877FF1CF883F2C +:105A400021F48091F9028F7EEBCF8D3F21F480917C +:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F +:105A600005C08F3F29F48091FE028B7F8093FE0258 +:105A70008091FA0281110EC08091FB0281110AC04F +:105A80008091FC02811106C08091FD02811102C04B +:105A90001092F802089589EF92E00E943C1D0E9446 +:105AA0009E299093F7028093F6020895CF938091F8 +:105AB000F6029091F7020E94AB294091F80244232C +:105AC00021F02091910130E006C0209192015AE02E +:105AD000259F900111248217930708F486C08091B6 +:105AE000FA0281110DC09091FB02911109C09091B1 +:105AF000FC02911105C09091FD02992309F475C033 +:105B00004F3F19F04F5F4093F802181624F40E949B +:105B1000DB2B8093FA028091FA0287FF05C00E9476 +:105B2000DB2B81958093FA028091FB02181624F4F6 +:105B30000E94DB2B8093FB028091FB0287FF05C054 +:105B40000E94DB2B81958093FB026091FA02662311 +:105B500039F1C091FB02CC2319F1772767FD7095CD +:105B6000872F972F0E94AC3123E333E343E35FE3B6 +:105B70000E9460320E9479316093FA026C2F77277D +:105B800067FD7095872F972F0E94AC3123E333E395 +:105B900043E35FE30E9460320E9479316093FB022D +:105BA0008091FC02181624F40E94232C8093FC029E +:105BB0008091FC0287FF05C00E94232C8195809371 +:105BC000FC028091FD02181624F40E94232C80937D +:105BD000FD028091FD0287FF05C00E94232C819564 +:105BE0008093FD02CF910C944B2DCF910895E9EF56 +:105BF000F2E085E0DF011D928A95E9F71092F80244 +:105C00001092FE020895833089F130F4813061F002 +:105C1000823009F06EC019C0853009F449C0B8F16E +:105C2000863009F066C055C020919201862F90E021 +:105C3000820F911D8F3F910520F4620F60939201B6 +:105C400008958FEF80939201089520919101862FFE +:105C500090E0820F911D8F3F910520F4620F6093B9 +:105C6000910108958FEF8093910108952091900103 +:105C7000862F90E0820F911D8F3F910520F4620FD7 +:105C80006093900108958FEF809390010895209183 +:105C90008F01862F90E0820F911D8F3F910520F498 +:105CA000620F60938F0108958FEF80938F010895A5 +:105CB00020918E01862F90E0820F911D8F3F9105DC +:105CC00020F4620F60938E0108958FEF80938E0110 +:105CD000089520918D01862F90E0820F911D8F3FB6 +:105CE000910520F4620F60938D0108958FEF8093EA +:105CF0008D010895833021F130F4813059F08230E4 +:105D000009F049C012C0853089F128F1863009F0C8 +:105D100042C037C080919201681720F4861B80939F +:105D2000920108951092920108958091910168174F +:105D300020F4861B8093910108951092910108959B +:105D400080919001681720F4861B8093900108953C +:105D500010929001089580918F01681720F4861B9E +:105D600080938F01089510928F01089580918E0184 +:105D7000681720F4861B80938E01089510928E017F +:105D8000089580918D01681720F4861B80938D0102 +:105D9000089510928D01089541E050E060E070E0B8 +:105DA00004C0440F551F661F771F8A95D2F7CB0199 +:105DB000BA010E9461270C945623873200F58E3178 +:105DC00008F086C08E3009F466C060F4873009F4AC +:105DD0004DC018F4863049F531C0883041F18B3020 +:105DE00021F57BC0863109F478C018F48031E9F4DC +:105DF0005CC0893109F471C08B31B9F442C0883379 +:105E000009F46BC048F4893209F460C0853309F4A1 +:105E10005DC0873251F45AC0833409F457C018F476 +:105E20008A3318F057C0883499F080E008950E94B2 +:105E3000B72B0E94C92B0E94D22B4FC08091F00239 +:105E4000817F8E7F8093F00281E08093FF0208952E +:105E50000E9456232FEF83ED90E321508040904025 +:105E6000E1F700C000000E94FE2937C08091F002D7 +:105E700080FF03C0817F8E7F01C081608093F0022C +:105E80002CC09091F00291FB882780F921E08227B5 +:105E900080FB91F913C09091F00292FB882780F962 +:105EA00021E0822780FB92F909C09091F00293FBD8 +:105EB000882780F921E0822780FB93F99093F002F4 +:105EC000882359F091609093F00207C080E003C0EE +:105ED0008D5101C089530E94CC2E81E0089580E04D +:105EE000089580E00895CF93C82F8091FF028130FC +:105EF00071F020F0823009F089C037C0A0918B0189 +:105F0000B0918C018C91823209F082C007C0A091BF +:105F10008B01B0918C018C91823249F48C2F0E94BC +:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64 +:105F30000E94712F811115C0C43169F030F4CB304B +:105F400081F0C03109F068C009C0C93221F0C833FE +:105F500009F062C006C01092FF025EC082E080932A +:105F6000FF0281E090E081705AC0C932C9F060F44C +:105F7000C431B1F020F4C73009F04CC034C0CE5168 +:105F8000C63008F047C017C0CE3439F120F4CB3406 +:105F900009F040C01CC0C135C1F0C235D9F513C0ED +:105FA00080910003882319F01092000333C081E030 +:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161 +:105FC0008093000327C061E003C061E007C06AE07E +:105FD000809100030E94032E1DC06AE0809100039F +:105FE0000E947A2E17C08EE18093920182E3809303 +:105FF00091018AE08093900184E180938F0188E091 +:1060000080938E0188E280938D0104C01092FF027C +:1060100080E005C081E003C080E090E0A4CFCF9194 +:1060200008950E94AC2B811102C00E948D2B0E940A +:10603000D22B8093030480FF02C0869501C080E0CC +:106040000C94590380910304982F9695292F30E0E2 +:10605000233031054CF49F5F990F8170892B81604B +:10606000809303040E94D62B8091030486950C94A0 +:10607000590380910304982F969591F09158990FA8 +:106080008170892B809303048E7F91E009F490E066 +:106090008091030490FB80F9809303040E94D62B27 +:1060A0008091030486950C94590380910304982FE2 +:1060B000909590FB80F9809303040E94D62B8091E9 +:1060C000030480FF02C0869501C080E00C94590350 +:1060D00030910304232F26952F5F2F77822F90E096 +:1060E000317004972CF4220F232B2093030402C059 +:1060F0003093030480910304282F2E7F91E009F44C +:1061000090E090FB80F9809303040E94D62B80914D +:10611000030486950C94590320910304922F9695BD +:106120009827990F822F8170892B809303048E7F8B +:1061300091E009F490E08091030490FB80F9809352 +:1061400003040E94D62B8091030486950C94590376 +:106150005058BB27AA270ED075C166D130F06BD13D +:1061600020F031F49F3F11F41EF45BC10EF4E09572 +:10617000E7FB51C1E92F77D180F3BA1762077307A4 +:106180008407950718F071F49EF58FC10EF4E09521 +:106190000B2EBA2FA02D0B01B90190010C01CA01E1 +:1061A000A0011124FF27591B99F0593F50F4503E8C +:1061B00068F11A16F040A22F232F342F4427585F7E +:1061C000F3CF469537952795A795F0405395C9F796 +:1061D0007EF41F16BA0B620B730B840BBAF091504E +:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED +:1061F000BA0F621F731F841F48F4879577956795C0 +:10620000B795F7959E3F08F0B3CF9395880F08F0A8 +:106210009927EE0F979587950895D9D008F481E0D6 +:1062200008950CD00FC107D140F0FED030F021F41A +:106230005F3F19F0F0C0511139C1F3C014D198F388 +:106240009923C9F35523B1F3951B550BBB27AA27F7 +:1062500062177307840738F09F5F5F4F220F331F69 +:10626000441FAA1FA9F333D00E2E3AF0E0E830D035 +:1062700091505040E695001CCAF729D0FE2F27D038 +:10628000660F771F881FBB1F261737074807AB0706 +:10629000B0E809F0BB0B802DBF01FF2793585F4F7B +:1062A0002AF09E3F510568F0B6C000C15F3FECF395 +:1062B000983EDCF3869577956795B795F7959F5F40 +:1062C000C9F7880F911D9695879597F90895E1E094 +:1062D000660F771F881FBB1F621773078407BA07F3 +:1062E00020F0621B730B840BBA0BEE1F88F7E0954E +:1062F000089504D06894B111D9C00895BCD088F035 +:106300009F5790F0B92F9927B751A0F0D1F0660FA1 +:10631000771F881F991F1AF0BA95C9F712C0B130BC +:1063200081F0C3D0B1E00895C0C0672F782F8827CF +:10633000B85F39F0B93FCCF3869577956795B395FB +:10634000D9F73EF490958095709561957F4F8F4F6A +:106350009F4F0895E89409C097FB3EF4909580956F +:10636000709561957F4F8F4F9F4F9923A9F0F92F1B +:1063700096E9BB279395F695879577956795B79599 +:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F +:106390007F4F8F4F9F4F16C0882311F096E911C091 +:1063A000772321F09EE8872F762F05C0662371F0B2 +:1063B00096E8862F70E060E02AF09A95660F771FC6 +:1063C000881FDAF7880F9695879597F90895990FA2 +:1063D0000008550FAA0BE0E8FEEF16161706E807AF +:1063E000F907C0F012161306E407F50798F0621BD0 +:1063F000730B840B950B39F40A2661F0232B242BA5 +:10640000252B21F408950A2609F4A140A6958FEFC3 +:10641000811D811D089597F99F6780E870E060E015 +:1064200008959FEF80EC089500240A94161617062D +:1064300018060906089500240A9412161306140675 +:1064400005060895092E0394000C11F4882352F0D8 +:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90 +:106460008F4F9F4F089557FD9058440F551F59F077 +:106470005F3F71F04795880F97FB991F61F09F3F31 +:1064800079F087950895121613061406551FF2CF5A +:106490004695F1DF08C0161617061806991FF1CFAA +:1064A00086957105610508940895E894BB276627D1 +:1064B0007727CB0197F908958ADF08F48FEF0895C5 +:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C +:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7 +:1064E000950F50E0551F629FF001729FBB27F00D82 +:1064F000B11D639FAA27F00DB11DAA1F649F6627D7 +:10650000B00DA11D661F829F2227B00DA11D621F25 +:10651000739FB00DA11D621F839FA00D611D221FDF +:10652000749F3327A00D611D231F849F600D211DC3 +:10653000822F762F6A2F11249F5750408AF0E1F066 +:1065400088234AF0EE0FFF1FBB1F661F771F881FAF +:1065500091505040A9F79E3F510570F05CCFA6CFF7 +:106560005F3FECF3983EDCF3869577956795B7959A +:10657000F795E7959F5FC1F7FE2B880F911D9695C4 +:10658000879597F90895FA01EE0FFF1F30962105C0 +:10659000310599F16115710561F48038BFE39B07FE +:1065A00049F168949038810561F08038BFEF9B070E +:1065B00041F0992342F5FF3FE1053105210511F135 +:1065C000E8940894E795D901AA2329F4AB2FBE2FAC +:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD +:1065E00050F019F0FF3A38F49F779F930CD00F903A +:1065F00007FC905808953EF014CF60E070E080E80A +:106600009FE308954FE79F775F934F933F932F93B7 +:106610009ED02F913F914F915F9152DF05C019F4A9 +:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784 +:1066300007F80F92E8942BE33AEA48EB5FE74EDF66 +:106640000F920F920F924DB75EB70F92C0D0ECEA47 +:10665000F0E016D04F915F91EF91FF91E595EE1F1D +:10666000FF1F49F0FE57E0684427EE0F441FFA95DC +:10667000E1F74195550B32D00F9007FE26C00895E3 +:10668000DF93CF931F930F93FF92EF92DF927B01E3 +:106690008C01689405C0DA2EEF011EDFFE01E8943C +:1066A000A5912591359145915591AEF3EF0162DDAC +:1066B000FE019701A801DA9479F7DF90EF90FF903F +:1066C0000F911F91CF91DF9108959B01AC0160E084 +:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1 +:1066E0009923D9F3940F511DBBF39150504094F06E +:1066F00059F0882332F0660F771F881F9150504061 +:10670000C1F79E3F510544F7880F911D96958795D7 +:1067100097F908955F3FACF0983E9CF0BB278695B3 +:1067200077956795B79508F4B1609395C1F7BB0F5E +:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87 +:10674000E3CFB4CE0EF076C06CCE689464CE93DE08 +:10675000C8F39923D1F3C6F3DF93CF931F930F931D +:10676000FF92C92FDD2788232AF02197660F771F14 +:10677000881FDAF720E030E040E85FEB9FE38839DC +:1067800020F0803E30F021968F77E3DCE4EDF0E0FE +:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F +:1067A000FB2E6F5771097595771F880B990BD4DDF8 +:1067B00028E132E741E35FE38FDEAF2D9801AE01C0 +:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166 +:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785 +:1067E0003327442750781FC0B75188F4AB2F0024BB +:1067F000469537952795011CA395D2F3002069F0A3 +:10680000220F331F441FB395DAF30DD0A1CC6130B2 +:106810007105A0E88A07B94630F49B01AC016627F0 +:10682000772788279078309621F020833183428320 +:10683000538308959F3F31F0915020F487957795C9 +:106840006795B795880F911D9695879597F9089547 +:10685000991B79E004C0991F961708F0961B881FB2 +:106860007A95C9F780950895AA1BBB1B51E107C013 +:10687000AA1FBB1FA617B70710F0A61BB70B881FD0 +:10688000991F5A95A9F780959095BC01CD0108955F +:1068900097FB072E16F4009407D077FD09D00E94CD +:1068A000343407FC05D03EF4909581959F4F0895B0 +:1068B000709561957F4F0895F999FECF92BD81BD86 +:1068C000F89A992780B50895A8E1B0E042E050E039 +:1068D0000C947F34262FF999FECF1FBA92BD81BD4B +:1068E00020BD0FB6F894FA9AF99A0FBE0196089552 +:1068F0000E946A34272F0C946B34DC01CB01FC011D +:10690000F999FECF06C0F2BDE1BDF89A319600B408 +:0E6910000D9241505040B8F70895F894FFCF13 +:10691E0055D0A44600001644000000000000484276 +:10692E0061978A460000C8430000000000004842FC +:10693E0055D024460000C843000000000000484225 +:10694E0000005C460000C843000000000000484202 +:10695E0061978A4600007A4455D0A4460000C84389 +:10696E00000000000000484200005C460000C843E2 +:10697E00000000000000484255D024460000164496 +:10698E000507000C058540000001064000000100CF +:10699E0091102111FD10C810941001E8022808145E +:1069AE000A321E42004500250026004300610060A9 +:1069BE000020003700640065006600670044004652 +:1069CE000024004700000002000400050007000933 +:1069DE00000B000C000E0010001100130015001724 +:1069EE000018001A001C001D001F002100230024A7 +:1069FE00002600280029002B002D002F0030003229 +:106A0E000034003500370039003B00F6030F042830 +:106A1E0004410469051C05E604C6043F4D362002F8 +:106A2E000302000001000101010101000101010248 +:086A3E00030405060708090026 +:00000001FF diff --git a/keyboard/preonic/preonic_pcb_silent.hex b/keyboard/preonic/preonic_pcb_silent.hex new file mode 100644 index 000000000..cc59d3fe8 --- /dev/null +++ b/keyboard/preonic/preonic_pcb_silent.hex @@ -0,0 +1,1189 @@ +:100000000C9465020C94A9020C94A9020C94A90208 +:100010000C94A9020C94A9020C94A9020C94A902B4 +:100020000C94A9020C94A9020C94430D0C94150E87 +:100030000C942B1C0C94A9020C94A9020C94A902F8 +:100040000C94A9020C94A9020C94A9020C94A90284 +:100050000C94A9020C94981C0C94A9020C94A9026B +:100060000C94A9020C94A9020C94A9020C94A90264 +:100070000C94A9020C94A9020C94A9020C94A90254 +:100080000C94A9020C94A9020C94A9020C94A90244 +:100090000C94A9020C94A9020C94A9020C94A90234 +:1000A0000C94A9020C94A9020C94A90235001E001C +:1000B0001F0020002100220023002400250026002C +:1000C00027002A002B0014001A0008001500170052 +:1000D0001C0018000C00120013002A002900040064 +:1000E0001600070009000A000B000D000E000F00AB +:1000F00033003400E1001D001B000600190005005C +:100100001100100036003700380028000030E000F1 +:10011000E200E30003522C002C0004525000510076 +:1001200052004F0035001E001F0020002100220059 +:10013000230024002500260027002A002B0014009D +:100140001A00090013000A000D000F0018001C001F +:1001500033002A00290004001500160017000700CC +:100160000B00110008000C0012003400E1001D001B +:100170001B000600190005000E00100036003700B5 +:10018000380028000030E000E200E30003522C00B9 +:100190002C0004525000510052004F0035001E0048 +:1001A0001F0020002100220023002400250026003B +:1001B00027002A002B0034003600370013001C00F3 +:1001C00009000A00060015000F002A00290004009B +:1001D0001200080018000C0007000B0017001100A7 +:1001E00016003800E100330014000D000E001B0063 +:1001F000050010001A0019001D0028000030E00062 +:10020000E200E30003522C002C0004525000510085 +:1002100052004F0035001E001F0020002100220068 +:10022000230024002500260027002A0035021E0294 +:100230001F0220022102220223022402250226029A +:1002400027022A0001003A003B003C003D003E002E +:100250003F002D022E022F02300231020100400029 +:100260004100420043004400450000530153025343 +:100270000050010001000100010001000100010027 +:1002800001000100AB00AA00A900AE0035001E006D +:100290001F0020002100220023002400250026004A +:1002A00027002A0035001E001F0020002100220028 +:1002B000230024002500260027002A0001003A0020 +:1002C0003B003C003D003E003F002D002E002F0073 +:1002D0003000310001004000410042004300440072 +:1002E000450000530153025300500100010001007A +:1002F000010001000100010001000100AB00AA00A3 +:10030000A900AE002A0354006800650020005000D8 +:10031000720065006F006E006900630020004B00F2 +:100320006500790062006F006100720064000000E7 +:100330002C034F007200740068006F006C006900AD +:100340006E0065006100720020004B0065007900BE +:1003500062006F006100720064007300000004031B +:10036000090409027400040100A0FA090400000154 +:1003700003010100092111010001223F000705814D +:100380000308000A09040100010301020009211108 +:10039000010001224D000705820308000A0904023A +:1003A00000010300000009211101000122360007AD +:1003B00005830308000A0904030002030000000982 +:1003C00021110100012220000705840320000107FC +:1003D0000504032000011201100100000008EDFED9 +:1003E00061600100010200010631FF0974A10109E9 +:1003F00075150025FF9520750881020976150025E1 +:10040000FF952075089102C005010980A1018502B0 +:1004100016010026B7001A01002AB70075109501D1 +:100420008100C0050C0901A1018503160100269C6D +:10043000021A01002A9C02751095018100C0050175 +:100440000902A1010901A1000509190129051500E9 +:10045000250195057501810295017503810105014D +:10046000093009311581257F950275088106093803 +:100470001581257F950175088106050C0A3802153E +:1004800081257F950175088106C0C005010906A177 +:1004900001050719E029E715002501950875018177 +:1004A0000295017508810105081901290595057551 +:1004B0000191029501750391010507190029FF15A6 +:1004C0000025FF950675088100C011241FBECFEFDF +:1004D000DAE0DEBFCDBF04B603FE24C08091F10197 +:1004E0009091F201A091F301B091F4018730904B0B +:1004F000A740B04BB9F41092F1011092F2011092A2 +:10050000F3011092F40114BE84B7877F84BF88E1A1 +:100510000FB6F89480936000109260000FBEE0E088 +:10052000F8E3099511E0A0E0B1E0E0EEF9E402C0E3 +:1005300005900D92A435B107D9F711E0A4E5B1E01B +:1005400001C01D92A13FB107E1F70E94720A0C940D +:10055000EE240C94000061110DC0FC0182818823FF +:1005600031F085EE0E9426110E94272303C085EEFC +:100570000E94EE1180E090E00895089508950E9491 +:10058000D1026E9A769A8DEB92E0892B11F00C9441 +:10059000BD0208958EEB92E0892B11F00C94BE02FF +:1005A0000895279A2F988FEF9FEF9093870080935D +:1005B00086008AE08093800089E1809381000C941A +:1005C000D02281110BC080918000877F80938000B2 +:1005D00010928D0010928C002F9808952F988330E0 +:1005E00041F4809180008860809380008FEF9FEFBE +:1005F00012C09091800098609093800023E030E0DA +:10060000281B3109220F331F8FEF9FEF02C09695F1 +:1006100087952A95E2F790938D0080938C0008953A +:100620008B3B910568F4883A910530F5853A910540 +:10063000C0F48430910598F4019709F06FC071C03F +:10064000803E910508F46AC0883E910540F09C0107 +:10065000205F31092031310508F060C05CC09C0189 +:10066000A1C0853A910509F45FC0863A910509F465 +:100670005EC023E830E496C0883A910509F45AC078 +:10068000893A910509F459C08A3A910509F458C08C +:100690008B3A910509F457C08C3A910509F456C07C +:1006A0008D3A910509F455C0803B910509F454C079 +:1006B0008E3A910509F453C08F3A910509F452C05E +:1006C000813B910509F451C0823B910509F450C06A +:1006D000833B910509F44FC0843B910509F44EC05A +:1006E000853B910509F44DC0863B910509F44CC04A +:1006F000873B910509F44BC0883B910509F44AC03A +:10070000893B910509F449C08A3B910509F048C02D +:100710002AE236E447C09C01306544C020E030E066 +:1007200041C021E030E03EC021E830E43BC022E897 +:1007300030E438C022EE34E435C029EE34E432C06F +:100740002AEE34E42FC025EB34E42CC026EB34E44D +:1007500029C027EB34E426C02CEC34E423C02DEC74 +:1007600034E420C023E835E41DC02AE835E41AC08B +:1007700022E935E417C024E935E414C021E236E467 +:1007800011C023E236E40EC024E236E40BC025E2B9 +:1007900036E408C026E236E405C027E236E402C0AB +:1007A00020E034E4C901089508959CE0799FF001A8 +:1007B00011249CE3899FE00DF11D1124E60FF11D2A +:1007C000EE0FFF1FE455FF4F25913491C9010895A5 +:1007D000880F991F845D9040FC0125913491C901D7 +:1007E0000895880F991F84559F4FFC0125913491DE +:1007F000C90108950E94D5039C019A9581159F41D6 +:1008000010F4C9010895C90190528115904128F44E +:10081000C9019F700E94F1030895C9019053811589 +:10082000904120F4C9019927906C0895C901905412 +:10083000409728F4C9018F709927946D089520314D +:1008400080E4380719F480E091ED0895213190E4B7 +:10085000390719F480E090ED0895223140E434071F +:1008600019F480E092ED0895233180E4380719F4FB +:1008700080E093ED0895211590E5390769F40E9411 +:1008800015162FEF44E38CE0215040408040E1F703 +:1008900000C000000C94BD1C213090E5390731F4F4 +:1008A0008091D00181608093D0010895C901905555 +:1008B0008115904108F062C0432F55274F7055278E +:1008C00041305105F9F4C90174E0880F991F7A95F8 +:1008D000E1F788279370B901E3E0660F771FEA9587 +:1008E000E1F760767727862B972B9C682370332758 +:1008F00002C0440F551F2A95E2F74F715527842BEC +:10090000952B08954230510529F4922F8827816F45 +:10091000906A089543305105B9F4C90153E0880F36 +:10092000991F5A95E1F7807E97702370332741E035 +:1009300050E002C0440F551F2A95E2F74F7155272A +:10094000842B952B9C6808954430510549F5C901C5 +:1009500043E0880F991F4A95E1F7807E97702370D6 +:10096000332741E050E002C0440F551F2A95E2F7BB +:100970004F715527842B952B9A680895C90190577C +:100980008115904120F4C9019F7090620895C901BA +:1009900090588115904120F4C9019F70906A089584 +:1009A000203E3105E0F4203C310568F52133310566 +:1009B00009F475C048F42932310509F46BC02A32B4 +:1009C000310509F07BC075C02933310501F12238AA +:1009D0003105E9F02533310509F070C051C0233EDF +:1009E0003105B1F140F4203E3105D1F0223E310510 +:1009F00009F064C01CC0263E310579F1273E31055F +:100A000009F05CC038C0C9010E94E80308958091D4 +:100A1000E10180FD02C081FF51C080EE90E04FC037 +:100A20008091E10180FFF9CF89E390E048C0809197 +:100A3000E10182FF0AC08091E10184FF03C080E0F0 +:100A400090E03DC083EE90E03AC082EE90E037C087 +:100A50008091E10182FFEFCFF8CF8091E10183FF28 +:100A600007C08091E10184FDEACF87EE90E027C0C6 +:100A700086EE90E024C08091E10183FFF2CFF8CFB1 +:100A80008091E10185FF03C089E290E018C085E311 +:100A900090E015C08091E10185FDF9CFF5CF8091FF +:100AA000E10186FF03C08AE290E009C081E390E0A3 +:100AB00006C08091E10186FDF9CFF5CFC9010E9402 +:100AC0001003089508955F926F927F928F929F9284 +:100AD000AF92BF92CF92DF92EF92FF920F931F934C +:100AE000CF93DF93CDB7DEB72A970FB6F894DEBF6A +:100AF0000FBECDBF9E012F5F3F4F4E018BE0880E92 +:100B0000911C60E070E000E010E0E12CF12CC12CC1 +:100B1000D12CA12CB12C8AE0782E622E532E41E0EC +:100B200050E0E4E1F1E0A62DB52D872D01900D9266 +:100B30008A95E1F7F901819191919F01FC01E07F94 +:100B4000FF27E032F10559F48F709927FA0102C0AE +:100B5000EE0FFF1F8A95E2F7AE2ABF2A37C0E033B7 +:100B6000F10559F48F709927FA0102C0EE0FFF1FAB +:100B70008A95E2F7CE2ADF2A29C0E034F10559F43C +:100B80008F709927FA0102C0EE0FFF1F8A95E2F7D6 +:100B9000EE2AFF2A1BC0E035F10559F48F70992722 +:100BA000FA0102C0EE0FFF1F8A95E2F70E2B1F2BF2 +:100BB0000DC0E036F10551F48F709927FA0102C09B +:100BC000EE0FFF1F8A95E2F76E2B7F2B2815390554 +:100BD00009F0A7CF94B18A2D8095892384B985B176 +:100BE0008A2985B997B18C2D8095892387B988B1D9 +:100BF0008C2988B99AB18E2D809589238AB98BB1B9 +:100C00008E298BB99DB1802F809589238DB98EB1A6 +:100C1000802B8EB990B3862F8095892380BB81B3BA +:100C2000862B81BB2A960FB6F894DEBF0FBECDBFD0 +:100C3000DF91CF911F910F91FF90EF90DF90CF90B8 +:100C4000BF90AF909F908F907F906F905F9008952E +:100C50005F926F927F928F929F92AF92BF92CF924C +:100C6000DF92EF92FF920F931F93CF93DF93CDB755 +:100C7000DEB768970FB6F894DEBF0FBECDBF85B75D +:100C8000806885BF85B7806885BF0E9463059E0127 +:100C90002F5F3F4F4E0189E1880E911C60E070E0AC +:100CA00000E010E0E12CF12CC12CD12CA12CB12CB6 +:100CB00098E1792E622E532E41E050E0EEE1F1E012 +:100CC000A62DB52D872D01900D928A95E1F7F9019A +:100CD000819191919F01FC01E07FFF27E032F105B6 +:100CE00059F48F709927FA0102C0EE0FFF1F8A9501 +:100CF000E2F7AE2ABF2A37C0E033F10559F48F700E +:100D00009927FA0102C0EE0FFF1F8A95E2F7CE2A5B +:100D1000DF2A29C0E034F10559F48F709927FA01D0 +:100D200002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0D2 +:100D3000E035F10559F48F709927FA0102C0EE0FE2 +:100D4000FF1F8A95E2F70E2B1F2B0DC0E036F10531 +:100D500051F48F709927FA0102C0EE0FFF1F8A9598 +:100D6000E2F76E2B7F2B2815390509F0A7CF94B138 +:100D70008A2D8095892384B985B18A2985B997B14F +:100D80008C2D8095892387B988B18C2988B99AB12F +:100D90008E2D809589238AB98BB18E298BB99DB10F +:100DA000802F809589238DB98EB1802B8EB990B319 +:100DB000862F8095892380BB81B3862B81BB1092BF +:100DC00055011092540110925F0110925E01109231 +:100DD0005701109256011092610110926001109219 +:100DE0005901109258011092630110926201109201 +:100DF0005B0110925A0110926501109264011092E9 +:100E00005D0110925C0110926701109266018FEBF8 +:100E100092E0892BB9F068960FB6F894DEBF0FBE4A +:100E2000CDBFDF91CF911F910F91FF90EF90DF9099 +:100E3000CF90BF90AF909F908F907F906F905F907A +:100E40000C94BF0268960FB6F894DEBF0FBECDBFFC +:100E5000DF91CF911F910F91FF90EF90DF90CF9096 +:100E6000BF90AF909F908F907F906F905F9008950C +:100E70005F926F927F928F929F92AF92BF92CF922A +:100E8000DF92EF92FF920F931F93CF93DF93CDB733 +:100E9000DEB7A2970FB6F894DEBF0FBECDBF7E01BE +:100EA00049E1E40EF11C2EE5C22E21E0D22E5E01B6 +:100EB00053E2A50EB11C3AE0532E470101E010E0C9 +:100EC00048E1642E55E0752EE4E1F1E0D401852D72 +:100ED00001900D928A95E1F7F701819191917F013F +:100EE0009C01207F33272032310589F424B18F7093 +:100EF0009927A80102C0440F551F8A95E2F7CA013D +:100F0000242B24B995B18095892385B94FC020330E +:100F1000310589F427B18F709927F80102C0EE0FCF +:100F2000FF1F8A95E2F7CF012E2B27B998B1809544 +:100F3000892388B93BC02034310589F42AB18F70E8 +:100F40009927A80102C0440F551F8A95E2F7CA01EC +:100F5000242B2AB99BB1809589238BB927C02035D2 +:100F6000310589F42DB18F709927F80102C0EE0F79 +:100F7000FF1F8A95E2F7CF012E2B2DB99EB18095E8 +:100F800089238EB913C02036310581F420B38F70C8 +:100F90009927A80102C0440F551F8A95E2F7CA019C +:100FA000242B20BB91B38095892381BB50EA5A95AD +:100FB000F1F7BE016F5F7F4F80E090E020E030E00E +:100FC000EEE1F1E0DE011196462D01900D924A9579 +:100FD000E1F7FB0141915191BF01FA01E07FFF2749 +:100FE000E032F10511F4E3B113C0E033F10511F47F +:100FF000E6B10EC0E034F10511F4E9B109C0E03505 +:10100000F10511F4ECB104C0E036F105B9F4EFB12B +:10101000F0E04F70552702C0F595E7954A95E2F745 +:10102000E0FD08C0A801022E02C0440F551F0A941B +:10103000E2F702C040E050E0842B952B2F5F3F4F3A +:101040002C30310509F0BCCFF60120813181281701 +:10105000390721F091838083709200010E9463051B +:10106000F2E0CF0ED11CEA14FB0409F02DCF8091E1 +:1010700000018823A1F1815080930001882339F079 +:101080008FE99FE00197F1F700C0000028C0809130 +:101090005E0190915F01909355018093540180917E +:1010A0006001909161019093570180935601809166 +:1010B000620190916301909359018093580180914E +:1010C00064019091650190935B0180935A01809136 +:1010D00066019091670190935D0180935C018AECB9 +:1010E00092E0892B11F00E94CA0281E0A2960FB60D +:1010F000F894DEBF0FBECDBFDF91CF911F910F914E +:10110000FF90EF90DF90CF90BF90AF909F908F9027 +:101110007F906F905F900895E82FF0E0EE0FFF1F33 +:10112000EC5AFE4F8081918108950895809171015C +:101130000895CF93DF9300D01F92CDB7DEB72091F3 +:10114000E701243021F523E029839B838A832093C0 +:10115000E9008FEF06C095ED9A95F1F7000088231E +:1011600029F09091E800815095FFF5CF8091E8003B +:1011700085FF0DC040E050E063E070E0CE010196D5 +:101180000E94280B8091E8008E778093E8000F90F2 +:101190000F900F90DF91CF910895CF93DF9300D000 +:1011A0001F92CDB7DEB72091E701243029F522E068 +:1011B00029839B838A8383E08093E9008FEF06C0B5 +:1011C00095ED9A95F1F70000882329F09091E800B9 +:1011D000815095FFF5CF8091E80085FF0DC040E07C +:1011E00050E063E070E0CE0101960E94280B8091F0 +:1011F000E8008E778093E8000F900F900F90DF91BA +:10120000CF9108952091E7012430F9F422E0209352 +:10121000E9002FEF06C035ED3A95F1F700002223E3 +:1012200029F03091E800215035FFF5CF2091E800FA +:1012300025FF0BC040E050E065E070E00E94280B05 +:101240008091E8008E778093E8000895CF93DF9334 +:10125000EC018091E701843041F581E08093E90061 +:101260008FEF06C095ED9A95F1F70000882329F0DD +:101270009091E800815095FFF5CF8091E80085FFBF +:1012800014C040E050E068E070E0CE010E94280BFE +:101290008091E8008E778093E80088E0FE01A9E65F +:1012A000B1E001900D928A95E1F7DF91CF91089519 +:1012B0008091E601811109C00E94C80C0E94250D91 +:1012C0008091E20084608093E20008951092E6012C +:1012D0000895089508950C94201C809172018F5FE9 +:1012E0008093720162E30E948924911135C01092AB +:1012F000720180917301882379F18091E701843034 +:1013000049F58091E9008F709091EC0090FF02C048 +:1013100090E801C090E0982B84E08093E9008091F0 +:10132000EB0080FF14C08091EE0087FD03C00FC06A +:101330001092F1008091E80085FDFACF8091E800DD +:1013400080FF05C08091E8008E778093E8009F7051 +:101350009093E90010927301089542E061EC81E0FE +:101360000E943E0C42E061EC82E00E943E0C42E0B2 +:1013700061EC83E00E943E0C42E261EC84E00C945C +:101380003E0C8091E901833009F454C030F481307F +:1013900071F0823009F0A5C08CC08A3009F479C0A0 +:1013A0008B3009F45FC0893009F09BC020C0809168 +:1013B000E801813A09F095C08091E800877F809329 +:1013C000E8008091EC019091ED01892B21F060E023 +:1013D00080E090E003C068E089E691E070E00E9460 +:1013E000770B8091E8008B778093E80008958091D7 +:1013F000E801813209F075C08091EC019091ED0116 +:10140000892B09F06EC08091E800877F8093E80007 +:1014100005C08091E701882309F463C08091E8004A +:1014200082FFF7CF8091F100809371018091E800F5 +:101430008B7753C08091E801813A09F052C08091C6 +:10144000EC019091ED01892B09F04BC08091E800EF +:10145000877F8093E8008091E80080FFFCCF809137 +:101460000B0136C08091E8018132D9F58091EC0101 +:101470009091ED01892BA9F58091E800877F8093F9 +:10148000E8000E94750C8091EA0180930B010C9496 +:1014900015168091E801813221F58091E800877F5F +:1014A0008093E8000E94750C8091EB0180936801A5 +:1014B00008958091E801813AA1F48091E800877F46 +:1014C0008093E8008091E80080FFFCCF8091680164 +:1014D0008093F1008091E8008E778093E8000C946F +:1014E000750C089584B7877F84BF88E10FB6F894A0 +:1014F00080936000109260000FBE90E080E80FB60D +:10150000F89480936100909361000FBE0E943310A5 +:101510000E94C80C0E94250D8091E2008460809397 +:10152000E20078940E94C20F0E94351081E091E0A1 +:101530000E94DF0F0BC00E94DD1B8091E501882314 +:1015400029F00E94081C81110E94120B8091E70172 +:10155000853089F30E943F10F9CF292F332723309C +:101560003105B1F04CF42130310509F44DC0223081 +:10157000310509F04EC007C02132310541F1223258 +:10158000310591F146C0E4E7F0E082E693E045C022 +:1015900099278130910569F08230910589F0892B76 +:1015A00009F037C0EEE5F3E0E491F0E08EE593E07A +:1015B00034C0E0E3F3E0E491F0E080E393E02DC099 +:1015C000E4E0F3E0E491F0E084E093E026C06430EE +:1015D00000F5E62FF0E0EE0FFF1FEA5CFE4F808182 +:1015E0009181E9E0F0E019C0643098F4E62FF0E072 +:1015F000DF01AA0FBB1FA25CBE4F8D919C91EA5BDD +:10160000FE4FE081F0E009C0E2E1F0E086ED93E01A +:1016100004C0E0E0F0E080E090E0DA018D939C937C +:10162000CF01089580E189BD82E189BD09B400FE42 +:10163000FDCF8091D8008F7D8093D8008091E0000D +:1016400082608093E0008091E00081FDFCCF0895EE +:10165000BF92CF92DF92EF92FF920F931F93CF939F +:10166000DF937C018B01EA010E94960CB82E811158 +:1016700033C0209731F028813981021B130BE20E11 +:10168000F31EC12CD12C23C08091E80085FD15C02C +:101690008091E8008E778093E800209749F0888158 +:1016A00099818C0D9D1D9983888325E0B22E14C0ED +:1016B0000E94960C882359F00EC0F70181917F019A +:1016C0008093F10001501109FFEFCF1ADF0A0115D5 +:1016D0001105D1F601C0B82E8B2DDF91CF911F914E +:1016E0000F91FF90EF90DF90CF90BF9008954091C1 +:1016F000EE015091EF014617570748F0611571054B +:1017000039F44091E8004E774093E80001C0BA01F7 +:10171000FC0140E033C08091E701882309F444C014 +:10172000853009F443C08091E80083FD41C0809179 +:10173000E80082FD33C08091E80080FF1FC09091D7 +:10174000F3008091F200392F20E0A901482BCA0153 +:1017500006C041914093F1006150710901966115F5 +:10176000710519F088309105A0F341E0089709F060 +:1017700040E08091E8008E778093E8006115710564 +:1017800051F64111C8CF0AC08091E701882361F06A +:10179000853061F08091E80083FD0AC08091E80007 +:1017A00082FFF2CF80E0089582E0089583E00895FB +:1017B00081E008954091EE015091EF0146175707DF +:1017C00048F06115710539F44091E8004E77409377 +:1017D000E80001C0BA01FC0140E034C08091E7019B +:1017E000882309F445C0853009F444C08091E8009D +:1017F00083FD42C08091E80082FD34C08091E80002 +:1018000080FF20C09091F3008091F200392F20E0FA +:10181000A901482BCA0107C044914093F1003196B9 +:101820006150710901966115710519F088309105B3 +:1018300098F341E0089709F040E08091E8008E7746 +:101840008093E8006115710549F64111C7CF0AC0C0 +:101850008091E701882361F0853061F08091E80094 +:1018600083FD0AC08091E80082FFF2CF80E00895F6 +:1018700082E0089583E0089581E00895982F2CC0B8 +:101880009093E900981739F07091EC002091ED00E9 +:101890005091F00003C0242F762F50E021FD02C0AC +:1018A0009F5F1AC03091EB003E7F3093EB00309188 +:1018B000ED003D7F3093ED003091EB0031603093CF +:1018C000EB007093EC002093ED005093F00020911A +:1018D000EE0027FDE5CF07C0973090F28F70809320 +:1018E000E90081E0089580E008958091E80187FD96 +:1018F00005C08091E80080FF0EC012C08091E80012 +:1019000082FD05C08091E7018111F8CF0895809193 +:10191000E8008B7708C08091E7018111EACF089534 +:101920008091E8008E778093E80008958091E4002C +:101930009091E50045E62091EC0020FD1FC023C0FA +:101940002091E701222391F0253091F02091EB00C6 +:1019500025FD10C02091E4003091E50028173907DB +:1019600051F34150C90139F784E0089582E00895A8 +:1019700083E0089581E0089580E008952091E800D3 +:1019800020FFDECFF9CF2091E80022FFD9CFF4CF9E +:101990000E94360D0E943E0DE0EEF0E080818160F5 +:1019A0008083E8EDF0E080818F77808319BCA7ED1C +:1019B000B0E08C918E7F8C9380818F7E808310929B +:1019C000E60108950F931F93CF93DF930E94360D86 +:1019D0000E943E0DC8EDD0E088818F778883888192 +:1019E0008068888388818F7D888319BC1092E70185 +:1019F0001092E3011092E5011092E40100EE10E074 +:101A0000F80180818B7F808388818160888342E0B8 +:101A100060E080E00E943E0CE1EEF0E080818E7F8D +:101A20008083E2EEF0E08081816080838081886045 +:101A30008083F80180818E7F8083888180618883A4 +:101A4000DF91CF911F910F910895E8EDF0E0808133 +:101A50008F7E8083E7EDF0E080818160808384E089 +:101A600082BF81E08093E6010C94E20CE8EDF0E0A7 +:101A700080818E7F80831092E20008951092DA00B8 +:101A80001092E10008951F920F920FB60F92112449 +:101A90002F933F934F935F936F937F938F939F9376 +:101AA000AF93BF93EF93FF938091E10082FF0BC050 +:101AB0008091E20082FF07C08091E1008B7F8093DC +:101AC000E1000E946D098091DA0080FF1FC08091C3 +:101AD000D80080FF1BC08091DA008E7F8093DA00EF +:101AE0008091D90080FF0DC080E189BD82E189BD70 +:101AF00009B400FEFDCF81E08093E7010E94580900 +:101B000005C019BC1092E7010E9466098091E100AE +:101B100080FF19C08091E20080FF15C08091E20033 +:101B20008E7F8093E2008091E20080618093E200EA +:101B30008091D80080628093D80019BC85E08093A2 +:101B4000E7010E946A098091E10084FF30C0809122 +:101B5000E20084FF2CC080E189BD82E189BD09B427 +:101B600000FEFDCF8091D8008F7D8093D8008091BA +:101B7000E1008F7E8093E1008091E2008F7E809370 +:101B8000E2008091E20081608093E2008091E301B5 +:101B9000882311F084E007C08091E30087FF02C032 +:101BA00083E001C081E08093E7010E946B0980918E +:101BB000E10083FF29C08091E20083FF25C080916E +:101BC000E100877F8093E10082E08093E70110923B +:101BD000E3018091E1008E7F8093E1008091E2003B +:101BE0008E7F8093E2008091E20080618093E2002A +:101BF00042E060E080E00E943E0C8091F00088604E +:101C00008093F0000E946909FF91EF91BF91AF911D +:101C10009F918F917F916F915F914F913F912F9104 +:101C20000F900FBE0F901F9018951F920F920FB636 +:101C30000F9211242F933F934F935F936F937F9352 +:101C40008F939F93AF93BF93CF93EF93FF93809125 +:101C5000E9008F709091EC0090FF02C090E801C005 +:101C600090E0C92FC82B1092E9008091F000877F87 +:101C70008093F00078940E94590E1092E9008091B0 +:101C8000F00088608093F000CF70C093E900FF916E +:101C9000EF91CF91BF91AF919F918F917F916F9174 +:101CA0005F914F913F912F910F900FBE0F901F901A +:101CB00018951F93CF93DF93CDB7DEB7AC970FB6D0 +:101CC000F894DEBF0FBECDBFE8EEF1E08091F100E9 +:101CD000819321E0E03FF207C9F70E94C10980919A +:101CE000E80083FF37C18091E8019091E9019530C8 +:101CF00009F488C038F49130B1F170F0933009F0F4 +:101D000029C131C0983009F4F8C0993009F404C1F0 +:101D1000963009F01FC19DC0803821F0823809F04B +:101D200019C108C08091E4019091E501992389F0DF +:101D300082600FC08091EC019091ED018F70992726 +:101D40008093E9008091EB0085FB882780F9109251 +:101D5000E9009091E800977F9093E8008093F1006C +:101D60001092F100D5C0882319F0823009F0F2C03A +:101D70008F7121F0823009F0EDC00BC08091EA0133 +:101D8000813009F0E7C0933009F080E08093E501ED +:101D90002FC08091EA0181112BC08091EC019091BC +:101DA000ED018F709927009709F4D4C08093E90062 +:101DB0002091EB0020FF1CC02091E901233021F489 +:101DC0008091EB00806212C09091EB009061909343 +:101DD000EB0021E030E001C0220F8A95EAF7209362 +:101DE000EA001092EA008091EB0088608093EB009B +:101DF0001092E9008091E800877F8093E8000E94BC +:101E0000750CA8C08111A6C08091EA019091EB01E8 +:101E10008F779927182F9091E3009078982B9093C3 +:101E2000E3008091E800877F8093E8000E94750CB2 +:101E30008091E80080FFFCCF8091E3008068809370 +:101E4000E300112311F083E001C082E08093E701F9 +:101E500081C08058823008F07DC08091EA01909165 +:101E6000EB018C3D23E0920779F583E08A838AE2D7 +:101E700089834FB7F894DE01139620E03EE051E2EB +:101E8000E32FF0E050935700E49120FF03C0E29568 +:101E9000EF703F5FEF708E2F90E0EA3010F0C79642 +:101EA00001C0C0968D939D932F5F243149F74FBF9A +:101EB0008091E800877F8093E8006AE270E0CE01BD +:101EC00001960E94770B13C0AE01455D5F4F609194 +:101ED000EC010E94AD0A0097E9F12091E800277F0C +:101EE0002093E800BC018BA59CA50E94DA0B809191 +:101EF000E8008B778093E8002DC0803859F58091F9 +:101F0000E800877F8093E8008091E3018093F100EF +:101F10008091E8008E7771CF81111CC09091EA0109 +:101F20009230C0F48091E800877F8093E80090931E +:101F3000E3010E94750C8091E301811104C080913E +:101F4000E30087FF02C084E001C081E08093E701E5 +:101F50000E94AD098091E80083FF0AC08091E800EB +:101F6000877F8093E8008091EB0080628093EB0094 +:101F7000AC960FB6F894DEBF0FBECDBFDF91CF9108 +:101F80001F910895CF938091E7018823B1F080914C +:101F9000E9008F709091EC0090FF02C090E801C0C2 +:101FA00090E0C92FC82B1092E9008091E80083FDD2 +:101FB0000E94590ECF70C093E900CF91089590937D +:101FC0007501809374010895E0917401F091750199 +:101FD000309721F00190F081E02D099480E0089580 +:101FE000E0917401F0917501309721F00280F38146 +:101FF000E02D09940895E0917401F09175013097F6 +:1020000021F00480F581E02D099408952091760156 +:10201000309177018217930771F090937701809345 +:102020007601E0917401F0917501309721F00680FE +:10203000F781E02D0994089520917801309179017C +:102040008217930771F09093790180937801E09162 +:102050007401F0917501309721F00084F185E02D35 +:102060000994089508950C9432100E94541C0E9403 +:1020700028060E94281D0C94D0220C9462055F92C1 +:102080006F927F928F929F92AF92BF92CF92DF9288 +:10209000EF92FF920F931F93CF93DF93CDB7DEB7ED +:1020A0002A970FB6F894DEBF0FBECDBF0E94380747 +:1020B0009AE7C92E91E0D92E00E010E0AA24A3945B +:1020C000B12C502E802F0E948C083C01F601E1902B +:1020D000F1906F01E826F926E114F10431F40F5F65 +:1020E0001F4F0530110569F73AC08091D00181FD7D +:1020F0000E94950820E030E04501022E02C0880CC5 +:10210000991C0A94E2F7C4018E219F21892B09F1C1 +:102110002E835F826820792081E0672809F480E0BF +:1021200088870E945D1C8160782F9A8789874E81FD +:102130005F8168858A850E94F810F801EE0FFF1F05 +:10214000E658FE4F8081918188259925918380836F +:1021500016C02F5F3F4F2C30310571F6C0CF8FEF87 +:1021600089838A831B820E945D1C8160782F9D83F6 +:102170008C8349815A816B818D810E94F8100E9465 +:102180001520109184010E94E40F1817D9F00E94C5 +:10219000E40F809384012A960FB6F894DEBF0FBE39 +:1021A000CDBFDF91CF911F910F91FF90EF90DF9006 +:1021B000CF90BF90AF909F908F907F906F905F90E7 +:1021C0000C943D102A960FB6F894DEBF0FBECDBF1B +:1021D000DF91CF911F910F91FF90EF90DF90CF9003 +:1021E000BF90AF909F908F907F906F905F90089579 +:1021F000CF93DF93CDB7DEB72B970FB6F894DEBF42 +:102200000FBECDBF4F83588769877A878B87DE01E2 +:10221000119686E0FD0111928A95E9F785E0FE01AD +:10222000379601900D928A95E1F749815A816B8129 +:102230007C818D819E810E94D4182B960FB6F894D4 +:10224000DEBF0FBECDBFDF91CF910895CF93C82FD2 +:10225000882309F4C1C0823859F40E94E40F81FD3B +:10226000BBC089E30E943B1B0E94B71B89E30CC0E3 +:10227000833879F40E94E40F80FDAEC083E50E94AC +:102280003B1B0E94B71B83E50E945D1BCF910C9402 +:10229000B71B843859F40E94E40F82FD9DC087E487 +:1022A0000E943B1B0E94B71B87E4EECF8450813A0B +:1022B00048F48C2F0E94322281118EC08C2F0E94F4 +:1022C0003B1BE4CF8C2F805E883050F4C77081E0D8 +:1022D00090E001C0880FCA95EAF70E947E1BD6CF16 +:1022E0008C2F855A833078F4C53A29F0C63A31F4F8 +:1022F00082E890E005C081E890E002C083E890E0C9 +:10230000CF910C9406108C2F885A833108F064C04A +:10231000C83A39F1C93A41F1CA3A49F1CB3A51F1D7 +:10232000CC3A59F1CD3A61F1C03B69F1CE3A71F145 +:10233000CF3A79F1C13B81F1C23B89F1C33B91F1C5 +:10234000C43B99F1C53BA1F1C63BA9F1C73BB1F133 +:10235000C83BB9F1C93BC1F1CA3BC9F58AE292E079 +:1023600038C082EE90E035C089EE90E032C08AEE4F +:1023700090E02FC085EB90E02CC086EB90E029C068 +:1023800087EB90E026C08CEC90E023C08DEC90E0D1 +:1023900020C083E891E01DC08AE891E01AC082E97C +:1023A00091E017C084E991E014C081E292E011C08D +:1023B00083E292E00EC084E292E00BC085E292E0FC +:1023C00008C086E292E005C087E292E002C080E0A9 +:1023D00090E0CF910C941C10CF910895882309F4BC +:1023E0004DC0823859F40E94E40F81FF47C089E351 +:1023F0000E943B1B0E94B71B89E30CC0833871F419 +:102400000E94E40F80FF3AC083E50E943B1B0E94BC +:10241000B71B83E50E945D1B0C94B71B843859F4ED +:102420000E94E40F82FF2AC087E40E943B1B0E94A7 +:10243000B71B87E4EFCF982F9450913A08F4EACF76 +:10244000982F905E983058F4282F277081E090E004 +:1024500001C0880F2A95EAF70E94841BDDCF982FD0 +:10246000955A933020F480E090E00C940610885A3E +:10247000833120F480E090E00C941C1008958823B0 +:1024800021F00E947E1B0C94B71B0895882321F035 +:102490000E94841B0C94B71B0895BF92CF92DF92C9 +:1024A000EF92FF920F931F93CF93DF93CDB7DEB7D9 +:1024B00027970FB6F894DEBF0FBECDBF8C0185E025 +:1024C000F801DE01119601900D928A95E1F7F8016D +:1024D00030812181F280558152955F708381948192 +:1024E000892B39F02F3F41F481E090E03F3F31F0FC +:1024F00003C081E090E002C080E090E080FD73C303 +:1025000039832A8389819A815E830E94F81AB92EC1 +:102510008F830E94F71A0E941F1A2B2D22952F706D +:1025200030E05E816F812530310509F4E6C06CF43E +:10253000243031050CF0A2C04B2D407F8B2D8F70C5 +:10254000223031050CF045C017C02C3031054CF459 +:102550002A3031050CF0E7C12830310509F043C3BA +:10256000E5C02D30310509F4BAC20CF4A2C22F30F7 +:10257000310509F038C323C3182F411101C002C02F +:102580001295107FFF2059F0112309F46BC2812F9F +:102590006F830E948E1B0E94B71B6F8163C2862FC0 +:1025A0000E94EE11112309F41EC3812F0E94941B77 +:1025B00027960FB6F894DEBF0FBECDBFDF91CF9147 +:1025C0001F910F91FF90EF90DF90CF90BF900C94F0 +:1025D000B71B403211F08295807F662319F061307D +:1025E00071F523C0FF20B1F0511101C032C051304C +:1025F00081F527960FB6F894DEBF0FBECDBFDF91F1 +:10260000CF911F910F91FF90EF90DF90CF90BF90EF +:102610000C949E1B511101C003C0513009F4E3C258 +:102620008E830E94A11B8E819AC1FF2021F056301B +:1026300008F0D9C20EC0553008F0D5C290C1FF20B5 +:10264000C9F0552331F0F801958190FF0BC29F70BE +:10265000958327960FB6F894DEBF0FBECDBFDF91EE +:10266000CF911F910F91FF90EF90DF90CF90BF908F +:102670000C943F12552309F472C109C22B2D2695E3 +:102680002695237030E02115310529F021303105E0 +:1026900009F0A9C219C0FF2021F0862F9B2D93704D +:1026A00002C080E090E027960FB6F894DEBF0FBE20 +:1026B000CDBFDF91CF911F910F91FF90EF90DF90F1 +:1026C000CF90BF900C940610FF2021F0862F9B2DF9 +:1026D000937002C080E090E027960FB6F894DEBFBA +:1026E0000FBECDBFDF91CF911F910F91FF90EF9063 +:1026F000DF90CF90BF900C941C10862FFF2019F014 +:102700000E941B1F02C00E94831F27960FB6F894D9 +:10271000DEBF0FBECDBFDF91CF911F910F91FF9014 +:10272000EF90DF90CF90BF900C940A208B2D837098 +:1027300009F079C0F11057C2262F229526952770EF +:10274000220F220F862F8F70C82ED12CE12CF12C56 +:10275000022E04C0CC0CDD1CEE1CFF1C0A94D2F728 +:1027600064FF10C06FE070E080E090E004C0660F8E +:10277000771F881F991F2A95D2F7609570958095CD +:10278000909503C060E070E0CB012B2D2695269537 +:102790002370422F50E042305105D9F043305105AB +:1027A00069F16C297D298E299F294130510551F10C +:1027B00027960FB6F894DEBF0FBECDBFDF91CF9145 +:1027C0001F910F91FF90EF90DF90CF90BF900C94EE +:1027D000341A6C297D298E299F2927960FB6F894E3 +:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044 +:1027F000EF90DF90CF90BF900C94461A0E94341A4D +:10280000C701B60127960FB6F894DEBF0FBECDBF45 +:10281000DF91CF911F910F91FF90EF90DF90CF90BC +:10282000BF900C94221AFF2019F08B2D817001C0EB +:102830008695882309F4D7C1262F229526952770DF +:10284000220F220F862F8F70C82ED12CE12CF12C55 +:10285000022E04C0CC0CDD1CEE1CFF1C0A94D2F727 +:1028600064FF10C06FE070E080E090E004C0660F8D +:10287000771F881F991F2A95D2F7609570958095CC +:10288000909503C060E070E0CB012B2D2695269536 +:102890002370422F50E042305105D9F043305105AA +:1028A00069F16C297D298E299F294130510551F10B +:1028B00027960FB6F894DEBF0FBECDBFDF91CF9144 +:1028C0001F910F91FF90EF90DF90CF90BF900C94ED +:1028D000D31A6C297D298E299F2927960FB6F89443 +:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043 +:1028F000EF90DF90CF90BF900C94E51A0E94D31A0E +:10290000C701B60127960FB6F894DEBF0FBECDBF44 +:10291000DF91CF911F910F91FF90EF90DF90CF90BB +:10292000BF900C94C11A603F59F120F4603E08F446 +:1029300094C008C0623F09F467C0F0F1633F09F03A +:102940008CC065C0162F1F708B2D8F71FF2021F05A +:102950000E946C1A812F7DCE0E94871A812F2796A4 +:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0 +:102970000F91FF90EF90DF90CF90BF900C94461294 +:10298000FF20B1F0553008F02EC18B2D8F712796A6 +:102990000FB6F894DEBF0FBECDBFDF91CF911F9170 +:1029A0000F91FF90EF90DF90CF90BF900C94A61AFC +:1029B000563008F018C1E9CFFF2099F08B2D8F71A8 +:1029C00027960FB6F894DEBF0FBECDBFDF91CF9133 +:1029D0001F910F91FF90EF90DF90CF90BF900C94DC +:1029E0006C1A8B2D8F7127960FB6F894DEBF0FBE31 +:1029F000CDBFDF91CF911F910F91FF90EF90DF90AE +:102A0000CF90BF900C94871AF110EBCFD7CFFF2057 +:102A100099F08B2D8F7127960FB6F894DEBF0FBEFD +:102A2000CDBFDF91CF911F910F91FF90EF90DF907D +:102A3000CF90BF900C945D1A27960FB6F894DEBF26 +:102A40000FBECDBFDF91CF911F910F91FF90EF90FF +:102A5000DF90CF90BF900C94581AFF20A9F0552317 +:102A600009F4ACCF862F27960FB6F894DEBF0FBEC1 +:102A7000CDBFDF91CF911F910F91FF90EF90DF902D +:102A8000CF90BF900C942611552309F4AACF862F1E +:102A900027960FB6F894DEBF0FBECDBFDF91CF9162 +:102AA0001F910F91FF90EF90DF90CF90BF900C940B +:102AB000EE114B2D4F70C8010E94AB0227960FB646 +:102AC000F894DEBF0FBECDBFDF91CF911F910F9164 +:102AD000FF90EF90DF90CF90BF900C948A19F11087 +:102AE00082C09B2D9F70492F50E04230510599F1D3 +:102AF00044F44115510569F04130510509F073C0A6 +:102B000019C043305105C1F14430510509F06BC083 +:102B100044C027960FB6F894DEBF0FBECDBFDF913D +:102B2000CF911F910F91FF90EF90DF90CF90BF90CA +:102B30000C94E12227960FB6F894DEBF0FBECDBFEE +:102B4000DF91CF911F910F91FF90EF90DF90CF9089 +:102B5000BF900C94F82227960FB6F894DEBF0FBEF4 +:102B6000CDBFDF91CF911F910F91FF90EF90DF903C +:102B7000CF90BF900C94142327960FB6F894DEBF25 +:102B80000FBECDBFDF91CF911F910F91FF90EF90BE +:102B9000DF90CF90BF900C942723862F27960FB6F7 +:102BA000F894DEBF0FBECDBFDF91CF911F910F9183 +:102BB000FF90EF90DF90CF90BF900C944B234B2D64 +:102BC0004F70C80127960FB6F894DEBF0FBECDBF79 +:102BD000DF91CF911F910F91FF90EF90DF90CF90F9 +:102BE000BF900C94D40327960FB6F894DEBF0FBEA7 +:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC +:102C0000CF90BF9008950E949B1B0E94701B0E9452 +:102C1000B71B0E94B6200E940A2080E090E00E942C +:102C2000061080E090E00C941C100E948B1B0C940A +:102C300003160E94F81A292F22952F7030E02C30AD +:102C400031054CF42A3031056CF422503109223020 +:102C5000310590F407C02C30310551F02F3031058B +:102C600059F406C0803E10F0803F31F481E00895B1 +:102C700093FB882780F9089580E00895CF93DF9330 +:102C800000D000D01F92CDB7DEB70F900F900F90FD +:102C90000F900F90DF91CF910895CF93DF9300D0E5 +:102CA00000D000D0CDB7DEB726960FB6F894DEBFC1 +:102CB0000FBECDBFDF91CF9108951F93CF93DF93C8 +:102CC000C091BB0116E012C0D0E01C9FF0011D9F17 +:102CD000F00D1124E557FE4F4081518162817381CF +:102CE000848195810E944D162196C7708091BC0108 +:102CF000C813EACFDF91CF911F91089540918501CC +:102D000050918601609187017091880180918901BD +:102D100090918A010C944D160F931F93CF93DF93DC +:102D200080918A0182958F7009F069C08091870136 +:102D3000882309F464C0A091BB01D091BC01B0917B +:102D40008501C0918601809188019091890121E0DF +:102D500030E0BF3F11F020E030E0122FBC01609561 +:102D6000709506E04AC0009721F0CF3F29F4212F4B +:102D700005C021E030E002C020E030E020FD3BC093 +:102D80004A2F50E0049FF001059FF00D1124E557F4 +:102D9000FE4F2181C2132FC02081B2132CC022818B +:102DA000211129C0238134812817390718F0281BE5 +:102DB000390B02C0260F371F283C3105E0F4809103 +:102DC0008A018F70806180938A0186E0849FF00180 +:102DD000859FF00D1124E057FE4F80818F70806138 +:102DE000808385E891E00E944D12DF91CF911F9181 +:102DF0000F910C945D16AF5FA770AD13B4CFDF9148 +:102E0000CF911F910F910895EF92FF920F931F930F +:102E1000CF93DF93CDB7DEB762970FB6F894DEBFDE +:102E20000FBECDBF8C0185E0F801DE011D9601903B +:102E30000D928A95E1F7D8014C9111965C9111970A +:102E400012966C9112971396ED90FC9014977091D6 +:102E50008501E09186018091880190918901009718 +:102E600039F0EF3F41F421E030E07F3F31F003C023 +:102E700021E030E002C020E030E020FD5CC1209184 +:102E80008701222309F4F1C0E816F90628F097011A +:102E9000281B390BC90104C0809590958E0D9F1D8C +:102EA000883C910508F098C080918A01982F907F06 +:102EB00009F064C0E51314C0741312C0611110C08E +:102EC0008F70806180938A010E947E1685E891E070 +:102ED0000E944D1280918A01D80115968C9343C1AE +:102EE000EF2839F05F3F41F481E090E04F3F31F04F +:102EF00003C081E090E002C080E090E080FD03C06C +:102F000081E0862702C080E090E080FF2EC08091A3 +:102F1000BB012091BC0136E013C090E0389FF00166 +:102F2000399FF00D1124E557FE4F7181571306C0EC +:102F30007081471303C07281671317C001968770B1 +:102F40008213EBCF12C19F7059F0882309F40BC193 +:102F500007C09F7029F0F8019581907F09F403C1A3 +:102F6000805E883008F4FFC0D2C0662309F4FBC03D +:102F700080918A01816080938A01F5C0E51308C0C1 +:102F8000741306C0611104C0D80115968C939DC0BE +:102F90004D875E878D859E856A8B0E9419166A898A +:102FA000882309F4B4C0662309F4B1C020918A01D2 +:102FB000822F82958F7090E002970CF4C6C08091AA +:102FC00085019091860198878F831986FB86EA8612 +:102FD0002C87CE01079646C080918A01982F907F5A +:102FE00059F47E2DF98AE88A89890E943E1685E87F +:102FF00091E00E944D1295C0E51311C074130FC0EB +:1030000061110DC0F8018583C8010E944D12E5E8E9 +:10301000F1E086E0DF011D928A95E9F7A2C04D87B5 +:103020005E878D859E856A8B0E9419166A89882322 +:1030300009F46DC0662309F46AC020918A01822FC9 +:1030400082958F7090E002970CF47FC0809185018B +:10305000909186019A8389831B82FD82EC822E8364 +:10306000CE0101960E944D1270C0E816F90628F0B4 +:103070009701281B390BC90104C0809590958E0DCE +:103080009F1D883C910508F046C0662309F43FC0A7 +:10309000E51330C074132EC020918A0120FD21C099 +:1030A000322F32953F70832F90E00097D1F0D801F6 +:1030B00015962C9315970F9741F0832F8F5F82956C +:1030C000807F2F70282B15962C93C8010E944D12DB +:1030D00086E0F801A5E8B1E001900D928A95E1F74C +:1030E0003EC086E0F801A5E8B1E001900D928A9516 +:1030F000E1F737C04D875E878D859E850E94191642 +:10310000811123C080918A01816080938A01C80166 +:103110000E944D1226C07E2DF98AE88A89890E9474 +:103120003E16E5E8F1E086E0DF011D928A95E9F7B9 +:103130000E947E1618C0662351F34D875E878D85E9 +:103140009E850E941916882311F386E0F801A5E8F0 +:10315000B1E001900D928A95E1F70E948C160E94D1 +:103160007E1681E014C080E012C04D875E878D8599 +:103170009E850E94F81A292F22952F7030E0223068 +:1031800031050CF4E0CE243031050CF6E2CE629627 +:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 +:1031A0000F91FF90EF9008951F93CF93DF93CDB7CA +:1031B000DEB72C970FB6F894DEBF0FBECDBF4F839E +:1031C000588769877A878B879C87CE0107960E94EC +:1031D00004178823D9F02F8138858A859B85892B10 +:1031E00039F03F3F19F080E090E004C02F3FD9F75D +:1031F00081E090E0892B09F06DC04F815885698589 +:103200007A858B859C850E944D1664C086E0FE0100 +:103210003796DE01119601900D928A95E1F7FF81B4 +:10322000E8854A855B854115510539F0EF3F41F44A +:1032300081E090E0FF3F31F003C081E090E002C008 +:1032400080E090E080FD46C02091BC0130E0C901E3 +:103250000196877099276091BB0170E086179707E8 +:1032600009F440C0F983EA835D834C8396E0929F22 +:10327000D001939FB00D1124A557BE4FFE0131968A +:1032800001900D929A95E1F78093BC010E945D1622 +:1032900021C0189FC001112485579E4F0E9404171A +:1032A000882371F1E091BB011E9FF0011124E557C5 +:1032B000FE4F4081518162817381848195810E949A +:1032C0004D168091BB0190E00196877099278093FD +:1032D000BB0101C016E08091BB019091BC01891334 +:1032E000D8CF0EC00E9415161092BC011092BB01DF +:1032F000E5E8F1E086E0DF011D928A95E9F7EACF83 +:103300002C960FB6F894DEBF0FBECDBFDF91CF91E4 +:103310001F910895DF92EF92FF920F931F93CF9327 +:10332000DF93EC01009709F46EC0D12CEE24E394F6 +:10333000F12C8E010F5F1F4FFE018491843748F4FA +:10334000843008F04CC0813071F0823009F05BC0ED +:103350001EC0853709F43FC080F1982F94589037EC +:1033600008F051C03FC02296F8018491982F905EDA +:10337000983050F48770FE2D01C0FF0F8A95EAF750 +:103380008F2F0E948E1B13C00E9426112FC02296E1 +:10339000F8018491982F905E983060F48770FE2D2C +:1033A00001C0FF0F8A95EAF78F2F0E94941B0E949D +:1033B000B71B1CC00E94EE1119C02296F80104919F +:1033C00007C08FE99FE00197F1F700C000000150AE +:1033D0000111F7CF0BC02296F801D49007C00E94CC +:1033E000261103C08F770E94EE11E8018D2D07C0D2 +:1033F0008150EFE9FFE03197F1F700C0000088232A +:1034000009F497CFF5CFDF91CF911F910F91FF90E6 +:10341000EF90DF9008956093C1017093C201809393 +:10342000C3019093C4010C9403166093BD01709383 +:10343000BE018093BF019093C0010C9403160895C0 +:103440000C940B1A0F931F930091C1011091C201AC +:103450002091C3013091C401602B712B822B932BDF +:103460001F910F910C940B1A0F931F930091C101A0 +:103470001091C2012091C3013091C40160237123D6 +:10348000822393231F910F910C940B1A0F931F9378 +:103490000091C1011091C2012091C3013091C4017A +:1034A00060277127822793271F910F910C940B1A85 +:1034B00060E070E0CB010C94151A41E050E060E050 +:1034C00070E004C0440F551F661F771F8A95D2F71E +:1034D000CB01BA010C94151A41E050E060E070E0B5 +:1034E00004C0440F551F661F771F8A95D2F780913D +:1034F000BD019091BE01A091BF01B091C001482BC8 +:10350000592B6A2B7B2BCB01BA010C94151A41E085 +:1035100050E060E070E004C0440F551F661F771F45 +:103520008A95D2F740955095609570958091BD0130 +:103530009091BE01A091BF01B091C00148235923D1 +:103540006A237B23CB01BA010C94151A41E050E0A9 +:1035500060E070E004C0440F551F661F771F8A9516 +:10356000D2F78091BD019091BE01A091BF01B091B1 +:10357000C001482759276A277B27CB01BA010C9441 +:10358000151A0F931F930091BD011091BE01209158 +:10359000BF013091C001602B712B822B932B1F91A7 +:1035A0000F910C94151A0F931F930091BD01109168 +:1035B000BE012091BF013091C0016023712382239D +:1035C00093231F910F910C94151A0F931F93009141 +:1035D000BD011091BE012091BF013091C001602753 +:1035E0007127822793271F910F910C94151A089524 +:1035F000CF92DF92EF92FF920F931F93CF93DF93BF +:10360000EC01C090C101D090C201E090C301F090E4 +:10361000C4018091BD019091BE01A091BF01B09104 +:10362000C001C82AD92AEA2AFB2A0FE110E0B70113 +:10363000A601002E04C076956795579547950A9484 +:10364000D2F740FF08C0BE01802F0E94FA038130EC +:10365000910509F007C00150110948F7BE0180E04B +:103660000E94FA03DF91CF911F910F91FF90EF908D +:10367000DF90CF90089540910C0150910D0120E012 +:1036800030E09FEFFA01E20FF31F62816817A1F0AB +:103690009F3F19F4611101C0922F2F5F3F4F2630D9 +:1036A000310581F707C0FA01E90FF11D97FDFA9581 +:1036B000828308959F3FB9F7089540910C0150917E +:1036C0000D0120E030E0FA01E20FF31F9281981320 +:1036D00001C012822F5F3F4F26303105A1F70895B8 +:1036E00081E090E0E0910C01F0910D01E80FF91FED +:1036F0001082019688309105A9F708959091C5012F +:10370000982B9093C501089580959091C5019823B9 +:103710009093C50108951092C50108959091C60136 +:10372000982B9093C601089580959091C601982397 +:103730009093C60108951092C60108958093C70121 +:1037400008951092C701089540910C0150910D0108 +:1037500020E030E080E0FA01E20FF31F9181911147 +:103760008F5F2F5F3F4F27303105A9F70895E09114 +:103770000C01F0910D018091C5018083E0910C0155 +:10378000F0910D0180819091C601892B80839091E9 +:10379000C701992361F0E0910C01F0910D01808146 +:1037A000892B80830E94A41B81110E94A11B809100 +:1037B0000C0190910D010C94F00F8091E701843081 +:1037C00021F11092D10120E488E190E00FB6F89445 +:1037D000A895809360000FBE2093600080E00E9457 +:1037E000E10283B7817F846083BF83B7816083BF39 +:1037F0007894889583B78E7F83BF88E10FB6F8945D +:1038000080936000109260000FBE0895089508959F +:10381000CF9380E00E94E1020E94061C0E943807BC +:103820000E94071CC0E08C2F0E948C08892B29F471 +:10383000CF5FC530C1F780E001C081E0CF9108952E +:103840000E94151680E00E94E1020E94D0220E9490 +:10385000E40F0C9462051F920F920FB60F92112481 +:103860008F939F93AF93BF938091D101811113C028 +:103870008091D2019091D301A091D401B091D50152 +:103880004196A11DB11D8093D2019093D301A093C5 +:10389000D401B093D501BF91AF919F918F910F90BB +:1038A0000FBE0F901F90189582E084BD93E095BDE8 +:1038B0009AEF97BD80936E0008958FB7F89440916A +:1038C000D2015091D3016091D4017091D5018FBF85 +:1038D000CA010895CF92DF92EF92FF920F931F9348 +:1038E0002FB7F8944091D2015091D3016091D40147 +:1038F0007091D5012FBF6A017B01EE24FF248C015A +:1039000020E030E0C016D106E206F30620F09A016E +:10391000281B390B05C09C0120953095240F351FBD +:10392000C9011F910F91FF90EF90DF90CF90089504 +:103930001F920F920FB60F9211248F939F93AF9304 +:10394000BF938091D2019091D301A091D401B09105 +:10395000D5010196A11DB11D8093D2019093D30191 +:10396000A093D401B093D501BF91AF919F918F9156 +:103970000F900FBE0F901F9018950E94C80CF894DE +:103980002FEF87EA91E6215080409040E1F700C098 +:10399000000087E090EBDC018093F1019093F2014D +:1039A000A093F301B093F4012CE088E190E00FB60E +:1039B000F894A895809360000FBE20936000FFCF1D +:1039C000CF92DF92EF92FF920F931F93CF93DF93EB +:1039D000C82ED12C01E010E08D2D0E948C087C01B6 +:1039E000C0E0D0E098010C2E02C0220F331F0A94D1 +:1039F000E2F72E213F21232B29F42196CC30D1054B +:103A000089F708C06C2F7D2D80E00E94D503C81275 +:103A1000F4CF06C0D39485E0D812DECF80E001C099 +:103A200081E0DF91CF911F910F91FF90EF90DF9098 +:103A3000CF900895CF93C82F8CE20E94E01C88237A +:103A400021F08C2FCF910C94E01C80E0CF91089551 +:103A5000CF930E946B1E811102C00E944C1EC5E6CE +:103A600008C00E9438078FE39CE90197F1F700C076 +:103A70000000C150B1F789E20E941A1D81110AC1EC +:103A80008AE20E941A1D81110E944C1E85E00E944C +:103A90001A1D81110E94BD1C0E94761E8093D001C8 +:103AA00087E00E941A1D882399F18BE10E941A1D5C +:103AB000882351F09091D00191FB882780F921E073 +:103AC000822780FB91F922C08EE00E941A1D882374 +:103AD00051F09091D00192FB882780F921E0822754 +:103AE00080FB92F913C080E10E941A1D9091D001D1 +:103AF000882341F093FB882780F921E0822780FB0F +:103B000093F904C0892F809580FB90F99093D001A0 +:103B10008091D0010E947A1E0E94881E8093E1014C +:103B200080EE0E941A1D882341F08091E101982FB8 +:103B3000909590FB80F98093E10189E30E941A1D22 +:103B4000882359F09091E10191FB882780F921E0C9 +:103B5000822780FB91F99093E10182EE0E941A1D69 +:103B6000882359F09091E10192FB882780F921E0A8 +:103B7000822780FB92F99093E10186EE0E941A1D44 +:103B8000882359F09091E10193FB882780F921E087 +:103B9000822780FB93F99093E10183EE0E941A1D26 +:103BA000882359F09091E10194FB882780F921E066 +:103BB000822780FB94F99093E10185E30E941A1D0E +:103BC000882359F09091E10195FB882780F921E045 +:103BD000822780FB95F99093E10181E30E941A1DF1 +:103BE000882359F09091E10196FB882780F921E024 +:103BF000822780FB96F99093E10181E10E941A1DD2 +:103C0000882359F09091E10197FB882780F921E002 +:103C1000822780FB97F99093E1018091E1010E9456 +:103C20008C1E87E20E941A1DC82F8EE10E941A1D69 +:103C30008111C2608FE10E941A1D8111C46080E26F +:103C40000E941A1D8111C86081E20E941A1D811113 +:103C5000C06182E20E941A1D8111C06283E20E944B +:103C60001A1D8111C06484E20E941A1D882311F07C +:103C7000C06802C0CC2329F08C2F0E94831E6C2FB9 +:103C800003C00E947F1E682F70E080E090E0CF911B +:103C90000C94201ACF9108956DEE7EEF80E090E0B5 +:103CA0000E94D92460E082E090E00E94CB2460E092 +:103CB00083E090E00E94CB2460E084E090E00E94EA +:103CC000CB2460E085E090E00E94CB2460E086E0B9 +:103CD00090E00C94CB2480E090E00E94C52421E089 +:103CE0008D3E9E4F09F020E0822F089582E090E003 +:103CF0000C94BD24682F82E090E00C94CB2483E0E8 +:103D000090E00C94BD24682F83E090E00C94CB24C9 +:103D100084E090E00C94BD24682F84E090E00C9443 +:103D2000CB2486E090E00C94BD24682F86E090E0E0 +:103D30000C94CB248091DE0180FF0BC060911101B7 +:103D400085E0689FB0011124759567957595679515 +:103D50002AC081FF09C06091110185E0689FB00110 +:103D60001124759567951FC082FF07C060911101EE +:103D700085E0689FB001112416C04091D80144230A +:103D8000C9F060911001461788F72091110185E074 +:103D9000289F90011124429FC001439F900D112440 +:103DA00070E00E9495246038710540F4611571053A +:103DB00039F002C065E070E0862F08958FE708951E +:103DC00081E008958091DE0180FF08C060910F01BD +:103DD00070E0759567957595679521C081FF06C060 +:103DE00060910F0170E07595679519C082FF04C05E +:103DF00060910F0170E010C08091D8018823C1F05C +:103E000060910E018617A0F790910F01989FC00155 +:103E1000112470E00E9495246038710528F4611522 +:103E2000710521F0862F08958FE7089581E00895A8 +:103E300061E070E0F4CF803F21F40E949A1E8195EA +:103E400004C0813F29F40E949A1E8093DB010895EB +:103E5000823F21F40E949A1E819504C0833F29F479 +:103E60000E949A1E8093DA010895893F19F40E94F6 +:103E7000E21E05C08A3F31F40E94E21E81958093C4 +:103E8000DC0108958B3F21F40E94E21E819504C05D +:103E90008C3F29F40E94E21E8093DD010895843F47 +:103EA00021F48091D901816017C0853F21F4809170 +:103EB000D901826011C0863F21F48091D9018460CC +:103EC0000BC0873F21F48091D901886005C0883FED +:103ED00031F48091D90180618093D90108958D3F9B +:103EE00021F48091DE0181600BC08E3F21F480912E +:103EF000DE01826005C08F3F29F48091DE0184607D +:103F00008093DE010895803F29F48091DB0187FFD3 +:103F10006EC007C0813F41F48091DB0118160CF0A0 +:103F200066C01092DB0163C09091DA01823F19F400 +:103F300097FF5DC005C0833F31F419160CF057C0E0 +:103F40001092DA0154C0893F31F48091DC011816D7 +:103F50000CF04DC006C08A3F39F48091DC0187FF28 +:103F600046C01092DC0143C08B3F29F48091DD01F3 +:103F700087FF3DC006C08C3F39F48091DD011816E3 +:103F8000B4F51092DD0133C0843F21F48091D90152 +:103F90008E7F05C0853F31F48091D9018D7F80935C +:103FA000D90125C0863F21F48091D9018B7FF7CFBD +:103FB000873F21F48091D901877FF1CF883F21F499 +:103FC0008091D9018F7EEBCF8D3F21F48091DE016E +:103FD0008E7F0BC08E3F21F48091DE018D7F05C066 +:103FE0008F3F29F48091DE018B7F8093DE018091E9 +:103FF000DA0181110EC08091DB0181110AC080912C +:10400000DC01811106C08091DD01811102C0109296 +:10401000D801089589ED91E00E94FB0F0E945D1C7C +:104020009093D7018093D6010895CF938091D601C4 +:104030009091D7010E946A1C4091D801442321F03D +:104040002091120130E006C0209113015AE0259F13 +:10405000900111248217930708F486C08091DA0139 +:1040600081110DC09091DB01911109C09091DC018B +:10407000911105C09091DD01992309F475C04F3F5E +:1040800019F04F5F4093D801181624F40E949A1E2D +:104090008093DA018091DA0187FF05C00E949A1EA1 +:1040A00081958093DA018091DB01181624F40E9437 +:1040B0009A1E8093DB018091DB0187FF05C00E947F +:1040C0009A1E81958093DB016091DA01662339F1B4 +:1040D000C091DB01CC2319F1772767FD7095872FFD +:1040E000972F0E949A2323E333E343E35FE30E9485 +:1040F000FE230E9467236093DA016C2F772767FD08 +:104100007095872F972F0E949A2323E333E343E38D +:104110005FE30E94FE230E9467236093DB0180918E +:10412000DC01181624F40E94E21E8093DC018091C9 +:10413000DC0187FF05C00E94E21E81958093DC01AF +:104140008091DD01181624F40E94E21E8093DD01A7 +:104150008091DD0187FF05C00E94E21E819580935A +:10416000DD01CF910C940A20CF910895E9EDF1E0A3 +:1041700085E0DF011D928A95E9F71092D80110922F +:10418000DE010895833089F130F4813061F08230AE +:1041900009F06EC019C0853009F449C0B8F1863005 +:1041A00009F066C055C020911301862F90E0820F60 +:1041B000911D8F3F910520F4620F609313010895C4 +:1041C0008FEF80931301089520911201862F90E0C4 +:1041D000820F911D8F3F910520F4620F60931201B1 +:1041E00008958FEF80931201089520911101862F79 +:1041F00090E0820F911D8F3F910520F4620F609334 +:10420000110108958FEF80931101089520911001FD +:10421000862F90E0820F911D8F3F910520F4620F51 +:104220006093100108958FEF8093100108952091FD +:104230000F01862F90E0820F911D8F3F910520F492 +:10424000620F60930F0108958FEF80930F0108951F +:1042500020910E01862F90E0820F911D8F3F9105D6 +:1042600020F4620F60930E0108958FEF80930E018A +:104270000895833021F130F4813059F0823009F013 +:1042800049C012C0853089F128F1863009F042C05A +:1042900037C080911301681720F4861B80931301A7 +:1042A000089510921301089580911201681720F467 +:1042B000861B809312010895109212010895809137 +:1042C0001101681720F4861B809311010895109244 +:1042D0001101089580911001681720F4861B8093C6 +:1042E0001001089510921001089580910F01681730 +:1042F00020F4861B80930F01089510920F010895FA +:1043000080910E01681720F4861B80930E0108959A +:1043100010920E01089541E050E060E070E004C0AA +:10432000440F551F661F771F8A95D2F7CB01BA013C +:104330000E94201A0C941516873200F58E3108F071 +:1043400086C08E3009F466C060F4873009F44DC031 +:1043500018F4863049F531C0883041F18B3021F5B1 +:104360007BC0863109F478C018F48031E9F45CC070 +:10437000893109F471C08B31B9F442C0883309F432 +:104380006BC048F4893209F460C0853309F45DC01C +:10439000873251F45AC0833409F457C018F48A3371 +:1043A00018F057C0883499F080E008950E94761E76 +:1043B0000E94881E0E94911E4FC08091D001817F73 +:1043C0008E7F8093D00181E08093DF0108950E9469 +:1043D00015162FEF83ED90E3215080409040E1F7D8 +:1043E00000C000000E94BD1C37C08091D00180FF3A +:1043F00003C0817F8E7F01C081608093D0012CC07B +:104400009091D00191FB882780F921E0822780FBE1 +:1044100091F913C09091D00192FB882780F921E097 +:10442000822780FB92F909C09091D00193FB8827E5 +:1044300080F921E0822780FB93F99093D0018823B3 +:1044400059F091609093D00107C080E003C08D5176 +:1044500001C089530E948B2181E0089580E0089576 +:1044600080E00895CF93C82F8091DF01813071F0F3 +:1044700020F0823009F089C037C0A0910C01B091C2 +:104480000D018C91823209F082C007C0A0910C010D +:10449000B0910D018C91823249F48C2F0E942E2212 +:1044A00081111EC08C2F0E949C211CC08C2F0E9449 +:1044B0003022811115C0C43169F030F4CB3081F065 +:1044C000C03109F068C009C0C93221F0C83309F011 +:1044D00062C006C01092DF015EC082E08093DF01FF +:1044E00081E090E081705AC0C932C9F060F4C431F3 +:1044F000B1F020F4C73009F04CC034C0CE51C63002 +:1045000008F047C017C0CE3439F120F4CB3409F09D +:1045100040C01CC0C135C1F0C235D9F513C080916F +:10452000E001882319F01092E00133C081E080930C +:10453000DF0134C0EC2FF0E0E65BFE4F808180931A +:10454000E00127C061E003C061E007C06AE080913C +:10455000E0010E94C2201DC06AE08091E0010E943B +:10456000392117C08EE18093130182E380931201F9 +:104570008AE08093110184E18093100188E08093A8 +:104580000F0188E280930E0104C01092DF0180E0E9 +:1045900005C081E003C080E090E0A4CFCF910895F2 +:1045A0000E946B1E811102C00E944C1E0E94911E2F +:1045B0008093F00180FF02C0869501C080E00C94DA +:1045C000E1028091F001982F9695292F30E0233059 +:1045D00031054CF49F5F990F8170892B8160809326 +:1045E000F0010E94951E8091F00186950C94E102E5 +:1045F0008091F001982F969591F09158990F8170C4 +:10460000892B8093F0018E7F91E009F490E08091F6 +:10461000F00190FB80F98093F0010E94951E80913B +:10462000F00186950C94E1028091F001982F90950D +:1046300090FB80F98093F0010E94951E8091F0011B +:1046400080FF02C0869501C080E00C94E1023091A9 +:10465000F001232F26952F5F2F77822F90E0317066 +:1046600004972CF4220F232B2093F00102C03093E7 +:10467000F0018091F001282F2E7F91E009F490E065 +:1046800090FB80F98093F0010E94951E8091F001CB +:1046900086950C94E1022091F001922F969598272F +:1046A000990F822F8170892B8093F0018E7F91E08A +:1046B00009F490E08091F00190FB80F98093F00183 +:1046C0000E94951E8091F00186950C94E10204D021 +:1046D0006894B1118DC0089570D088F09F5790F004 +:1046E000B92F9927B751A0F0D1F0660F771F881F17 +:1046F000991F1AF0BA95C9F712C0B13081F077D07E +:10470000B1E0089574C0672F782F8827B85F39F01B +:10471000B93FCCF3869577956795B395D9F73EF475 +:1047200090958095709561957F4F8F4F9F4F08951D +:10473000E89409C097FB3EF490958095709561953B +:104740007F4F8F4F9F4F9923A9F0F92F96E9BB27F1 +:104750009395F695879577956795B795F111F8CF6D +:10476000FAF4BB0F11F460FF1BC06F5F7F4F8F4FD8 +:104770009F4F16C0882311F096E911C0772321F0CE +:104780009EE8872F762F05C0662371F096E8862F66 +:1047900070E060E02AF09A95660F771F881FDAF7BD +:1047A000880F9695879597F9089557FD9058440F6F +:1047B000551F59F05F3F71F04795880F97FB991F80 +:1047C00061F09F3F79F0879508951216130614063D +:1047D000551FF2CF4695F1DF08C0161617061806CA +:1047E000991FF1CF86957105610508940895E894A5 +:1047F000BB2766277727CB0197F908950BD078C0A0 +:1048000069D028F06ED018F0952309F05AC05FC027 +:104810001124EECFCADFA0F3959FD1F3950F50E09E +:10482000551F629FF001729FBB27F00DB11D639F62 +:10483000AA27F00DB11DAA1F649F6627B00DA11D08 +:10484000661F829F2227B00DA11D621F739FB00DAE +:10485000A11D621F839FA00D611D221F749F33271E +:10486000A00D611D231F849F600D211D822F762FB7 +:104870006A2F11249F5750408AF0E1F088234AF0B4 +:10488000EE0FFF1FBB1F661F771F881F9150504000 +:10489000A9F79E3F510570F014C0AACF5F3FECF31B +:1048A000983EDCF3869577956795B795F795E795EC +:1048B0009F5FC1F7FE2B880F911D9695879597F9FD +:1048C000089597F99F6780E870E060E008959FEF92 +:1048D00080EC089500240A94161617061806090697 +:1048E000089500240A941216130614060506089566 +:1048F000092E0394000C11F4882352F0BB0F40F4EE +:10490000BF2B11F460FF04C06F5F7F4F8F4F9F4F2D +:104910000895991B79E004C0991F961708F0961B1B +:10492000881F7A95C9F78095089597FB072E16F48E +:10493000009407D077FD09D00E94A92407FC05D078 +:104940003EF4909581959F4F0895709561957F4FA6 +:104950000895AA1BBB1B51E107C0AA1FBB1FA617C6 +:10496000B70710F0A61BB70B881F991F5A95A9F718 +:1049700080959095BC01CD010895F999FECF92BD27 +:1049800081BDF89A992780B50895A8E1B0E042E08A +:1049900050E00C94E024262FF999FECF1FBA92BD67 +:1049A00081BD20BD0FB6F894FA9AF99A0FBE019610 +:1049B00008950E94CB24272F0C94CC24DC01CB013A +:1049C000FC01F999FECF06C0F2BDE1BDF89A31961F +:1049D00000B40D9241505040B8F70895F894FFCFBD +:1049E00005960826090209CD08990801C80128087A +:1049F000140A321E420045002500260043006100D3 +:104A00006000200037006400650066006700440015 +:104A100046002400470074038D03A603BF038B04E4 +:104A20003E040804E8033F4D362001020304050656 +:044A3000070809006A +:00000001FF -- cgit v1.2.3-24-g4f1b From 47b537c87fd1d2d7671eaf5c49f20bba40afad25 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 30 Mar 2016 00:46:45 -0400 Subject: preonic readme --- keyboard/preonic/README.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index 3ba0cc152..0c0946655 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -1,6 +1,6 @@ -Planck keyboard firmware +Preonic keyboard firmware ====================== -DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). +DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). ## Quantum MK Firmware @@ -8,7 +8,7 @@ For the full Quantum feature list, see [the parent README.md](/README.md). ## Building -Download or clone the whole firmware and navigate to the keyboard/planck 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. +Download or clone the whole firmware and navigate to the keyboard/preonic 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. @@ -23,9 +23,3 @@ To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` $ make KEYMAP=[default|jack|] ``` Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. - -### Notable forks (which some of the keymap files are from) -- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) -- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c) -- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck) -- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid) -- cgit v1.2.3-24-g4f1b From 09d567045cb011b2fd7984cf3277b4875e677153 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Wed, 30 Mar 2016 09:17:06 -0400 Subject: Fixed minor issues with Preonic readme --- keyboard/preonic/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/preonic/README.md b/keyboard/preonic/README.md index 0c0946655..4a33a3e4e 100644 --- a/keyboard/preonic/README.md +++ b/keyboard/preonic/README.md @@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight 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 file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. +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 `.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|] ``` -Keymaps follow the format **__.c__** and are stored in the `keymaps` folder. +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -- cgit v1.2.3-24-g4f1b From 3b703eff33963a5756b3e3f16019d6ddae8a7874 Mon Sep 17 00:00:00 2001 From: Miha Rekar Date: Wed, 30 Mar 2016 17:03:03 +0200 Subject: Tiny fix of Planck diagrams --- keyboard/planck/keymaps/default/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index d995eb9e5..988deee99 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| -- cgit v1.2.3-24-g4f1b From ac3f3a85d571658fe2dcb98458cfd0c14e418150 Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Wed, 30 Mar 2016 11:36:35 -0400 Subject: Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6a6bbed40..985733067 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring RGBLIGHT_ENABLE = yes -Please note that the underglow is not compatible with MIDI functions. So you cannot enable both of them at the same time. +Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time. Please add the following options into your config.h, and set them up according your hardware configuration. @@ -309,4 +309,4 @@ what things are (and likely aren't) too risky. - EEPROM has around a 100000 write cycle. You shouldn't rewrite the firmware repeatedly and continually; that'll burn the EEPROM eventually. - \ No newline at end of file + -- cgit v1.2.3-24-g4f1b From fe6c3e4f0fe1abb38d64ce3f4d48db7aea63aad0 Mon Sep 17 00:00:00 2001 From: David Mohr Date: Tue, 29 Mar 2016 23:49:34 -0600 Subject: Squisher's international dvorak variant for ergodox ez See README.md --- .../keymaps/dvorak_intl_squisher/README.md | 29 ++++ .../dvorak_intl_squisher/keyboard-layout0.png | Bin 0 -> 73585 bytes .../dvorak_intl_squisher/keyboard-layout1.png | Bin 0 -> 59122 bytes .../dvorak_intl_squisher/keyboard-layout2.png | Bin 0 -> 53319 bytes .../keymaps/dvorak_intl_squisher/keymap.c | 185 +++++++++++++++++++++ 5 files changed, 214 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md new file mode 100644 index 000000000..984106ff4 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md @@ -0,0 +1,29 @@ +# ErgoDox EZ Dvorak International Squisher + +Dvorak layout adjusted with several (linux) applications in mind: + +* Easier Escape for VIM +* Windows/Super key for awesome WM +* Alt+Shift for international characters +* PrintScreen for sys-rq +* Insert for the X11 clip-board + +Major layer changes: + +* Common multimedia keys are integrated into layer 0, less common into layer 1 +* No mouse keys +* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users) + +Known issues: + +* Alt+Shift does not work reliably (depends on the X11 kb layout? Not + entirely clear...) + +![layer0](keyboard-layout0.png) +![layer1](keyboard-layout1.png) +![layer2](keyboard-layout2.png) + +## Changelog + +* 2016-03-29 + * Initial release diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png new file mode 100644 index 000000000..6a36f9bfa Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png differ diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png new file mode 100644 index 000000000..c6e6d913c Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png differ diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png new file mode 100644 index 000000000..23f56ff4c Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png differ diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c new file mode 100644 index 000000000..82f55b4bc --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c @@ -0,0 +1,185 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | BrBck| | Play | 6 | 7 | 8 | 9 | 0 | \ / L2 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Esc | ' | , | . | P | Y | Del | | Ins | F | G | C | R | L | / | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | O | E | U | I |------| |------| D | H | T | N | S | - | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |:/Ctrl| Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| LAlt | LGui | Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | App | L1 | | L2 |PrntScr | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space| Tab |------| |------| AltShf |Enter | + * | | | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_WBAK, + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_DELT, + KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_LALT, KC_LGUI, KC_LEFT,KC_RGHT, + CTL_T(KC_APP), TG(1), + KC_HOME, + KC_SPC,KC_TAB,KC_END, + // right hand + KC_MPLY, KC_6, KC_7, KC_8, KC_9, KC_0, LT(MDIA, KC_BSLS), + KC_INS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + MEH_T(KC_NO),KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + TG(2), KC_PSCREEN, + KC_PGUP, + KC_PGDN,RALT(KC_RSFT), KC_ENT + ), +/* Keymap 1: Symbol & Media Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Prev | Next | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | |VolUp | | | + * | | |------| |------| Mute | | + * | | | | |VolDn | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MNXT, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_VOLU, + KC_VOLD, KC_MUTE, KC_TRNS +), +/* Keymap 2: QWERTY Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | Q | W | E | R | T | | | | Y | U | I | O | P | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | A | S | D | F | G |------| |------| H | J | K | L | ; | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +KEYMAP( // layer 0 : default + // left hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, + KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_TRNS, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_TRNS, + KC_TRNS, KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; -- cgit v1.2.3-24-g4f1b From 5fae86849aad46ac003e2959d853f55759809ac9 Mon Sep 17 00:00:00 2001 From: David Mohr Date: Tue, 29 Mar 2016 23:56:21 -0600 Subject: Also add compiled hex file --- .../dvorak_intl_squisher/dvorak_intl_squisher.hex | 1127 ++++++++++++++++++++ 1 file changed, 1127 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex new file mode 100644 index 000000000..bd70f5829 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex @@ -0,0 +1,1127 @@ +:100000000C9465020C94AC020C94AC020C94AC02FF +:100010000C94AC020C94AC020C94AC020C94AC02A8 +:100020000C94AC020C94AC020C94B50B0C94870CA1 +:100030000C94AC020C94AC020C94AC020C94AC0288 +:100040000C94AC020C943B210C94AC020C94AC02CA +:100050000C94AC020C94C71A0C94AC020C94AC0235 +:100060000C94AC020C94AC020C94AC020C94AC0258 +:100070000C94AC020C94AC020C94AC020C94AC0248 +:100080000C94AC020C94AC020C94AC020C94AC0238 +:100090000C94AC020C94AC020C94AC020C94AC0228 +:1000A0000C94AC020C94AC020C94AC02F40C160D43 +:1000B000040E160D040E5B0D7E0D040ED30DE60D21 +:1000C000D110D11000110011431181119A139A130C +:1000D0009A119A139B129B126E139A139A138513FB +:1000E0000000F0A12E0029002A00E1003581000067 +:1000F0001E00340004003371E2004D001F00360082 +:1001000012001400E3002B002000370008000D004F +:1001100050002C002100130018000E004F004A0070 +:1001200022001C000C001B0000006571B6004C0092 +:100130000000007F00000154AE004900000000777D +:1001400000000254230009000700050000004600DB +:1001500024000A000B00100052004B00250006008E +:1001600017001A0051002800260015001100190080 +:100170002F00E51427000F0016001D7130004E00FF +:10018000318238002D00E500C100000001000100AF +:1001900001000100010000003A001E0220022202BC +:1001A000010001003B001F022102230201000100A7 +:1001B0003C002F0226022F00AC0001003D0030025F +:1001C00027023000AB0001003E003102350035024D +:1001D000000001000100010000000100000001001A +:1001E0000100010000000100000001003F0052007A +:1001F00051002402000001004000240021001E00E4 +:100200000100A9004100250022001F003700010065 +:1002100042002600230020002700A80043002502FA +:100220002E0231002E00AA0044004500010001000A +:1002300001000000010001000100010001000000B8 +:100240000100140004001D710100010001001A00EA +:1002500016001B0001000100010008000700060055 +:100260000100010001001500090019000100010052 +:10027000010017000A000500000001000100010054 +:100280000000010000000100010001000000010069 +:100290000000010001001C000B0011000000010023 +:1002A000010018000D0010000100010001000C0009 +:1002B0000E00360001000100010012000F0037009F +:1002C00001000100010013003382387101000100B8 +:1002D00001000100010001000100000016034500BB +:1002E000720067006F0044006F0078002000450036 +:1002F0005A00000016034500720067006F004400BA +:100300006F007800200045005A0000000403090433 +:1003100009026D00040100A0FA09040000010301B4 +:100320000100092111010001223F00070581030896 +:10033000000A090401000103010200092111010062 +:1003400001224D000705820308000A09040200018A +:100350000300000009211101000122360007058376 +:100360000308000A09040300010300000009211129 +:100370000100012239000705840310000112011059 +:100380000100000008EDFE07130100010200010555 +:10039000010906A101050719E029E71500250195C6 +:1003A0000875018102050819012905950575019156 +:1003B000029501750391010507190029771500259C +:1003C00001957875018102C005010980A1018502AE +:1003D00016010026B7001A01002AB7007510950112 +:1003E0008100C0050C0901A1018503160100269CAE +:1003F000021A01002A9C02751095018100C00501B6 +:100400000902A1010901A100050919012905150029 +:10041000250195057501810295017503810105018D +:10042000093009311581257F950275088106093843 +:100430001581257F950175088106050C0A3802157E +:1004400081257F950175088106C0C005010906A1B7 +:1004500001050719E029E7150025019508750181B7 +:100460000295017508810105081901290595057591 +:100470000191029501750391010507190029FF15E6 +:100480000025FF950675088100C0000000000000EF +:100490000000000000010204060A0F17202C3A4A4F +:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 +:1004B000B39D87715D4A3A2C20170F0A060402018A +:1004C0000000000000000000000011241FBECFEF5C +:1004D000DAE0DEBFCDBF04B603FE27C08091EF0196 +:1004E0009091F001A091F101B091F2018730904B11 +:1004F000A740B04BD1F41092EF011092F00110928E +:10050000F1011092F20114BE84B7877F84BF0FB649 +:10051000F894A895809160008861809360001092A3 +:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C +:10053000E8E1F6E402C005900D92A433B107D9F7C3 +:1005400021E0A4E3B1E001C01D92AF3EB207E1F7A4 +:100550000E94F6080C940A230C94000061110BC051 +:10056000FC018281882321F085EE0E94660F03C082 +:1005700085EE0E942E1080E090E00895089560912D +:10058000B1017091B2018091B3019091B4010E94C8 +:10059000F01956985E9825982D9826982E982798A9 +:1005A0002F98813019F0823021F00895259A2D9AE4 +:1005B0000895269A2E9A08950C94BF0256985E9834 +:1005C00025982D9826982E9827982F988FEF90E0B1 +:1005D000909389008093880090938B0080938A0089 +:1005E00090938D0080938C00259A2D9A2FEF80E7B1 +:1005F00092E0215080409040E1F700C00000269A30 +:100600002E9A2FEF80E792E0215080409040E1F752 +:1006100000C00000279A2F9A2FEF80E792E0215028 +:1006200080409040E1F700C0000025982D982FEF02 +:1006300080E792E0215080409040E1F700C0000048 +:1006400026982E982FEF80E792E02150804090402E +:10065000E1F700C0000027982F9856985E982598DB +:100660002D9826982E9827982F98089589EA809398 +:10067000800089E08093810024982C983F988AB16B +:100680008F748AB96E98479A8BB1806B8BB9769AC2 +:100690000E94DE020C94BE0280E2809300018091F1 +:1006A000340181110EC00E949B0381E080933401CC +:1006B0002FEF83ED90E3215080409040E1F700C0A0 +:1006C000000080E40E94A1038093000181112EC0EC +:1006D0000E94CB0380930001811128C00E94CB03AC +:1006E00080930001811122C08FE30E94CB0380938D +:1006F000000181111BC00E94C30380E40E94A1037A +:1007000080930001811112C08CE00E94CB03809382 +:10071000000181110BC00E94CB0380930001811165 +:1007200005C08FE30E94CB03809300010E94C303A6 +:100730008091000108951092B9008AE08093B8007A +:10074000089594EA9093BC009091BC0097FFFCCF71 +:100750009091B900987F983021F0903111F081E0AC +:1007600008958093BB0084E88093BC008091BC0016 +:1007700087FFFCCF8091B900887F883111F08034E9 +:1007800071F780E0089584E98093BC008091BC00FB +:1007900084FDFCCF08958093BB0084E88093BC0067 +:1007A0008091BC0087FFFCCF9091B900987F81E0D9 +:1007B000983209F480E0089584E88093BC00809129 +:1007C000BC0087FFFCCF8091BB00089580910001A1 +:1007D000811115C080E40E94A10380930001811162 +:1007E0000CC082E10E94CB0380930001811105C0FF +:1007F0008FEF0E94CB03809300010E94C30384B15A +:10080000807F84B985B1807F85B98AB1837F8AB9B9 +:100810008BB1837F8BB93E98469808950E944C0314 +:10082000809300010E94E60380B38C7080BB81B38B +:10083000836F81BBA6E3B1E0E4E4F1E08EE08E0FCC +:1008400011921D928E13FCCF0C943603BF92CF925F +:10085000DF92EF92FF920F931F93CF93DF938091DC +:100860000001882379F0809135018F5F80933501F5 +:10087000811108C00E944C0380930001811102C0C5 +:100880000E94DE0206E311E0C0E0D0E0DD24D39454 +:1008900082E0C82EEE24E394F12CC730D10500F598 +:1008A00080910001811164C080E40E94A1038093C3 +:1008B0000001811112C082E10E94CB0380930001EC +:1008C00081110BC0C7010C2E01C0880F0A94EAF7F2 +:1008D00080950E94CB03809300010E94C30348C00F +:1008E000CA30A1F028F4C83059F0C93061F005C011 +:1008F000CC3089F070F0CD3089F0209A289810C063 +:10090000219A29980DC0229A2A980AC0239A2B98D6 +:1009100007C0529A01C0539A5B9802C03E9A46980B +:1009200090EA9A95F1F79FB1799902C082E001C0EF +:1009300080E091709D25982B7C9902C084E001C0D5 +:1009400080E0892B7D9902C038E001C030E0832B24 +:100950007E9902C020E101C020E0822B9FB19095DA +:10096000991F9927991F9295990F907E892B0FC0F7 +:1009700080910001811149C080E40E94A10380930D +:100980000001882379F1B12C0E94C3038B2DF8015B +:100990009081981719F08083C09201010E94E603AC +:1009A00021960F5F1F4FCE30D10509F076CF809191 +:1009B0000101882361F1815080930101882339F07E +:1009C0008FE99FE00197F1F700C0000020C0A4E488 +:1009D000B1E0E6E3F1E0CF01825F91919D938E1348 +:1009E000FCCF15C083E10E94CB03809300018111ED +:1009F000CACF81E40E94A103809300018111C3CF7B +:100A00000E94DC03B82EB094BFCF80E0C0CF0E941C +:100A1000DC0281E0DF91CF911F910F91FF90EF9069 +:100A2000DF90CF90BF900895E82FF0E0EC5BFE4F91 +:100A30008081089508958B3B910578F4883A91055B +:100A400040F5853A9105D0F48430910508F0B1C0A5 +:100A50008130910509F4ADC06BC0803E910508F46A +:100A600067C0883E910508F4A4C09C01205F31094D +:100A70002031310508F05CC090650895853A9105F4 +:100A800009F459C0863A910509F058C082E890E40B +:100A90000895883A910509F454C0893A910509F4FA +:100AA00053C08A3A910509F452C08B3A910509F472 +:100AB00051C08C3A910509F450C08D3A910509F462 +:100AC0004FC0803B910509F44EC08E3A910509F460 +:100AD0004DC08F3A910509F44CC0813B910509F452 +:100AE0004BC0823B910509F44AC0833B910509F450 +:100AF00049C0843B910509F448C0853B910509F440 +:100B000047C0863B910509F446C0873B910509F42F +:100B100045C0883B910509F444C0893B910509F41F +:100B200043C08A3B910509F442C080E094E40895F3 +:100B300080E090E0089581E890E4089583E890E4EF +:100B4000089582EE94E4089589EE94E408958AEE7F +:100B500094E4089585EB94E4089586EB94E4089575 +:100B600087EB94E408958CEC94E408958DEC94E480 +:100B7000089583E895E408958AE895E4089582E964 +:100B800095E4089584E995E4089581E296E4089552 +:100B900083E296E4089584E296E4089585E296E47B +:100BA000089586E296E4089587E296E408958AE23D +:100BB00096E40895089596E0799FF001112494E554 +:100BC000899FE00DF11D1124E60FF11DEE0FFF1FAF +:100BD000EC51FF4F859194910895880F991FFC0166 +:100BE000E05AF040859194910895880F991FFC0177 +:100BF000E052FF4F85919491089526E0729FF00195 +:100C0000112444E5849FE00DF11D1124E60FF11D30 +:100C1000EE0FFF1FEC51FF4F859194919C013A9587 +:100C200021154FE1340708F41CC13F512115304113 +:100C300020F49F700E94F50508959C013053211502 +:100C4000304118F49927906C0895811520E592079A +:100C500071F40E94BE134FEF84E39CE0415080404A +:100C60009040E1F700C000000E94EC1AFAC0813009 +:100C700020E5920731F48091CD0181608093CD0110 +:100C8000F0C09C0130552115304108F051C0292F8A +:100C900033272F70332721303105D9F4AC0143704D +:100CA000552702C0220F331F4A95E2F73C68AC017A +:100CB00064E0440F551F6A95E1F744275370242BD5 +:100CC000352B73E0880F991F7A95E1F78076992785 +:100CD0001DC02230310529F4982F8827816F906A32 +:100CE000089523303105A9F4AC014370552721E064 +:100CF00030E002C0220F331F4A95E2F73C6843E020 +:100D0000880F991F4A95E1F7807E9770822B932B6D +:100D1000089524303105E1F4AC014370552721E0FA +:100D200030E002C0220F331F4A95E2F73A68E7CF5E +:100D30009C0130572115304118F49F70906208953E +:100D40009C0130582115304118F49F70906A089525 +:100D5000803E9105E0F4803C910558F58133910582 +:100D600009F46FC048F48932910509F463C08A32EE +:100D7000910509F46DC072C089339105E9F082389C +:100D80009105D1F08533910509F44DC067C0833ECC +:100D9000910581F138F4803E9105B9F0823E9105CC +:100DA000D9F05CC0863E910561F1873E9105A1F1C5 +:100DB00055C00E94ED0508952091E00120FD02C07C +:100DC00021FF4CC080EE90E049C08091E00180FF9F +:100DD000F9CF89E390E042C08091E00182FF0EC02C +:100DE0008091E00184FF03C080E090E037C083EE93 +:100DF00090E034C08091E00182FFF2CF82EE90E07B +:100E00002DC08091E00183FF0BC08091E00184FD43 +:100E1000EBCF87EE90E022C08091E00183FFF5CF19 +:100E200086EE90E01BC08091E00185FF07C089E25B +:100E300090E014C08091E00185FFF9CF85E390E058 +:100E40000DC08091E00186FF07C08AE290E006C0F5 +:100E50008091E00186FFF9CF81E390E00E941B05BD +:100E60000895089508950C943207809162010895C1 +:100E7000CF93DF9300D01F92CDB7DEB79C01809156 +:100E8000E601843019F593E099833B832A8390939C +:100E9000E9008FEF9091E800815095FD06C095ED37 +:100EA0009A95F1F700008111F5CF8091E80085FF58 +:100EB0000DC040E050E063E070E0CE0101960E947A +:100EC000A5098091E8008E778093E8000F900F903D +:100ED0000F90DF91CF910895CF93DF9300D01F92B1 +:100EE000CDB7DEB72091E601243021F522E0298339 +:100EF0009B838A8383E08093E9008FEF9091E800E1 +:100F0000815095FD06C095ED9A95F1F7000081118D +:100F1000F5CF8091E80085FF0DC040E050E063E030 +:100F200070E0CE0101960E94A5098091E8008E77BD +:100F30008093E8000F900F900F90DF91CF9108956C +:100F40002091E6012430F1F422E02093E9002FEF14 +:100F50003091E800215035FD06C035ED3A95F1F7A6 +:100F600000002111F5CF2091E80025FF0BC040E0E3 +:100F700050E065E070E00E94A5098091E8008E775E +:100F80008093E8000895CF93DF93EC019091E60100 +:100F9000943009F046C080910C018823D9F08091EB +:100FA0000D018823B9F09093E9008FEF9091E8004C +:100FB000815095FD06C095E19A95F1F700008111E9 +:100FC000F5CF8091E80085FF2CC040E050E060E163 +:100FD00070E017C081E08093E9008FEF9091E80006 +:100FE000815095FD06C095ED9A95F1F700008111AD +:100FF000F5CF8091E80085FF14C040E050E068E044 +:1010000070E0CE010E94A5098091E8008E77809360 +:10101000E80080E1FE01A2E5B1E001900D928A9521 +:10102000E1F7DF91CF9108958091E501811109C029 +:101030000E943A0B0E94970B8091E200846080939B +:10104000E20008951092E501089508950C94282176 +:101050000E94821A0E942E210E943D0E0C9433079A +:1010600042E061EC81E00E94B40A42E061EC82E07F +:101070000E94B40A42E061EC83E00E94B40A42E1BB +:1010800061EC84E00C94B40A8091E801833009F4A7 +:1010900055C030F4813071F0823009F48EC008956B +:1010A0008A3009F47AC08B3009F460C0893009F0C5 +:1010B0009CC020C08091E701813A09F096C08091E0 +:1010C000E800877F8093E8008091EB019091EC012C +:1010D000892B21F460E182E591E003C060E080E0CB +:1010E00090E070E00E94F0098091E8008B77809397 +:1010F000E80008958091E701813209F076C080917F +:10110000EB019091EC01009719F0039709F06DC085 +:101110008091E800877F8093E8008091E80082FD5D +:1011200005C08091E6018111F8CF5FC08091F10088 +:10113000809362018091E8008B7753C08091E70132 +:10114000813A09F052C08091EB019091EC01892B1A +:1011500009F04BC08091E800877F8093E800809180 +:10116000E80080FFFCCF80910C0136C08091E70140 +:101170008132D9F58091EB019091EC01892BA9F591 +:101180008091E800877F8093E8000E94E90A8091BF +:10119000E90180930C010C94BE138091E701813228 +:1011A00021F58091E800877F8093E8000E94E90A9A +:1011B0008091EA018093630108958091E701813A6B +:1011C000A1F48091E800877F8093E8008091E80097 +:1011D00080FFFCCF809163018093F1008091E80053 +:1011E0008E778093E8000C94E90A089584B7877F8E +:1011F00084BF0FB6F894A8958091600088618093B1 +:101200006000109260000FBE90E080E80FB6F89486 +:1012100080936100909361000FBE0E948C0E0E942B +:101220003A0B0E94970B8091E20084608093E20069 +:1012300078940E941D0E0E948E0E82E091E00E9422 +:10124000380E0E9416218091E601853069F40E94D3 +:10125000401A8091E4018823B1F30E946E1A88231A +:1012600091F30E948F09EFCF0E94940EECCF292FAB +:10127000332723303105C9F064F42130310581F082 +:101280002230310509F043C08DE690E020E133E0E3 +:1012900042C021323105F1F02232310541F137C02F +:1012A00082E190E02DE733E036C099278130910547 +:1012B00041F08230910541F0892B49F5ECE0F3E0F3 +:1012C00005C0E4EFF2E002C0ECEDF2E0849190E0C2 +:1012D0009F0121C06430D8F4E62FF0E0EE0FFF1F2D +:1012E000EE5DFE4F2081318189E090E014C06430D2 +:1012F00070F470E0FB01EE0FFF1FE65EFE4F2081F1 +:101300003181FB01EA5EFE4F808190E004C080E005 +:1013100090E020E030E0FA0131832083089580E1FD +:1013200089BD82E189BD09B400FEFDCF8091D8005E +:101330008F7D8093D8008091E00082608093E000F0 +:101340008091E00081FDFCCF0895CF92DF92EF9273 +:10135000FF920F931F93CF93DF93EC018B016A01F0 +:101360000E94080B811133C0C114D10439F0F60179 +:1013700080819181081B190BC80FD91FE12CF12C1A +:101380000115110519F18091E80085FD16C08091C5 +:10139000E8008E778093E800C114D10449F0F6018B +:1013A00080819181E80EF91EF182E08285E00FC014 +:1013B0000E94080B882321F30AC089918093F100D1 +:1013C00001501109FFEFEF1AFF0ADACF80E0DF9139 +:1013D000CF911F910F91FF90EF90DF90CF900895E4 +:1013E0002091ED013091EE012617370748F0611585 +:1013F000710539F42091E8002E772093E80001C0B0 +:10140000B90140E061157105A9F12091E60122239F +:1014100009F443C0253009F442C02091E80023FDBF +:1014200040C02091E80022FD32C02091E80020FF5A +:10143000E9CF4091F3002091F20030E0342BFC0121 +:10144000CF016115710559F02830310540F48191C3 +:101450008093F100615071092F5F3F4FF1CF41E060 +:101460002830310509F040E02091E8002E772093E4 +:10147000E800C8CF4111C9CF0AC08091E601882396 +:1014800061F0853061F08091E80083FD0AC08091B1 +:10149000E80082FFF2CF80E0089582E0089583E0C3 +:1014A000089581E008952091ED013091EE01261715 +:1014B000370748F06115710539F42091E8002E775F +:1014C0002093E80001C0B901FC0120E0611571051D +:1014D00091F18091E601882309F440C0853009F438 +:1014E0003FC08091E80083FD3DC08091E80082FD0F +:1014F0002FC08091E80080FFE9CF2091F300809118 +:10150000F20090E0922B6115710559F08830910539 +:1015100040F424912093F1003196615071090196B5 +:10152000F2CF21E0089709F020E08091E8008E7763 +:101530008093E800CBCF2111CCCF0AC08091E60187 +:10154000882361F0853061F08091E80083FD0AC056 +:101550008091E80082FFF2CF80E0089582E0089554 +:1015600083E0089581E00895982F973058F590937F +:10157000E900981739F07091EC002091ED0050913E +:10158000F00003C0242F762F50E021FF19C03091C6 +:10159000EB003E7F3093EB003091ED003D7F3093C8 +:1015A000ED003091EB0031603093EB007093EC0074 +:1015B0002093ED005093F0002091EE0027FF07C02C +:1015C0009F5FD3CF8F708093E90081E0089580E022 +:1015D00008958091E70187FF11C08091E80082FDA6 +:1015E00005C08091E6018111F8CF11C08091E8001B +:1015F0008B770BC08091E601882349F08091E80049 +:1016000080FFF8CF8091E8008E778093E8000895FE +:101610002091E4003091E50095E64091EC00842FA4 +:10162000817040FF22C08091E80080FD1CC0809145 +:10163000E601882391F0853091F08091EB0085FDE3 +:1016400010C04091E4005091E5004217530729F380 +:101650009A01915011F784E0089582E0089583E0A3 +:10166000089581E0089580E008954091E80042FFE8 +:10167000DECF08950E94A80B0E94B00BE0EEF0E0D0 +:10168000808181608083E8EDF0E080818F778083C6 +:1016900019BCA7EDB0E08C918E7F8C9380818F7EFA +:1016A00080831092E50108950F931F93CF93DF93EA +:1016B0000E94A80B0E94B00BC8EDD0E088818F7704 +:1016C000888388818068888388818F7D888319BC1E +:1016D0001092E6011092E2011092E4011092E301EF +:1016E00000EE10E0F80180818B7F8083888181602B +:1016F000888342E060E080E00E94B40AE1EEF0E01E +:1017000080818E7F8083E2EEF0E080818160808343 +:10171000808188608083F80180818E7F80838881CA +:1017200080618883DF91CF911F910F910895E8ED3B +:10173000F0E080818F7E8083E7EDF0E08081816042 +:10174000808384E082BF81E08093E5010C94540B98 +:10175000E8EDF0E080818E7F80831092E2000895B2 +:101760001092DA001092E10008951F920F920FB6C6 +:101770000F9211242F933F934F935F936F937F9317 +:101780008F939F93AF93BF93EF93FF938091E1006B +:1017900082FF0BC08091E20082FF07C08091E100D0 +:1017A0008B7F8093E1000E941C0E8091DA0080FF05 +:1017B0001FC08091D80080FF1BC08091DA008E7F0F +:1017C0008093DA008091D90080FF0DC080E189BD4F +:1017D00082E189BD09B400FEFDCF81E08093E6017E +:1017E0000E94140805C019BC1092E6010E9422084C +:1017F0008091E10080FF19C08091E20080FF15C058 +:101800008091E2008E7F8093E2008091E20080610F +:101810008093E2008091D80080628093D80019BC48 +:1018200085E08093E6010E9426088091E10084FF14 +:1018300030C08091E20084FF2CC080E189BD82E14C +:1018400089BD09B400FEFDCF8091D8008F7D8093C3 +:10185000D8008091E1008F7E8093E1008091E200CA +:101860008F7E8093E2008091E20081608093E200AD +:101870008091E201882311F084E007C08091E300A9 +:1018800087FD02C081E001C083E08093E6010E94F1 +:1018900028088091E10083FF29C08091E20083FF46 +:1018A00025C08091E100877F8093E10082E08093F2 +:1018B000E6011092E2018091E1008E7F8093E100C9 +:1018C0008091E2008E7F8093E2008091E20080614F +:1018D0008093E20042E060E080E00E94B40A8091E0 +:1018E000F00088608093F0000E942508FF91EF913E +:1018F000BF91AF919F918F917F916F915F914F9128 +:101900003F912F910F900FBE0F901F9018951F922F +:101910000F920FB60F9211242F933F934F935F9323 +:101920006F937F938F939F93AF93BF93CF93DF93E7 +:10193000EF93FF93C091E900CF708091EC00D82F16 +:10194000D17080FDD0E81092E9008091F000877F8F +:101950008093F00078940E94CB0C1092E900809163 +:10196000F00088608093F000CD2BCF70C093E90029 +:10197000FF91EF91DF91CF91BF91AF919F918F91A7 +:101980007F916F915F914F913F912F910F900FBE7B +:101990000F901F9018951F93CF93DF93CDB7DEB7AD +:1019A000AA970FB6F894DEBF0FBECDBFE7EEF1E009 +:1019B00088E08E0F9091F10091938E13FBCF0E94DF +:1019C00044088091E80083FF1FC18091E701909156 +:1019D000E801492F50E04A30510508F015C1FA01DD +:1019E000EA5AFF4F0C94BF22803881F0823809F008 +:1019F0000BC18091EB018F708093E9008091EB0027 +:101A000085FB882780F91092E90006C08091E301E8 +:101A10009091E401911182609091E800977F9093FA +:101A2000E8008093F1001092F100C8C0282F2D7FAC +:101A300009F0EAC0882319F0823061F0E5C0809196 +:101A4000E901813009F0E0C0933009F080E0809333 +:101A5000E4012BC08091E901811127C08091EB0145 +:101A60008F7009F4D1C08093E9002091EB0020FF32 +:101A70001CC0933021F48091EB00806214C09091DF +:101A8000EB0090619093EB0021E030E0A90102C0EF +:101A9000440F551F8A95E2F74093EA001092EA003E +:101AA0008091EB0088608093EB001092E9008091B8 +:101AB000E800877F86C08111A7C01091E9011F77D8 +:101AC0008091E3008078812B8093E3008091E8008F +:101AD000877F8093E8000E94E90A8091E80080FFF8 +:101AE000FCCF8091E30080688093E300111102C075 +:101AF00082E001C083E08093E60186C08058823096 +:101B000008F082C08091E9019091EA018C3D53E098 +:101B1000950779F583E08A838AE289834FB7F89441 +:101B2000DE01139620E03EE051E2E32FF0E0509317 +:101B30005700E49120FF03C0E295EF703F5FEF7024 +:101B40008E2F90E0EA3010F0C79601C0C0968D93BA +:101B50009D932F5F243149F74FBF8091E800877F25 +:101B60008093E8006AE270E0CE0101960E94F009DD +:101B700014C0AE014F5F5F4F6091EB010E943709C7 +:101B8000BC01892B09F440C09091E800977F9093A5 +:101B9000E80089819A810E94530A8091E8008B773E +:101BA0008093E80031C0803879F58091E800877F24 +:101BB0008093E8008091E2018093F1008091E80039 +:101BC0008E778093E8000E94E90A1EC081111CC034 +:101BD0009091E9019230C0F48091E800877F809372 +:101BE000E8009093E2010E94E90A8091E2018111EC +:101BF00006C08091E30087FD02C081E001C084E05F +:101C00008093E6010E9430088091E80083FF0AC0BB +:101C10008091E800877F8093E8008091EB008062EC +:101C20008093EB00AA960FB6F894DEBF0FBECDBF2F +:101C3000DF91CF911F9108950895CF938091E60190 +:101C40008823A1F0C091E900CF709091EC00892F1A +:101C5000817090FD80E8C82B1092E9008091E80027 +:101C600083FD0E94CB0CCF70C093E900CF91089503 +:101C700090936901809368010895E0916801F09163 +:101C80006901309721F00190F081E02D099480E006 +:101C90000895E0916801F0916901309721F0028088 +:101CA000F381E02D09940895E0916801F0916901B4 +:101CB000309721F00480F581E02D0994089520915A +:101CC0006601309167018217930771F09093670165 +:101CD00080936601E0916801F0916901309721F0ED +:101CE0000680F781E02D09940895209164013091D8 +:101CF00065018217930771F09093650180936401E9 +:101D0000E0916801F0916901309721F00084F1853C +:101D1000E02D0994089508950C948B0E0E94881A62 +:101D20000E940E040C944E1BCF92DF92EF92FF9212 +:101D30000F931F93CF93DF93CDB7DEB72B970FB6DB +:101D4000F894DEBF0FBECDBF0E9426048BE6C82EDE +:101D500081E0D82E00E010E0E02E802F0E941405D4 +:101D6000F60141916F01F42EF826B1F40F5F1F4F79 +:101D70000E30110589F78FEF89838A831B820E94B9 +:101D8000911A8160782F9D838C8349815A816B8160 +:101D90008D810E94370F40C09091CD0191FF04C00A +:101DA0008B870E941A058B8520E030E04F2D50E094 +:101DB000922FBA01022E02C0759567950A94E2F738 +:101DC00060FF24C02E83EF8221E030E0690102C071 +:101DD000CC0CDD1C9A95E2F790E08C219D21892B9B +:101DE00009F420E028870E94911A8160782F9A8751 +:101DF00089874E815F8168858A850E94370FF80147 +:101E0000E559FE4F8081C826C08206C02F5F3F4F34 +:101E10002630310569F6AACF0E94351E10916A015D +:101E20000E943D0E1817A1F00E943D0E80936A019A +:101E30002B960FB6F894DEBF0FBECDBFDF91CF91CA +:101E40001F910F91FF90EF90DF90CF900C9433078C +:101E50002B960FB6F894DEBF0FBECDBFDF91CF91AA +:101E60001F910F91FF90EF90DF90CF900895CF9347 +:101E7000DF93CDB7DEB72B970FB6F894DEBF0FBE5A +:101E8000CDBF4F83588769877A878B87DE0111968C +:101E900086E0FD0111928A95E9F785E0FE0137960B +:101EA00001900D928A95E1F749815A816B817C817D +:101EB0008D819E810E9458162B960FB6F894DEBF36 +:101EC0000FBECDBFDF91CF9108950895CF938823A2 +:101ED00009F4C2C0C82F823859F40E943D0E81FD1A +:101EE000BBC089E30E94F4180E94C11989E30CC0A9 +:101EF000833879F40E943D0E80FDAEC083E50E94D8 +:101F0000F4180E94C11983E50E943619CF910C94F0 +:101F1000C119843859F40E943D0E82FD9DC087E4AA +:101F20000E94F4180E94C11987E4EECF8CEF8C0F49 +:101F3000813A48F48C2F0E947B2081118DC08C2F18 +:101F40000E94F418E3CF80E28C0F883048F4C77009 +:101F500081E001C0880FCA95EAF70E947A19D6CFAE +:101F60008BE58C0F833078F4C53A29F0C63A31F00E +:101F700083E890E005C081E890E002C082E890E04C +:101F8000CF910C945F0E88E58C0F833108F064C00C +:101F9000C83A39F1C93A41F1CA3A49F1CB3A51F15B +:101FA000CC3A59F1CD3A61F1C03B69F1CE3A71F1C9 +:101FB000CF3A79F1C13B81F1C23B89F1C33B91F149 +:101FC000C43B99F1C53BA1F1C63BA9F1C73BB1F1B7 +:101FD000C83BB9F1C93BC1F1CA3BC9F180E090E00F +:101FE00038C082EE90E035C089EE90E032C08AEED3 +:101FF00090E02FC085EB90E02CC086EB90E029C0EC +:1020000087EB90E026C08CEC90E023C08DEC90E054 +:1020100020C083E891E01DC08AE891E01AC082E9FF +:1020200091E017C084E991E014C081E292E011C010 +:1020300083E292E00EC084E292E00BC085E292E07F +:1020400008C086E292E005C087E292E002C08AE220 +:1020500092E0CF910C94750ECF910895882309F4E6 +:102060004BC0823859F40E943D0E81FF45C089E380 +:102070000E94F4180E94C11989E30CC0833871F4DE +:102080000E943D0E80FF38C083E50E94F4180E9434 +:10209000C11983E50E9436190C94C119843859F48A +:1020A0000E943D0E82FF28C087E40E94F4180E941F +:1020B000C11987E4EFCF9CEF980F913A58F390E263 +:1020C000980F983050F4877091E001C0990F8A956D +:1020D000EAF7892F0E948019DFCF9BE5980F933094 +:1020E00020F480E090E00C945F0E885A833120F455 +:1020F00080E090E00C94750E0895882321F00E94F2 +:102100007A190C94C1190895882321F00E9480192E +:102110000C94C1190895BF92CF92DF92EF92FF9273 +:102120000F931F93CF93DF9300D000D000D0CDB793 +:10213000DEB725E0FC01DE01119601900D922A9593 +:10214000E1F7FC01D08011810281258122952F7059 +:1021500043815481452B09F4EDC21F3F21F4FFEF69 +:10216000DF1609F4E7C27C012E830E94650FD98235 +:102170001A8389819A810E94B318182FB92E0E9460 +:10218000B2180E9479172E81002319F00E94971926 +:102190002E81EB2DE295EF70F0E0E05AFF4F0C94AA +:1021A000BF228B2D807F9B2D9F70F92E882319F0E5 +:1021B000F29480EFF822002349F0FF2009F467C26F +:1021C0008F2D0E948A190E94C11961C2812F0E941D +:1021D0002E10FF2009F4AEC28F2D0E949019269672 +:1021E0000FB6F894DEBF0FBECDBFDF91CF911F9128 +:1021F0000F91FF90EF90DF90CF90BF900C94C1199A +:102200003B2D307F8B2D8F70303211F08295807F87 +:10221000112319F0113021F12CC00023B9F0222331 +:1022200009F4A0C1213009F09DC126960FB6F8949B +:10223000DEBF0FBECDBFDF91CF911F910F91FF90F9 +:10224000EF90DF90CF90BF900C94AA19222319F041 +:10225000213009F46FC28E830E94AD198E8196C120 +:10226000002321F0223008F065C27CC1211162C236 +:102270008DC1002321F0222309F474C108C2222356 +:1022800009F484C119C22B2D26952695237030E0C0 +:102290002115310521F021303105D1F04BC2002349 +:1022A00021F0812F9B2D937002C080E090E0269654 +:1022B0000FB6F894DEBF0FBECDBFDF91CF911F9157 +:1022C0000F91FF90EF90DF90CF90BF900C945F0E36 +:1022D000002321F0812F9B2D937002C080E090E0BD +:1022E00026960FB6F894DEBF0FBECDBFDF91CF911B +:1022F0001F910F91FF90EF90DF90CF90BF900C94C3 +:10230000750E812F002319F00E943D1D02C00E940E +:10231000A51D26960FB6F894DEBF0FBECDBFDF9188 +:10232000CF911F910F91FF90EF90DF90CF90BF90D2 +:102330000C942A1E8B2D837009F07BC00111FAC109 +:10234000812F829586958770880F880F912F9F70B7 +:10235000C92ED12CE12CF12C082E04C0CC0CDD1C94 +:10236000EE1CFF1C0A94D2F714FF12C04FE050E09D +:1023700060E070E004C0440F551F661F771F8A9508 +:10238000D2F7CB01BA01609570958095909503C006 +:1023900060E070E0CB012B2D269526952370422F0F +:1023A00050E042305105D9F04330510569F16C29B4 +:1023B0007D298E299F294130510551F126960FB66E +:1023C000F894DEBF0FBECDBFDF91CF911F910F916B +:1023D000FF90EF90DF90CF90BF900C94A0176C29E6 +:1023E0007D298E299F2926960FB6F894DEBF0FBE51 +:1023F000CDBFDF91CF911F910F91FF90EF90DF90B4 +:10240000CF90BF900C94BC170E94A017C701B601D3 +:1024100026960FB6F894DEBF0FBECDBFDF91CF91E9 +:102420001F910F91FF90EF90DF90CF90BF900C9491 +:102430008417002319F08B2D817001C086958823A5 +:1024400009F478C1812F829586958770880F880F4F +:10245000912F9F70C92ED12CE12CF12C082E04C095 +:10246000CC0CDD1CEE1CFF1C0A94D2F714FF12C02A +:102470004FE050E060E070E004C0440F551F661F5D +:10248000771F8A95D2F7CB01BA0160957095809538 +:10249000909503C060E070E0CB012B2D269526952A +:1024A0002370422F50E042305105D9F0433051059E +:1024B00069F16C297D298E299F294130510551F1FF +:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139 +:1024D0001F910F91FF90EF90DF90CF90BF900C94E1 +:1024E0007A186C297D298E299F2926960FB6F89493 +:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037 +:10250000EF90DF90CF90BF900C9496180E947A18AD +:10251000C701B60126960FB6F894DEBF0FBECDBF39 +:10252000DF91CF911F910F91FF90EF90DF90CF90AF +:10253000BF900C945E18103FD1F118F4103E50F487 +:10254000A1C0123F09F463C008F44CC0133F09F462 +:1025500073C098C01F708B2D8F710023A1F00E9453 +:10256000F717812F26960FB6F894DEBF0FBECDBFAA +:10257000DF91CF911F910F91FF90EF90DF90CF905F +:10258000BF900C947D100E941818812F26960FB6CC +:10259000F894DEBF0FBECDBFDF91CF911F910F9199 +:1025A000FF90EF90DF90CF90BF900C9484100023A9 +:1025B000A9F02111BFC08B2D8F7126960FB6F8940C +:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066 +:1025D000EF90DF90CF90BF900C943D18223008F020 +:1025E000A9C0E9CF0023A9F08B2D8F7126960FB6D5 +:1025F000F894DEBF0FBECDBFDF91CF911F910F9139 +:10260000FF90EF90DF90CF90BF900C94F7170023CE +:1026100059F38B2D8F7126960FB6F894DEBF0FBE3F +:10262000CDBFDF91CF911F910F91FF90EF90DF9081 +:10263000CF90BF900C941818002399F08B2D8F71B8 +:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7 +:102650001F910F91FF90EF90DF90CF90BF900C945F +:10266000E21726960FB6F894DEBF0FBECDBFDF91FE +:10267000CF911F910F91FF90EF90DF90CF90BF907F +:102680000C94D8170023A9F0222309F4ADCF812F91 +:1026900026960FB6F894DEBF0FBECDBFDF91CF9167 +:1026A0001F910F91FF90EF90DF90CF90BF900C940F +:1026B000660F222309F4ADCF812F26960FB6F8942A +:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065 +:1026D000EF90DF90CF90BF900C942E104B2D4F7049 +:1026E000612FC7010E94AE0226960FB6F894DEBF96 +:1026F0000FBECDBFDF91CF911F910F91FF90EF9053 +:10270000DF90CF90BF900C94FC164B2D4F70612F33 +:10271000C70126960FB6F894DEBF0FBECDBFDF917E +:10272000CF911F910F91FF90EF90DF90CF90BF90CE +:102730000C94DA0526960FB6F894DEBF0FBECDBF17 +:10274000DF91CF911F910F91FF90EF90DF90CF908D +:10275000BF9008950E9497190E94A7190E946C19B2 +:102760000E94C1190E94DA1E0E942A1E80E090E099 +:102770000E945F0E80E090E00C94750E0E94871915 +:102780000C94AA130E94B318292F22952F7030E0C1 +:102790002C3031054CF42A3031056CF422503109CB +:1027A0002230310588F407C02C30310549F02F3034 +:1027B000310531F009C0803E48F0803F29F406C061 +:1027C00093FB882780F9089580E0089581E00895BB +:1027D000CF93DF9300D000D01F92CDB7DEB70F901C +:1027E0000F900F900F900F90DF91CF910895CF939E +:1027F000DF9300D000D000D0CDB7DEB726960FB65D +:10280000F894DEBF0FBECDBFDF91CF9108951F9327 +:10281000CF93DF93C091790116E080917A01C817B8 +:1028200099F0D0E01C9FF0011D9FF00D1124E55898 +:10283000FE4F4081518162817381848195810E9424 +:10284000F7132196C770E9CFDF91CF911F910895BB +:102850004091AB015091AC016091AD017091AE011E +:102860008091AF019091B0010C94F7138091B00169 +:1028700082958F7009F054C08091AD01882309F4CE +:102880004FC080917901A0917A016091AB01709164 +:10289000AC014091AE015091AF01B6E08A1709F446 +:1028A0003FC090E041155105C1F17F3F11F46F3FEA +:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A +:1028C000218172132AC02081621327C02281211125 +:1028D00024C0238134812417350710F42150310995 +:1028E000241B350B283C3105C0F42091B0012F701A +:1028F00020612093B00126E0289FF001299FF00D70 +:102900001124E058FE4F80818F70806180838BEAB4 +:1029100091E00E948B100C94071401968770BECF33 +:102920000895CF92DF92EF92FF920F931F93CF9370 +:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58 +:10294000CDBF8C0185E0F801DE011D9601900D924E +:102950008A95E1F7D8014C9111965C9111971296E6 +:102960006C9112971396CD90DC9014973091AB0137 +:102970007091AC018091AE019091AF01009709F484 +:102980006BC17F3F19F43F3F09F466C1E090AD0190 +:10299000EE2009F4C0C02091B001C816D90628F075 +:1029A000F601E81BF90BCF0104C0809590958C0DC2 +:1029B0009D1DFF24F394883C910578F0F12C207F35 +:1029C00009F0C6C07C2DD98AC88A89890E94E8137B +:1029D0008BEA91E00E948B10B1C0822F807F09F0BA +:1029E00046C0751314C0341312C0611110C02F708B +:1029F00020612093B0010E9428148BEA91E00E948C +:102A00008B108091B001D80115968C932EC0CD28E3 +:102A100019F15F3F11F44F3FF9F0F62E61111CC020 +:102A20008091790120917A0136E0821709F45AC029 +:102A300090E0389FF001399FF00D1124E558FE4FCA +:102A40007181571306C07081471303C072817111E1 +:102A500003C001968770E9CFF62E662309F418C1EA +:102A60008091B00181608093B001F12C11C1751388 +:102A700008C0341306C0611104C08091B001D801B0 +:102A8000C3C04D875E878D859E856A8B0E94C21369 +:102A90006A898823E1F16623D1F12091B001822F68 +:102AA00082958F7090E0029774F08091AB019091C5 +:102AB000AC0198878F831986DB86CA862C87CE0166 +:102AC00007960E948B1086E0F801ABEAB1E0019016 +:102AD0000D928A95E1F70E9436140E942814FF2473 +:102AE000F394D6C04D875E878D859E850E94B3186E +:102AF000292F22952F7030E0223031050CF0BCC018 +:102B00009F7009F0B6C0805E883008F4C1C0C8016B +:102B10000E948B10E4CFC816D90608F453C0F60102 +:102B2000E81BF90BCF01883C910508F450C0F12C4B +:102B30007C2DD98AC88A89890E94E813EBEAF1E0E2 +:102B400086E0DF011D928A95E9F70E942814A0C053 +:102B5000751314C0341312C0611110C08091B001FC +:102B6000F8018583C8010E948B1086E0EBEAF1E052 +:102B7000DF011D928A95E9F7FE2C8AC04D875E879A +:102B80008D859E856A8B0E94C2136A89882309F409 +:102B9000BECF662309F4BBCF2091B001822F82956E +:102BA0008F7090E002970CF48ECF8091AB019091E2 +:102BB000AC019A8389831B82DD82CC822E83CE0175 +:102BC00001967FCF809590958C0D9D1DACCFF62EF4 +:102BD000662309F49CCF75132EC034132CC02091AA +:102BE000B00120FD1FC0822F82958F70D9F0D801CF +:102BF00015962C9315978F3049F08F5F982F9295EB +:102C0000907F822F8F70892B15968C93C8010E941C +:102C10008B1086E0F801ABEAB1E001900D928A9545 +:102C2000E1F793CF86E0F801ABEAB1E001900D92B5 +:102C30008A95E1F72DC04D875E878D859E850E9420 +:102C4000C213811140CF8091B00181608093B001A7 +:102C5000C8010E948B101CC0662309F458CF4D8711 +:102C60005E878D859E850E94C213882309F44FCF0D +:102C70002ACF811148CF0CC0243031050CF047CF4A +:102C80009F7009F440CFF8019581907F09F03BCF08 +:102C90008F2D62960FB6F894DEBF0FBECDBFDF91C9 +:102CA000CF911F910F91FF90EF90DF90CF900895FB +:102CB0001F93CF93DF93CDB7DEB72C970FB6F89461 +:102CC000DEBF0FBECDBF4F83588769877A878B875A +:102CD0009C87CE0107960E949114882369F08F810A +:102CE00098852A853B85232BF1F19F3F09F063C02E +:102CF0008F3F09F060C037C086E0FE013796DE01E5 +:102D0000119601900D928A95E1F76F817885EA8599 +:102D1000FB85309741F17F3F11F46F3F21F1209106 +:102D20007A0130E0C90101968770992740917901B5 +:102D300050E08417950709F447C069837A83FD83BF +:102D4000EC8396E0929FD001939FB00D1124A5587B +:102D5000BE4FFE01319601900D929A95E1F7809356 +:102D60007A010E94071416E08091790190917A010E +:102D70008917C1F1189FC001112485589E4F0E94E8 +:102D80009114882379F1E09179011E9FF0011124BB +:102D9000E558FE4F40815181628173818481958124 +:102DA0000E94F7138091790190E00196877099272E +:102DB00080937901D9CF4F81588569857A858B8534 +:102DC0009C850E94F713CFCF0E94BE1310927A0108 +:102DD00010927901EBEAF1E086E0DF011D928A951D +:102DE000E9F7C1CF2C960FB6F894DEBF0FBECDBF6A +:102DF000DF91CF911F910895EF92FF920F931F9350 +:102E0000CF93DF938C01892B09F46CC0F12CEE2455 +:102E1000E394E8012196F8018491843740F48430EA +:102E200008F051C0813081F0823019F15BC08537E4 +:102E300009F444C0A8F19CE7980F903708F052C0FD +:102E40008F770E942E1041C00E5F1F4FFE01C4916C +:102E500080E28C0F883048F4C7708E2D01C0880F37 +:102E6000CA95EAF70E949A1914C08C2F0E94660F27 +:102E70002DC00E5F1F4FFE01C49180E28C0F883081 +:102E800058F4C7708E2D01C0880FCA95EAF70E94CA +:102E9000A0190E94C1191AC08C2F0E942E1016C0B2 +:102EA0000E5F1F4FFE01C491CC2381F08FE99FE09C +:102EB0000197F1F700C00000C150F6CF0E5F1F4F21 +:102EC000FE01F49003C00E94660F8E018F2D8823AF +:102ED00009F49FCFEFE9FFE03197F1F700C0000060 +:102EE0008150F5CFDF91CF911F910F91FF90EF901F +:102EF000089508956093B5017093B6018093B7016A +:102F00009093B8010C94AA130F931F930091B501ED +:102F10001091B6012091B7013091B801DC01CB01CD +:102F2000802B912BA22BB32B8093B5019093B601EC +:102F3000A093B701B093B8011F910F910C94AA13FD +:102F40000F931F930091B5011091B6012091B70125 +:102F50003091B801DC01CB0180239123A223B3235C +:102F60008093B5019093B601A093B701B093B801D7 +:102F70001F910F910C94AA130F931F930091B50109 +:102F80001091B6012091B7013091B801DC01CB015D +:102F900080279127A227B3278093B5019093B6018C +:102FA000A093B701B093B8011F910F910C94AA138D +:102FB0001092B1011092B2011092B3011092B401BB +:102FC0000C94AA1341E050E060E070E004C0440FAC +:102FD000551F661F771F8A95D2F74093B101509312 +:102FE000B2016093B3017093B4010C94AA1341E051 +:102FF00050E060E070E004C0440F551F661F771F6B +:103000008A95D2F78091B1019091B201A091B3015C +:10301000B091B401482B592B6A2B7B2B4093B10103 +:103020005093B2016093B3017093B4010C94AA134E +:1030300041E050E060E070E004C0440F551F661F9F +:10304000771F8A95D2F7409550956095709580913D +:10305000B1019091B201A091B301B091B4014823A4 +:1030600059236A237B234093B1015093B2016093AB +:10307000B3017093B4010C94AA1341E050E060E0F6 +:1030800070E004C0440F551F661F771F8A95D2F762 +:103090008091B1019091B201A091B301B091B401BE +:1030A000482759276A277B274093B1015093B201E3 +:1030B0006093B3017093B4010C94AA130F931F9300 +:1030C0000091B1011091B2012091B3013091B4018E +:1030D000DC01CB01802B912BA22BB32B8093B10170 +:1030E0009093B201A093B301B093B4011F910F91DB +:1030F0000C94AA130F931F930091B1011091B20188 +:103100002091B3013091B401DC01CB0180239123E4 +:10311000A223B3238093B1019093B201A093B30192 +:10312000B093B4011F910F910C94AA130F931F93A6 +:103130000091B1011091B2012091B3013091B4011D +:10314000DC01CB0180279127A227B3278093B1010F +:103150009093B201A093B301B093B4011F910F916A +:103160000C94AA130895CF92DF92EF92FF920F93DF +:103170001F93CF93DF938C01C090B501D090B6011F +:10318000E090B701F090B8014091B1015091B201C7 +:103190006091B3017091B401C42AD52AE62AF72AB6 +:1031A000CFE1D0E0D701C6010C2E04C0B695A7959B +:1031B000979587950A94D2F780FF07C0B8018C2FA6 +:1031C0000E94FD058130910531F4219758F7B8012F +:1031D00080E00E94FD05DF91CF911F910F91FF903C +:1031E000EF90DF90CF90089590910C01992321F0FA +:1031F00090910D01911109C020910E0130910F01A4 +:10320000F90132969FEF40E01FC0982F9695969552 +:1032100096959F3050F5E0910E01F0910F01E90F66 +:10322000F11D877021E030E0A90102C0440F551F55 +:103230008A95E2F7CA019181892B818308959F3F86 +:1032400039F04F5F4E3041F051915813F8CF0DC017 +:103250005111F7CF942FF5CF9F3F39F0F901E90FC6 +:10326000F11D97FDFA9582830895089590910C01C0 +:10327000992321F090910D01911109C020910E0127 +:1032800030910F01F9013296205F3F4F1FC0982FF8 +:103290009695969596959F30F0F4E0910E01F091F9 +:1032A0000F01E90FF11D877021E030E0A90102C094 +:1032B000440F551F8A95E2F7CA01809591818923B1 +:1032C000818308953196E217F30729F090819813CE +:1032D000F9CF1082F7CF089581E090E0E0910E01E0 +:1032E000F0910F01E80FF91F1082019680319105CE +:1032F000A9F708959091CC01892B8093CC01089572 +:1033000080959091CC0189238093CC0108951092EF +:10331000CC0108959091CB01892B8093CB01089526 +:1033200080959091CB0189238093CB0108951092D1 +:10333000CB0108959091CA01892B8093CA01089509 +:1033400080959091CA0189238093CA0108951092B3 +:10335000CA0108958093B90108951092B9010895A2 +:1033600080910E0190910F01FC0131969C01205F2C +:103370003F4F80E0919191118F5FE217F307D1F7F2 +:103380000895E0910E01F0910F018091CC018083AE +:10339000E0910E01F0910F0190818091CB01892B7A +:1033A0008083E0910E01F0910F0190818091CA011C +:1033B000892B80838091B901882361F0E0910E010F +:1033C000F0910F019081892B80830E94B0198111A7 +:1033D0001092B90180910E0190910F010C94490E49 +:1033E000CF92DF92EF92FF926C01EE24FF24C11482 +:1033F000D104E104F10421F0C701B60120E101C0CC +:1034000020E0C72ED82EE92EFF24C114D104E104F8 +:10341000F10419F0285FC701B6016B017C0154E08B +:10342000F694E794D794C7945A95D1F7C114D10470 +:10343000E104F10419F02C5FC701B6016B017C01B6 +:1034400042E0F694E794D794C7944A95D1F7C11413 +:10345000D104E104F10419F02E5FC701B601DC01CB +:10346000CB01B695A79597958795892B8A2B8B2BA2 +:1034700009F02F5F822FFF90EF90DF90CF9008959B +:103480008091E601843039F11092CE0120E488E188 +:1034900090E00FB6F894A895809360000FBE20933B +:1034A000600080E00E94330783B7817F846083BF20 +:1034B00083B7816083BF7894889583B78E7F83BFFD +:1034C0000FB6F894A89580916000886180936000A1 +:1034D000109260000FBE089508950895CF930E9442 +:1034E0006C1A0E9426040E946D1AC0E08C2F0E9464 +:1034F0001405811104C0CF5FCE30C1F701C081E057 +:10350000CF9108950E94BE130E943D0E0C94330784 +:1035100082E084BD93E095BD9AEF97BD80936E00E5 +:1035200008952FB7F8948091CF019091D001A09188 +:10353000D101B091D2012FBF0895CF92DF92EF92C7 +:10354000FF920F931F932FB7F8944091CF015091A2 +:10355000D0016091D1017091D2012FBF6A017B012E +:10356000EE24FF248C0120E030E0C016D106E206F4 +:10357000F30610F4415051099A01281B390BC90177 +:103580001F910F91FF90EF90DF90CF9008951F92C1 +:103590000F920FB60F9211248F939F93AF93BF9307 +:1035A0008091CF019091D001A091D101B091D20131 +:1035B0000196A11DB11D8093CF019093D001A093DE +:1035C000D101B093D201BF91AF919F918F910F9094 +:1035D0000FBE0F901F9018950E943A0BF8942FEF92 +:1035E00087EA91E6215080409040E1F700C000005A +:1035F00087E090EBDC018093EF019093F001A093C2 +:10360000F101B093F2019CE088E10FB6F894A8951F +:10361000809360000FBE90936000FFCFEF92FF9207 +:103620000F931F93CF93DF93D82FC0E08C2F0E946E +:10363000140500E010E0E82EF12CC701002E02C0B6 +:10364000959587950A94E2F780FD06C00F5F1F4F9E +:103650000630110591F709C0602F7C2F80E00E9491 +:10366000DB05D813F3CF81E004C0CF5FCE30F1F695 +:1036700080E0DF91CF911F910F91FF90EF9008951F +:10368000CF93C82F8CE20E940E1B882321F08C2F31 +:10369000CF910C940E1B80E0CF910895CF930E94A0 +:1036A000951C811102C00E947B1CC5E6C15049F0E7 +:1036B0000E9426048FE39CE90197F1F700C0000007 +:1036C000F5CF89E20E94401B811113C18AE20E945A +:1036D000401B81110E947B1C85E00E94401B8111D0 +:1036E0000E94EC1A0E94A01C8093CD0187E00E94EA +:1036F000401B8823A9F18BE10E94401B882351F0D5 +:103700008091CD0181FB222720F991E0922790FB47 +:1037100081F90EC08EE00E94401B882361F08091E9 +:10372000CD0182FB222720F991E0922790FB82F9BC +:103730008093CD0115C080E10E94401B9091CD0186 +:10374000882341F093FB222720F981E0822780FB28 +:1037500093F904C0892F809580FB90F99093CD0157 +:103760008091CD010E94A41C0E94B21C8093E001B4 +:1037700080EE0E94401B882341F08091E001982F49 +:10378000909590FB80F98093E00189E30E94401BB3 +:10379000882359F08091E00181FB222720F991E0F4 +:1037A000922790FB81F98093E00182EE0E94401BFA +:1037B000882359F08091E00182FB222720F991E0D3 +:1037C000922790FB82F98093E00186EE0E94401BD5 +:1037D000882359F08091E00183FB222720F991E0B2 +:1037E000922790FB83F98093E00183EE0E94401BB7 +:1037F000882359F08091E00184FB222720F991E091 +:10380000922790FB84F98093E00185E30E94401B9E +:10381000882359F08091E00185FB222720F991E06F +:10382000922790FB85F98093E00181E30E94401B81 +:10383000882359F08091E00186FB222720F991E04E +:10384000922790FB86F98093E00181E10E94401B62 +:10385000882359F08091E00187FB222720F991E02D +:10386000922790FB87F98093E0018091E0010E940C +:10387000B61C8091E00187FB882780F980930D01B9 +:1038800087E20E94401BC82F8EE10E94401B8111DD +:10389000C2608FE10E94401B8111C46080E20E94DF +:1038A000401B8111C86081E20E94401B8111C061F0 +:1038B00082E20E94401B8111C06283E20E94401B91 +:1038C0008111C06484E20E94401B882311F0C0680B +:1038D00002C0CC2329F08C2F0E94AD1C6C2F03C09A +:1038E0000E94A91C682F70E080E090E0CF910C94BA +:1038F0007A17CF9108956DEE7EEF80E090E00E9400 +:10390000F52260E082E090E00E94E72260E083E040 +:1039100090E00E94E72260E084E090E00E94E722CD +:1039200060E085E090E00C94E72280E090E00E9467 +:10393000E12221E08D3E9E4F09F020E0822F089584 +:1039400082E090E00C94D922682F82E090E00C9401 +:10395000E72283E090E00C94D922682F83E090E086 +:103960000C94E72284E090E00C94D922682F84E044 +:1039700090E00C94E7228091D50180FF0BC060910C +:10398000130185E0689FB0011124759567957595C1 +:1039900067952BC081FF09C06091130185E0689F86 +:1039A000B00111247595679520C082FF07C0609112 +:1039B000130185E0689FB001112417C09091D601D2 +:1039C0009923D1F060911201961788F72091130185 +:1039D00085E0289F90011124929FA001939F500D94 +:1039E000112470E0CA010E94AB226038710540F4D6 +:1039F0006115710539F002C065E070E0862F089509 +:103A00008FE7089581E008958091D50180FF08C077 +:103A10006091110170E0759567957595679521C066 +:103A200081FF06C06091110170E07595679519C01E +:103A300082FF04C06091110170E010C09091D60126 +:103A40009923C1F0609110019617A0F780911101A0 +:103A5000899FC001112470E00E94AB22603871057B +:103A600028F46115710521F0862F08958FE70895D8 +:103A700081E0089561E070E0F4CF803F21F40E947E +:103A8000BB1C819504C0813F29F40E94BB1C80931C +:103A9000D9010895823F21F40E94BB1C819504C086 +:103AA000833F29F40E94BB1C8093D8010895893F6D +:103AB00019F40E94041D05C08A3F31F40E94041DC0 +:103AC00081958093DA0108958B3F21F40E94041DB3 +:103AD000819504C08C3F29F40E94041D8093DB0172 +:103AE0000895843F21F48091D701816017C0853FFC +:103AF00021F48091D701826011C0863F21F480912A +:103B0000D70184600BC0873F21F48091D701886082 +:103B100005C0883F31F48091D70180618093D7013F +:103B200008958D3F21F48091D50181600BC08E3FB7 +:103B300021F48091D501826005C08F3F29F48091E6 +:103B4000D50184608093D5010895803F39F4809138 +:103B5000D90187FF6CC01092D90169C0813F29F457 +:103B60008091D9011816BCF362C09091D801823FB0 +:103B700029F497FF5CC01092D80159C0833F19F413 +:103B80001916CCF354C0893F41F48091DA0118161C +:103B90000CF04DC01092DA014AC08A3F29F480919E +:103BA000DA0187FF44C0F6CF8B3F39F48091DB0107 +:103BB00087FF3DC01092DB013AC08C3F29F4809111 +:103BC000DB011816BCF333C0843F21F48091D70188 +:103BD0008E7F17C0853F21F48091D7018D7F11C062 +:103BE000863F21F48091D7018B7F0BC0873F21F462 +:103BF0008091D701877F05C0883F31F48091D7013C +:103C00008F7E8093D70113C08D3F21F48091D50121 +:103C10008E7F0BC08E3F21F48091D5018D7F05C032 +:103C20008F3F29F48091D5018B7F8093D5018091BE +:103C3000D80181110EC08091D90181110AC08091F3 +:103C4000DA01811106C08091DB01811102C010925E +:103C5000D601089587ED91E00E94540E0E94911ABA +:103C60009093D4018093D30108951F93CF93DF9352 +:103C70008091D3019091D4010E949D1AAC01909142 +:103C8000D601992321F02091140130E006C0209143 +:103C900015018AE0289F900111244217530708F468 +:103CA00085C08091D801C091D901D091DA011091DD +:103CB000DB01811107C0C11175C0D11173C0111191 +:103CC00071C074C09F3F19F09F5F9093D601181682 +:103CD00024F40E94BB1C8093D8018091D80187FFF7 +:103CE00005C00E94BB1C81958093D8011C1624F44A +:103CF0000E94BB1C8093D9018091D90187FF05C028 +:103D00000E94BB1C81958093D9016091D8016623E4 +:103D100031F1C091D901CC2311F1062E000C770BA3 +:103D2000880B990B0E94B22123E333E343E35FE363 +:103D30000E9416220E947A216093D8016C2FCC0F2A +:103D4000770B880B990B0E94B22123E333E343E303 +:103D50005FE30E9416220E947A216093D9011D160A +:103D600024F40E94041D8093DA018091DA0187FF18 +:103D700005C00E94041D81958093DA01111624F478 +:103D80000E94041D8093DB018091DB0187FF05C049 +:103D90000E94041D81958093DB01DF91CF911F91DB +:103DA0000C942A1E9F3F09F08FCF97CFDF91CF91C0 +:103DB0001F910895E7EDF1E085E0DF011D928A95FE +:103DC000E9F71092D6011092D5010895833081F160 +:103DD00028F4813059F08230D1F00895853009F40B +:103DE00049C0B8F1863009F456C008958091150194 +:103DF000262F30E0280F311D2F3F310524F4680FA6 +:103E00006093150108958FEF8093150108958091B7 +:103E10001401262F30E0280F311D2F3F310524F4E7 +:103E2000680F6093140108958FEF80931401089533 +:103E300080911301262F30E0280F311D2F3F3105CF +:103E400024F4680F6093130108958FEF809313019A +:103E5000089580911201262F30E0280F311D2F3F49 +:103E6000310524F4680F6093120108958FEF809359 +:103E70001201089580911101262F30E0280F311D85 +:103E80002F3F310524F4680F6093110108958FEFDF +:103E900080931101089580911001262F30E0280FA2 +:103EA000311D2F3F310524F4680F609310010895F0 +:103EB0008FEF809310010895833011F128F4813041 +:103EC00049F0823091F00895853081F120F18630FB +:103ED000C1F1089580911501681720F4861B809325 +:103EE0001501089510921501089580911401681725 +:103EF00020F4861B809314010895109214010895F4 +:103F000080911301681720F4861B80931301089594 +:103F100010921301089580911201681720F4861BF6 +:103F20008093120108951092120108958091110159 +:103F3000681720F4861B80931101089510921101D7 +:103F4000089580911001681720F4861B809310015A +:103F500008951092100108950F931F938D3109F465 +:103F60006AC008F03FC08E3009F484C0C0F48730C6 +:103F700009F46DC068F4863009F0B5C08091CD01B8 +:103F8000817F8E7F8093CD0181E08093DD01ACC085 +:103F9000883009F457C08B3009F46AC0A4C0863158 +:103FA00009F466C078F4803109F477C0813109F0F2 +:103FB0009AC00E94BE1390910D0181E089278093E1 +:103FC0000D0156C0893109F453C08B3109F08BC003 +:103FD0008091CD0181FB222720F991E0922790FB6F +:103FE00081F951C0853309F475C048F4873209F46A +:103FF00071C008F45EC0893209F46CC074C08334A7 +:1040000030F48A3308F053C0883391F16CC08334A4 +:1040100009F460C0883409F066C00E94BE130FEF37 +:1040200013ED20E3015010402040E1F700C00000F4 +:104030000E94EC1A1DC00E9434210E943D0E0E9475 +:10404000330716C00E94A01C0E94B21C11C09091A0 +:10405000CD01892F8095817080FB90F929F09660C1 +:1040600098609093CD0140C0997F977F9093CD0148 +:1040700081E03AC08091CD0182FB222720F991E0B6 +:10408000922790FB82F98093CD01992389F3809147 +:10409000CD0181608093CD01EBCF8091CD0183FB79 +:1040A000222720F991E0922790FB83F9ECCF8953E6 +:1040B00001C08D5141E050E060E070E08A019B0159 +:1040C00004C0000F111F221F331F8A95D2F7C901A8 +:1040D000B80104C061E070E080E090E00E947A17CF +:1040E0000E94BE13C5CF80E01F910F91089580E01C +:1040F000089580E00895CF93C82F8091DD0181302D +:1041000079F018F08230E9F187C0E0910E01F0916A +:104110000F018081813169F0823209F07FC009C0CE +:10412000E0910E01F0910F018081813111F0823216 +:1041300061F48C2F0E947720811104C08C2F0E9483 +:10414000AC1F1DC081E090E01AC08C2F0E94792026 +:10415000811114C0C43179F048F4CB3079F0C0310A +:1041600009F060C082E08093DD0108C0C93219F017 +:10417000C83321F057C01092DD0154C081E0817036 +:1041800053C0C93289F118F5C43171F1A8F4C730B0 +:1041900009F046C08AE08093150194E190931401E0 +:1041A00093E0909313018093120188E080931101B2 +:1041B00088E28093100134C0CE51C63088F5EC2FD0 +:1041C000F0E0E65DFE4F80818093DC0129C0CE34B3 +:1041D000E9F020F4CB3421F56AE013C0C13579F061 +:1041E000C235F1F461E00DC08091DC01882319F043 +:1041F0001092DC0115C081E08093DD0115C061E003 +:1042000006C08091DC010E94E61E0AC06AE080912F +:10421000DC010E945C1F04C01092DD0180E004C03C +:1042200081E002C080E0ABCFCF910895E1E8F0E0FB +:104230008081886080838081816080838FB7F894DB +:1042400093E09093890090ED909388008FBF08953C +:10425000EFE6F0E08081826080830895EFE6F0E091 +:1042600080818D7F80830895EFE6F0E0908182E089 +:104270008927808308951F920F920FB60F92112401 +:104280002F933F934F935F936F937F938F939F935E +:10429000AF93BF93EF93FF938091DE019091DF0185 +:1042A00001969093DF018093DE01811103C082E0CB +:1042B0000E943307E091DF01E695E695F0E0E657CE +:1042C000FB4FE4918091DE018E1303C080E00E94D9 +:1042D0003307FF91EF91BF91AF919F918F917F91A4 +:1042E0006F915F914F913F912F910F900FBE0F9063 +:1042F0001F9018950E9481216894B1110C9410228E +:1043000008950E94F52188F09F5798F0B92F9927BA +:10431000B751B0F0E1F0660F771F881F991F1AF0B0 +:10432000BA95C9F714C0B13091F00E940F22B1E0E4 +:1043300008950C940F22672F782F8827B85F39F0E3 +:10434000B93FCCF3869577956795B395D9F73EF449 +:1043500090958095709561957F4F8F4F9F4F0895F1 +:10436000E89409C097FB3EF490958095709561950F +:104370007F4F8F4F9F4F9923A9F0F92F96E9BB27C5 +:104380009395F695879577956795B795F111F8CF41 +:10439000FAF4BB0F11F460FF1BC06F5F7F4F8F4FAC +:1043A0009F4F16C0882311F096E911C0772321F0A2 +:1043B0009EE8872F762F05C0662371F096E8862F3A +:1043C00070E060E02AF09A95660F771F881FDAF791 +:1043D000880F9695879597F9089557FD9058440F43 +:1043E000551F59F05F3F71F04795880F97FB991F54 +:1043F00061F09F3F79F08795089512161306140611 +:10440000551FF2CF4695F1DF08C01616170618069D +:10441000991FF1CF86957105610508940895E89478 +:10442000BB2766277727CB0197F908950E94292299 +:104430000C949A220E948C2238F00E94932220F041 +:10444000952311F00C9483220C94892211240C944E +:1044500010220E94ED2170F3959FC1F3950F50E05B +:10446000551F629FF001729FBB27F00DB11D639F26 +:10447000AA27F00DB11DAA1F649F6627B00DA11DCC +:10448000661F829F2227B00DA11D621F739FB00D72 +:10449000A11D621F839FA00D611D221F749F3327E2 +:1044A000A00D611D231F849F600D211D822F762F7B +:1044B0006A2F11249F5750409AF0F1F088234AF058 +:1044C000EE0FFF1FBB1F661F771F881F91505040C4 +:1044D000A9F79E3F510580F00C9483220C94102282 +:1044E0005F3FE4F3983ED4F3869577956795B7954B +:1044F000F795E7959F5FC1F7FE2B880F911D969565 +:10450000879597F9089597F99F6780E870E060E0D4 +:1045100008959FEF80EC089500240A94161617065C +:1045200018060906089500240A94121613061406A4 +:1045300005060895092E0394000C11F4882352F007 +:10454000BB0F40F4BF2B11F460FF04C06F5F7F4FBF +:104550008F4F9F4F089597FB072E16F4009407D0B6 +:1045600077FD09D00E94C52207FC05D03EF4909546 +:1045700081959F4F0895709561957F4F0895EE0F37 +:10458000FF1F0590F491E02D0994AA1BBB1B51E17C +:1045900007C0AA1FBB1FA617B70710F0A61BB70BB3 +:1045A000881F991F5A95A9F780959095BC01CD0158 +:1045B0000895F999FECF92BD81BDF89A992780B5EB +:1045C0000895A8E1B0E042E050E00C94FC22262FD0 +:1045D000F999FECF1FBA92BD81BD20BD0FB6F894E8 +:1045E000FA9AF99A0FBE019608950E94E722272FA2 +:1045F0000C94E822DC01CB01FC01F999FECF06C046 +:10460000F2BDE1BDF89A319600B40D924150504090 +:08461000B8F70895F894FFCFFC +:1046180020023507C307A0076C0738070101BA0154 +:1046280028080A03140A3F4D36394B04FE03C80311 +:104638008F0322033B0354036D03010203040506A1 +:044648000708090056 +:00000001FF -- cgit v1.2.3-24-g4f1b From a3ed43227385a8ab95b13510e0ecf0ffeed96083 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 30 Mar 2016 16:31:46 -0500 Subject: Drastically rewrote the path script to handle Explorer's stubborn grasp of EnvVars. Tested on Win7. --- 1-setup-path-win.bat | 79 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 6957dbc3f..2c15857bb 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -1,14 +1,71 @@ -@echo off +@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION +@ECHO OFF +SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe -reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul -echo. +SET NEWPATH1="C:\MinGW\msys\1.0\bin" +SET NEWPATH2="C:\MinGW\bin" -if NOT ["%errorlevel%"]==["0"] ( - echo FAILED. You probably just need to run the script with administrator privileges. -) else ( - echo Success! - setx QMK QMK > nul -) +:: Make sure paths exist +IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch) +IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) -echo. -pause +:: Add paths +CALL :AddPath %NEWPATH1% +CALL :AddPath %NEWPATH2% + +:: Branch to UpdateEnv if we need to update +IF DEFINED UPDATE (GOTO UpdateEnv) + +GOTO ExitBatch + +:: ----------------------------------------------------------------------------- + +:UpdateEnv +ECHO Making updated PATH go live . . . +REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1 +setx TEMPVAR 1 > nul 2>&1 +REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1 +IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer) +GOTO ExitBatch + +:: ----------------------------------------------------------------------------- + +:ExitBatch +ENDLOCAL +PAUSE +EXIT /b + +:: ----------------------------------------------------------------------------- + +:AddPath +ECHO %PATH% | FINDSTR /C:"%~1" > nul +IF ERRORLEVEL 1 ( + REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" > nul 2>&1 + IF ERRORLEVEL 0 ( + ECHO Adding %1 . . . Success! + SET "PATH=%PATH%;%~1" + SET UPDATE=1 + ) ELSE ( + ECHO Adding %1 . . . FAILED. Run this script with administrator privileges. + ) +) ELSE ( + ECHO Skipping %1 - Already in PATH + ) +EXIT /b + +:: ----------------------------------------------------------------------------- + +:KillExplorer + +ECHO Your desktop is being restarted, please wait. . . +ping -n 5 127.0.0.1 > NUL 2>&1 +ECHO Killing process Explorer.exe. . . +taskkill /f /im explorer.exe +ECHO. +ECHO Your desktop is now loading. . . +ping -n 5 127.0.0.1 > NUL 2>&1 +ECHO. +ping -n 5 127.0.0.1 > NUL 2>&1 +START explorer.exe +START explorer.exe %CD% +EXIT /b \ No newline at end of file -- cgit v1.2.3-24-g4f1b From dbd4ab3457dd001ab4bbcec14315047b815f7dfe Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Thu, 31 Mar 2016 23:15:59 +0200 Subject: fixed de_osx prefix in keymap include to avoid conflicts --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 50 ++++----- quantum/keymap_extras/keymap_german_osx.h | 156 ++++++++++++++-------------- 2 files changed, 103 insertions(+), 103 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index df8d99650..5d1296419 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -13,8 +13,8 @@ #define M_CTRL_CMDV 1 #define M_CTRL_CMDC 2 #define M_MEH_SH_ACUT 3 -#define M_DE_PLUS_CTRLALT 12 -#define M_DE_CIRC_CTRLCMD 13 +#define M_DE_OSX_PLUS_CTRLALT 12 +#define M_DE_OSX_CIRC_CTRLCMD 13 #define M_TOGGLE_5 14 #define M_CTL_SFT_HASH 15 @@ -54,21 +54,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTL_SFT_HASH), - KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI, - KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G, - KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT, - LT(SYMB,DE_LESS), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), KC_UP, KC_DOWN, + KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(M_CTL_SFT_HASH), + KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, + KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, + KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, + LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN, M(M_MEH_SH_ACUT), TG(2), KC_HOME, KC_BSPC,KC_DEL, LT(SMLY,KC_END), // right hand - M(M_CTL_SFT_HASH), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, - KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE, - DE_H, DE_J, DE_K, DE_L, DE_OE, ALT_T(DE_AE), - KC_RALT, DE_N, DE_M, DE_COMM,DE_DOT, CTL_T(DE_MINS), KC_RSFT, - KC_LEFT, KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT), LT(SYMB,DE_PLUS), - TG(4), ALL_T(DE_ACUT), + M(M_CTL_SFT_HASH), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, + KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, + DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), + KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM,DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, + KC_LEFT, KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), + TG(4), ALL_T(DE_OSX_ACUT), KC_PGUP, KC_PGDN,KC_ENT, KC_SPC ), @@ -97,19 +97,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS, - KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT, - KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS, + KC_TRNS,DE_OSX_LESS,DE_OSX_MORE,DE_OSX_EXLM,DE_OSX_QST, KC_TRNS,KC_TRNS, + KC_TRNS,DE_OSX_HASH,DE_OSX_DLR, DE_OSX_BSLS,DE_OSX_SLSH,KC_DOT, + KC_TRNS,KC_TRNS,DE_OSX_LESS,DE_OSX_PERC,DE_OSX_PIPE,DE_OSX_TILD,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_DEL,KC_TRNS, // right hand M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_LESS, DE_MORE, DE_EXLM, - DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), DE_HASH, - KC_TRNS, DE_PIPE, DE_TILD, DE_CIRC, KC_UP, DE_MINS, LSFT(KC_4), - DE_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, + KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, + DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, LALT(KC_8), LALT(KC_9), DE_OSX_HASH, + KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, DE_OSX_CIRC, KC_UP, DE_OSX_MINS, LSFT(KC_4), + DE_OSX_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_F13, KC_F12, KC_F14, KC_F15, KC_TRNS, KC_TRNS @@ -210,9 +210,9 @@ KEYMAP( // right hand KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS, + KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_OSX_MINS, KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS, - KC_0,KC_DOT, KC_COMM, DE_EQL, KC_TRNS, + KC_0,KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -309,7 +309,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (timer_elapsed(start) > 150){ return MACRO(U(LCTRL),U(LSFT),U(LALT),END); } else { - return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix + return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_OSX_ACUT here, as macro needs KC_ prefix } } break; @@ -325,7 +325,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } } break; - case M_DE_CIRC_CTRLCMD: + case M_DE_OSX_CIRC_CTRLCMD: if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),D(LGUI),END); @@ -337,7 +337,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } } break; - case M_DE_PLUS_CTRLALT: + case M_DE_OSX_PLUS_CTRLALT: if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),D(LALT),END); diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h index da91b4bf4..d0b77fb80 100644 --- a/quantum/keymap_extras/keymap_german_osx.h +++ b/quantum/keymap_extras/keymap_german_osx.h @@ -9,92 +9,92 @@ // Alt gr // normal characters -#define DE_Z KC_Y -#define DE_Y KC_Z +#define DE_OSX_Z KC_Y +#define DE_OSX_Y KC_Z -#define DE_A KC_A -#define DE_B KC_B -#define DE_C KC_C -#define DE_D KC_D -#define DE_E KC_E -#define DE_F KC_F -#define DE_G KC_G -#define DE_H KC_H -#define DE_I KC_I -#define DE_J KC_J -#define DE_K KC_K -#define DE_L KC_L -#define DE_M KC_M -#define DE_N KC_N -#define DE_O KC_O -#define DE_P KC_P -#define DE_Q KC_Q -#define DE_R KC_R -#define DE_S KC_S -#define DE_T KC_T -#define DE_U KC_U -#define DE_V KC_V -#define DE_W KC_W -#define DE_X KC_X +#define DE_OSX_A KC_A +#define DE_OSX_B KC_B +#define DE_OSX_C KC_C +#define DE_OSX_D KC_D +#define DE_OSX_E KC_E +#define DE_OSX_F KC_F +#define DE_OSX_G KC_G +#define DE_OSX_H KC_H +#define DE_OSX_I KC_I +#define DE_OSX_J KC_J +#define DE_OSX_K KC_K +#define DE_OSX_L KC_L +#define DE_OSX_M KC_M +#define DE_OSX_N KC_N +#define DE_OSX_O KC_O +#define DE_OSX_P KC_P +#define DE_OSX_Q KC_Q +#define DE_OSX_R KC_R +#define DE_OSX_S KC_S +#define DE_OSX_T KC_T +#define DE_OSX_U KC_U +#define DE_OSX_V KC_V +#define DE_OSX_W KC_W +#define DE_OSX_X KC_X -#define DE_0 KC_0 -#define DE_1 KC_1 -#define DE_2 KC_2 -#define DE_3 KC_3 -#define DE_4 KC_4 -#define DE_5 KC_5 -#define DE_6 KC_6 -#define DE_7 KC_7 -#define DE_8 KC_8 -#define DE_9 KC_9 +#define DE_OSX_0 KC_0 +#define DE_OSX_1 KC_1 +#define DE_OSX_2 KC_2 +#define DE_OSX_3 KC_3 +#define DE_OSX_4 KC_4 +#define DE_OSX_5 KC_5 +#define DE_OSX_6 KC_6 +#define DE_OSX_7 KC_7 +#define DE_OSX_8 KC_8 +#define DE_OSX_9 KC_9 -#define DE_DOT KC_DOT -#define DE_COMM KC_COMM +#define DE_OSX_DOT KC_DOT +#define DE_OSX_COMM KC_COMM -#define DE_SS KC_MINS -#define DE_AE KC_QUOT -#define DE_UE KC_LBRC -#define DE_OE KC_SCLN +#define DE_OSX_SS KC_MINS +#define DE_OSX_AE KC_QUOT +#define DE_OSX_UE KC_LBRC +#define DE_OSX_OE KC_SCLN -#define DE_CIRC KC_NUBS // accent circumflex ^ and ring ° -#define DE_ACUT KC_EQL // accent acute ´ and grave ` -#define DE_PLUS KC_RBRC // + and * and ~ -#define DE_HASH KC_BSLS // # and ' -#define DE_LESS KC_GRV // < and > and | -#define DE_MINS KC_SLSH // - and _ +#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring ° +#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave ` +#define DE_OSX_PLUS KC_RBRC // + and * and ~ +#define DE_OSX_HASH KC_BSLS // # and ' +#define DE_OSX_LESS KC_GRV // < and > and | +#define DE_OSX_MINS KC_SLSH // - and _ // shifted characters -#define DE_RING LSFT(DE_CIRC) // ° -#define DE_EXLM LSFT(KC_1) // ! -#define DE_DQOT LSFT(KC_2) // " -#define DE_PARA LSFT(KC_3) // § -#define DE_DLR LSFT(KC_4) // $ -#define DE_PERC LSFT(KC_5) // % -#define DE_AMPR LSFT(KC_6) // & -#define DE_SLSH LSFT(KC_7) // / -#define DE_LPRN LSFT(KC_8) // ( -#define DE_RPRN LSFT(KC_9) // ) -#define DE_EQL LSFT(KC_0) // = -#define DE_QST LSFT(DE_SS) // ? -#define DE_GRV LSFT(DE_ACUT) // ` -#define DE_ASTR LSFT(DE_PLUS) // * -#define DE_QUOT LSFT(DE_HASH) // ' -#define DE_MORE LSFT(DE_LESS) // > -#define DE_COLN LSFT(KC_DOT) // : -#define DE_SCLN LSFT(KC_COMM) // ; -#define DE_UNDS LSFT(DE_MINS) // _ +#define DE_OSX_RING LSFT(DE_OSX_CIRC) // ° +#define DE_OSX_EXLM LSFT(KC_1) // ! +#define DE_OSX_DQOT LSFT(KC_2) // " +#define DE_OSX_PARA LSFT(KC_3) // § +#define DE_OSX_DLR LSFT(KC_4) // $ +#define DE_OSX_PERC LSFT(KC_5) // % +#define DE_OSX_AMPR LSFT(KC_6) // & +#define DE_OSX_SLSH LSFT(KC_7) // / +#define DE_OSX_LPRN LSFT(KC_8) // ( +#define DE_OSX_RPRN LSFT(KC_9) // ) +#define DE_OSX_EQL LSFT(KC_0) // = +#define DE_OSX_QST LSFT(DE_OSX_SS) // ? +#define DE_OSX_GRV LSFT(DE_OSX_ACUT) // ` +#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // * +#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // ' +#define DE_OSX_MORE LSFT(DE_OSX_LESS) // > +#define DE_OSX_COLN LSFT(KC_DOT) // : +#define DE_OSX_SCLN LSFT(KC_COMM) // ; +#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _ // Alt-ed characters -#define DE_SQ2 LALT(KC_2) // ² -#define DE_SQ3 LALT(KC_3) // ³ -#define DE_LCBR LALT(KC_8) // { -#define DE_LBRC LALT(KC_5) // [ -#define DE_RBRC LALT(KC_6) // ] -#define DE_RCBR LALT(KC_9) // } -#define DE_BSLS LALT(LSFT(KC_7)) // backslash -#define DE_AT LALT(DE_L) // @ -#define DE_EURO LALT(KC_E) // € -#define DE_TILD LALT(DE_N) // ~ -#define DE_PIPE LALT(DE_7) // | +#define DE_OSX_SQ2 LALT(KC_2) // ² +#define DE_OSX_SQ3 LALT(KC_3) // ³ +#define DE_OSX_LCBR LALT(KC_8) // { +#define DE_OSX_LBRC LALT(KC_5) // [ +#define DE_OSX_RBRC LALT(KC_6) // ] +#define DE_OSX_RCBR LALT(KC_9) // } +#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash +#define DE_OSX_AT LALT(DE_OSX_L) // @ +#define DE_OSX_EURO LALT(KC_E) // € +#define DE_OSX_TILD LALT(DE_OSX_N) // ~ +#define DE_OSX_PIPE LALT(DE_OSX_7) // | #endif -- cgit v1.2.3-24-g4f1b From 54b0a2bf765033f636d1d8440081f75126dfee81 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 1 Apr 2016 14:44:08 -0400 Subject: adding files is always smart --- keyboard/preonic/flash-pcb.sh | 3 + keyboard/preonic/keymaps/default/README.md | 34 ++++++++++ keyboard/preonic/keymaps/default/keymap.c | 96 ++++++++++++++++++++++++++ keyboard/preonic/keymaps/lock/README.md | 3 + keyboard/preonic/keymaps/lock/keymap.c | 105 +++++++++++++++++++++++++++++ keyboard/preonic/preonic.c | 36 ++++++++++ keyboard/preonic/preonic.h | 50 ++++++++++++++ 7 files changed, 327 insertions(+) create mode 100755 keyboard/preonic/flash-pcb.sh create mode 100644 keyboard/preonic/keymaps/default/README.md create mode 100644 keyboard/preonic/keymaps/default/keymap.c create mode 100644 keyboard/preonic/keymaps/lock/README.md create mode 100644 keyboard/preonic/keymaps/lock/keymap.c create mode 100644 keyboard/preonic/preonic.c create mode 100644 keyboard/preonic/preonic.h diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh new file mode 100755 index 000000000..8b59b83f5 --- /dev/null +++ b/keyboard/preonic/flash-pcb.sh @@ -0,0 +1,3 @@ +dfu-programmer atmega32u4 erase --force +dfu-programmer atmega32u4 flash preonic_pcb.hex +dfu-programmer atmega32u4 reset \ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md new file mode 100644 index 000000000..d2f43bbdb --- /dev/null +++ b/keyboard/preonic/keymaps/default/README.md @@ -0,0 +1,34 @@ +# The Default Planck Layout + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_CM] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_DV] = { /* Dvorak */ + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + }, + [_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + } + }; \ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c new file mode 100644 index 000000000..392197f1d --- /dev/null +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -0,0 +1,96 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "preonic.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_LW] = { /* LOWER */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 600}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(55)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 1000}, +}; + +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; +}; + +void * matrix_init_user(void) { +#ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 9, false); +#endif +} diff --git a/keyboard/preonic/keymaps/lock/README.md b/keyboard/preonic/keymaps/lock/README.md new file mode 100644 index 000000000..d21cb990b --- /dev/null +++ b/keyboard/preonic/keymaps/lock/README.md @@ -0,0 +1,3 @@ +# Lock layout + +This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly! \ No newline at end of file diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c new file mode 100644 index 000000000..e253f2581 --- /dev/null +++ b/keyboard/preonic/keymaps/lock/keymap.c @@ -0,0 +1,105 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "preonic.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#include "action_layer.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 +#define _MI 5 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_LW] = { /* LOWER */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_MI] = { /* MIDI */ + {MIDI12}, + {MIDI12}, + {MIDI12}, + {MIDI12}, + {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MIDI, MIDI, MIDI, MIDI} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 600}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(55)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 50}, + {440.0*pow(2.0,(64)/12.0), 1000}, +}; + +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 + default_layer_state = 1<<5; + } else { + unregister_code(KC_RSFT); + default_layer_state = 1<<0; + } + break; + } + return MACRO_NONE; +}; + +void * matrix_init_user(void) { + init_notes(); + play_notes(&start_up, 9, false); +} diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c new file mode 100644 index 000000000..a678f7b09 --- /dev/null +++ b/keyboard/preonic/preonic.c @@ -0,0 +1,36 @@ +#include "preonic.h" + +__attribute__ ((weak)) +void * matrix_init_user(void) { + +}; + +__attribute__ ((weak)) +void * matrix_scan_user(void) { + +}; + +void * matrix_init_kb(void) { + #ifdef BACKLIGHT_ENABLE + backlight_init_ports(); + #endif + + #ifdef RGBLIGHT_ENABLE + rgblight_init(); + #endif + + + // Turn status LED on + DDRE |= (1<<6); + PORTE |= (1<<6); + + if (matrix_init_user) { + (*matrix_init_user)(); + } +}; + +void * matrix_scan_kb(void) { + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h new file mode 100644 index 000000000..42d212329 --- /dev/null +++ b/keyboard/preonic/preonic.h @@ -0,0 +1,50 @@ +#ifndef PREONIC_H +#define PREONIC_H + +#include "matrix.h" +#include "keymap_common.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#ifdef RGBLIGHT_ENABLE + #include "rgblight.h" +#endif +#include +#ifdef MIDI_ENABLE + #include +#endif + +#define PREONIC_MIT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k45, k47, k48, k49, k4a, k4b } \ +} + +#define PREONIC_GRID( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ +} + +void * matrix_init_user(void); +void * matrix_scan_user(void); + +#endif -- cgit v1.2.3-24-g4f1b From ad3ec12fb62b67fa2a69f3950a073fafc22be8f4 Mon Sep 17 00:00:00 2001 From: tak3over Date: Fri, 1 Apr 2016 15:26:09 -0500 Subject: Create tak3over.c Custom keymap with an additional function layer for numpad, pgup, pgdn, del, ins, home, end, and additional arrow keys. --- keyboard/planck/keymaps/tak3over.c | 136 +++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 keyboard/planck/keymaps/tak3over.c diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c new file mode 100644 index 000000000..c49af7d0e --- /dev/null +++ b/keyboard/planck/keymaps/tak3over.c @@ -0,0 +1,136 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. +// +// Custom style by tak3over. Dropped the dvorak layer as it was not being used by me. Shifted over +// keys to make room for a second function key on the left side. Now has a keypad and most all +// standard keyboard keys. Including Delete. See TK layer. + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _TK 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* TenKey, Arrow, and Function key Layer + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | Left | Up | Down | Right| Del | * | 4 | 5 | 6 | + | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Home | PGUP | PGDN | End | Ins | . | 1 | 2 | 3 | - |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_TK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_DEL, KC_ASTR, KC_4, KC_5, KC_6, KC_PLUS, KC_SLSH}, + {KC_LSFT, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_INS, KC_DOT, KC_1, KC_2, KC_3, KC_MINS, KC_ENT }, + {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Brite | Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Brite | Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | TK |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), M(0), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +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; +}; -- cgit v1.2.3-24-g4f1b From c274699085b2f922a5e8b14b21aa377249e62d29 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Fri, 1 Apr 2016 23:53:09 +0200 Subject: minor tweaks at the keymap, new png for documentation --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 12 ++++++------ .../ergodox_ez/keymaps/osx_de/osx_de_highres.png | Bin 749565 -> 684862 bytes 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index 5d1296419..269e7a0fb 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), KC_UP, KC_DOWN, - M(M_MEH_SH_ACUT), TG(2), + M(M_MEH_SH_ACUT), TG(MDIA), KC_HOME, KC_BSPC,KC_DEL, LT(SMLY,KC_END), // right hand @@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM,DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, KC_LEFT, KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), - TG(4), ALL_T(DE_OSX_ACUT), + TG(NUMB), ALL_T(DE_OSX_ACUT), KC_PGUP, KC_PGDN,KC_ENT, KC_SPC ), @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ // MEDIA AND MOUSE -KEYMAP( +[MDIA] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, @@ -178,7 +178,7 @@ KEYMAP( * | | | | | | | | * `--------------------' `----------------------' */ -KEYMAP( +[SMLY] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -198,7 +198,7 @@ KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS ), //number pad -KEYMAP( +[NUMB] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, @@ -239,7 +239,7 @@ KEYMAP( * | | | F4 | | | | | * `--------------------' `----------------------' */ -KEYMAP( +[EGOS] = KEYMAP( 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_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png index 1d5226974..8e709ee26 100644 Binary files a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png and b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png differ -- cgit v1.2.3-24-g4f1b From 71cdfe11682cf63c262380747d8a1b3d48a6bad0 Mon Sep 17 00:00:00 2001 From: Stephan Bösebeck Date: Sat, 2 Apr 2016 15:14:14 +0200 Subject: new keymap --- keyboard/ergodox_ez/keymaps/osx_de/keymap.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c index df8d99650..a1b47ae8b 100644 --- a/keyboard/ergodox_ez/keymaps/osx_de/keymap.c +++ b/keyboard/ergodox_ez/keymaps/osx_de/keymap.c @@ -17,6 +17,7 @@ #define M_DE_CIRC_CTRLCMD 13 #define M_TOGGLE_5 14 #define M_CTL_SFT_HASH 15 +#define M_LGUI_SHFT 16 #define SM_SMILE 4 #define SM_SMIRK 5 @@ -67,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE, DE_H, DE_J, DE_K, DE_L, DE_OE, ALT_T(DE_AE), KC_RALT, DE_N, DE_M, DE_COMM,DE_DOT, CTL_T(DE_MINS), KC_RSFT, - KC_LEFT, KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT), LT(SYMB,DE_PLUS), + KC_LEFT, KC_RIGHT,M(M_LGUI_SHFT),LALT(KC_LSFT), LT(SYMB,DE_PLUS), TG(4), ALL_T(DE_ACUT), KC_PGUP, KC_PGDN,KC_ENT, KC_SPC @@ -313,6 +314,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } } break; + case M_LGUI_SHFT: + if (record->event.pressed){ + return MACRO(D(LGUI),D(LSFT),END); + }else{ + return MACRO(U(LGUI),U(LSFT),END); + } + break; case M_CTL_SFT_HASH: if (record->event.pressed) { start=timer_read(); -- cgit v1.2.3-24-g4f1b From 381a9fd55319d1f29783748f5d6d5c5820e81636 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Sat, 2 Apr 2016 23:07:58 +0200 Subject: use action function for unicode --- .../keymaps/german-manuneo/compile_keymap.py | 273 +- .../keymaps/german-manuneo/german-manuneo.hex | 2862 +++++++++----------- .../ergodox_ez/keymaps/german-manuneo/keymap.c | 1004 ++----- .../ergodox_ez/keymaps/german-manuneo/keymap.md | 52 +- 4 files changed, 1651 insertions(+), 2540 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py index af6867222..3d2667276 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -20,6 +20,7 @@ import sys import json import unicodedata import collections +import itertools as it PY2 = sys.version_info.major == 2 @@ -27,11 +28,6 @@ if PY2: chr = unichr -BASEPATH = os.path.abspath(os.path.join( - os.path.dirname(__file__), "..", ".." -)) - - KEYBOARD_LAYOUTS = { # These map positions in the parsed layout to # positions in the KEYMAP MATRIX @@ -73,34 +69,33 @@ BLANK_LAYOUTS = [ # Wide Layout """ -.--------------------------------------------. .--------------------------------------------. -| | | | | | | | ! | | | | | | | -!------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+------! -| | | | | | | | ! | | | | | | | -!------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+------! -| | | | | | |-------! !-------! | | | | | | -!------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+------! -| | | | | | | | ! | | | | | | | -'------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+------' - | | | | | | ! | | | | | - '-----------------------------' '-----------------------------' - .---------------. .---------------. - | | | ! | | - .-------+-------+-------! !-------+-------+-------. - ! ! | | ! | ! ! - ! ! !-------! !-------! ! ! - | | | | ! | | | - '-----------------------' '-----------------------' +.---------------------------------------------. .---------------------------------------------. +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | |-------! !-------! | | | | | | +!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! +| | | | | | | | ! | | | | | | | +'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | | | | | | ! | | | | | + '------------------------------' '------------------------------' + .---------------. .---------------. + | | | ! | | + .-------+-------+-------! !-------+-------+-------. + ! ! | | ! | ! ! + ! ! !-------! !-------! ! ! + | | | | ! | | | + '-----------------------' '-----------------------' """, ] DEFAULT_CONFIG = { - "includes_basedir": "quantum/", "keymaps_includes": [ "keymap_common.h", ], - 'filler': "-+.':x", + 'filler': "-+.'!:x", 'separator': "|", 'default_key_prefix': ["KC_"], } @@ -114,31 +109,34 @@ SECTIONS = [ # Markdown Parsing +ONELINE_COMMENT_RE = re.compile(r""" + ^ # comment must be at the start of the line + \s* # arbitrary whitespace + // # start of the comment + (.*) # the comment + $ # until the end of line +""", re.MULTILINE | re.VERBOSE +) + +INLINE_COMMENT_RE = re.compile(r""" + ([\,\"\[\]\{\}\d]) # anythig that might end a expression + \s+ # comment must be preceded by whitespace + // # start of the comment + \s # and succeded by whitespace + (?:[^\"\]\}\{\[]*) # the comment (except things which might be json) + $ # until the end of line +""", re.MULTILINE | re.VERBOSE) + +TRAILING_COMMA_RE = re.compile(r""" + , # the comma + (?:\s*) # arbitrary whitespace + $ # only works if the trailing comma is followed by newline + (\s*) # arbitrary whitespace + ([\]\}]) # end of an array or object +""", re.MULTILINE | re.VERBOSE) + + def loads(raw_data): - ONELINE_COMMENT_RE = re.compile(r""" - ^ # comment must be at the start of the line - \s* # arbitrary whitespace - // # start of the comment - (.*) # the comment - $ # until the end of line - """, re.MULTILINE | re.VERBOSE) - - INLINE_COMMENT_RE = re.compile(r""" - ([\,\"\[\]\{\}\d]) # anythig that might end a expression - \s+ # comment must be preceded by whitespace - // # start of the comment - \s # and succeded by whitespace - (?:[^\"\]\}\{\[]*) # the comment (except things which might be json) - $ # until the end of line - """, re.MULTILINE | re.VERBOSE) - - TRAILING_COMMA_RE = re.compile(r""" - , # the comma - (?:\s*) # arbitrary whitespace - $ # only works if the trailing comma is followed by newline - (\s*) # arbitrary whitespace - ([\]\}]) # end of an array or object - """, re.MULTILINE | re.VERBOSE) if isinstance(raw_data, bytes): raw_data = raw_data.decode('utf-8') @@ -164,6 +162,8 @@ def parse_config(path): name = line[2:] elif line.startswith("## "): name = line[3:] + else: + name = "" name = name.strip().replace(" ", "_").lower() if name in SECTIONS: @@ -209,6 +209,7 @@ def parse_config(path): pass end_section() + assert 'layout' in config return config # header file parsing @@ -218,16 +219,15 @@ IF0_RE = re.compile(r""" #if 0 $.*? #endif - """, re.MULTILINE | re.DOTALL | re.VERBOSE -) +""", re.MULTILINE | re.DOTALL | re.VERBOSE) COMMENT_RE = re.compile(r""" /\* .*? \*/" - """, re.MULTILINE | re.DOTALL | re.VERBOSE -) +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + def read_header_file(path): with io.open(path, encoding="utf-8") as fh: @@ -237,7 +237,7 @@ def read_header_file(path): return data -def regex_partial(re_str_fmt, flags=re.MULTILINE | re.DOTALL | re.VERBOSE): +def regex_partial(re_str_fmt, flags): def partial(*args, **kwargs): re_str = re_str_fmt.format(*args, **kwargs) return re.compile(re_str, flags) @@ -251,8 +251,7 @@ KEYDEF_REP = regex_partial(r""" (?:{}) # the prefixes (?:\w+) # the key name ) # capture group end - """ -) +""", re.MULTILINE | re.DOTALL | re.VERBOSE) ENUM_RE = re.compile(r""" @@ -264,8 +263,7 @@ ENUM_RE = re.compile(r""" \} ; ) # capture group end - """, re.MULTILINE | re.DOTALL | re.VERBOSE -) +""", re.MULTILINE | re.DOTALL | re.VERBOSE) ENUM_KEY_REP = regex_partial(r""" @@ -273,8 +271,8 @@ ENUM_KEY_REP = regex_partial(r""" {} # the prefixes \w+ # the key name ) # capture group end - """ -) +""", re.MULTILINE | re.DOTALL | re.VERBOSE) + def parse_keydefs(config, data): prefix_options = "|".join(config['key_prefixes']) @@ -289,26 +287,31 @@ def parse_keydefs(config, data): yield key_match.groups()[0] -def parse_valid_keys(config): - valid_keycodes = set() - paths = [ - os.path.join(BASEPATH, "tmk_core", "common", "keycode.h") - ] + [ - os.path.join( - BASEPATH, config['includes_dir'], include_path - ) for include_path in config['keymaps_includes'] - ] +def parse_valid_keys(config, out_path): + basepath = os.path.abspath(os.path.join(os.path.dirname(out_path))) + dirpaths = [] + subpaths = [] + while len(subpaths) < 6: + path = os.path.join(basepath, *subpaths) + dirpaths.append(path) + dirpaths.append(os.path.join(path, "tmk_core", "common")) + dirpaths.append(os.path.join(path, "quantum")) + subpaths.append('..') + + includes = set(config['keymaps_includes']) + includes.add("keycode.h") - for path in paths: - path = path.replace("/", os.sep) - # the config always uses forward slashe - if os.path.exists(path): - header_data = read_header_file(path) + valid_keycodes = set() + for dirpath, include in it.product(dirpaths, includes): + include_path = os.path.join(dirpath, include) + if os.path.exists(include_path): + header_data = read_header_file(include_path) valid_keycodes.update( parse_keydefs(config, header_data) ) return valid_keycodes + # Keymap Parsing def iter_raw_codes(layer_lines, filler, separator): @@ -325,6 +328,7 @@ def iter_raw_codes(layer_lines, filler, separator): def iter_indexed_codes(raw_codes, key_indexes): key_rows = {} key_indexes_flat = [] + for row_index, key_indexes in enumerate(key_indexes): for key_index in key_indexes: key_rows[key_index] = row_index @@ -384,8 +388,8 @@ def parse_code(raw_code, key_prefixes, valid_keycodes): return raw_code, None, None if MACRO_RE.match(raw_code): - code = macro_id = raw_code[2:-1] - return code, macro_id, None + macro_id = raw_code[2:-1] + return raw_code, macro_id, None if UNICODE_RE.match(raw_code): hex_code = raw_code[1:] @@ -404,10 +408,17 @@ def parse_keymap(config, key_indexes, layer_lines, valid_keycodes): layer_lines, config['filler'], config['separator'] )) indexed_codes = iter_indexed_codes(raw_codes, key_indexes) + key_prefixes = config['key_prefixes'] for raw_code, key_index, row_index in indexed_codes: code, macro_id, uc_hex = parse_code( - raw_code, config['key_prefixes'], valid_keycodes + raw_code, key_prefixes, valid_keycodes + ) + # TODO: line numbers for invalid codes + err_msg = "Could not parse key '{}' on row {}".format( + raw_code, row_index ) + assert code is not None, err_msg + # print(repr(raw_code), repr(code), macro_id, uc_hex) if macro_id: config['macro_ids'].add(macro_id) if uc_hex: @@ -482,9 +493,64 @@ void matrix_scan_user(void) { MACROCODE = """ #define UC_MODE_WIN 0 #define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 +// TODO: allow default mode to be configured static uint16_t unicode_mode = UC_MODE_WIN; +uint16_t hextokeycode(uint8_t hex) {{ + if (hex == 0x0) {{ + return KC_P0; + }} + if (hex < 0xA) {{ + return KC_P1 + (hex - 0x1); + }} + return KC_A + (hex - 0xA); +}} + +void unicode_action_function(uint16_t hi, uint16_t lo) {{ + switch (unicode_mode) {{ + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + }} +}} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ if (!record->event.pressed) {{ return MACRO_NONE; @@ -494,57 +560,35 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{ case UM: unicode_mode = (unicode_mode + 1) % 2; break; - {macro_cases} +{macro_cases} +{unicode_macro_cases} default: break; }} - if (unicode_mode == UC_MODE_WIN) {{ - switch(id) {{ - {win_macro_cases} - default: - break; - }} - }} else if (unicode_mode == UC_MODE_LINUX) {{ - switch(id) {{ - {linux_macro_cases} - default: - break; - }} - }} return MACRO_NONE; }}; """ -WIN_UNICODE_MACRO_TEMPLATE = """ -case {0}: - return MACRODOWN( - D(LALT), T(KP_PLUS), {1}, U(LALT), END - ); -""" -LINUX_UNICODE_MACRO_TEMPLATE = """ -case {0}: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), {1}, T(KP_ENTER), END - ); -""" +UNICODE_MACRO_TEMPLATE = """ +case {macro_id}: + unicode_action_function(0x{hi:02x}, 0x{lo:02x}); + break; +""".strip() -def macro_cases(config, mode): - if mode == 'win': - template = WIN_UNICODE_MACRO_TEMPLATE - elif mode == 'linux': - template = LINUX_UNICODE_MACRO_TEMPLATE - else: - raise ValueError("Invalid mode: ", mode) - template = template.strip() +def unicode_macro_cases(config): for macro_id, uc_hex in config['unicode_macros'].items(): + hi = int(uc_hex, 16) >> 8 + lo = int(uc_hex, 16) & 0xFF unimacro_keys = ", ".join( "T({})".format( "KP_" + digit if digit.isdigit() else digit ) for digit in uc_hex ) - yield template.format(macro_id, unimacro_keys) + yield UNICODE_MACRO_TEMPLATE.format( + macro_id=macro_id, hi=hi, lo=lo + ) def iter_keymap_lines(keymap): @@ -599,8 +643,7 @@ def iter_keymap_parts(config, keymaps): # macros yield MACROCODE.format( macro_cases="", - win_macro_cases="\n".join(macro_cases(config, mode='win')), - linux_macro_cases="\n".join(macro_cases(config, mode='linux')), + unicode_macro_cases="\n".join(unicode_macro_cases(config)), ) # TODO: dynamically create blinking lights @@ -624,7 +667,7 @@ def main(argv=sys.argv[1:]): out_path = os.path.join(dirname, "keymap.c") config = parse_config(in_path) - valid_keys = parse_valid_keys(config) + valid_keys = parse_valid_keys(config, out_path) keymaps = parse_keymaps(config, valid_keys) with io.open(out_path, mode="w", encoding="utf-8") as fh: diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex index cb8b7fa8d..ee1d30967 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/german-manuneo.hex @@ -1,1624 +1,1240 @@ -:100000000C94BD0F0C9401100C9401100C94011071 -:100010000C9401100C9401100C9401100C9401101C -:100020000C9401100C9401100C94791B0C944B1C33 -:100030000C9401100C9401100C9401100C940110FC -:100040000C9401100C94D6300C9401100C940110F7 -:100050000C9401100C94782A0C9401100C9401104B -:100060000C9401100C9401100C9401100C940110CC -:100070000C9401100C9401100C9401100C940110BC -:100080000C9401100C9401100C9401100C940110AC -:100090000C9401100C9401100C9401100C9401109C -:1000A0000C9401100C9401100C940110AB107810FA -:1000B0006310BD10E4101711F910FF1014113E1158 -:1000C0003511021138114E10F3102911321175102B -:1000D0006C10BA10B11099106F103010C6101A11B0 -:1000E00023112F119F10CF10AE1048102011ED10CA -:1000F0009010A5109C108410261193103910F01048 -:100100008A10C9106C12B410661054107E107B1047 -:10011000D210A2100E113F108D10B7102D10C0106C -:100120000B111111DB105D10F6104B1072105710EF -:10013000CC10FC103B113310A810C3100511D510C2 -:100140005A102C11EA10451096106010E110691039 -:1001500008114210D810E7103610511041111D112E -:1001600081103C10DE108710D311A0118B11E51106 -:100170000C123F12211227123C1266125D122A1233 -:10018000601276111B1251125A129D119411E21134 -:10019000D911C11197115811EE1142124B12571279 -:1001A000C711F711D611701148121512B811CD11DF -:1001B000C411AC114E12BB1161111812B211F11120 -:1001C0006F12DC118E117C11A611A311FA11CA1144 -:1001D00036126711B511DF115511E81133123912BA -:1001E000031285111E1273119A117F11F41124123A -:1001F00063125B11D011EB112D12FD1182115412FB -:1002000012126D11BE1188110912911130126A116A -:1002100000120F125E11791169124512A9116411B1 -:100220000612AF11B01CD21CBD1DD21CBD1D141D69 -:10023000371DBD1D8C1D9F1D8C208C20BA20BA201F -:10024000FC203821382338235021382347224722E5 -:10025000122338233823262301E001E10118021874 -:1002600002E002E10162026201620262010502052E -:1002700001070207015802580001E001E1011802DC -:100280001802E002E101620262015B025B016102AD -:1002900061015C025C015802580001E001E10118B3 -:1002A000021802E002E1015A025A01620262016090 -:1002B0000260015E025E015802580001E001E101A6 -:1002C00018021802E002E101620262015B025B01B6 -:1002D000610261015B025B015802580001E001E12B -:1002E0000118021802E002E101620262015B025B96 -:1002F00001610261015D025D015802580001E001E7 -:10030000E10118021802E002E101620262015B02EF -:100310005B0161026101060206015802580001E01A -:1003200001E10118021802E002E101620262015BD0 -:10033000025B01040204015D025D015802580001E4 -:10034000E001E10118021802E002E1015A025A013B -:10035000620262015F025F0109020901580258004E -:1003600001E001E10118021802E002E1016202620B -:10037000015B025B0161026101050205015802583F -:100380000001E001E10118021802E002E10162024D -:1003900062015B025B010502050161026101580215 -:1003A000580001E001E10118021802E002E10162D7 -:1003B0000262015B025B016102610160026001583F -:1003C00002580001E001E10118021802E002E10117 -:1003D000620262015B025B01060206015F025F01CD -:1003E0005802580001E001E10118021802E002E1A0 -:1003F0000162026201620262010502050106020653 -:10040000015802580001E001E10118021802E0025F -:10041000E101620262015B025B01040204015C0211 -:100420005C015802580001E001E10118021802E0E5 -:1004300002E1015A025A015A025A01620262016241 -:100440000262015802580001E001E101180218029D -:10045000E002E101620262015B025B01040204014D -:100460005F025F015802580001E001E10118021823 -:1004700002E002E1015A025A015A025A015E025E8A -:1004800001620262015802580001E001E101180214 -:100490001802E002E101620262015B025B010602F6 -:1004A00006015D025D015802580001E001E10118FA -:1004B000021802E002E1015A025A015A025A01628C -:1004C000026201610261015802580001E001E1018C -:1004D00018021802E002E1015A025A0162026201A6 -:1004E0005F025F01620262015802580001E001E10F -:1004F0000118021802E002E1015A025A0162026286 -:10050000015F025F01600260015802580001E001D2 -:10051000E10118021802E002E101620262015B02DD -:100520005B01610261015F025F015802580001E056 -:1005300001E10118021802E002E101620262015BBE -:10054000025B01610261015A025A0158025800011E -:10055000E001E10118021802E002E1015A025A0129 -:1005600062026201600260015F025F01580258008E -:1005700001E001E10118021802E002E101620262F9 -:10058000015B025B01610261015902590158025885 -:100590000001E001E10118021802E002E1015A0243 -:1005A0005A01620262016002600160026001580249 -:1005B000580001E001E10118021802E002E10162C5 -:1005C0000262015B025B01610261010402040158E5 -:1005D00002580001E001E10118021802E002E10105 -:1005E000620262015B025B0105020501060206016F -:1005F0005802580001E001E10118021802E002E18E -:1006000001620262015B025B01050205015C025CA2 -:10061000015802580001E001E10118021802E0024D -:10062000E1015A025A01620262015F025F01610246 -:1006300061015802580001E001E10118021802E0CE -:1006400002E1015A025A015902590161026101593C -:100650000259015802580001E001E1011802180294 -:10066000E002E1015A025A015A025A016202620191 -:100670005D025D015802580001E001E10118021815 -:1006800002E002E10162026201620262010502050A -:10069000015B025B015802580001E001E101180210 -:1006A0001802E002E10162026201620262010502D7 -:1006B0000501080208015802580001E001E1011893 -:1006C000021802E002E101620262016202620105B7 -:1006D000020501590259015802580001E001E101E7 -:1006E00018021802E002E1015A025A015A025A01A4 -:1006F000620262015B025B015802580001E001E105 -:100700000118021802E002E1015A025A0162026273 -:10071000015F025F015D025D015802580001E001C6 -:10072000E10118021802E002E101620262015B02CB -:100730005B01060206015C025C015802580001E000 -:1007400001E10118021802E002E101620262015BAC -:10075000025B01610261015E025E01580258000104 -:10076000E001E10118021802E002E1015A025A0117 -:100770006202620160026001590259015802580088 -:1007800001E001E10118021802E002E101620262E7 -:10079000015B025B01060206016102610158025819 -:1007A0000001E001E10118021802E002E101620229 -:1007B00062015B025B01040204015B025B015802FF -:1007C000580001E001E10118021802E002E1015ABB -:1007D000025A016202620160026001620262015813 -:1007E00002580001E001E10118021802E002E101F3 -:1007F0006202620162026201070207015F025F0199 -:100800005802580001E001E10118021802E002E17B -:10081000015A025A015A025A0162026201600260E0 -:10082000015802580001E001E10118021802E0023B -:10083000E101620262015B025B0161026101090286 -:1008400009015802580001E001E10118021802E014 -:1008500002E1015A025A015A025A01590259010889 -:100860000208015802580001E001E10118021802D3 -:10087000E002E101620262015B025B010602060125 -:100880005E025E015802580001E001E10118021801 -:1008900002E002E101620262015B025B0104020408 -:1008A000015E025E015802580001E001E1011802F8 -:1008B0001802E002E101620262015B025B010502D3 -:1008C0000501590259015802580001E001E10118DF -:1008D000021802E002E1015A025A015A025A015C6E -:1008E000025C015B025B015802580001E001E1017A -:1008F00018021802E002E1015A025A016202620182 -:10090000600260015A025A015802580001E001E1F8 -:100910000118021802E002E101620262015B025B5F -:1009200001050205015F025F015802580001E00164 -:10093000E10118021802E002E101620262015B02B9 -:100940005B0105020501600260015802580001E0E8 -:1009500001E10118021802E002E101620262015B9A -:10096000025B01610261010802080158025800019E -:10097000E001E10118021802E002E10162026201F5 -:100980005B025B01060206015A025A015802580036 -:1009900001E001E10118021802E002E101620262D5 -:1009A000015B025B01040204016202620158025809 -:1009B0000001E001E10118021802E002E1015A021F -:1009C0005A01620262015F025F015F025F01580229 -:1009D000580001E001E10118021802E002E10162A1 -:1009E0000262015B025B0105020501040204015879 -:1009F00002580001E001E10118021802E002E101E1 -:100A0000620262015B025B01050205015D025D019C -:100A10005802580001E001E10118021802E002E169 -:100A200001620262015B025B01050205015E025E7A -:100A3000015802580001E001E10118021802E00229 -:100A4000E101620262015B025B010502050107022E -:100A500007015802580001E001E10118021802E004 -:100A600002E1015A025A01590259015D025D015C1D -:100A7000025C015802580001E001E101180218026D -:100A8000E002E101620262015B025B010502050115 -:100A90005B025B015802580001E001E101180218F5 -:100AA00002E002E1015A025A01590259015D025D58 -:100AB00001610261015802580001E001E1011802E0 -:100AC0001802E002E101620262015B025B010602C0 -:100AD0000601590259015802580001E001E10118CC -:100AE000021802E002E101620262015B025B0106A0 -:100AF0000206015B025B015802580001E001E101BE -:100B000018021802E002E10162026201620262015F -:100B1000090209015F025F015802580001E001E18A -:100B20000118021802E002E101620262015B025B4D -:100B30000161026101070207015802580001E0014A -:100B4000E10118021802E002E1015A025A016202B0 -:100B50006201600260015C025C015802580001E021 -:100B600001E10118021802E002E101620262015B88 -:100B7000025B010402040160026001580258000196 -:100B8000E001E10118021802E002E10162026201E3 -:100B90005B025B010402040161026101580258001A -:100BA00001E001E10118021802E002E101620262C3 -:100BB0000162026201050205015A025A01580258F7 -:100BC0000001E001E10118021802E002E101620205 -:100BD00062015B025B0106020601620262015802C9 -:100BE000580001E001E10118021802E002E1015A97 -:100BF000025A0159025901610261015B025B01580D -:100C000002580001E001E10118021802E002E101CE -:100C10005A025A01620262015F025F015E025E01D6 -:100C20005802580001E001E10118021802E002E157 -:100C3000015A025A0159025901610261015A025ACC -:100C4000015802580001E001E10118021802E00217 -:100C5000E1015A025A01620262015F025F015C0215 -:100C60005C015802580001E001E10118021802E09D -:100C700002E1015A025A01620262016002600161EE -:100C80000261015802580001E001E1011802180256 -:100C9000E002E101620262015B025B010602060101 -:100CA000600260015802580001E001E101180218D9 -:100CB00002E002E1015A025A01590259015D025D46 -:100CC000015D025D015802580001E001E1011802D6 -:100CD0001802E002E101620262015B025B01610253 -:100CE0006101610261015802580001E001E101184F -:100CF000021802E002E1015A025A01620262016036 -:100D00000260015D025D015802580001E001E1014D -:100D100018021802E002E101620262015B025B015B -:100D2000050205015A025A015802580001E001E18A -:100D30000118021802E002E101620262016202622D -:100D40000105020501610261015802580001E0013C -:100D5000E10118021802E002E1015A025A015A02A6 -:100D60005A01620262015C025C015802580001E013 -:100D700001E10118021802E002E101620262015B76 -:100D8000025B010502050108020801580258000132 -:100D9000E001E10118021802E002E1015A025A01E1 -:100DA000590259015D025D015B025B015802580066 -:100DB00001E001E10118021802E002E101620262B1 -:100DC000015B025B0105020501050205015802589D -:100DD0000001E001E10118021802E002E1015A02FB -:100DE0005A01590259015D025D01050205015802CF -:100DF000580001E001E10118021802E002E1015A85 -:100E0000025A0162026201600260015B025B0158EA -:100E100002580001E001E10118021802E002E101BC -:100E2000620262015B025B01040204015902590182 -:100E30005802580001E001E10118021802E002E145 -:100E4000015A025A015902590161026101620262AA -:100E5000015802580001E001E10118021802E00205 -:100E6000E101620262015B025B0105020501090208 -:100E700009015802580001E201570257016202625B -:100E800001620262010502050107020702E2000198 -:100E9000E20157025701620262015B025B016102DB -:100EA00061015C025C02E20001E201570257015A53 -:100EB000025A0162026201600260015E025E02E2A9 -:100EC0000001E20157025701620262015B025B010D -:100ED000610261015B025B02E20001E2015702571D -:100EE00001620262015B025B01610261015D025D00 -:100EF00002E20001E20157025701620262015B0255 -:100F00005B016102610106020602E20001E2015793 -:100F1000025701620262015B025B01040204015D8F -:100F2000025D02E20001E201570257015A025A0132 -:100F3000620262015F025F0109020902E20001E24E -:100F40000157025701620262015B025B01610261AB -:100F50000105020502E20001E201570257016202A7 -:100F600062015B025B010502050161026102E200B0 -:100F700001E20157025701620262015B025B0161FB -:100F800002610160026002E20001E20157025701C2 -:100F9000620262015B025B01060206015F025F0200 -:100FA000E20001E20157025701620262016202623D -:100FB000010502050106020602E20001E2015702F4 -:100FC0005701620262015B025B01040204015C02E0 -:100FD0005C02E20001E201570257015A025A015A2B -:100FE000025A016202620162026202E20001E2014F -:100FF00057025701620262015B025B0104020401B5 -:101000005F025F02E20001E201570257015A025AF1 -:10101000015A025A015E025E0162026202E20001AE -:10102000E20157025701620262015B025B010602A4 -:1010300006015D025D02E20001E201570257015A1A -:10104000025A015A025A016202620161026102E21D -:101050000001E201570257015A025A01620262017D -:101060005F025F0162026202E20001E20157025781 -:10107000015A025A01620262015F025F016002606E -:1010800002E20001E20157025701620262015B02C3 -:101090005B01610261015F025F02E20001E2015750 -:1010A000025701620262015B025B01610261015A47 -:1010B000025A02E20001E201570257015A025A01A4 -:1010C00062026201600260015F025F02E20001E20F -:1010D0000157025701620262015B025B016102611A -:1010E0000159025902E20001E201570257015A0276 -:1010F0005A01620262016002600160026002E20065 -:1011000001E20157025701620262015B025B016169 -:1011100002610104020402E20001E20157025701E8 -:10112000620262015B025B01050205010602060222 -:10113000E20001E20157025701620262015B025BB9 -:1011400001050205015C025C02E20001E2015702B6 -:1011500057015A025A01620262015F025F01610295 -:101160006102E20001E201570257015A025A015995 -:101170000259016102610159025902E20001E201D2 -:10118000570257015A025A015A025A016202620179 -:101190005D025D02E20001E2015702570162026254 -:1011A0000162026201050205015B025B02E20001CD -:1011B000E201570257016202620162026201050206 -:1011C000050108020802E20001E20157025701622C -:1011D000026201620262010502050159025902E23E -:1011E0000001E201570257015A025A015A025A01FC -:1011F000620262015B025B02E20001E201570257F8 -:10120000015A025A01620262015F025F015D025DE2 -:1012100002E20001E20157025701620262015B0231 -:101220005B01060206015C025C02E20001E201577A -:10123000025701620262015B025B01610261015EB1 -:10124000025E02E20001E201570257015A025A010E -:10125000620262016002600159025902E20001E289 -:101260000157025701620262015B025B010602063E -:101270000161026102E20001E201570257016202CC -:1012800062015B025B01040204015B025B02E2009B -:1012900001E201570257015A025A016202620160DB -:1012A00002600162026202E20001E201570257019C -:1012B0006202620162026201070207015F025F02CD -:1012C000E20001E201570257015A025A015A025A3A -:1012D000016202620160026002E20001E201570263 -:1012E0005701620262015B025B0161026101090256 -:1012F0000902E20001E201570257015A025A015A5B -:10130000025A015902590108020802E20001E201F1 -:1013100057025701620262015B025B01060206018D -:101320005E025E02E20001E20157025701620262C0 -:10133000015B025B01040204015E025E02E2000145 -:10134000E20157025701620262015B025B01050282 -:10135000050159025902E20001E201570257015A00 -:10136000025A015A025A015C025C015B025B02E212 -:101370000001E201570257015A025A01620262015A -:10138000600260015A025A02E20001E2015702576C -:1013900001620262015B025B01050205015F025FFF -:1013A00002E20001E20157025701620262015B02A0 -:1013B0005B010502050160026002E20001E20157E3 -:1013C000025701620262015B025B01610261010876 -:1013D000020802E20001E2015702570162026201C3 -:1013E0005B025B01060206015A025A02E20001E2B8 -:1013F0000157025701620262015B025B01040204B1 -:101400000162026202E20001E201570257015A0240 -:101410005A01620262015F025F015F025F02E20045 -:1014200001E20157025701620262015B025B0105A2 -:1014300002050104020402E20001E2015702570121 -:10144000620262015B025B01050205015D025D0251 -:10145000E20001E20157025701620262015B025B96 -:1014600001050205015E025E02E20001E20157028F -:101470005701620262015B025B010502050107027E -:101480000702E20001E201570257015A025A0159CC -:101490000259015D025D015C025C02E20001E201B1 -:1014A00057025701620262015B025B0105020501FE -:1014B0005B025B02E20001E201570257015A025A45 -:1014C00001590259015D025D0161026102E2000100 -:1014D000E20157025701620262015B025B010602F0 -:1014E000060159025902E20001E201570257016266 -:1014F0000262015B025B01060206015B025B02E223 -:101500000001E201570257016202620162026201B8 -:10151000090209015F025F02E20001E2015702577E -:1015200001620262015B025B016102610107020765 -:1015300002E20001E201570257015A025A01620217 -:101540006201600260015C025C02E20001E201579C -:10155000025701620262015B025B01040204016046 -:10156000026002E20001E2015702570162026201D9 -:101570005B025B010402040161026102E20001E21C -:10158000015702570162026201620262010502050F -:10159000015A025A02E20001E201570257016202B7 -:1015A00062015B025B010602060162026202E20066 -:1015B00001E201570257015A025A015902590161C9 -:1015C0000261015B025B02E20001E2015702570186 -:1015D0005A025A01620262015F025F015E025E020C -:1015E000E20001E201570257015A025A0159025919 -:1015F00001610261015A025A02E20001E20157024E -:1016000057015A025A01620262015F025F015C02E5 -:101610005C02E20001E201570257015A025A0162DC -:101620000262016002600161026102E20001E20106 -:1016300057025701620262015B025B01060206016A -:1016400060026002E20001E201570257015A025AA9 -:1016500001590259015D025D015D025D02E2000176 -:10166000E20157025701620262015B025B01610203 -:10167000610161026102E20001E201570257015A71 -:10168000025A0162026201600260015D025D02E2D3 -:101690000001E20157025701620262015B025B0135 -:1016A000050205015A025A02E20001E201570257FF -:1016B00001620262016202620105020501610261CA -:1016C00002E20001E201570257015A025A015A028E -:1016D0005A01620262015C025C02E20001E201570F -:1016E000025701620262015B025B0105020501080B -:1016F000020802E20001E201570257015A025A01B0 -:10170000590259015D025D015B025B02E20001E2E8 -:101710000157025701620262015B025B010502058B -:101720000105020502E20001E201570257015A02D7 -:101730005A01590259015D025D0105020502E200EC -:1017400001E201570257015A025A01620262016026 -:101750000260015B025B02E20001E20157025701F5 -:10176000620262015B025B01040204015902590238 -:10177000E20001E201570257015A025A0159025987 -:10178000016102610162026202E20001E2015702AC -:101790005701620262015B025B0105020501090259 -:1017A0000902E200055204520152035201000000F6 -:1017B0001E001B0018002F00010029001F0013004D -:1017C0000C003300E300E1002000090004003400B5 -:1017D000E2002A0021001A0008000600E00065006F -:1017E00022000A0012001900000049002E004A00E1 -:1017F00000004D00000002542E02025400002B0095 -:1018000000005E0023000B001600050000004C00E5 -:1018100024000D0011001000E2004B0025000E0016 -:101820001500360001002C0026000F0017003700BD -:1018300050002800270014000700520051004E00FD -:1018400035001C002D001D004F00000001000100AC -:1018500001000100010000001E02300238020100F8 -:10186000010001001F026414380030000100010073 -:101870002002240223022702010001000100241497 -:1018800025140100010001000100271426140100A5 -:101890000000010001000100000001000000010043 -:1018A0000100010000000100000001000100310002 -:1018B00021022D1400000100010064002502220213 -:1018C000010001000100640226023602010001004D -:1018D00001000100301437023830010035021F02C8 -:1018E0003102553002300100010001002D020100DB -:1018F0003D30000001000100010001000100000076 -:101900003A00010001000100010001003B0001005C -:1019100001000100010001003C0001000100010084 -:10192000010001003D000100010001000100010073 -:101930003E00010001000100000001004400010020 -:1019400000000100000001004500010000005300FC -:10195000000001003F000100010001000000010043 -:1019600040005F005C00590062000100410060001F -:101970005D005A0085000100420061005E005B00CE -:101980006300010043005500560057005800010055 -:101990006700540056005700580000000100010085 -:1019A00001000100010000004D30393001005B30C2 -:1019B00001000100513058303C303B300100010043 -:1019C0005030013014145D30010001004A305930AC -:1019D00008145C30010001004930573004300030F9 -:1019E00000000100053001000000010000000100BE -:1019F0000100010000000100000001004F305A30DA -:101A000037301E02000001004E3001004B30010053 -:101A100001000100483056305430533001000100BD -:101A20004C30010003303A30010001005230010017 -:101A3000010001000100010001000100010001009E -:101A40000100000001000100010001000100000090 -:101A500042302030343001000100010046302E3089 -:101A6000263033300100010045302D301E3001009A -:101A70000100010040302B30223001000100010044 -:101A80003F3025302C300100000001000100010032 -:101A90000000010000000100010001000000010041 -:101AA000000001004430233031301F3000000100BD -:101AB000433035302A302930010001003E302730D4 -:101AC0003030010001000100413028303230010087 -:101AD0000100010047300100213001000100010038 -:101AE0000100363024302F300100000001000100D9 -:101AF0000100010001000000010008301B3001005E -:101B000001000100010015300D301A300100010004 -:101B10000100143006300100010001000100123004 -:101B20000A3001000100010001000C3013300100F7 -:101B300000000100010001000000010000000100A0 -:101B400001000100000001000000010001000B3055 -:101B5000183007300000010001001C301130103037 -:101B60000100010001000E301730010001000100EA -:101B700001000F30193001000100010001000100D7 -:101B8000093001000100010001001D300100163084 -:101B9000010000000100010001000100010000003F -:101BA000010001000100010001000100010001002D -:101BB000010001000100010001000100010001001D -:101BC000010001000100010001000100010001000D -:101BD00001000100010001000000010001000100FE -:101BE00000000100000001000100010000000100F0 -:101BF00000000100010001000100010000000100DF -:101C000001000100010001000100010001000100CC -:101C100001000100010001000100010001000100BC -:101C200001000100010001000100010001000100AC -:101C3000010001000100010001000000010001009D -:101C4000010001000100000001000100010001008D -:101C5000010001000100010001000100010001007C -:101C6000010001000100010001000100010001006C -:101C7000010001000100010001000100010001005C -:101C8000000001000100010000000100000001004F -:101C9000010001000000010000000100010001003E -:101CA000010001000000010001000100010001002D -:101CB000010001000100010001000100010001001C -:101CC000010001000100010001000100010001000C -:101CD00001000100010001000100010001000100FC -:101CE00001000000010001000100010001000000EE -:101CF00001000100010001000100010001000100DC -:101D000001000100010001000100010001000100CB -:101D100001000100010001000100010001000100BB -:101D200001000100010001000000010001000100AC -:101D3000000001000000010001000100000001009E -:101D4000000001000100010001000100000001008D -:101D5000010001000100010001000100010001007B -:101D6000010001000100010001000100010001006B -:101D7000010001000100010001000100010001005B -:101D800001000100010001000100000016034500F0 -:101D9000720067006F0044006F007800200045006B -:101DA0005A00000016034500720067006F004400EF -:101DB0006F007800200045005A0000000403090469 -:101DC00009026D00040100A0FA09040000010301EA -:101DD0000100092111010001223F000705810308CC -:101DE000000A090401000103010200092111010098 -:101DF00001224D000705820308000A0904020001C0 -:101E000003000000092111010001223600070583AB -:101E10000308000A0904030001030000000921115E -:101E2000010001223900070584031000011201108E -:101E30000100000008EDFE0713010001020001058A -:101E4000010906A101050719E029E71500250195FB -:101E5000087501810205081901290595057501918B -:101E600002950175039101050719002977150025D1 -:101E700001957875018102C005010980A1018502E3 -:101E800016010026B7001A01002AB7007510950147 -:101E90008100C0050C0901A1018503160100269CE3 -:101EA000021A01002A9C02751095018100C00501EB -:101EB0000902A1010901A10005091901290515005F -:101EC00025019505750181029501750381010501C3 -:101ED000093009311581257F950275088106093879 -:101EE0001581257F950175088106050C0A380215B4 -:101EF00081257F950175088106C0C005010906A1ED -:101F000001050719E029E7150025019508750181EC -:101F100002950175088101050819012905950575C6 -:101F20000191029501750391010507190029FF151B -:101F30000025FF950675088100C000000000000024 -:101F40000000000000010204060A0F17202C3A4A84 -:101F50005D71879DB3C7DAE9F5FCFFFCF5E9DAC7E7 -:101F6000B39D87715D4A3A2C20170F0A06040201BF -:101F70000000000000000000000011241FBECFEF91 -:101F8000DAE0DEBFCDBF04B603FE24C08091F001CD -:101F90009091F101A091F201B091F3018730904B43 -:101FA000A740B04BB9F41092F0011092F1011092D9 -:101FB000F2011092F30114BE84B7877F84BF88E1D9 -:101FC0000FB6F89480936000109260000FBEE0E0BE -:101FD000FFE3099511E0A0E0B1E0E0E3F5E602C01F -:101FE00005900D92A433B107D9F711E0A4E3B1E055 -:101FF00001C01D92A03FB107E1F70E94BF180C94E9 -:1020000096320C940000FC018281811103C080E0B3 -:1020100090E008956E3561F42091340130913501DE -:102020002F5F3F4F217033273093350120933401C8 -:1020300020913401309135012115310509F024C179 -:10204000862F90E08E35910528F4FC01EA5AFF4F67 -:102050000C944B3280E090E0089582E797E1089578 -:1020600089E597E1089580E497E1089587E297E193 -:1020700008958EE097E1089585EF96E108958CED3F -:1020800096E1089583EC96E108958AEA96E1089531 -:1020900081E996E1089588E796E108958FE596E154 -:1020A000089586E496E108958DE296E1089584E12D -:1020B00096E108958BEF95E1089582EE95E10895FC -:1020C00089EC95E1089580EB95E1089587E995E124 -:1020D00008958EE795E1089585E695E108958CE4ED -:1020E00095E1089583E395E108958AE195E10895E6 -:1020F00081E095E1089588EE94E108958FEC94E1F4 -:10210000089586EB94E108958DE994E1089584E8BB -:1021100094E108958BE694E1089582E594E10895B1 -:1021200089E394E1089580E294E1089587E094E1E1 -:1021300008958EEE93E1089585ED93E108958CEB7B -:1021400093E1089583EA93E108958AE893E108957D -:1021500081E793E1089588E593E108958FE393E1A2 -:10216000089586E293E108958DE093E1089584EF68 -:1021700092E108958BED92E1089582EC92E1089549 -:1021800089EA92E1089580E992E1089587E792E172 -:1021900008958EE592E1089585E492E108958CE238 -:1021A00092E1089583E192E108958AEF91E1089523 -:1021B00081EE91E1089588EC91E108958FEA91E133 -:1021C000089586E991E108958DE791E1089584E607 -:1021D00091E108958BE491E1089582E391E10895FE -:1021E00089E191E1089580E091E1089587EE90E121 -:1021F00008958EEC90E1089585EB90E108958CE9C7 -:1022000090E1089583E890E108958AE690E10895C9 -:1022100081E590E1089588E390E108958FE190E1F0 -:10222000089586E090E108958DEE9FE0089584ED95 -:102230009FE008958BEB9FE0089582EA9FE0089568 -:1022400089E89FE0089580E79FE0089587E59FE093 -:1022500008958EE39FE0089585E29FE008958CE065 -:102260009FE0089583EF9EE008958AED9EE0089533 -:1022700081EC9EE0089588EA9EE008958FE89EE054 -:10228000089586E79EE008952130310509F0BFCE1C -:10229000862F90E08E35910528F4FC01EC54FF4F19 -:1022A0000C944B3280E090E0089584E39EE0089522 -:1022B00083E19EE0089582EF9DE0089581ED9DE029 -:1022C000089580EB9DE008958FE89DE008958EE6E7 -:1022D0009DE008958DE49DE008958CE29DE00895D1 -:1022E0008BE09DE008958AEE9CE0089589EC9CE0E7 -:1022F000089588EA9CE0089587E89CE0089586E6C2 -:102300009CE0089585E49CE0089584E29CE00895B3 -:1023100083E09CE0089582EE9BE0089581EC9BE0D1 -:10232000089580EA9BE008958FE79BE008958EE58D -:102330009BE008958DE39BE008958CE19BE0089578 -:102340008BEF9AE008958AED9AE0089589EB9AE080 -:10235000089588E99AE0089587E79AE0089586E568 -:102360009AE0089585E39AE0089584E19AE008955B -:1023700083EF99E0089582ED99E0089581EB99E06B -:10238000089580E999E008958FE699E008958EE434 -:1023900099E008958DE299E008958CE099E0089520 -:1023A0008BEE98E008958AEC98E0089589EA98E029 -:1023B000089588E898E0089587E698E0089586E40F -:1023C00098E0089585E298E0089584E098E0089503 -:1023D00083EE97E0089582EC97E0089581EA97E014 -:1023E000089580E897E008958FE597E008958EE3DB -:1023F00097E008958DE197E008958CEF96E00895B9 -:102400008BED96E008958AEB96E0089589E996E0D1 -:10241000089588E796E0089587E596E0089586E3B5 -:1024200096E0089585E196E0089584EF95E008959B -:1024300083ED95E0089582EB95E0089581E995E0BC -:10244000089580E795E008958FE495E008958EE281 -:1024500095E008958DE095E008958CEE94E0089560 -:102460008BEC94E008958AEA94E0089589E894E07A -:10247000089588E694E0089587E494E0089586E25C -:1024800094E0089585E094E0089584EE93E0089543 -:1024900083EC93E0089582EA93E0089581E893E065 -:1024A000089580E693E008958FE393E008958EE128 -:1024B00093E008958DEF92E008958CED92E00895F9 -:1024C0008BEB92E008958AE992E0089589E792E023 -:1024D000089588E592E008958BE897E1089585E5F1 -:1024E0009EE0089508956091B3017091B4018091C8 -:1024F000B5019091B6010E94A42956985E9825983E -:102500002D9826982E9827982F988330A9F028F494 -:10251000813051F0823069F012C0843041F0853052 -:1025200071F4259A2D9A08C0259A2D9A0895259A16 -:102530002D9A269A2E9A0895279A2F9A089556989A -:102540005E9808950C94731256985E9825982D986D -:1025500026982E9827982F988FEF90E090938900D7 -:102560008093880090938B0080938A0090938D00D5 -:1025700080938C00259A2D9A2FEF80E792E02150CE -:1025800080409040E1F700C00000269A2E9A2FEF7D -:1025900080E792E0215080409040E1F700C00000C9 -:1025A000279A2F9A2FEF80E792E0215080409040A9 -:1025B000E1F700C0000025982D982FEF80E792E00A -:1025C000215080409040E1F700C0000026982E98EE -:1025D0002FEF80E792E0215080409040E1F700C06B -:1025E000000027982F9856985E9825982D98269841 -:1025F0002E9827982F98089589EA8093800089E083 -:102600008093810024982C983F988AB18F748AB95E -:102610006E98479A8BB1806B8BB9769A0E94A41200 -:102620000C94721280E28093000180913601811136 -:102630000EC00E94611381E0809336012FEF83ED7D -:1026400090E3215080409040E1F700C0000080E41A -:102650000E9467138093000181112EC00E94911384 -:1026600080930001811128C00E9491138093000182 -:10267000811122C08FE30E94911380930001811188 -:102680001BC00E94891380E40E946713809300019D -:10269000811112C08CE00E9491138093000181117E -:1026A0000BC00E94911380930001811105C08FE33C -:1026B0000E949113809300010E9489138091000170 -:1026C00008951092B9008AE08093B800089594EAC2 -:1026D0009093BC009091BC0097FFFCCF9091B90003 -:1026E000987F983021F0903111F081E00895809327 -:1026F000BB0084E88093BC008091BC0087FFFCCFC6 -:102700008091B900887F883111F0803471F780E0C2 -:10271000089584E98093BC008091BC0084FDFCCFC7 -:1027200008958093BB0084E88093BC008091BC0036 -:1027300087FFFCCF9091B900987F81E0983209F42F -:1027400080E0089584E88093BC008091BC0087FFFE -:10275000FCCF8091BB00089580910001811115C0CC -:1027600080E40E9467138093000181110CC082E114 -:102770000E94911380930001811105C08FEF0E9488 -:102780009113809300010E94891384B1807F84B9E2 -:1027900085B1807F85B98AB1837F8AB98BB1837F08 -:1027A0008BB93E98469808950E94121380930001B9 -:1027B0000E94AC1380B38C7080BB81B3836F81BBEC -:1027C000E6E4F1E0A8E3B1E011921D9281E0E43586 -:1027D000F807D1F70C94FC12BF92CF92DF92EF92E0 -:1027E000FF920F931F93CF93DF9380910001882373 -:1027F00079F0809137018F5F80933701811108C094 -:102800000E94121380930001811102C00E94A41241 -:1028100008E311E0C0E0D0E0DD24D39482E0C82ECC -:10282000EE24E394F12CC73000F580910001811172 -:1028300062C080E40E94671380930001811112C07E -:1028400082E10E9491138093000181110BC0C701A6 -:102850000C2E01C0880F0A94EAF780950E9491130C -:10286000809300010E94891346C0CA30A1F028F469 -:10287000C83059F0C93061F005C0CC3089F070F033 -:10288000CD3089F0209A289810C0219A29980DC03F -:10289000229A2A980AC0239A2B9807C0529A01C0FC -:1028A000539A5B9802C03E9A4698E0EAEA95F1F79F -:1028B0008FB179995AC092E081708D25892B7C9BCC -:1028C00002C090E001C094E0892B7D9B02C090E0A3 -:1028D00001C098E0892B7E9B02C090E001C090E18E -:1028E000892B9FB19095991F9927991F9295990FC0 -:1028F000907E892B0FC08091000181114BC080E434 -:102900000E94671380930001882389F1B12C0E94F3 -:1029100089138B2DF8019081981719F08083C0924C -:1029200001010E94AC1321960F5F1F4FCE30D105DD -:1029300009F079CF80910101882371F18150809352 -:102940000101882339F08FE99FE00197F1F700C07A -:10295000000022C0A6E4B1E0E8E3F1E081918D93AC -:1029600091E0E634F907D1F717C090E0A5CF83E1F5 -:102970000E949113809300018111C8CF81E40E94CD -:102980006713809300018111C1CF0E94A213B82E5A -:10299000B094BDCF80E0BECF0E94A21281E0DF9153 -:1029A000CF911F910F91FF90EF90DF90CF90BF904C -:1029B0000895E82FF0E0EA5BFE4F808108950895C6 -:1029C0008B3B910578F4883A910540F5853A91055D -:1029D000D0F48430910508F0B1C08130910509F43C -:1029E000ADC06BC0803E910508F467C0883E91057C -:1029F00008F4A4C09C01205F31092031310508F0A2 -:102A00005CC090650895853A910509F459C0863AED -:102A1000910509F458C083E890E40895883A910537 -:102A200009F454C0893A910509F453C08A3A9105D2 -:102A300009F452C08B3A910509F451C08C3A9105C2 -:102A400009F450C08D3A910509F44FC0803B9105BF -:102A500009F44EC08E3A910509F44DC08F3A9105A4 -:102A600009F44CC0813B910509F44BC0823B9105B0 -:102A700009F44AC0833B910509F449C0843B9105A0 -:102A800009F448C0853B910509F447C0863B910590 -:102A900009F446C0873B910509F445C0883B910580 -:102AA00009F444C0893B910509F443C08A3B910570 -:102AB00009F042C08AE296E4089580E090E008952B -:102AC00081E890E4089582E890E4089582EE94E429 -:102AD000089589EE94E408958AEE94E4089585EBD0 -:102AE00094E4089586EB94E4089587EB94E40895C4 -:102AF0008CEC94E408958DEC94E4089583E895E4D7 -:102B000008958AE895E4089582E995E4089584E9B2 -:102B100095E4089581E296E4089583E296E40895A9 -:102B200084E296E4089585E296E4089586E296E4C8 -:102B3000089587E296E4089580E094E40895089566 -:102B400096E0799FF001112494E5899FE00DF11D35 -:102B50001124E60FF11DEE0FFF1FEC55F84E859185 -:102B600094910895880F991F8C5D994EFC01859171 -:102B700094910895880F991F8C55984EFC0185916A -:102B80009491089526E0729FF001112444E5849FFA -:102B9000E00DF11D1124E60FF11DEE0FFF1FEC55A6 -:102BA000F84E25913491C9019A9581159F4110F4F1 -:102BB000C9010895C90190528115904128F4C901B5 -:102BC0009F700E94BA150895C901905381159041D4 -:102BD00020F4C9019927906C0895211580E53807E4 -:102BE00069F40E9459239FEF24E34CE09150204068 -:102BF0004040E1F700C000000C949D2A213080E5A0 -:102C0000380731F48091CE0181608093CE01089520 -:102C1000C90190558115904108F050C0832F992724 -:102C20008F70992781309105D9F4A90143705527F8 -:102C300002C0880F991F4A95E2F79C68A90164E0D9 -:102C4000440F551F6A95E1F744275370842B952B49 -:102C500073E0220F331F7A95E1F7207633271DC0EA -:102C60008230910529F4922F8827816F906A089508 -:102C700083309105A9F4A9014370552781E090E0C4 -:102C800002C0880F991F4A95E2F79C6843E0220F23 -:102C9000331F4A95E1F7207E3770822B932B0895DE -:102CA0000497F1F4A9014370552781E090E002C038 -:102CB000880F991F4A95E2F79A68E8CFC9019057A3 -:102CC0008115904120F4C9019F7090620895C90157 -:102CD00090588115904120F4C9019F70906A089521 -:102CE000203E3105E0F4203C310558F52133310513 -:102CF00009F470C048F42932310509F464C02A325D -:102D0000310509F46EC074C029333105F1F0223861 -:102D10003105D9F02533310509F44EC069C0233E91 -:102D2000310589F138F4203E3105C1F0223E3105EC -:102D3000E1F05EC0263E310569F1273E3105A9F17B -:102D400057C0C9010E94B21508958091E10180FD2C -:102D500002C081FF4DC080EE90E04BC08091E10148 -:102D600080FFF9CF89E390E044C08091E10182FFC8 -:102D70000EC08091E10184FF03C080E090E039C083 -:102D800083EE90E036C08091E10182FFF2CF82EEC7 -:102D900090E02FC08091E10183FF0BC08091E101A1 -:102DA00084FDEBCF87EE90E024C08091E10183FFAA -:102DB000F5CF86EE90E01DC08091E10185FF07C050 -:102DC00089E290E016C08091E10185FFF9CF85E3AB -:102DD00090E00FC08091E10186FF07C08AE290E099 -:102DE00008C08091E10186FFF9CF81E390E001C046 -:102DF000C9010E94E014089508950C94FC16809176 -:102E000064010895CF93DF9300D01F92CDB7DEB752 -:102E10002091E701243019F523E029839B838A83DD -:102E20002093E9008FEF9091E800815095FD06C056 -:102E300095ED9A95F1F700008111F5CF8091E800AA -:102E400085FF0DC040E050E063E070E0CE010196E8 -:102E50000E946C198091E8008E778093E8000F90B3 -:102E60000F900F90DF91CF910895CF93DF9300D013 -:102E70001F92CDB7DEB72091E701243021F522E083 -:102E800029839B838A8383E08093E9008FEF90916D -:102E9000E800815095FD06C095ED9A95F1F7000088 -:102EA0008111F5CF8091E80085FF0DC040E050E032 -:102EB00063E070E0CE0101960E946C198091E800F9 -:102EC0008E778093E8000F900F900F90DF91CF9155 -:102ED00008952091E7012430F1F422E02093E900E5 -:102EE0002FEF3091E800215035FD06C035ED3A95C1 -:102EF000F1F700002111F5CF2091E80025FF0BC06C -:102F000040E050E065E070E00E946C198091E800BC -:102F10008E778093E8000895CF93DF93EC01809142 -:102F2000E701843009F046C090910C019923D9F053 -:102F300090910D019923B9F08093E9008FEF909162 -:102F4000E800815095FD06C095E19A95F1F70000E3 -:102F50008111F5CF8091E80085FF2CC040E050E062 -:102F600060E170E017C081E08093E9008FEF9091FD -:102F7000E800815095FD06C095ED9A95F1F70000A7 -:102F80008111F5CF8091E80085FF14C040E050E04A -:102F900068E070E0CE010E946C198091E8008E77A5 -:102FA0008093E80080E1FE01A4E5B1E001900D927C -:102FB0008A95E1F7DF91CF9108958091E601811123 -:102FC00009C00E94FE1A0E945B1B8091E20084608F -:102FD0008093E20008951092E601089508950C94FC -:102FE000C3300E94342A0E94C9300E94F81D0C94FC -:102FF000FD1642E061EC81E00E94781A42E061EC4B -:1030000082E00E94781A42E061EC83E00E94781A24 -:1030100042E161EC84E00C94781A8091E9018330FC -:1030200009F455C030F4813071F0823009F48EC05B -:1030300008958A3009F47AC08B3009F460C0893071 -:1030400009F09CC020C08091E801813A09F096C047 -:103050008091E800877F8093E8008091EC01909157 -:10306000ED01892B21F060E080E090E003C060E199 -:1030700084E591E070E00E94B5198091E8008B77BB -:103080008093E80008958091E801813209F076C0CC -:103090008091EC019091ED01009719F0039709F0F0 -:1030A0006DC08091E800877F8093E8008091E80000 -:1030B00082FD05C08091E7018111F8CF5FC080914A -:1030C000F100809364018091E8008B7753C0809178 -:1030D000E801813A09F052C08091EC019091ED0134 -:1030E000892B09F04BC08091E800877F8093E8002E -:1030F0008091E80080FFFCCF80910C0136C0809168 -:10310000E8018132D9F58091EC019091ED01892B94 -:10311000A9F58091E800877F8093E8000E94AD1AAE -:103120008091EA0180930C010C9459238091E8016D -:10313000813221F58091E800877F8093E8000E942A -:10314000AD1A8091EB018093650108958091E801AB -:10315000813AA1F48091E800877F8093E800809114 -:10316000E80080FFFCCF809165018093F1008091A1 -:10317000E8008E778093E8000C94AD1A089584B728 -:10318000877F84BF88E10FB6F89480936000109227 -:1031900060000FBE90E080E80FB6F8948093610065 -:1031A000909361000FBE0E94471E0E94FE1A0E946B -:1031B0005B1B8091E20084608093E20078940E941F -:1031C000D61D0E94491E82E091E00E94F31D0E94DC -:1031D000B1308091E701853069F40E94F729809130 -:1031E000E5018823B1F30E941F2A882391F30E94EE -:1031F0005619EFCF0E944F1EECCF292F33272330D3 -:103200003105A9F06CF42130310509F442C02230B7 -:10321000310509F043C08DE690E020EC3DE142C06D -:1032200021323105C9F02232310519F137C0992711 -:103230008130910541F08230910541F0892B71F583 -:10324000ECEBFDE105C0E4EAFDE102C0ECE8FDE1E4 -:10325000849190E09F0126C0643000F5E62FF0E0F5 -:10326000EE0FFF1FEE5DFE4F2081318189E090E07F -:1032700019C0643098F4E62FF0E0DF01AA0FBB1FFD -:10328000A65EBE4F2D913C91EA5EFE4F808190E09C -:1032900009C082E190E02DE23EE104C080E090E0D0 -:1032A00020E030E0FA0131832083089580E189BD78 -:1032B00082E189BD09B400FEFDCF8091D8008F7DE9 -:1032C0008093D8008091E00082608093E00080913C -:1032D000E00081FDFCCF0895CF92DF92EF92FF9244 -:1032E0000F931F93CF93DF937C018B01EA010E9420 -:1032F000CE1A811131C0209731F088819981081B45 -:10330000190BE80EF91EC12CD12C0115110519F16C -:103310008091E80085FD14C08091E8008E7780934D -:10332000E800209741F0888199818C0D9D1D99833B -:10333000888385E011C00E94CE1A882331F30CC027 -:10334000F70181917F018093F10001501109FFEF96 -:10335000CF1ADF0ADACF80E0DF91CF911F910F9172 -:10336000FF90EF90DF90CF9008952091EE01309183 -:10337000EF012617370748F06115710539F42091E0 -:10338000E8002E772093E80001C0B901FC0120E09D -:1033900061157105B9F18091E701882309F440C0F6 -:1033A000853009F43FC08091E80083FD3DC08091E5 -:1033B000E80082FF06C08091E80082FF26C080E01E -:1033C00008958091E80080FFE3CF2091F300809181 -:1033D000F20090E0922B6115710551F08830910553 -:1033E00038F421912093F100615071090196F3CFD7 -:1033F00021E0089709F020E08091E8008E77809323 -:10340000E800C6CF2111C7CFD6CF8091E70188232E -:1034100039F0853039F08091E80083FFCCCF04C0CB -:1034200082E0089583E0089581E008952091EE01FF -:103430003091EF012617370748F06115710539F40F -:103440002091E8002E772093E80001C0B901FC012B -:1034500020E061157105C1F18091E701882309F42D -:1034600041C0853009F440C08091E80083FD3EC032 -:103470008091E80082FF06C08091E80082FF27C0AB -:1034800080E008958091E80080FFE3CF2091F30071 -:103490008091F20090E0922B6115710559F088300F -:1034A000910540F424912093F10031966150710907 -:1034B0000196F2CF21E0089709F020E08091E80022 -:1034C0008E778093E800C5CF2111C6CFD5CF8091EC -:1034D000E701882339F0853039F08091E80083FFD7 -:1034E000CBCF04C082E0089583E0089581E0089581 -:1034F000982F973058F59093E900981739F070910C -:10350000EC002091ED005091F00003C0242F762FA5 -:1035100050E021FF19C03091EB003E7F3093EB006B -:103520003091ED003D7F3093ED003091EB00316044 -:103530003093EB007093EC002093ED005093F0007B -:103540002091EE0027FF07C09F5FD3CF8F7080933D -:10355000E90081E0089580E008958091E80187FD09 -:1035600005C08091E80080FF0EC012C08091E80085 -:1035700082FD05C08091E7018111F8CF0895809107 -:10358000E8008B7708C08091E7018111EACF0895A8 -:103590008091E8008E778093E80008958091E400A0 -:1035A0009091E50045E62091EC0020FF21C020919C -:1035B000E80020FD21C02091E701222389F0253079 -:1035C00089F02091EB0025FD0FC02091E40030919F -:1035D000E5002817390739F3415041F0C901E3CF1D -:1035E00082E0089583E0089581E0089584E00895DD -:1035F0002091E80022FFDFCF80E008950E946C1B3D -:103600000E94741BE0EEF0E0808181608083E8ED31 -:10361000F0E080818F77808319BCA7EDB0E08C91BA -:103620008E7F8C9380818F7E80831092E601089537 -:103630000F931F93CF93DF930E946C1B0E94741B08 -:10364000C8EDD0E088818F778883888180688883FF -:1036500088818F7D888319BC1092E7011092E30165 -:103660001092E5011092E40100EE10E0F801808173 -:103670008B7F808388818160888342E060E080E086 -:103680000E94781AE1EEF0E080818E7F8083E2EE86 -:10369000F0E0808181608083808188608083F80190 -:1036A00080818E7F8083888180618883DF91CF9144 -:1036B0001F910F910895E8EDF0E080818F7E808367 -:1036C000E7EDF0E080818160808384E082BF81E06B -:1036D0008093E6010C94181BE8EDF0E080818E7F6A -:1036E00080831092E20008951092DA001092E100B7 -:1036F00008951F920F920FB60F9211242F933F93AC -:103700004F935F936F937F938F939F93AF93BF93E9 -:10371000EF93FF938091E10082FF0BC08091E20064 -:1037200082FF07C08091E1008B7F8093E1000E94BF -:10373000D51D8091DA0080FF1FC08091D80080FFE6 -:103740001BC08091DA008E7F8093DA008091D900CF -:1037500080FF0DC080E189BD82E189BD09B400FE12 -:10376000FDCF81E08093E7010E94DD1705C019BC01 -:103770001092E7010E94EB178091E10080FF19C0D1 -:103780008091E20080FF15C08091E2008E7F8093DF -:10379000E2008091E20080618093E2008091D80095 -:1037A00080628093D80019BC85E08093E7010E9475 -:1037B000EF178091E10084FF30C08091E20084FF28 -:1037C0002CC080E189BD82E189BD09B400FEFDCF36 -:1037D0008091D8008F7D8093D8008091E1008F7E0A -:1037E0008093E1008091E2008F7E8093E2008091DF -:1037F000E20081608093E2008091E301882311F070 -:1038000084E007C08091E30087FF02C083E001C02D -:1038100081E08093E7010E94F1178091E10083FF2E -:1038200029C08091E20083FF25C08091E100877F5D -:103830008093E10082E08093E7011092E3018091A0 -:10384000E1008E7F8093E1008091E2008E7F809383 -:10385000E2008091E20080618093E20042E060E05B -:1038600080E00E94781A8091F00088608093F000D8 -:103870000E94EE17FF91EF91BF91AF919F918F91B1 -:103880007F916F915F914F913F912F910F900FBE5C -:103890000F901F9018951F920F920FB60F92112440 -:1038A0002F933F934F935F936F937F938F939F9348 -:1038B000AF93BF93CF93EF93FF93C091E900CF7085 -:1038C0008091EC001092E9008091F000877F809356 -:1038D000F00078940E94871C1092E9008091F0001B -:1038E00088608093F000C093E900FF91EF91CF9141 -:1038F000BF91AF919F918F917F916F915F914F9108 -:103900003F912F910F900FBE0F901F9018951F930E -:10391000CF93DF93CDB7DEB7AA970FB6F894DEBF8B -:103920000FBECDBFE8EEF1E08091F100819321E080 -:10393000E03FF207C9F70E940D188091E80083FF6D -:103940001CC12091E8013091E901832F90E08A3079 -:10395000910508F012C1FC01EE5EFE4F0C944B3253 -:10396000203881F0223809F008C18091EC018F7075 -:103970008093E9008091EB0085FB882780F9109205 -:10398000E90006C08091E4019091E5019111826007 -:103990009091E800977F9093E8008093F100109257 -:1039A000F100C5C0822F8D7F09F0E7C0222319F0F6 -:1039B000223061F0E2C08091EA01813009F0DDC07F -:1039C000333009F080E08093E50128C08091EA015E -:1039D000811124C02091EC012F7009F4CEC02093F6 -:1039E000E9008091EB0080FF19C08091EB0033303B -:1039F00011F4806211C080618093EB0081E090E05F -:103A0000022E01C0880F0A94EAF78093EA00109210 -:103A1000EA008091EB0088608093EB001092E9004F -:103A20008091E800877F86C02111A7C01091EA012C -:103A30001F778091E3008078812B8093E300809151 -:103A4000E800877F8093E8000E94AD1A8091E8002B -:103A500080FFFCCF8091E30080688093E300112316 -:103A600011F083E001C082E08093E70186C0205816 -:103A7000223008F082C08091EA019091EB018C3DE8 -:103A800023E0920779F583E08A838AE289834FB73E -:103A9000F894DE01139620E03EE051E2E32FF0E0DF -:103AA00050935700E49120FF03C0E295EF703F5F11 -:103AB000EF708E2F90E0EA3010F0C79601C0C096EC -:103AC0008D939D932F5F243149F74FBF8091E8007C -:103AD000877F8093E8006AE270E0CE0101960E9441 -:103AE000B51914C0AE014F5F5F4F6091EC010E94A9 -:103AF000FD18009709F441C02091E800277F20932A -:103B0000E800BC0189819A810E94161A8091E80020 -:103B10008B778093E80031C0203879F58091E800F8 -:103B2000877F8093E8008091E3018093F10080918A -:103B3000E8008E778093E8000E94AD1A1EC0211124 -:103B40001CC09091EA019230C0F48091E800877F18 -:103B50008093E8009093E3010E94AD1A8091E30105 -:103B6000811104C08091E30087FF02C084E001C09E -:103B700081E08093E7010E94F9178091E80083FFBC -:103B80000AC08091E800877F8093E8008091EB0075 -:103B900080628093EB00AA960FB6F894DEBF0FBE4A -:103BA000CDBFDF91CF911F9108950895CF9380915C -:103BB000E7018823B1F08091E9008F709091EC00CB -:103BC00090FF02C090E801C090E0C92FC82B10926E -:103BD000E9008091E80083FD0E94871CCF70C093AC -:103BE000E900CF91089590936B0180936A01089545 -:103BF000E0916A01F0916B01309721F00190F08122 -:103C0000E02D099480E00895E0916A01F0916B0144 -:103C1000309721F00280F381E02D09940895E0911E -:103C20006A01F0916B01309721F00480F581E02D5D -:103C300009940895209168013091690182179307D2 -:103C400071F09093690180936801E0916A01F091AD -:103C50006B01309721F00680F781E02D09940895DB -:103C600020916601309167018217930771F090935C -:103C7000670180936601E0916A01F0916B013097D2 -:103C800021F00084F185E02D0994089508950C94A5 -:103C9000461E0E943A2A0E94D4130C94002BCF9205 -:103CA000DF92EF92FF920F931F93CF93DF93CDB7E5 -:103CB000DEB72B970FB6F894DEBF0FBECDBF0E94C4 -:103CC000EC133DE6E32E31E0F32E00E010E0C02ED1 -:103CD000802F0E94D914F701D1907F01D826B1F42A -:103CE0000F5F1F4F0E30110591F78FEF89838A8385 -:103CF0001B820E94432A8160782F9D838C83498197 -:103D00005A816B818D810E94F21E41C09091CE013B -:103D100091FF04C08B870E94DF148B8520E030E088 -:103D20004D2D50E0922FBA01022E02C07595679575 -:103D30000A94E2F760FF25C02E83CF82EE24E3943D -:103D4000F12C02C0EE0CFF1C9A95E2F790E08E2158 -:103D50009F2121E0892B09F420E028870E94432A33 -:103D60008160782F9A8789874E815F8168858A85EF -:103D70000E94F21EF801E359FE4F80818E25808358 -:103D800006C02F5F3F4F2630310561F6A9CF0E9454 -:103D9000E42D10916C010E94F81D1817A1F00E94EB -:103DA000F81D80936C012B960FB6F894DEBF0FBE02 -:103DB000CDBFDF91CF911F910F91FF90EF90DF90DA -:103DC000CF900C94FD162B960FB6F894DEBF0FBE65 -:103DD000CDBFDF91CF911F910F91FF90EF90DF90BA -:103DE000CF900895CF93DF93CDB7DEB72B970FB663 -:103DF000F894DEBF0FBECDBF4F83588769877A879F -:103E00008B87DE01119686E0FD0111928A95E9F714 -:103E100085E0FE01379601900D928A95E1F7498180 -:103E20005A816B817C818D819E810E9425262B96F3 -:103E30000FB6F894DEBF0FBECDBFDF91CF910895CE -:103E4000CF93C82F882309F4C1C0823859F40E9447 -:103E5000F81D81FDBBC089E30E94C4280E947E2911 -:103E600089E30CC0833879F40E94F81D80FDAEC050 -:103E700083E50E94C4280E947E2983E50E940429CC -:103E8000CF910C947E29843859F40E94F81D82FD4C -:103E90009DC087E40E94C4280E947E2987E4EECF5B -:103EA0008CEF8C0F813A48F48C2F0E9419308111CD -:103EB0008DC08C2F0E94C428E3CF80E28C0F883005 -:103EC00048F4C77081E001C0880FCA95EAF70E94E4 -:103ED0004529D6CF8BE58C0F833078F4C53A29F08D -:103EE000C63A31F482E890E005C081E890E002C073 -:103EF00083E890E0CF910C941A1E88E58C0F8331F3 -:103F000008F064C0C83A39F1C93A41F1CA3A49F1F6 -:103F1000CB3A51F1CC3A59F1CD3A61F1C03B69F15C -:103F2000CE3A71F1CF3A79F1C13B81F1C23B89F1CF -:103F3000C33B91F1C43B99F1C53BA1F1C63BA9F14B -:103F4000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5A7 -:103F50008AE292E038C082EE90E035C089EE90E0CF -:103F600032C08AEE90E02FC085EB90E02CC086EB4B -:103F700090E029C087EB90E026C08CEC90E023C055 -:103F80008DEC90E020C083E891E01DC08AE891E0CC -:103F90001AC082E991E017C084E991E014C081E27F -:103FA00092E011C083E292E00EC084E292E00BC086 -:103FB00085E292E008C086E292E005C087E292E0E6 -:103FC00002C080E090E0CF910C94301ECF91089514 -:103FD000882309F44BC0823859F40E94F81D81FFF0 -:103FE00045C089E30E94C4280E947E2989E30CC051 -:103FF000833871F40E94F81D80FF38C083E50E9469 -:10400000C4280E947E2983E50E9404290C947E29FD -:10401000843859F40E94F81D82FF28C087E40E946A -:10402000C4280E947E2987E4EFCF9CEF980F913A35 -:1040300058F390E2980F983050F4877091E001C0E7 -:10404000990F8A95EAF7892F0E944B29DFCF9BE5CC -:10405000980F933020F480E090E00C941A1E885A58 -:10406000833120F480E090E00C94301E0895882382 -:1040700021F00E9445290C947E290895882321F07F -:104080000E944B290C947E290895CF92DF92EF92E3 -:10409000FF920F931F93CF93DF93CDB7DEB728978F -:1040A0000FB6F894DEBF0FBECDBF8C0185E0F801DE -:1040B000DE01119601900D928A95E1F7F801408199 -:1040C0003181F280258122952F7083819481892B03 -:1040D00031F03F3F31F481E04F3F19F403C081E0FC -:1040E00001C080E080FDC4C249833A8389819A81FE -:1040F0002F830E9482289E8388870E9481280E94A5 -:1041000054274E81E42FE295EF70F0E0E45EFE4F1D -:104110002F8168850C944B32842F807F142F1F7061 -:10412000882311F01295107FFF2059F0112309F414 -:1041300054C2812F68870E9455290E947E29688574 -:104140004CC2862F0E94E81F112309F491C2812FCF -:104150000E945B2928960FB6F894DEBF0FBECDBF34 -:10416000DF91CF911F910F91FF90EF90DF90CF9053 -:104170000C947E29342F307F842F8F70303211F0D1 -:104180008295807F662319F0613019F12BC0FF20E2 -:10419000B1F0222309F493C1213009F090C128968F -:1041A0000FB6F894DEBF0FBECDBFDF91CF911F9148 -:1041B0000F91FF90EF90DF90CF900C946529222310 -:1041C00019F0213009F454C28E830E9468298E812F -:1041D00089C1FF2021F0223008F04AC270C12111AC -:1041E00047C280C1FF2021F0222309F468C1F5C134 -:1041F000222309F477C105C2242F26952695237022 -:1042000030E02115310521F021303105C9F030C2EF -:10421000FF2021F0862F942F937002C080E090E061 -:1042200028960FB6F894DEBF0FBECDBFDF91CF91B9 -:104230001F910F91FF90EF90DF90CF900C941A1E7A -:10424000FF2021F0862F942F937002C080E090E031 -:1042500028960FB6F894DEBF0FBECDBFDF91CF9189 -:104260001F910F91FF90EF90DF90CF900C94301E34 -:10427000862FFF2019F00E94EC2C02C00E94542DC2 -:1042800028960FB6F894DEBF0FBECDBFDF91CF9159 -:104290001F910F91FF90EF90DF90CF900C94D92D4C -:1042A000842F837009F076C0F110E2C1262F229589 -:1042B00026952770220F220F862F8F70C82ED12CA3 -:1042C000E12CF12C022E04C0CC0CDD1CEE1CFF1CDA -:1042D0000A94D2F764FF10C06FE070E080E090E0D5 -:1042E00004C0660F771F881F991F2A95D2F7609523 -:1042F00070958095909503C060E070E0CB01242F0D -:10430000269526952370422F50E042305105D1F07A -:104310004330510559F16C297D298E299F2941305F -:10432000510541F128960FB6F894DEBF0FBECDBF00 -:10433000DF91CF911F910F91FF90EF90DF90CF9081 -:104340000C9479276C297D298E299F2928960FB6F0 -:10435000F894DEBF0FBECDBFDF91CF911F910F91BB -:10436000FF90EF90DF90CF900C9493270E947927D5 -:10437000C701B60128960FB6F894DEBF0FBECDBFB9 -:10438000DF91CF911F910F91FF90EF90DF90CF9031 -:104390000C945F27FF2019F0842F817001C086954F -:1043A000882309F465C1262F229526952770220FB0 -:1043B000220F862F8F70C82ED12CE12CF12C022ECB -:1043C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF69 -:1043D00010C06FE070E080E090E004C0660F771FCF -:1043E000881F991F2A95D2F76095709580959095B2 -:1043F00003C060E070E0CB01242F26952695237042 -:10440000422F50E042305105D1F04330510559F16F -:104410006C297D298E299F294130510541F128962B -:104420000FB6F894DEBF0FBECDBFDF91CF911F91C5 -:104430000F91FF90EF90DF90CF900C944D286C2956 -:104440007D298E299F2928960FB6F894DEBF0FBECE -:10445000CDBFDF91CF911F910F91FF90EF90DF9033 -:10446000CF900C9467280E944D28C701B60128966A -:104470000FB6F894DEBF0FBECDBFDF91CF911F9175 -:104480000F91FF90EF90DF90CF900C943328603F16 -:10449000C9F118F4603E50F49BC0623F09F460C05B -:1044A00008F44AC0633F09F46FC092C0162F1F7012 -:1044B000842F8F71FF2099F00E94CC27812F28969E -:1044C0000FB6F894DEBF0FBECDBFDF91CF911F9125 -:1044D0000F91FF90EF90DF90CF900C9437200E94C7 -:1044E000ED27812F28960FB6F894DEBF0FBECDBF03 -:1044F000DF91CF911F910F91FF90EF90DF90CF90C0 -:104500000C943E20FF20A1F02111B2C0842F8F71A6 -:1045100028960FB6F894DEBF0FBECDBFDF91CF91C6 -:104520001F910F91FF90EF90DF90CF900C94122885 -:10453000223008F09DC0EACFFF20A1F0842F8F71B8 -:1045400028960FB6F894DEBF0FBECDBFDF91CF9196 -:104550001F910F91FF90EF90DF90CF900C94CC279C -:10456000FF2061F3842F8F7128960FB6F894DEBF79 -:104570000FBECDBFDF91CF911F910F91FF90EF90B4 -:10458000DF90CF900C94ED27FF2091F0842F8F7156 -:1045900028960FB6F894DEBF0FBECDBFDF91CF9146 -:1045A0001F910F91FF90EF90DF90CF900C94B72761 -:1045B00028960FB6F894DEBF0FBECDBFDF91CF9126 -:1045C0001F910F91FF90EF90DF90CF900C94AD274B -:1045D000FF20A1F0222309F4B1CF862F28960FB631 -:1045E000F894DEBF0FBECDBFDF91CF911F910F9129 -:1045F000FF90EF90DF90CF900C94201F222309F4BE -:10460000B1CF862F28960FB6F894DEBF0FBECDBF70 -:10461000DF91CF911F910F91FF90EF90DF90CF909E -:104620000C94E81F4F70C8010E94031028960FB623 -:10463000F894DEBF0FBECDBFDF91CF911F910F91D8 -:10464000FF90EF90DF90CF900C94D2264F70C8016E -:1046500028960FB6F894DEBF0FBECDBFDF91CF9185 -:104660001F910F91FF90EF90DF90CF900C949F15CA -:1046700028960FB6F894DEBF0FBECDBFDF91CF9165 -:104680001F910F91FF90EF90DF90CF9008950E94BF -:1046900062290E9437290E947E290E94852E0E944D -:1046A000D92D80E090E00E941A1E80E090E00C94EA -:1046B000301E0E9452290C9447230E948228292FE1 -:1046C00022952F7030E02C3031054CF42A30310522 -:1046D0006CF4225031092230310590F407C02C309F -:1046E000310551F02F30310539F00AC0803E10F00D -:1046F000803F31F481E0089593FB882780F9089585 -:1047000080E00895CF93DF9300D000D01F92CDB703 -:10471000DEB70F900F900F900F900F90DF91CF9119 -:104720000895CF93DF9300D000D000D0CDB7DEB78F -:1047300026960FB6F894DEBF0FBECDBFDF91CF91A6 -:1047400008951F93CF93DF93C0917B0116E0809172 -:104750007C01C81799F0D0E01C9FF0011D9FF00D5F -:104760001124E358FE4F408151816281738184811D -:1047700095810E9491232196C770E9CFDF91CF9157 -:104780001F9108954091AD015091AE016091AF012C -:104790007091B0018091B1019091B2010C9491237C -:1047A000CF938091B20182958F7009F05FC08091A4 -:1047B000AF01882309F45AC020917B01A0917C01AC -:1047C0006091AD017091AE018091B0019091B10105 -:1047D00031E06F3F09F030E0B32FC6E02A1709F44B -:1047E00045C0009721F07F3F21F44B2F03C041E0EB -:1047F00001C040E030E040FD35C0C29FF001C39FE2 -:10480000F00D1124E358FE4F418174132BC04081F9 -:10481000641328C04281411125C043815481481747 -:10482000590710F441505109481B590B483C510598 -:10483000C8F48091B2018F7080618093B20186E0EC -:10484000829FF001839FF00D1124EE57FE4F80816F -:104850008F70806180838DEA91E00E944520CF9126 -:104860000C94A1232F5F3F4F2770B8CFCF910895AD -:10487000CF92DF92EF92FF920F931F93CF93DF932C -:10488000CDB7DEB762970FB6F894DEBF0FBECDBFCF -:104890008C0185E0F801DE011D9601900D928A954C -:1048A000E1F7D8014C9111965C91119712966C9199 -:1048B00012971396ED90FC9014977091AD01E091D2 -:1048C000AE012091B0013091B1012115310531F0D7 -:1048D000EF3F31F481E07F3F19F403C081E001C074 -:1048E00080E0B82FB170CB2E80FD6CC1D090AF01AD -:1048F000DD2009F4F5C0F091B201E216F30638F0BC -:10490000C701821B930B883C910548F09BC0209502 -:1049100030952E0D3F1D283C310508F093C08F2F98 -:10492000807F09F052C0E51314C0741312C0D62E54 -:1049300061110FC0FF70F061F093B2010E94C223B9 -:104940008DEA91E00E9445208091B201F8018583B3 -:104950006CC1EF2831F05F3F31F481E04F3F19F433 -:1049600003C081E001C080E080FD03C081E08627B4 -:1049700001C080E0F82FF170FF2E80FF1CC08091F5 -:104980007B0120917C0136E0821709F428C190E078 -:10499000389FF001399FF00D1124E358FE4F7181CB -:1049A000571306C07081471303C07281671303C099 -:1049B00001968770E9CFD62E662309F436C180911F -:1049C000B20181608093B20153C0E51308C0741333 -:1049D00006C0611104C0D8011596FC93AEC04D8786 -:1049E0005E878D859E856A8B0E945D236A898823F8 -:1049F00029F1D62E662311F12091B201822F8295E2 -:104A00008F7090E002970CF460C08091AD0190919E -:104A1000AE0198878F831986FB86EA862C87CE01A4 -:104A2000079651C0E51731F14D875E878D859E85CC -:104A30006A8B0E945D236A8981112EC0C8010E9481 -:104A40004520A4C08F2F807F69F77E2DF98AE88AE0 -:104A500089890E9482238DEA91E00E944520EDEA37 -:104A6000F1E086E0DF011D928A95E9F70E94C223FA -:104A7000D12CDBC07413D8CF6111D6CFD8011596D5 -:104A8000FC93C8010E944520EDEAF1E086E0DF01D9 -:104A90001D928A95E9F7C9C0D62E662379F2209136 -:104AA000B201822F82958F7090E0029774F080910E -:104AB000AD019091AE019A8389831B82FD82EC82C5 -:104AC0002E83CE0101960E94452086E0F801ADEAD2 -:104AD000B1E001900D928A95E1F70E94D0236FC05A -:104AE000E216F30628F0C701821B930B9C0104C059 -:104AF000209530952E0D3F1D283C310508F052C001 -:104B0000D62E662309F49ACFE5132CC074132AC05D -:104B10008091B20180FD1DC0982F92959F70C9F0C1 -:104B2000D80115968C9315979F3039F09F5F929519 -:104B3000907F8F70892B15968C93C8010E94452019 -:104B400086E0F801ADEAB1E001900D928A95E1F7B7 -:104B500036C086E0F801ADEAB1E001900D928A9589 -:104B6000E1F763C04D875E878D859E850E945D233A -:104B7000882379F086E0F801ADEAB1E001900D926A -:104B80008A95E1F70E94D0230E94C223DD24D394AA -:104B90004CC08091B20181608093B201C8010E9433 -:104BA000452043C07E2DF98AE88A89890E948223A4 -:104BB000EDEAF1E086E0DF011D928A95E9F70E94B7 -:104BC000C22333C0662309F439CF4D875E878D85B4 -:104BD0009E850E945D23882309F430CFCBCF4D877B -:104BE0005E878D859E850E948228292F22952F70B1 -:104BF00030E0223031052CF49F7041F0811106C065 -:104C00000CC0243031052CF49F7049F4805E88304C -:104C100020F0C8010E944520CF2CDC2C06C0D80112 -:104C200015969C91907F91F7F8CF8D2D62960FB6D7 -:104C3000F894DEBF0FBECDBFDF91CF911F910F91D2 -:104C4000FF90EF90DF90CF9008951F93CF93DF9365 -:104C5000CDB7DEB72C970FB6F894DEBF0FBECDBF31 -:104C60004F83588769877A878B879C87CE01079601 -:104C70000E9438248823C1F02F8138858A859B853E -:104C8000892B31F03F3F11F080E003C02F3FE1F767 -:104C900081E0811147C04F81588569857A858B8570 -:104CA0009C850E9491233EC086E0FE013796DE017E -:104CB000119601900D928A95E1F7FF81E8854A856A -:104CC0005B854115510531F0EF3F31F481E0FF3F45 -:104CD00019F403C081E001C080E080FD23C0209171 -:104CE0007C0130E0C90101968770992760917B01B2 -:104CF00070E086179707F1F1F983EA835D834C83AF -:104D000096E0929FD001939FB00D1124A358BE4FFF -:104D1000FE01319601900D929A95E1F780937C0106 -:104D20000E94A12316E080917B0190917C0189175C -:104D300079F1189FC001112483589E4F0E94382496 -:104D4000882331F1E0917B011E9FF0011124E3588B -:104D5000FE4F4081518162817381848195810E94DF -:104D6000912380917B0190E0019687709927809331 -:104D70007B01D9CF0E94592310927C0110927B01B4 -:104D8000EDEAF1E086E0DF011D928A95E9F7CACFEE -:104D90002C960FB6F894DEBF0FBECDBFDF91CF913A -:104DA0001F910895EF92FF920F931F93CF93DF937C -:104DB0009C01009709F471C0F12CEE24E394E90101 -:104DC0002196F9018491843740F4843008F056C06C -:104DD000813081F0823021F160C0853709F449C00B -:104DE000C0F19CE7980F903708F057C08F770E946A -:104DF000E81F46C089010E5F1F4FFE01849190E2BB -:104E0000980F983050F48770FE2D01C0FF0F8A95DF -:104E1000EAF78F2F0E94552915C00E94201F14C049 -:104E200089010E5F1F4FFE01849190E2980F983028 -:104E300068F48770FE2D01C0FF0F8A95EAF78F2F67 -:104E40000E945B290E947E29E8011AC00E94E81F87 -:104E5000FBCF2E5F3F4FFE01C491CC2341F08FE981 -:104E60009FE00197F1F700C00000C150F6CFE901C3 -:104E700007C0FE01F490E901229602C00E94201FA3 -:104E80008F2D882341F0EFE9FFE03197F1F700C063 -:104E900000008150F6CF9E0192CFDF91CF911F91FC -:104EA0000F91FF90EF90089508956093B70170936C -:104EB000B8018093B9019093BA010C9447230F93E2 -:104EC0001F930091B7011091B8012091B901309161 -:104ED000BA01062B172B282B392B0093B7011093FF -:104EE000B8012093B9013093BA011F910F910C942E -:104EF00047230F931F930091B7011091B8012091A0 -:104F0000B9013091BA0106231723282339230093CE -:104F1000B7011093B8012093B9013093BA011F91E2 -:104F20000F910C9447230F931F930091B701109199 -:104F3000B8012091B9013091BA0106271727282717 -:104F400039270093B7011093B8012093B90130932A -:104F5000BA011F910F910C9447231092B301109244 -:104F6000B4011092B5011092B6010C94472341E0B0 -:104F700050E060E070E004C0440F551F661F771FCB -:104F80008A95D2F74093B3015093B4016093B50171 -:104F90007093B6010C94472341E050E060E070E06C -:104FA00004C0440F551F661F771F8A95D2F7809162 -:104FB000B3019091B401A091B501B091B601842BD9 -:104FC000952BA62BB72B8093B3019093B401A0939C -:104FD000B501B093B6010C94472341E050E060E086 -:104FE00070E004C0440F551F661F771F8A95D2F7E3 -:104FF00040955095609570958091B3019091B40162 -:10500000A091B501B091B60184239523A623B723BF -:105010008093B3019093B401A093B501B093B6010E -:105020000C94472341E050E060E070E004C0440F7E -:10503000551F661F771F8A95D2F78091B301909113 -:10504000B401A091B501B091B60184279527A62798 -:10505000B7278093B3019093B401A093B501B093A7 -:10506000B6010C9447230F931F930091B301109145 -:10507000B4012091B5013091B601062B172B282BD6 -:10508000392B0093B3011093B4012093B5013093F1 -:10509000B6011F910F910C9447230F931F9300911A -:1050A000B3011091B4012091B5013091B6010623EE -:1050B0001723282339230093B3011093B4012093BD -:1050C000B5013093B6011F910F910C9447230F93B4 -:1050D0001F930091B3011091B4012091B50130915B -:1050E000B60106271727282739270093B301109305 -:1050F000B4012093B5013093B6011F910F910C9428 -:1051000047230895CF92DF92EF92FF920F931F9360 -:10511000CF93DF93EC01C090B701D090B801E0903D -:10512000B901F090BA018091B3019091B401A091BE -:10513000B501B091B601C82AD92AEA2AFB2A0FE1A3 -:1051400010E0B701A601002E04C07695679557952B -:1051500047950A94D2F740FF07C0BE01802F0E94F6 -:10516000C2158130910539F40150110950F7BE0183 -:1051700080E00E94C215DF91CF911F910F91FF90A7 -:10518000EF90DF90CF90089590910C019923D9F082 -:1051900090910D019923B9F0982F96959695969533 -:1051A0009F3088F5E0910E01F0910F01E90FF11D9C -:1051B000877021E030E001C0220F8A95EAF78181F3 -:1051C000822B8183089540910E0150910F0120E0C0 -:1051D00030E09FEFFA01E20FF31F6281681799F048 -:1051E0009F3F19F4611101C0922F2F5F3F4F2E3066 -:1051F000310581F79F3F39F0FA01E90FF11D97FD65 -:10520000FA9582830895089590910C019923E1F015 -:1052100090910D019923C1F0982F969596959695AA -:105220009F3020F5E0910E01F0910F01E90FF11D83 -:10523000877021E030E001C0220F8A95EAF72095BF -:10524000818128232183089540910E0150910F01FF -:1052500020E030E0FA01E20FF31F9281981301C0C1 -:1052600012822F5F3F4F2E303105A1F7089581E064 -:1052700090E0E0910E01F0910F01E80FF91F10820C -:10528000019680319105A9F708959091CD01982B51 -:105290009093CD01089580959091CD01982390939E -:1052A000CD0108951092CD0108959091CC01982BD5 -:1052B0009093CC01089580959091CC019823909380 -:1052C000CC0108951092CC0108958093BB010895FC -:1052D0001092BB01089540910E0150910F0120E002 -:1052E00030E080E0FA01E20FF31F918191118F5FAE -:1052F0002F5F3F4F2F303105A9F70895E0910E0140 -:10530000F0910F018091CD018083E0910E01F09129 -:105310000F0180819091CC01892B80839091BB01FA -:10532000992361F0E0910E01F0910F018081892BAA -:1053300080830E946B2981111092BB0180910E0124 -:1053400090910F010C94041ECF92DF92EF92FF9286 -:105350000F931F936C01EE24FF24C114D104E104C8 -:10536000F10421F46B017C0180E001C080E133276E -:105370002F2D1E2D0D2D011511052105310519F0BB -:10538000885F6801790197018601A4E03695279529 -:1053900017950795AA95D1F7011511052105310536 -:1053A00019F08C5F6801790197018601F2E036956A -:1053B000279517950795FA95D1F701151105210540 -:1053C000310519F08E5F68017901B701A601769564 -:1053D000679557954795452B462B472B09F08F5FCF -:1053E0001F910F91FF90EF90DF90CF9008958091E3 -:1053F000E701843009F11092CF0120E488E190E0C8 -:105400000FB6F894A895809360000FBE20936000BB -:1054100083B7817F846083BF83B7816083BF7894C3 -:10542000889583B78E7F83BF88E10FB6F894809309 -:105430006000109260000FBE089508950895CF9304 -:105440000E941D2A0E94EC130E941E2AC0E08C2F8D -:105450000E94D914811105C0CF5FCE30C1F780E022 -:1054600001C081E0CF9108950E9459230E94F81D48 -:105470000C94FD1682E084BD93E095BD9AEF97BD34 -:1054800080936E0008952FB7F8948091D001909189 -:10549000D101A091D201B091D3012FBF0895CF9235 -:1054A000DF92EF92FF920F931F932FB7F8944091E2 -:1054B000D0015091D1016091D2017091D3012FBFE1 -:1054C0006A017B01EE24FF248C0120E030E0C0164D -:1054D000D106E206F30610F441505109481B590B5E -:1054E000CA011F910F91FF90EF90DF90CF90089528 -:1054F0001F920F920FB60F9211248F939F93AF9329 -:10550000BF938091D0019091D101A091D201B0912F -:10551000D3010196A11DB11D8093D0019093D101BB -:10552000A093D201B093D301BF91AF919F918F917E -:105530000F900FBE0F901F9018950E94FE1AF894BE -:105540002FEF87EA91E6215080409040E1F700C0BC -:10555000000087E090EBDC018093F0019093F10173 -:10556000A093F201B093F3012CE088E190E00FB634 -:10557000F894A895809360000FBE20936000FFCF41 -:10558000EF92FF920F931F93CF93DF93E82EF12CAE -:105590008F2D0E94D914C0E0D0E0082F10E09801B0 -:1055A0000C2E02C0359527950A94E2F720FD05C020 -:1055B0002196C630D10599F709C06C2F7F2D80E068 -:1055C0000E94A015E812F4CF81E005C0F3948EE0AC -:1055D000F812DECF80E0DF91CF911F910F91FF9005 -:1055E000EF900895CF93C82F8CE20E94C02A8823A1 -:1055F00021F08C2FCF910C94C02A80E0CF91089598 -:10560000CF930E94452C811102C00E942B2CC5E62D -:10561000C15049F00E94EC138FE39CE90197F1F728 -:1056200000C00000F5CF89E20E94F22A811111C169 -:105630008AE20E94F22A81110E942B2C85E00E94AE -:10564000F22A81110E949D2A0E94502C8093CE0143 -:1056500087E00E94F22A882399F18BE10E94F22AC6 -:10566000882351F09091CE0191FB882780F921E0A9 -:10567000822780FB91F922C08EE00E94F22A8823C3 -:1056800051F09091CE0192FB882780F921E082278A -:1056900080FB92F913C080E10E94F22A9091CE0122 -:1056A000882341F093FB882780F921E0822780FB43 -:1056B00093F904C0892F809580FB90F99093CE01D7 -:1056C0008091CE010E94542C0E94622C8093E101B3 -:1056D00080EE0E94F22A882341F08091E101982F08 -:1056E000909590FB80F98093E10189E30E94F22A72 -:1056F000882359F09091E10191FB882780F921E0FE -:10570000822780FB91F99093E10182EE0E94F22AB8 -:10571000882359F09091E10192FB882780F921E0DC -:10572000822780FB92F99093E10186EE0E94F22A93 -:10573000882359F09091E10193FB882780F921E0BB -:10574000822780FB93F99093E10183EE0E94F22A75 -:10575000882359F09091E10194FB882780F921E09A -:10576000822780FB94F99093E10185E30E94F22A5D -:10577000882359F09091E10195FB882780F921E079 -:10578000822780FB95F99093E10181E30E94F22A40 -:10579000882359F09091E10196FB882780F921E058 -:1057A000822780FB96F99093E10181E10E94F22A21 -:1057B000882359F09091E10197FB882780F921E037 -:1057C000822780FB97F99093E1018091E1010E948B -:1057D000662C8091E10187FB882780F980930D0179 -:1057E00087E20E94F22AC82F8EE10E94F22A8111DC -:1057F000C2608FE10E94F22A8111C46080E20E949F -:10580000F22A8111C86081E20E94F22A8111C061EE -:1058100082E20E94F22A8111C06283E20E94F22A8F -:105820008111C06484E20E94F22A882311F0C068CA -:1058300002C0CC2329F08C2F0E945D2C6C2F03C05A -:105840000E94592C682F70E080E090E0CF910C947A -:105850005527CF9108956DEE7EEF80E090E00E9495 -:10586000813260E082E090E00E94733260E083E089 -:1058700090E00E94733260E084E090E00E94733216 -:1058800060E085E090E00C94733280E090E00E944C -:105890006D3221E08D3E9E4F09F020E0822F089569 -:1058A00082E090E00C946532682F82E090E00C94E6 -:1058B000733283E090E00C946532682F83E090E0CF -:1058C0000C94733284E090E00C946532682F84E08D -:1058D00090E00C9473328091D60180FF0BC06091F0 -:1058E000130185E0689FB001112475956795759542 -:1058F00067952AC081FF09C06091130185E0689F08 -:10590000B0011124759567951FC082FF07C0609193 -:10591000130185E0689FB001112416C04091D701A2 -:105920004423C9F060911201461788F720911301B2 -:1059300085E0289F90011124429FC001439F900D54 -:10594000112470E00E9437326038710540F461150F -:10595000710539F002C065E070E0862F08958FE789 -:10596000089581E008958091D60180FF08C060917C -:10597000110170E0759567957595679521C081FF58 -:1059800006C06091110170E07595679519C082FF9E -:1059900004C06091110170E010C08091D70188238C -:1059A000C1F0609110018617A0F790911101989FA6 -:1059B000C001112470E00E9437326038710528F46C -:1059C0006115710521F0862F08958FE7089581E014 -:1059D000089561E070E0F4CF803F21F40E946B2CC9 -:1059E000819504C0813F29F40E946B2C8093DA01D9 -:1059F0000895823F21F40E946B2C819504C0833F5F -:105A000029F40E946B2C8093D9010895893F19F4E1 -:105A10000E94B32C05C08A3F31F40E94B32C8195BB -:105A20008093DB0108958B3F21F40E94B32C819574 -:105A300004C08C3F29F40E94B32C8093DC010895AC -:105A4000843F21F48091D801816017C0853F21F403 -:105A50008091D801826011C0863F21F48091D801E5 -:105A600084600BC0873F21F48091D801886005C015 -:105A7000883F31F48091D80180618093D8010895E6 -:105A80008D3F21F48091D60181600BC08E3F21F4BF -:105A90008091D601826005C08F3F29F48091D601A4 -:105AA00084608093D6010895803F39F48091DA01B3 -:105AB00087FF6CC01092DA0169C0813F29F48091A0 -:105AC000DA011816BCF362C09091D901823F29F423 -:105AD00097FF5CC01092D90159C0833F19F4191681 -:105AE000CCF354C0893F41F48091DB0118160CF0CF -:105AF0004DC01092DB014AC08A3F29F48091DB013E -:105B000087FF44C0F6CF8B3F39F48091DC0187FFDB -:105B10003DC01092DC013AC08C3F29F48091DC0139 -:105B20001816BCF333C0843F21F48091D8018E7FD6 -:105B300017C0853F21F48091D8018D7F11C0863F29 -:105B400021F48091D8018B7F0BC0873F21F4809195 -:105B5000D801877F05C0883F31F48091D8018F7EBE -:105B60008093D80113C08D3F21F48091D6018E7FA0 -:105B70000BC08E3F21F48091D6018D7F05C08F3FF1 -:105B800029F48091D6018B7F8093D6018091D90131 -:105B900081110EC08091DA0181110AC08091DB0170 -:105BA000811106C08091DC01811102C01092D701E1 -:105BB000089588ED91E00E940F1E0E94432A909361 -:105BC000D5018093D40108951F93CF93DF938091E3 -:105BD000D4019091D5010E944F2A4091D7014423CE -:105BE00021F02091140130E006C0209115015AE007 -:105BF000259F900111248217930708F482C0809199 -:105C0000D9011091DA01D091DB01C091DC01811141 -:105C100007C0111105C0D11103C0CC2309F471C014 -:105C20004F3F19F04F5F4093D701181624F40E949C -:105C30006B2C8093D9018091D90187FF05C00E9408 -:105C40006B2C81958093D901111624F40E946B2C42 -:105C50008093DA018091DA0187FF05C00E946B2CE6 -:105C600081958093DA016091D901662339F1109111 -:105C7000DA01112319F1772767FD7095872F972F88 -:105C80000E94483123E333E343E35FE30E94AC31F6 -:105C90000E9415316093D901612F772767FD7095B8 -:105CA000872F972F0E94483123E333E343E35FE3D9 -:105CB0000E94AC310E9415316093DA011D1624F464 -:105CC0000E94B32C8093DB018091DB0187FF05C02C -:105CD0000E94B32C81958093DB011C1624F40E9452 -:105CE000B32C8093DC018091DC0187FF05C00E940A -:105CF000B32C81958093DC01DF91CF911F910C949F -:105D0000D92DDF91CF911F910895E8EDF1E085E065 -:105D1000DF011D928A95E9F71092D7011092D60102 -:105D20000895833081F128F4813059F08230D1F028 -:105D30000895853009F449C0B8F1863009F456C099 -:105D4000089520911501862F90E0820F911D8F3FBD -:105D5000910520F4620F6093150108958FEF8093F1 -:105D60001501089520911401862F90E0820F911D56 -:105D70008F3F910520F4620F6093140108958FEF17 -:105D800080931401089520911301862F90E0820FD3 -:105D9000911D8F3F910520F4620F609313010895C8 -:105DA0008FEF80931301089520911201862F90E0C8 -:105DB000820F911D8F3F910520F4620F60931201B5 -:105DC00008958FEF80931201089520911101862F7D -:105DD00090E0820F911D8F3F910520F4620F609338 -:105DE000110108958FEF8093110108952091100102 -:105DF000862F90E0820F911D8F3F910520F4620F56 -:105E00006093100108958FEF8093100108958330FF -:105E100011F128F4813049F0823091F008958530F5 -:105E200081F120F18630C1F1089580911501681744 -:105E300020F4861B80931501089510921501089592 -:105E400080911401681720F4861B80931401089533 -:105E500010921401089580911301681720F4861B95 -:105E600080931301089510921301089580911201F7 -:105E7000681720F4861B8093120108951092120176 -:105E8000089580911101681720F4861B80931101F9 -:105E9000089510921101089580911001681720F45F -:105EA000861B8093100108951092100108958D3182 -:105EB00009F442C020F58E3009F479C070F48730BF -:105EC00009F45EC020F4863009F442C033C0883043 -:105ED000D1F18B3009F4A7C02DC0863109F4A3C0DD -:105EE00038F4803109F46DC0813109F47BC022C0DF -:105EF000893109F498C08B3109F44FC01BC0853338 -:105F000009F479C048F4873209F475C008F478C000 -:105F1000893209F470C00EC0833438F48A3308F033 -:105F200071C0883309F47FC005C0833409F463C0AD -:105F30008834C1F080E008950E94CF300E94F81D9F -:105F40000E94FD1670C00E94502C0E94622C6BC0F3 -:105F50008091CE01817F8E7F8093CE0181E08093FE -:105F6000DE0108950E9459232FEF83ED90E3215025 -:105F700080409040E1F700C000000E949D2A53C07D -:105F80009091CE01892F817090FF03C0917F9E7FF9 -:105F900026C091609093CE0146C09091CE0191FBB6 -:105FA000882780F921E0822780FB91F913C0909126 -:105FB000CE0192FB882780F921E0822780FB92F9AD -:105FC00009C09091CE0193FB882780F921E08227B8 -:105FD00080FB93F99093CE01882329F191609093EF -:105FE000CE0108950E94592380910D0191E08927E7 -:105FF00080930D0118C061E070E080E090E00FC078 -:1060000023EE01C027EC280F61E070E080E090E013 -:1060100004C0660F771F881F991F2A95D2F70E9428 -:1060200055270E94592381E0089580E0089580E07B -:106030000895CF93C82F8091DE01813079F018F058 -:106040008230D1F184C0A0910E01B0910F018C91EA -:10605000813169F0823209F07CC009C0A0910E0143 -:10606000B0910F018C91813111F0823249F48C2F63 -:106070000E94153081111DC08C2F0E94572F1AC00D -:106080008C2F0E941730811114C0C43179F048F46C -:10609000CB3079F0C03109F060C082E08093DE013E -:1060A00008C0C93219F0C83321F057C01092DE0180 -:1060B00054C081E0817053C0C93289F118F5C431F0 -:1060C00071F1A8F4C73009F046C08AE08093150149 -:1060D00094E19093140193E0909313018093120143 -:1060E00088E08093110188E28093100134C0CE5182 -:1060F000C63088F5EC2FF0E0E65DFE4F808180939E -:10610000DD0129C0CE34E9F020F4CB3421F56AE07A -:1061100013C0C13579F0C235F1F461E00DC0809152 -:10612000DD01882319F01092DD0115C081E0809314 -:10613000DE0115C061E006C08091DD010E94912E54 -:106140000AC06AE08091DD010E94072F04C010920E -:10615000DE0180E004C081E002C080E0ABCFCF91DF -:106160000895E1E8F0E0808188608083808181602B -:1061700080838FB7F89493E09093890090ED90938B -:1061800088008FBF0895EFE6F0E080818260808311 -:106190000895EFE6F0E080818D7F80830895EFE63B -:1061A000F0E0808192E08927808308951F920F920A -:1061B0000FB60F9211242F933F934F935F936F93DA -:1061C0007F938F939F93AF93BF93EF93FF938091B0 -:1061D000DF019091E00101969093E0018093DF014F -:1061E000811103C082E00E94FD16E091E001E69576 -:1061F000E695F0E0E65CF04EE4918091DF018E13CD -:1062000003C080E00E94FD16FF91EF91BF91AF9116 -:106210009F918F917F916F915F914F913F912F91BE -:106220000F900FBE0F901F90189504D06894B11175 -:106230008DC0089570D088F09F5790F0B92F99279E -:10624000B751A0F0D1F0660F771F881F991F1AF081 -:10625000BA95C9F712C0B13081F077D0B1E0089596 -:1062600074C0672F782F8827B85F39F0B93FCCF317 -:10627000869577956795B395D9F73EF49095809577 -:10628000709561957F4F8F4F9F4F0895E89409C097 -:1062900097FB3EF490958095709561957F4F8F4F59 -:1062A0009F4F9923A9F0F92F96E9BB279395F6956F -:1062B000879577956795B795F111F8CFFAF4BB0FED -:1062C00011F460FF1BC06F5F7F4F8F4F9F4F16C051 -:1062D000882311F096E911C0772321F09EE8872FDB -:1062E000762F05C0662371F096E8862F70E060E097 -:1062F0002AF09A95660F771F881FDAF7880F969510 -:10630000879597F9089557FD9058440F551F59F0F8 -:106310005F3F71F04795880F97FB991F61F09F3F92 -:1063200079F087950895121613061406551FF2CFBB -:106330004695F1DF08C0161617061806991FF1CF0B -:1063400086957105610508940895E894BB27662732 -:106350007727CB0197F908950BD078C069D028F042 -:106360006ED018F0952309F05AC05FC01124EECF0B -:10637000CADFA0F3959FD1F3950F50E0551F629FA0 -:10638000F001729FBB27F00DB11D639FAA27F00D8E -:10639000B11DAA1F649F6627B00DA11D661F829FB5 -:1063A0002227B00DA11D621F739FB00DA11D621F9A -:1063B000839FA00D611D221F749F3327A00D611DB7 -:1063C000231F849F600D211D822F762F6A2F112499 -:1063D0009F5750408AF0E1F088234AF0EE0FFF1FEC -:1063E000BB1F661F771F881F91505040A9F79E3F23 -:1063F000510570F014C0AACF5F3FECF3983EDCF378 -:10640000869577956795B795F795E7959F5FC1F75F -:10641000FE2B880F911D9695879597F9089597F90A -:106420009F6780E870E060E008959FEF80EC08953A -:1064300000240A9416161706180609060895002463 -:106440000A9412161306140605060895092E0394DD -:10645000000C11F4882352F0BB0F40F4BF2B11F451 -:1064600060FF04C06F5F7F4F8F4F9F4F089597FB72 -:10647000072E16F4009407D077FD09D00E94513200 -:1064800007FC05D03EF4909581959F4F0895709537 -:1064900061957F4F0895EE0FFF1F0590F491E02D59 -:1064A0000994AA1BBB1B51E107C0AA1FBB1FA6175B -:1064B000B70710F0A61BB70B881F991F5A95A9F7AD -:1064C00080959095BC01CD010895F999FECF92BDBC -:1064D00081BDF89A992780B50895A8E1B0E042E01F -:1064E00050E00C948832262FF999FECF1FBA92BD46 -:1064F00081BD20BD0FB6F894FA9AF99A0FBE0196A5 -:1065000008950E947332272F0C947432DC01CB0162 -:10651000FC01F999FECF06C0F2BDE1BDF89A3196B3 -:1065200000B40D9241505040B8F70895F894FFCF51 -:106530002002FF168C176917351702170101BC01DD -:1065400028080A03140A3F4D3639FB1EAE1E781E7A -:106550003F1ED21DEB1D041E1D1E01020304050675 -:04656000070809001F +:100000000C9412040C9456040C9456040C9456044C +:100010000C9456040C9456040C9456040C945604F8 +:100020000C9456040C9456040C944F0F0C9421100D +:100030000C9456040C9456040C9456040C945604D8 +:100040000C9456040C94D6240C9456040C94560428 +:100050000C9456040C94751E0C9456040C9456047F +:100060000C9456040C9456040C9456040C945604A8 +:100070000C9456040C9456040C9456040C94560498 +:100080000C9456040C9456040C9456040C94560488 +:100090000C9456040C9456040C9456040C94560478 +:1000A0000C9456040C9456040C945604A305700545 +:1000B0005B05B505DC050F06F105F7050C063A06EC +:1000C0002F06FA0532064605EB0523062C066D05BC +:1000D0006405B205A905910567052605BE05140648 +:1000E0001D0629069705C705A60540051A06E5055C +:1000F00088059D0594057C0520068B053105E805DE +:100100008205C1052005AC055E054C057605730525 +:10011000CA059A05060637058505AF052305B80506 +:1001200003060906D3055505EE0543056A054F0587 +:10013000C405F40535062905A005BB05FD05CD055B +:1001400052052606E2053D058E055805D9056105CF +:1001500000063A05D005DF052C0549053F061706C0 +:1001600079053405D6057F0514058610A81093116E +:10017000A8109311EA100D119311621175116E14EC +:100180006E149C149C14DE141A151A171A173215C3 +:100190001A1729162916F4161A171A1708170552CE +:1001A000045201520352010000001E001B001800FF +:1001B0002F00010029001F0013000C003300E30092 +:1001C000E1002000090004003400E2002A002100C0 +:1001D0001A0008000600E000650022000A00120074 +:1001E0001900000049002E004A0000004D000000E8 +:1001F00002542E02025400002B0000005E30230047 +:100200000B001600050000004C0024000D0011003A +:100210001000E4004B0025000E0015003600E6003B +:100220002C0026000F001700370050002800270080 +:1002300014000700520051004E0035001C002D0034 +:100240001D004F000000010001000100010001003D +:1002500000001E02300238020100010001001F02EE +:10026000641438003000010001002002240223023F +:1002700027020100010001002414251401000100DF +:1002800001000100271426140100000001000100F4 +:100290000100000001000000010001000100000059 +:1002A0000100000001000100310021022D140000B6 +:1002B000010001006400250222020100010001008A +:1002C0006402260236020100010001000100301420 +:1002D00037023830010035021F023102553002303A +:1002E0000100010001002D0201003D30000001006D +:1002F000010001000100010000003A0001000100BE +:100300000100010001003B000100010001000100AB +:1003100001003C00010001000100010001003D005E +:10032000010001000100010001003E000100010088 +:100330000100000001004400010000000100000075 +:1003400001004500010000005300000001003F00D3 +:100350000100010001000000010040005F005C009E +:10036000590062000100410060005D005A008500F4 +:100370000100420061005E005B0063000100430079 +:100380005500560057005800010067005400560001 +:1003900057005800000001000100010001000100A9 +:1003A00000004D30393001005B3001000100513058 +:1003B00058303C303B300100010050300130141403 +:1003C0005D30010001004A30593008145C300100F2 +:1003D0000100493057300430003000000100053082 +:1003E0000100000001000000010001000100000008 +:1003F0000100000001004F305A3037301E0200006B +:1004000001004E3001004B30010001000100483076 +:10041000563054305330010001004C30010003309D +:100420003A300100010052300100010001000100DA +:1004300001000100010001000100010000000100B5 +:100440000100010001000100000042302030343082 +:1004500001000100010046302E302630333001000B +:10046000010045302D301E300100010001004030F8 +:100470002B3022300100010001003F3025302C30AC +:100480000100000001000100010000000100000067 +:1004900001000100010000000100000001004430E3 +:1004A000233031301F3000000100433035302A3016 +:1004B0002930010001003E302730303001000100BA +:1004C0000100413028303230010001000100473086 +:1004D000010021300100010001000100363024300C +:1004E0002F300100000001000100010001000100A7 +:1004F0000000010008301B30010001000100010074 +:1005000015300D301A3001000100010014300630A2 +:10051000010001000100010012300A300100010059 +:10052000010001000C301330010000000100010047 +:1005300001000000010000000100010001000000B6 +:1005400001000000010001000B30183007300000EE +:10055000010001001C3011301030010001000100C9 +:100560000E30173001000100010001000F3019307A +:10057000010001000100010001000930010001003B +:10058000010001001D3001001630010000000100D3 +:100590000100010001000100000001000100010054 +:1005A0000100010001000100010001000100010043 +:1005B0000100010001000100010001000100010033 +:1005C0000100010001000100010001000100010023 +:1005D0000100000001000100010000000100000016 +:1005E0000100010001000000010000000100010005 +:1005F00001000100010000000100010001000100F4 +:1006000001000100010001000100010001000100E2 +:1006100001000100010001000100010001000100D2 +:1006200001000100010001000100010001000100C2 +:1006300001000100000016034500720067006F0012 +:1006400044006F007800200045005A0000001603A7 +:100650004500720067006F0044006F0078002000C2 +:1006600045005A0000000403090409026D0004015A +:1006700000A0FA0904000001030101000921110191 +:100680000001223F000705810308000A0904010058 +:100690000103010200092111010001224D0007059B +:1006A000820308000A090402000103000000092176 +:1006B000110100012236000705830308000A09041E +:1006C000030001030000000921110100012239008B +:1006D000070584031000011201100100000008ED5D +:1006E000FE071301000102000105010906A1010531 +:1006F0000719E029E7150025019508750181020514 +:100700000819012905950575019102950175039157 +:1007100001050719002977150025019578750181D4 +:1007200002C005010980A101850216010026B7005B +:100730001A01002AB700751095018100C0050C0947 +:1007400001A1018503160100269C021A01002A9CC2 +:1007500002751095018100C005010902A10109017E +:10076000A100050919012905150025019505750147 +:100770008102950175038101050109300931158157 +:10078000257F95027508810609381581257F950119 +:1007900075088106050C0A38021581257F950175BB +:1007A000088106C0C005010906A101050719E02955 +:1007B000E7150025019508750181029501750881ED +:1007C0000105081901290595057501910295017525 +:1007D0000391010507190029FF150025FF950675EE +:1007E000088100C0000000000000000000000001BF +:1007F0000204060A0F17202C3A4A5D71879DB3C781 +:10080000DAE9F5FCFFFCF5E9DAC7B39D87715D4ACB +:100810003A2C20170F0A0604020100000000000015 +:100820000000000011241FBECFEFDAE0DEBFCDBF15 +:1008300004B603FE24C08091F1019091F201A091D1 +:10084000F301B091F4018730904BA740B04BB9F45D +:100850001092F1011092F2011092F3011092F40142 +:1008600014BE84B7877F84BF88E10FB6F894809365 +:100870006000109260000FBEE0E0FFE3099511E018 +:10088000A0E0B1E0E0E3FDE402C005900D92A433E6 +:10089000B107D9F711E0A4E3B1E001C01D92A13F77 +:1008A000B107E1F70E94950C0C9496260C94000079 +:1008B000282F882341F090E02A3018F4885A9F4F5F +:1008C00008950697089582E690E008950F931F9388 +:1008D000CF93DF938C01EB0180913401909135012E +:1008E000009709F448C0019709F089C080EE0E9482 +:1008F000F71281EE0E94F71288E10E94F71288E158 +:100900000E94BF13C801807F992724E096958795A0 +:100910002A95E1F70E945804182F0E94F712812FA0 +:100920000E94BF13802F8F700E945804182F0E94BE +:10093000F712812F0E94BF13CE01807F992734E0E8 +:10094000969587953A95E1F70E945804D82F0E9412 +:10095000F7128D2F0E94BF138C2F8F700E945804A6 +:10096000C82F0E94F7128C2F0E94BF1380EE0E94A6 +:10097000BF1381EE3EC082EE0E94F71287E50E940F +:10098000F71287E50E94BF13C801807F992744E0D2 +:10099000969587954A95E1F70E945804182F0E9472 +:1009A000F712812F0E94BF13802F8F700E9458046E +:1009B000182F0E94F712812F0E94BF13CE01807F53 +:1009C000992754E0969587955A95E1F70E94580427 +:1009D000D82F0E94F7128D2F0E94BF138C2F8F707B +:1009E0000E945804C82F0E94F7128C2F0E94BF1338 +:1009F00082EEDF91CF911F910F910C94BF13DF9185 +:100A0000CF911F910F910895FC018281882309F4F1 +:100A10003CC1862F90E08F35910508F036C1FC016E +:100A2000EA5AFF4F0C944B26809134019091350186 +:100A3000019681709927909335018093340125C1E7 +:100A40006FEB70E019C160E970E008C061EA70E026 +:100A500013C163E870E00BC16BE570E081E290E0E8 +:100A600012C16BEB70E008C163E570E0F7CF6EEB8D +:100A700070E002C164E070E0D4C069EB70E001C1D5 +:100A800062EB70E0F9C065E870E0F1C069E970E020 +:100A9000F3C065E570E0E2CF68EC70E0EDC069E8B6 +:100AA00070E0E5C064E770E0E2C062E970E0D6CFD4 +:100AB00066E770E0DCC063E970E0D0CF60EC70E026 +:100AC000DBC062EB70E0DDC069EA70E0D5C068EAC7 +:100AD00070E0D2C064E870E0CAC06DE970E0CCC0DC +:100AE00067EF70E0CEC063EC70E0C6C061EC70E010 +:100AF000C3C069E570E0B2CF63EB70E0BDC064E5F0 +:100B000070E0ACCF6DEB70E0B7C066EB70E0B4C0E6 +:100B100065EB70E0B1C06AEB70E0AEC067E770E013 +:100B2000A6C060EA70E0A8C062EC70E0A5C06EE903 +:100B300070E0A2C068EB70E09FC067EB70E09CC003 +:100B400062E870E094C063E470E06BC061EB70E059 +:100B500093C066EA70E090C066EC70E08DC06EE114 +:100B600070E05FC06FE970E087C068E070E059C076 +:100B700067ED70E086C060E870E079C063EA70E01D +:100B80007BC069EC70E078C061E870E070C066E935 +:100B900070E072C064EC70E06FC065E770E067C041 +:100BA00063E070E03EC061EB70E06BC06EEB70E044 +:100BB00068C063EB70E065C065E070E032C061E979 +:100BC00070E04CCF69E770E052C064EB70E054C055 +:100BD0006CEB70E051C06AE970E04EC068E870E00C +:100BE00046C061E970E048C067E870E040C062E973 +:100BF00070E042C067E970E03FC068E770E037C06E +:100C000060E770E034C069E070E00BC065EC70E054 +:100C100033C060E670E005C067EA70E02DC060E0B8 +:100C200070E082E290E02FC064EA70E025C06CEBD7 +:100C300070E027C067EC70E01FC068E970E01CC07E +:100C400069EB70E019C06BE970E016C06FE770E007 +:100C50000EC065EA70E010C06CE970E00DC065E997 +:100C600070E00AC063E970E007C066E870E080E207 +:100C700090E009C064E970E083E090E004C06DEBAF +:100C800070E080E090E00E94660480E090E00895CB +:100C900008956091B3017091B4018091B501909174 +:100CA000B6010E94A11D56985E9825982D98269809 +:100CB0002E9827982F988330A9F028F4813051F08E +:100CC000823069F012C0843041F0853071F4259A89 +:100CD0002D9A08C0259A2D9A0895259A2D9A269A1C +:100CE0002E9A0895279A2F9A089556985E980895F7 +:100CF0000C94490656985E9825982D9826982E981B +:100D000027982F988FEF90E0909389008093880028 +:100D100090938B0080938A0090938D0080938C0039 +:100D2000259A2D9A2FEF80E792E021508040904045 +:100D3000E1F700C00000269A2E9A2FEF80E792E09C +:100D4000215080409040E1F700C00000279A2F9A80 +:100D50002FEF80E792E0215080409040E1F700C003 +:100D6000000025982D982FEF80E792E021508040D9 +:100D70009040E1F700C0000026982E982FEF80E702 +:100D800092E0215080409040E1F700C00000279899 +:100D90002F9856985E9825982D9826982E982798E3 +:100DA0002F98089589EA8093800089E080938100DC +:100DB00024982C983F988AB18F748AB96E98479A74 +:100DC0008BB1806B8BB9769A0E947A060C94480698 +:100DD00080E2809300018091360181110EC00E9453 +:100DE000370781E0809336012FEF83ED90E32150A8 +:100DF00080409040E1F700C0000080E40E943D0781 +:100E00008093000181112EC00E946707809300012A +:100E1000811128C00E94670780930001811122C0C0 +:100E20008FE30E9467078093000181111BC00E941D +:100E30005F0780E40E943D0780930001811112C08A +:100E40008CE00E9467078093000181110BC00E9413 +:100E5000670780930001811105C08FE30E94670737 +:100E6000809300010E945F07809100010895109215 +:100E7000B9008AE08093B800089594EA9093BC008A +:100E80009091BC0097FFFCCF9091B900987F98306B +:100E900021F0903111F081E008958093BB0084E847 +:100EA0008093BC008091BC0087FFFCCF8091B9008B +:100EB000887F883111F0803471F780E0089584E9EB +:100EC0008093BC008091BC0084FDFCCF089580938A +:100ED000BB0084E88093BC008091BC0087FFFCCFFE +:100EE0009091B900987F81E0983209F480E00895EC +:100EF00084E88093BC008091BC0087FFFCCF809188 +:100F0000BB00089580910001811115C080E40E940A +:100F10003D078093000181110CC082E10E946707A8 +:100F200080930001811105C08FEF0E9467078093B5 +:100F300000010E945F0784B1807F84B985B1807F02 +:100F400085B98AB1837F8AB98BB1837F8BB93E988B +:100F5000469808950E94E806809300010E94820747 +:100F600080B38C7080BB81B3836F81BBE6E4F1E01A +:100F7000A8E3B1E011921D9281E0E435F807D1F7C2 +:100F80000C94D206BF92CF92DF92EF92FF920F9312 +:100F90001F93CF93DF9380910001882379F0809194 +:100FA00037018F5F80933701811108C00E94E806E6 +:100FB00080930001811102C00E947A0608E311E0CB +:100FC000C0E0D0E0DD24D39482E0C82EEE24E39488 +:100FD000F12CC73000F580910001811162C080E4DE +:100FE0000E943D0780930001811112C082E10E949E +:100FF00067078093000181110BC0C7010C2E01C04F +:10100000880F0A94EAF780950E9467078093000191 +:101010000E945F0746C0CA30A1F028F4C83059F0DA +:10102000C93061F005C0CC3089F070F0CD3089F066 +:10103000209A289810C0219A29980DC0229A2A989F +:101040000AC0239A2B9807C0529A01C0539A5B9802 +:1010500002C03E9A4698E0EAEA95F1F78FB1799995 +:101060005AC092E081708D25892B7C9B02C090E054 +:1010700001C094E0892B7D9B02C090E001C098E004 +:10108000892B7E9B02C090E001C090E1892B9FB12B +:101090009095991F9927991F9295990F907E892B6A +:1010A0000FC08091000181114BC080E40E943D0778 +:1010B00080930001882389F1B12C0E945F078B2D5A +:1010C000F8019081981719F08083C09201010E9465 +:1010D000820721960F5F1F4FCE30D10509F079CFDF +:1010E00080910101882371F181508093010188234F +:1010F00039F08FE99FE00197F1F700C0000022C0AE +:10110000A6E4B1E0E8E3F1E081918D9391E0E6346B +:10111000F907D1F717C090E0A5CF83E10E946707D8 +:10112000809300018111C8CF81E40E943D07809324 +:1011300000018111C1CF0E947807B82EB094BDCFB5 +:1011400080E0BECF0E94780681E0DF91CF911F91B1 +:101150000F91FF90EF90DF90CF90BF900895E82F10 +:10116000F0E0EA5BFE4F8081089508958B3B910586 +:1011700078F4883A910540F5853A9105D0F48430A9 +:10118000910508F0B1C08130910509F4ADC06BC084 +:10119000803E910508F467C0883E910508F4A4C01C +:1011A0009C01205F31092031310508F05CC0906559 +:1011B0000895853A910509F459C0863A910509F4D4 +:1011C00058C083E890E40895883A910509F454C022 +:1011D000893A910509F453C08A3A910509F452C03D +:1011E0008B3A910509F451C08C3A910509F450C02D +:1011F0008D3A910509F44FC0803B910509F44EC02A +:101200008E3A910509F44DC08F3A910509F44CC00E +:10121000813B910509F44BC0823B910509F44AC01A +:10122000833B910509F449C0843B910509F448C00A +:10123000853B910509F447C0863B910509F446C0FA +:10124000873B910509F445C0883B910509F444C0EA +:10125000893B910509F443C08A3B910509F042C0DE +:101260008AE296E4089580E090E0089581E890E4B1 +:10127000089582E890E4089582EE94E4089589EE5A +:1012800094E408958AEE94E4089585EB94E4089537 +:1012900086EB94E4089587EB94E408958CEC94E451 +:1012A00008958DEC94E4089583E895E408958AE820 +:1012B00095E4089582E995E4089584E995E4089514 +:1012C00081E296E4089583E296E4089584E296E448 +:1012D000089585E296E4089586E296E4089587E20B +:1012E00096E4089580E094E40895089596E0799F47 +:1012F000F001112494E5899FE00DF11D1124E60F02 +:10130000F11DEE0FFF1FE256FE4F85919491089557 +:10131000880F991F825E9F4FFC01859194910895DB +:10132000880F991F82569E4FFC01859194910895D4 +:1013300026E0729FF001112444E5849FE00DF11D29 +:101340001124E60FF11DEE0FFF1FE256FE4F25910F +:101350003491C9019A9581159F4110F4C9010895EE +:10136000C90190528115904128F4C9019F700E94D3 +:1013700090090895C90190538115904120F4C90145 +:101380009927906C0895211580E5380769F40E942B +:101390003D179FEF24E34CE0915020404040E1F79F +:1013A00000C000000C949A1E213080E5380731F40B +:1013B0008091CF0181608093CF010895C90190553C +:1013C0008115904108F050C0832F99278F7099277D +:1013D00081309105D9F4A9014370552702C0880FC7 +:1013E000991F4A95E2F79C68A90164E0440F551FD4 +:1013F0006A95E1F744275370842B952B73E0220FF5 +:10140000331F7A95E1F7207633271DC0823091058E +:1014100029F4922F8827816F906A0895833091056F +:10142000A9F4A9014370552781E090E002C0880F1C +:10143000991F4A95E2F79C6843E0220F331F4A95B3 +:10144000E1F7207E3770822B932B08950497F1F4F7 +:10145000A9014370552781E090E002C0880F991FD1 +:101460004A95E2F79A68E8CFC901905781159041F3 +:1014700020F4C9019F7090620895C90190588115A8 +:10148000904120F4C9019F70906A0895203E310573 +:10149000E0F4203C310558F52133310509F470C0E2 +:1014A00048F42932310509F464C02A32310509F4BF +:1014B0006EC074C029333105F1F022383105D9F0FE +:1014C0002533310509F44EC069C0233E310589F149 +:1014D00038F4203E3105C1F0223E3105E1F05EC016 +:1014E000263E310569F1273E3105A9F157C0C901F2 +:1014F0000E94880908958091E20180FD02C081FF69 +:101500004DC080EE90E04BC08091E20180FFF9CFAA +:1015100089E390E044C08091E20182FF0EC0809197 +:10152000E20184FF03C080E090E039C083EE90E0E8 +:1015300036C08091E20182FFF2CF82EE90E02FC0B0 +:101540008091E20183FF0BC08091E20184FDEBCF2B +:1015500087EE90E024C08091E20183FFF5CF86EE14 +:1015600090E01DC08091E20185FF07C089E290E014 +:1015700016C08091E20185FFF9CF85E390E00FC0AE +:101580008091E20186FF07C08AE290E008C0809166 +:10159000E20186FFF9CF81E390E001C0C9010E941A +:1015A000B608089508950C94D20A809164010895B4 +:1015B000CF93DF9300D01F92CDB7DEB72091E80123 +:1015C000243019F523E029839B838A832093E90043 +:1015D0008FEF9091E800815095FD06C095ED9A95AA +:1015E000F1F700008111F5CF8091E80085FF0DC073 +:1015F00040E050E063E070E0CE0101960E94420DB1 +:101600008091E8008E778093E8000F900F900F9004 +:10161000DF91CF910895CF93DF9300D01F92CDB784 +:10162000DEB72091E801243021F522E029839B8355 +:101630008A8383E08093E9008FEF9091E8008150E6 +:1016400095FD06C095ED9A95F1F700008111F5CF53 +:101650008091E80085FF0DC040E050E063E070E05D +:10166000CE0101960E94420D8091E8008E77809312 +:10167000E8000F900F900F90DF91CF910895209187 +:10168000E8012430F1F422E02093E9002FEF3091BB +:10169000E800215035FD06C035ED3A95F1F7000020 +:1016A0002111F5CF2091E80025FF0BC040E050E06C +:1016B00065E070E00E94420D8091E8008E77809393 +:1016C000E8000895CF93DF93EC018091E801843026 +:1016D00009F046C090910C019923D9F090910D0129 +:1016E0009923B9F08093E9008FEF9091E800815041 +:1016F00095FD06C095E19A95F1F700008111F5CFAF +:101700008091E80085FF2CC040E050E060E170E08F +:1017100017C081E08093E9008FEF9091E80081503D +:1017200095FD06C095ED9A95F1F700008111F5CF72 +:101730008091E80085FF14C040E050E068E070E070 +:10174000CE010E94420D8091E8008E778093E800E0 +:1017500080E1FE01A4E5B1E001900D928A95E1F7E8 +:10176000DF91CF9108958091E701811109C00E9416 +:10177000D40E0E94310F8091E20084608093E200D9 +:1017800008951092E701089508950C94C3240E94CF +:10179000311E0E94C9240E94CE110C94D30A42E04B +:1017A00061EC81E00E944E0E42E061EC82E00E941A +:1017B0004E0E42E061EC83E00E944E0E42E161EC8D +:1017C00084E00C944E0E8091EA01833009F455C0F8 +:1017D00030F4813071F0823009F48EC008958A307F +:1017E00009F47AC08B3009F460C0893009F09CC0DC +:1017F00020C08091E901813A09F096C08091E8000B +:10180000877F8093E8008091ED019091EE01892B14 +:1018100021F060E080E090E003C060E184E591E0C9 +:1018200070E00E948B0D8091E8008B778093E80038 +:1018300008958091E901813209F076C08091ED012F +:101840009091EE01009719F0039709F06DC0809117 +:10185000E800877F8093E8008091E80082FD05C062 +:101860008091E8018111F8CF5FC08091F1008093F1 +:1018700064018091E8008B7753C08091E901813A3F +:1018800009F052C08091ED019091EE01892B09F091 +:101890004BC08091E800877F8093E8008091E8004A +:1018A00080FFFCCF80910C0136C08091E90181322C +:1018B000D9F58091ED019091EE01892BA9F58091E8 +:1018C000E800877F8093E8000E94830E8091EB01FF +:1018D00080930C010C943D178091E901813221F530 +:1018E0008091E800877F8093E8000E94830E8091BA +:1018F000EC018093650108958091E901813AA1F49A +:101900008091E800877F8093E8008091E80080FF65 +:10191000FCCF809165018093F1008091E8008E7783 +:101920008093E8000C94830E089584B7877F84BF6A +:1019300088E10FB6F89480936000109260000FBEAB +:1019400090E080E80FB6F894809361009093610076 +:101950000FBE0E941D120E94D40E0E94310F809172 +:10196000E20084608093E20078940E94AC110E94AF +:101970001F1282E091E00E94C9110E94B12480915F +:10198000E801853069F40E94F41D8091E601882306 +:10199000B1F30E941C1E882391F30E942C0DEFCFFF +:1019A0000E942512ECCF292F332723303105A9F0CF +:1019B0006CF42130310509F442C02230310509F0C0 +:1019C00043C08DE690E02AE636E042C02132310580 +:1019D000C9F02232310519F137C0992781309105BC +:1019E00041F08230910541F0892B71F5E6E6F6E091 +:1019F00005C0EEE4F6E002C0E6E3F6E0849190E094 +:101A00009F0126C0643000F5E62FF0E0EE0FFF1FC7 +:101A1000EE5DFE4F2081318189E090E019C0643095 +:101A200098F4E62FF0E0DF01AA0FBB1FA65EBE4FC1 +:101A30002D913C91EA5EFE4F808190E009C082E1E9 +:101A400090E027ED36E004C080E090E020E030E058 +:101A5000FA0131832083089580E189BD82E189BD47 +:101A600009B400FEFDCF8091D8008F7D8093D8000F +:101A70008091E00082608093E0008091E00081FD31 +:101A8000FCCF0895CF92DF92EF92FF920F931F93B6 +:101A9000CF93DF937C018B01EA010E94A40E811198 +:101AA00031C0209731F088819981081B190BE80E0D +:101AB000F91EC12CD12C0115110519F18091E800F6 +:101AC00085FD14C08091E8008E778093E800209710 +:101AD00041F0888199818C0D9D1D9983888385E0D3 +:101AE00011C00E94A40E882331F30CC0F70181912C +:101AF0007F018093F10001501109FFEFCF1ADF0A37 +:101B0000DACF80E0DF91CF911F910F91FF90EF909E +:101B1000DF90CF9008952091EF013091F0012617CA +:101B2000370748F06115710539F42091E8002E77E8 +:101B30002093E80001C0B901FC0120E061157105A6 +:101B4000B9F18091E801882309F440C0853009F497 +:101B50003FC08091E80083FD3DC08091E80082FF96 +:101B600006C08091E80082FF26C080E00895809141 +:101B7000E80080FFE3CF2091F3008091F20090E035 +:101B8000922B6115710551F08830910538F421913F +:101B90002093F100615071090196F3CF21E008977D +:101BA00009F020E08091E8008E778093E800C6CFAE +:101BB0002111C7CFD6CF8091E801882339F0853035 +:101BC00039F08091E80083FFCCCF04C082E0089513 +:101BD00083E0089581E008952091EF013091F001B4 +:101BE0002617370748F06115710539F42091E80090 +:101BF0002E772093E80001C0B901FC0120E06115B7 +:101C00007105C1F18091E801882309F441C0853054 +:101C100009F440C08091E80083FD3EC08091E80057 +:101C200082FF06C08091E80082FF27C080E008950F +:101C30008091E80080FFE3CF2091F3008091F200D3 +:101C400090E0922B6115710559F08830910540F4B0 +:101C500024912093F1003196615071090196F2CFE1 +:101C600021E0089709F020E08091E8008E778093CA +:101C7000E800C5CF2111C6CFD5CF8091E8018823D8 +:101C800039F0853039F08091E80083FFCBCF04C074 +:101C900082E0089583E0089581E00895982F9730B9 +:101CA00058F59093E900981739F07091EC00209165 +:101CB000ED005091F00003C0242F762F50E021FF5B +:101CC00019C03091EB003E7F3093EB003091ED0076 +:101CD0003D7F3093ED003091EB0031603093EB00AD +:101CE0007093EC002093ED005093F0002091EE00F3 +:101CF00027FF07C09F5FD3CF8F708093E90081E0FB +:101D0000089580E008958091E90187FD05C08091E4 +:101D1000E80080FF0EC012C08091E80082FD05C07F +:101D20008091E8018111F8CF08958091E8008B77C8 +:101D300008C08091E8018111EACF08958091E80000 +:101D40008E778093E80008958091E4009091E500FB +:101D500045E62091EC0020FF21C02091E80020FD05 +:101D600021C02091E801222389F0253089F02091BB +:101D7000EB0025FD0FC02091E4003091E50028170D +:101D8000390739F3415041F0C901E3CF82E00895AA +:101D900083E0089581E0089584E008952091E800AB +:101DA00022FFDFCF80E008950E94420F0E944A0F79 +:101DB000E0EEF0E0808181608083E8EDF0E08081FA +:101DC0008F77808319BCA7EDB0E08C918E7F8C93C8 +:101DD00080818F7E80831092E70108950F931F9377 +:101DE000CF93DF930E94420F0E944A0FC8EDD0E0CC +:101DF00088818F77888388818068888388818F7DB8 +:101E0000888319BC1092E8011092E4011092E60157 +:101E10001092E50100EE10E0F80180818B7F808355 +:101E200088818160888342E060E080E00E944E0EFD +:101E3000E1EEF0E080818E7F8083E2EEF0E0808151 +:101E400081608083808188608083F80180818E7FBB +:101E50008083888180618883DF91CF911F910F916A +:101E60000895E8EDF0E080818F7E8083E7EDF0E07B +:101E700080818160808384E082BF81E08093E7017C +:101E80000C94EE0EE8EDF0E080818E7F808310925E +:101E9000E20008951092DA001092E10008951F9276 +:101EA0000F920FB60F9211242F933F934F935F938E +:101EB0006F937F938F939F93AF93BF93EF93FF9312 +:101EC0008091E10082FF0BC08091E20082FF07C099 +:101ED0008091E1008B7F8093E1000E94AB118091A3 +:101EE000DA0080FF1FC08091D80080FF1BC0809166 +:101EF000DA008E7F8093DA008091D90080FF0DC0D8 +:101F000080E189BD82E189BD09B400FEFDCF81E099 +:101F10008093E8010E94B30B05C019BC1092E80140 +:101F20000E94C10B8091E10080FF19C08091E20006 +:101F300080FF15C08091E2008E7F8093E200809147 +:101F4000E20080618093E2008091D80080628093FB +:101F5000D80019BC85E08093E8010E94C50B8091F0 +:101F6000E10084FF30C08091E20084FF2CC080E15A +:101F700089BD82E189BD09B400FEFDCF8091D80002 +:101F80008F7D8093D8008091E1008F7E8093E10067 +:101F90008091E2008F7E8093E2008091E200816078 +:101FA0008093E2008091E401882311F084E007C06F +:101FB0008091E30087FF02C083E001C081E080934D +:101FC000E8010E94C70B8091E10083FF29C0809146 +:101FD000E20083FF25C08091E100877F8093E100CC +:101FE00082E08093E8011092E4018091E1008E7F0D +:101FF0008093E1008091E2008E7F8093E2008091E7 +:10200000E20080618093E20042E060E080E00E94B4 +:102010004E0E8091F00088608093F0000E94C40B07 +:10202000FF91EF91BF91AF919F918F917F916F91B0 +:102030005F914F913F912F910F900FBE0F901F9086 +:1020400018951F920F920FB60F9211242F933F9362 +:102050004F935F936F937F938F939F93AF93BF93B0 +:10206000CF93EF93FF93C091E900CF708091EC0084 +:102070001092E9008091F000877F8093F0007894BF +:102080000E945D101092E9008091F00088608093BA +:10209000F000C093E900FF91EF91CF91BF91AF9114 +:1020A0009F918F917F916F915F914F913F912F9170 +:1020B0000F900FBE0F901F9018951F93CF93DF9333 +:1020C000CDB7DEB7AA970FB6F894DEBF0FBECDBF6F +:1020D000E9EEF1E08091F100819321E0E13FF20728 +:1020E000C9F70E94E30B8091E80083FF1CC1209197 +:1020F000E9013091EA01832F90E08A30910508F0E0 +:1021000012C1FC01EB54FF4F0C944B26203881F098 +:10211000223809F008C18091ED018F708093E900A9 +:102120008091EB0085FB882780F91092E90006C0BA +:102130008091E5019091E601911182609091E80013 +:10214000977F9093E8008093F1001092F100C5C052 +:10215000822F8D7F09F0E7C0222319F0223061F031 +:10216000E2C08091EB01813009F0DDC0333009F02D +:1021700080E08093E60128C08091EB01811124C0AA +:102180002091ED012F7009F4CEC02093E9008091D9 +:10219000EB0080FF19C08091EB00333011F48062B6 +:1021A00011C080618093EB0081E090E0022E01C0BD +:1021B000880F0A94EAF78093EA001092EA0080916F +:1021C000EB0088608093EB001092E9008091E800BA +:1021D000877F86C02111A7C01091EB011F778091E6 +:1021E000E3008078812B8093E3008091E800877F73 +:1021F0008093E8000E94830E8091E80080FFFCCF6E +:102200008091E30080688093E300112311F083E064 +:1022100001C082E08093E80186C02058223008F097 +:1022200082C08091EB019091EC018C3D23E09207FC +:1022300079F583E08A838AE289834FB7F894DE01D7 +:10224000139620E03EE051E2E32FF0E05093570078 +:10225000E49120FF03C0E295EF703F5FEF708E2F97 +:1022600090E0EA3010F0C79601C0C0968D939D9320 +:102270002F5F243149F74FBF8091E800877F80931B +:10228000E8006AE270E0CE0101960E948B0D14C056 +:10229000AE014F5F5F4F6091ED010E94D30C00973C +:1022A00009F441C02091E800277F2093E800BC0199 +:1022B00089819A810E94EC0D8091E8008B77809350 +:1022C000E80031C0203879F58091E800877F80935D +:1022D000E8008091E4018093F1008091E8008E771E +:1022E0008093E8000E94830E1EC021111CC09091B3 +:1022F000EB019230C0F48091E800877F8093E80082 +:102300009093E4010E94830E8091E401811104C046 +:102310008091E30087FF02C084E001C081E08093E8 +:10232000E8010E94CF0B8091E80083FF0AC08091F2 +:10233000E800877F8093E8008091EB0080628093C3 +:10234000EB00AA960FB6F894DEBF0FBECDBFDF91AB +:10235000CF911F9108950895CF938091E80188232C +:10236000B1F08091E9008F709091EC0090FF02C075 +:1023700090E801C090E0C92FC82B1092E90080912D +:10238000E80083FD0E945D10CF70C093E900CF91FB +:10239000089590936B0180936A010895E0916A011A +:1023A000F0916B01309721F00190F081E02D0994BC +:1023B00080E00895E0916A01F0916B01309721F07F +:1023C0000280F381E02D09940895E0916A01F09173 +:1023D0006B01309721F00480F581E02D0994089578 +:1023E00020916801309169018217930771F09093F1 +:1023F000690180936801E0916A01F0916B01309767 +:1024000021F00680F781E02D09940895209166015E +:10241000309167018217930771F090936701809361 +:102420006601E0916A01F0916B01309721F0008420 +:10243000F185E02D0994089508950C941C120E94D2 +:10244000371E0E94AA070C94FD1ECF92DF92EF92D6 +:10245000FF920F931F93CF93DF93CDB7DEB72B97E8 +:102460000FB6F894DEBF0FBECDBF0E94C2073DE697 +:10247000E32E31E0F32E00E010E0C02E802F0E940A +:10248000AF08F701D1907F01D826B1F40F5F1F4F3D +:102490000E30110591F78FEF89838A831B820E948A +:1024A000401E8160782F9D838C8349815A816B8186 +:1024B0008D810E94C81241C09091CF0191FF04C04C +:1024C0008B870E94B5088B8520E030E04D2D50E0D1 +:1024D000922FBA01022E02C0759567950A94E2F711 +:1024E00060FF25C02E83CF82EE24E394F12C02C03E +:1024F000EE0CFF1C9A95E2F790E08E219F2121E0DF +:10250000892B09F420E028870E94401E8160782FE3 +:102510009A8789874E815F8168858A850E94C81263 +:10252000F801E359FE4F80818E25808306C02F5F1E +:102530003F4F2630310561F6A9CF0E94E12110916D +:102540006C010E94CE111817A1F00E94CE11809349 +:102550006C012B960FB6F894DEBF0FBECDBFDF9196 +:10256000CF911F910F91FF90EF90DF90CF900C943F +:10257000D30A2B960FB6F894DEBF0FBECDBFDF9106 +:10258000CF911F910F91FF90EF90DF90CF90089522 +:10259000CF93DF93CDB7DEB72B970FB6F894DEBF9E +:1025A0000FBECDBF4F83588769877A878B87DE013F +:1025B000119686E0FD0111928A95E9F785E0FE010A +:1025C000379601900D928A95E1F749815A816B8186 +:1025D0007C818D819E810E94091A2B960FB6F894FA +:1025E000DEBF0FBECDBFDF91CF9108950895CF9389 +:1025F000C82F882309F4C1C0823859F40E94CE1133 +:1026000081FDBBC089E30E94A81C0E94721D89E362 +:102610000CC0833879F40E94CE1180FDAEC083E5F2 +:102620000E94A81C0E94721D83E50E94E81CCF91A5 +:102630000C94721D843859F40E94CE1182FD9DC005 +:1026400087E40E94A81C0E94721D87E4EECF8CEFE5 +:102650008C0F813A48F48C2F0E94192481118DC06F +:102660008C2F0E94A81CE3CF80E28C0F883048F4A6 +:10267000C77081E001C0880FCA95EAF70E94291D42 +:10268000D6CF8BE58C0F833078F4C53A29F0C63A63 +:1026900031F482E890E005C081E890E002C083E870 +:1026A00090E0CF910C94F01188E58C0F833108F005 +:1026B00064C0C83A39F1C93A41F1CA3A49F1CB3A52 +:1026C00051F1CC3A59F1CD3A61F1C03B69F1CE3AC2 +:1026D00071F1CF3A79F1C13B81F1C23B89F1C33B42 +:1026E00091F1C43B99F1C53BA1F1C63BA9F1C73BB0 +:1026F000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2A6 +:1027000092E038C082EE90E035C089EE90E032C0B1 +:102710008AEE90E02FC085EB90E02CC086EB90E035 +:1027200029C087EB90E026C08CEC90E023C08DECB4 +:1027300090E020C083E891E01DC08AE891E01AC0D3 +:1027400082E991E017C084E991E014C081E292E04F +:1027500011C083E292E00EC084E292E00BC085E2F9 +:1027600092E008C086E292E005C087E292E002C0F3 +:1027700080E090E0CF910C940612CF9108958823C9 +:1027800009F44BC0823859F40E94CE1181FF45C034 +:1027900089E30E94A81C0E94721D89E30CC0833843 +:1027A00071F40E94CE1180FF38C083E50E94A81CFE +:1027B0000E94721D83E50E94E81C0C94721D8438EF +:1027C00059F40E94CE1182FF28C087E40E94A81C01 +:1027D0000E94721D87E4EFCF9CEF980F913A58F357 +:1027E00090E2980F983050F4877091E001C0990FF3 +:1027F0008A95EAF7892F0E942F1DDFCF9BE5980F5E +:10280000933020F480E090E00C94F011885A8331EA +:1028100020F480E090E00C9406120895882321F0C3 +:102820000E94291D0C94721D0895882321F00E9496 +:102830002F1D0C94721D0895CF92DF92EF92FF929C +:102840000F931F93CF93DF93CDB7DEB728970FB6C3 +:10285000F894DEBF0FBECDBF8C0185E0F801DE012C +:10286000119601900D928A95E1F7F801D080E180F0 +:10287000F280258122952F7083819481892B39F0F4 +:10288000FFEFEF1206C081E0DF1203C003C081E05A +:1028900001C080E080FDCEC2C8012F830E94F612E5 +:1028A000D982EA8289819A810E94661C9E838887E8 +:1028B0000E94651C0E94381B2F814E816885FF2075 +:1028C00029F00E94461D68854E812F81E42FE295F4 +:1028D000EF70F0E0E154FF4F0C944B26842F807F83 +:1028E000142F1F70882311F01295107FFF2059F0CC +:1028F000112309F454C2812F68870E94391D0E9458 +:10290000721D68854CC2862F0E94BF13112309F4E3 +:1029100091C2812F0E943F1D28960FB6F894DEBF0A +:102920000FBECDBFDF91CF911F910F91FF90EF9020 +:10293000DF90CF900C94721D342F307F842F8F70D6 +:10294000303211F08295807F662319F0613019F1E1 +:102950002BC0FF20B1F0222309F493C1213009F0EC +:1029600090C128960FB6F894DEBF0FBECDBFDF91A1 +:10297000CF911F910F91FF90EF90DF90CF900C942B +:10298000591D222319F0213009F454C28E830E946C +:102990005C1D8E8189C1FF2021F0223008F04AC2DF +:1029A00070C1211147C280C1FF2021F0222309F408 +:1029B00068C1F5C1222309F477C105C2242F2695E9 +:1029C0002695237030E02115310521F021303105A5 +:1029D000C9F030C2FF2021F0862F942F937002C0DF +:1029E00080E090E028960FB6F894DEBF0FBECDBF12 +:1029F000DF91CF911F910F91FF90EF90DF90CF90DB +:102A00000C94F011FF2021F0862F942F937002C0B8 +:102A100080E090E028960FB6F894DEBF0FBECDBFE1 +:102A2000DF91CF911F910F91FF90EF90DF90CF90AA +:102A30000C940612862FFF2019F00E94E92002C094 +:102A40000E94512128960FB6F894DEBF0FBECDBF6D +:102A5000DF91CF911F910F91FF90EF90DF90CF907A +:102A60000C94D621842F837009F076C0F110E2C156 +:102A7000262F229526952770220F220F862F8F70E2 +:102A8000C82ED12CE12CF12C022E04C0CC0CDD1C64 +:102A9000EE1CFF1C0A94D2F764FF10C06FE070E0D8 +:102AA00080E090E004C0660F771F881F991F2A9569 +:102AB000D2F7609570958095909503C060E070E0C6 +:102AC000CB01242F269526952370422F50E04230CB +:102AD0005105D1F04330510559F16C297D298E29DA +:102AE0009F294130510541F128960FB6F894DEBF79 +:102AF0000FBECDBFDF91CF911F910F91FF90EF904F +:102B0000DF90CF900C945D1B6C297D298E299F2925 +:102B100028960FB6F894DEBF0FBECDBFDF91CF91E0 +:102B20001F910F91FF90EF90DF90CF900C94771B47 +:102B30000E945D1BC701B60128960FB6F894DEBF50 +:102B40000FBECDBFDF91CF911F910F91FF90EF90FE +:102B5000DF90CF900C94431BFF2019F0842F8170DD +:102B600001C08695882309F465C1262F22952695F4 +:102B70002770220F220F862F8F70C82ED12CE12CA8 +:102B8000F12C022E04C0CC0CDD1CEE1CFF1C0A94A0 +:102B9000D2F764FF10C06FE070E080E090E004C006 +:102BA000660F771F881F991F2A95D2F76095709539 +:102BB0008095909503C060E070E0CB01242F2695AE +:102BC00026952370422F50E042305105D1F043301A +:102BD000510559F16C297D298E299F2941305105D4 +:102BE00041F128960FB6F894DEBF0FBECDBFDF913E +:102BF000CF911F910F91FF90EF90DF90CF900C94A9 +:102C0000311C6C297D298E299F2928960FB6F894AE +:102C1000DEBF0FBECDBFDF91CF911F910F91FF900F +:102C2000EF90DF90CF900C944B1C0E94311CC70199 +:102C3000B60128960FB6F894DEBF0FBECDBFDF9168 +:102C4000CF911F910F91FF90EF90DF90CF900C9458 +:102C5000171C603FC9F118F4603E50F49BC0623FFE +:102C600009F460C008F44AC0633F09F46FC092C021 +:102C7000162F1F70842F8F71FF2099F00E94B01BB8 +:102C8000812F28960FB6F894DEBF0FBECDBFDF911F +:102C9000CF911F910F91FF90EF90DF90CF900C9408 +:102CA0000E140E94D11B812F28960FB6F894DEBF18 +:102CB0000FBECDBFDF91CF911F910F91FF90EF908D +:102CC000DF90CF900C941514FF20A1F02111B2C019 +:102CD000842F8F7128960FB6F894DEBF0FBECDBF3C +:102CE000DF91CF911F910F91FF90EF90DF90CF90E8 +:102CF0000C94F61B223008F09DC0EACFFF20A1F013 +:102D0000842F8F7128960FB6F894DEBF0FBECDBF0B +:102D1000DF91CF911F910F91FF90EF90DF90CF90B7 +:102D20000C94B01BFF2061F3842F8F7128960FB68F +:102D3000F894DEBF0FBECDBFDF91CF911F910F91F1 +:102D4000FF90EF90DF90CF900C94D11BFF2091F07B +:102D5000842F8F7128960FB6F894DEBF0FBECDBFBB +:102D6000DF91CF911F910F91FF90EF90DF90CF9067 +:102D70000C949B1B28960FB6F894DEBF0FBECDBFF8 +:102D8000DF91CF911F910F91FF90EF90DF90CF9047 +:102D90000C94911BFF20A1F0222309F4B1CF862FC0 +:102DA00028960FB6F894DEBF0FBECDBFDF91CF914E +:102DB0001F910F91FF90EF90DF90CF900C94F7123E +:102DC000222309F4B1CF862F28960FB6F894DEBFE0 +:102DD0000FBECDBFDF91CF911F910F91FF90EF906C +:102DE000DF90CF900C94BF134F70C8010E94040570 +:102DF00028960FB6F894DEBF0FBECDBFDF91CF91FE +:102E00001F910F91FF90EF90DF90CF900C94B61A26 +:102E10004F70C80128960FB6F894DEBF0FBECDBF25 +:102E2000DF91CF911F910F91FF90EF90DF90CF90A6 +:102E30000C94750928960FB6F894DEBF0FBECDBF6F +:102E4000DF91CF911F910F91FF90EF90DF90CF9086 +:102E500008950E94461D0E94561D0E941B1D0E943F +:102E6000721D0E9482220E94D62180E090E00E9482 +:102E7000F01180E090E00C9406120E94361D0C9434 +:102E800029170E94661C292F22952F7030E02C30C4 +:102E900031054CF42A3031056CF4225031092230CE +:102EA000310590F407C02C30310551F02F30310539 +:102EB00039F00AC0803E10F0803F31F481E008957F +:102EC00093FB882780F9089580E00895CF93DF93DE +:102ED00000D000D01F92CDB7DEB70F900F900F90AB +:102EE0000F900F90DF91CF910895CF93DF9300D093 +:102EF00000D000D0CDB7DEB726960FB6F894DEBF6F +:102F00000FBECDBFDF91CF9108951F93CF93DF9375 +:102F1000C0917B0116E080917C01C81799F0D0E048 +:102F20001C9FF0011D9FF00D1124E358FE4F4081BE +:102F3000518162817381848195810E9475172196E8 +:102F4000C770E9CFDF91CF911F9108954091AD01F6 +:102F50005091AE016091AF017091B0018091B101CB +:102F60009091B2010C947517CF938091B201829524 +:102F70008F7009F05FC08091AF01882309F45AC0B7 +:102F800020917B01A0917C016091AD017091AE0117 +:102F90008091B0019091B10131E06F3F09F030E0D4 +:102FA000B32FC6E02A1709F445C0009721F07F3FF0 +:102FB00021F44B2F03C041E001C040E030E040FD70 +:102FC00035C0C29FF001C39FF00D1124E358FE4F9E +:102FD000418174132BC04081641328C04281411188 +:102FE00025C0438154814817590710F441505109B5 +:102FF000481B590B483C5105C8F48091B2018F70B1 +:1030000080618093B20186E0829FF001839FF00D82 +:103010001124EE57FE4F80818F70806180838DEA8E +:1030200091E00E941C14CF910C9485172F5F3F4FA5 +:103030002770B8CFCF910895CF92DF92EF92FF9291 +:103040000F931F93CF93DF93CDB7DEB762970FB681 +:10305000F894DEBF0FBECDBF8C0185E0F801DE0124 +:103060001D9601900D928A95E1F7D8014C91119629 +:103070005C91119712966C9112971396ED90FC90BB +:1030800014977091AD01E091AE012091B0013091A3 +:10309000B1012115310531F0EF3F31F481E07F3F7F +:1030A00019F403C081E001C080E0B82FB170CB2ECD +:1030B00080FD6CC1D090AF01DD2009F4F5C0F09126 +:1030C000B201E216F30638F0C701821B930B883C6D +:1030D000910548F09BC0209530952E0D3F1D283C52 +:1030E000310508F093C08F2F807F09F052C0E5139F +:1030F00014C0741312C0D62E61110FC0FF70F0619E +:10310000F093B2010E94A6178DEA91E00E941C1470 +:103110008091B201F80185836CC1EF2831F05F3FE7 +:1031200031F481E04F3F19F403C081E001C080E039 +:1031300080FD03C081E0862701C080E0F82FF17098 +:10314000FF2E80FF1CC080917B0120917C0136E026 +:10315000821709F428C190E0389FF001399FF00DE3 +:103160001124E358FE4F7181571306C07081471335 +:1031700003C07281671303C001968770E9CFD62E12 +:10318000662309F436C18091B20181608093B20157 +:1031900053C0E51308C0741306C0611104C0D80100 +:1031A0001596FC93AEC04D875E878D859E856A8B94 +:1031B0000E9441176A89882329F1D62E662311F1CE +:1031C0002091B201822F82958F7090E002970CF4CB +:1031D00060C08091AD019091AE0198878F83198670 +:1031E000FB86EA862C87CE01079651C0E51731F1A0 +:1031F0004D875E878D859E856A8B0E9441176A89FF +:1032000081112EC0C8010E941C14A4C08F2F807F82 +:1032100069F77E2DF98AE88A89890E9466178DEA06 +:1032200091E00E941C14EDEAF1E086E0DF011D92BE +:103230008A95E9F70E94A617D12CDBC07413D8CF6A +:103240006111D6CFD8011596FC93C8010E941C14B9 +:10325000EDEAF1E086E0DF011D928A95E9F7C9C049 +:10326000D62E662379F22091B201822F82958F703B +:1032700090E0029774F08091AD019091AE019A8335 +:1032800089831B82FD82EC822E83CE0101960E94EF +:103290001C1486E0F801ADEAB1E001900D928A9528 +:1032A000E1F70E94B4176FC0E216F30628F0C701D9 +:1032B000821B930B9C0104C0209530952E0D3F1D61 +:1032C000283C310508F052C0D62E662309F49ACF67 +:1032D000E5132CC074132AC08091B20180FD1DC07B +:1032E000982F92959F70C9F0D80115968C931597D9 +:1032F0009F3039F09F5F9295907F8F70892B159644 +:103300008C93C8010E941C1486E0F801ADEAB1E07C +:1033100001900D928A95E1F736C086E0F801ADEA9A +:10332000B1E001900D928A95E1F763C04D875E8709 +:103330008D859E850E944117882379F086E0F801EB +:10334000ADEAB1E001900D928A95E1F70E94B417C1 +:103350000E94A617DD24D3944CC08091B2018160F5 +:103360008093B201C8010E941C1443C07E2DF98ACB +:10337000E88A89890E946617EDEAF1E086E0DF01BC +:103380001D928A95E9F70E94A61733C0662309F4B7 +:1033900039CF4D875E878D859E850E944117882392 +:1033A00009F430CFCBCF4D875E878D859E850E94F7 +:1033B000661C292F22952F7030E0223031052CF425 +:1033C0009F7041F0811106C00CC0243031052CF4EF +:1033D0009F7049F4805E883020F0C8010E941C1460 +:1033E000CF2CDC2C06C0D80115969C91907F91F7CC +:1033F000F8CF8D2D62960FB6F894DEBF0FBECDBF0D +:10340000DF91CF911F910F91FF90EF90DF90CF90C0 +:1034100008951F93CF93DF93CDB7DEB72C970FB6E8 +:10342000F894DEBF0FBECDBF4F83588769877A8778 +:103430008B879C87CE0107960E941C188823C1F0B9 +:103440002F8138858A859B85892B31F03F3F11F08C +:1034500080E003C02F3FE1F781E0811147C04F8139 +:10346000588569857A858B859C850E9475173EC035 +:1034700086E0FE013796DE01119601900D928A9545 +:10348000E1F7FF81E8854A855B854115510531F0FB +:10349000EF3F31F481E0FF3F19F403C081E001C048 +:1034A00080E080FD23C020917C0130E0C9010196BD +:1034B0008770992760917B0170E086179707F1F17B +:1034C000F983EA835D834C8396E0929FD001939FBA +:1034D000B00D1124A358BE4FFE01319601900D92FC +:1034E0009A95E1F780937C010E94851716E0809100 +:1034F0007B0190917C01891779F1189FC0011124FB +:1035000083589E4F0E941C18882331F1E0917B0163 +:103510001E9FF0011124E358FE4F408151816281CA +:103520007381848195810E94751780917B0190E061 +:1035300001968770992780937B01D9CF0E943D1710 +:1035400010927C0110927B01EDEAF1E086E0DF0150 +:103550001D928A95E9F7CACF2C960FB6F894DEBF74 +:103560000FBECDBFDF91CF911F910895EF92FF92D3 +:103570000F931F93CF93DF939C01009709F471C0C1 +:10358000F12CEE24E394E9012196F901849184372A +:1035900040F4843008F056C0813081F0823021F14F +:1035A00060C0853709F449C0C0F19CE7980F903797 +:1035B00008F057C08F770E94BF1346C089010E5F85 +:1035C0001F4FFE01849190E2980F983050F487705D +:1035D000FE2D01C0FF0F8A95EAF78F2F0E94491D2B +:1035E00015C00E94F71214C089010E5F1F4FFE0123 +:1035F000849190E2980F983068F48770FE2D01C096 +:10360000FF0F8A95EAF78F2F0E944F1D0E94721DAF +:10361000E8011AC00E94BF13FBCF2E5F3F4FFE018F +:10362000C491CC2341F08FE99FE00197F1F700C0EE +:103630000000C150F6CFE90107C0FE01F490E90196 +:10364000229602C00E94F7128F2D882341F0EFE9E5 +:10365000FFE03197F1F700C000008150F6CF9E01E6 +:1036600092CFDF91CF911F910F91FF90EF9008952E +:1036700008956093B7017093B8018093B901909356 +:10368000BA010C9429170F931F930091B701109161 +:10369000B8012091B9013091BA01062B172B282BC4 +:1036A000392B0093B7011093B8012093B9013093DF +:1036B000BA011F910F910C9429170F931F9300913A +:1036C000B7011091B8012091B9013091BA010623D8 +:1036D0001723282339230093B7011093B8012093AF +:1036E000B9013093BA011F910F910C9429170F93D0 +:1036F0001F930091B7011091B8012091B901309149 +:10370000BA0106271727282739270093B7011093F6 +:10371000B8012093B9013093BA011F910F910C9415 +:1037200029171092B3011092B4011092B5011092B2 +:10373000B6010C94291741E050E060E070E004C04D +:10374000440F551F661F771F8A95D2F74093B30128 +:103750005093B4016093B5017093B6010C9429178E +:1037600041E050E060E070E004C0440F551F661F68 +:10377000771F8A95D2F78091B3019091B401A091FF +:10378000B501B091B601842B952BA62BB72B809356 +:10379000B3019093B401A093B501B093B6010C941A +:1037A000291741E050E060E070E004C0440F551F6D +:1037B000661F771F8A95D2F7409550956095709552 +:1037C0008091B3019091B401A091B501B091B6017F +:1037D00084239523A623B7238093B3019093B40148 +:1037E000A093B501B093B6010C94291741E050E0C5 +:1037F00060E070E004C0440F551F661F771F8A9574 +:10380000D2F78091B3019091B401A091B501B0912C +:10381000B60184279527A627B7278093B3019093F5 +:10382000B401A093B501B093B6010C9429170F937E +:103830001F930091B3011091B4012091B501309113 +:10384000B601062B172B282B392B0093B3011093AD +:10385000B4012093B5013093B6011F910F910C94E0 +:1038600029170F931F930091B3011091B401209178 +:10387000B5013091B601062317232823392300937D +:10388000B3011093B4012093B5013093B6011F9199 +:103890000F910C9429170F931F930091B30110916E +:1038A000B4012091B5013091B601062717272827CA +:1038B00039270093B3011093B4012093B5013093DD +:1038C000B6011F910F910C9429170895CF92DF92A2 +:1038D000EF92FF920F931F93CF93DF93EC01C09071 +:1038E000B701D090B801E090B901F090BA01809191 +:1038F000B3019091B401A091B501B091B601C82A6D +:10390000D92AEA2AFB2A0FE110E0B701A601002E0E +:1039100004C076956795579547950A94D2F740FF6E +:1039200007C0BE01802F0E9498098130910539F4AB +:103930000150110950F7BE0180E00E949809DF9103 +:10394000CF911F910F91FF90EF90DF90CF9008954E +:1039500090910C019923D9F090910D019923B9F020 +:10396000982F9695969596959F3088F5E0910E0143 +:10397000F0910F01E90FF11D877021E030E001C0E7 +:10398000220F8A95EAF78181822B818308954091E5 +:103990000E0150910F0120E030E09FEFFA01E20F9D +:1039A000F31F6281681799F09F3F19F4611101C0FC +:1039B000922F2F5F3F4F2E30310581F79F3F39F017 +:1039C000FA01E90FF11D97FDFA9582830895089594 +:1039D00090910C019923E1F090910D019923C1F090 +:1039E000982F9695969596959F3020F5E0910E012B +:1039F000F0910F01E90FF11D877021E030E001C067 +:103A0000220F8A95EAF72095818128232183089542 +:103A100040910E0150910F0120E030E0FA01E20FD9 +:103A2000F31F9281981301C012822F5F3F4F2E30F7 +:103A30003105A1F7089581E090E0E0910E01F09149 +:103A40000F01E80FF91F1082019680319105A9F747 +:103A500008959091CE01982B9093CE010895809572 +:103A60009091CE0198239093CE0108951092CE01AB +:103A700008959091CD01982B9093CD010895809554 +:103A80009091CD0198239093CD0108951092CD018E +:103A900008959091CC01982B9093CC010895809536 +:103AA0009091CC0198239093CC0108951092CC0171 +:103AB00008958093BB0108951092BB010895409131 +:103AC0000E0150910F0120E030E080E0FA01E20F9A +:103AD000F31F918191118F5F2F5F3F4F2F30310581 +:103AE000A9F70895E0910E01F0910F018091CE01A8 +:103AF0008083E0910E01F0910F0180819091CD01C2 +:103B0000892B8083E0910E01F0910F0180819091CB +:103B1000CC01892B80839091BB01992361F0E091C6 +:103B20000E01F0910F018081892B80830E945F1D1F +:103B300081111092BB0180910E0190910F010C94A4 +:103B4000DA11CF92DF92EF92FF920F931F936C01E5 +:103B5000EE24FF24C114D104E104F10421F46B012B +:103B60007C0180E001C080E133272F2D1E2D0D2D1B +:103B7000011511052105310519F0885F68017901EA +:103B800097018601A4E03695279517950795AA9584 +:103B9000D1F7011511052105310519F08C5F680178 +:103BA000790197018601F2E03695279517950795DB +:103BB000FA95D1F7011511052105310519F08E5F30 +:103BC00068017901B701A6017695679557954795E4 +:103BD000452B462B472B09F08F5F1F910F91FF90CC +:103BE000EF90DF90CF9008958091E801843009F143 +:103BF0001092D00120E488E190E00FB6F894A895E7 +:103C0000809360000FBE2093600083B7817F846043 +:103C100083BF83B7816083BF7894889583B78E7F95 +:103C200083BF88E10FB6F894809360001092600023 +:103C30000FBE089508950895CF930E941A1E0E9402 +:103C4000C2070E941B1EC0E08C2F0E94AF0881118A +:103C500005C0CF5FCE30C1F780E001C081E0CF91D9 +:103C600008950E943D170E94CE110C94D30A82E061 +:103C700084BD93E095BD9AEF97BD80936E00089543 +:103C80002FB7F8948091D1019091D201A091D301E6 +:103C9000B091D4012FBF0895CF92DF92EF92FF929F +:103CA0000F931F932FB7F8944091D1015091D201F7 +:103CB0006091D3017091D4012FBF6A017B01EE2482 +:103CC000FF248C0120E030E0C016D106E206F306A6 +:103CD00010F441505109481B590BCA011F910F9113 +:103CE000FF90EF90DF90CF9008951F920F920FB644 +:103CF0000F9211248F939F93AF93BF938091D10123 +:103D00009091D201A091D301B091D4010196A11D4F +:103D1000B11D8093D1019093D201A093D301B093B0 +:103D2000D401BF91AF919F918F910F900FBE0F90D3 +:103D30001F9018950E94D40EF8942FEF87EA91E611 +:103D4000215080409040E1F700C0000087E090EBF8 +:103D5000DC018093F1019093F201A093F301B09301 +:103D6000F4012CE088E190E00FB6F894A8958093D8 +:103D700060000FBE20936000FFCFEF92FF920F9381 +:103D80001F93CF93DF93E82EF12C8F2D0E94AF0865 +:103D9000C0E0D0E0082F10E098010C2E02C035954D +:103DA00027950A94E2F720FD05C02196C630D1057B +:103DB00099F709C06C2F7F2D80E00E947609E812E8 +:103DC000F4CF81E005C0F3948EE0F812DECF80E0FE +:103DD000DF91CF911F910F91FF90EF900895CF93B6 +:103DE000C82F8CE20E94BD1E882321F08C2FCF911A +:103DF0000C94BD1E80E0CF910895CF930E94422085 +:103E0000811102C00E942820C5E6C15049F00E94DD +:103E1000C2078FE39CE90197F1F700C00000F5CFDE +:103E200089E20E94EF1E811111C18AE20E94EF1EF9 +:103E300081110E94282085E00E94EF1E81110E94BE +:103E40009A1E0E944D208093CF0187E00E94EF1EB2 +:103E5000882399F18BE10E94EF1E882351F0909105 +:103E6000CF0191FB882780F921E0822780FB91F91F +:103E700022C08EE00E94EF1E882351F09091CF0166 +:103E800092FB882780F921E0822780FB92F913C0FA +:103E900080E10E94EF1E9091CF01882341F093FBB7 +:103EA000882780F921E0822780FB93F904C0892FBD +:103EB000809580FB90F99093CF018091CF010E9473 +:103EC00051200E945F208093E20180EE0E94EF1E4D +:103ED000882341F08091E201982F909590FB80F922 +:103EE0008093E20189E30E94EF1E882359F09091AC +:103EF000E20191FB882780F921E0822780FB91F97C +:103F00009093E20182EE0E94EF1E882359F0909177 +:103F1000E20192FB882780F921E0822780FB92F959 +:103F20009093E20186EE0E94EF1E882359F0909153 +:103F3000E20193FB882780F921E0822780FB93F937 +:103F40009093E20183EE0E94EF1E882359F0909136 +:103F5000E20194FB882780F921E0822780FB94F915 +:103F60009093E20185E30E94EF1E882359F090911F +:103F7000E20195FB882780F921E0822780FB95F9F3 +:103F80009093E20181E30E94EF1E882359F0909103 +:103F9000E20196FB882780F921E0822780FB96F9D1 +:103FA0009093E20181E10E94EF1E882359F09091E5 +:103FB000E20197FB882780F921E0822780FB97F9AF +:103FC0009093E2018091E2010E9463208091E201DE +:103FD00087FB882780F980930D0187E20E94EF1EFE +:103FE000C82F8EE10E94EF1E8111C2608FE10E94F6 +:103FF000EF1E8111C46080E20E94EF1E8111C86033 +:1040000081E20E94EF1E8111C06182E20E94EF1ED8 +:104010008111C06283E20E94EF1E8111C06484E2BC +:104020000E94EF1E882311F0C06802C0CC2329F043 +:104030008C2F0E945A206C2F03C00E945620682F9C +:1040400070E080E090E0CF910C94391BCF910895FF +:104050006DEE7EEF80E090E00E94812660E082E0DD +:1040600090E00E94732660E083E090E00E94732657 +:1040700060E084E090E00E94732660E085E090E0DC +:104080000C94732680E090E00E946D2621E08D3E26 +:104090009E4F09F020E0822F089582E090E00C947A +:1040A0006526682F82E090E00C94732683E090E010 +:1040B0000C946526682F83E090E00C94732684E0CE +:1040C00090E00C946526682F84E090E00C947326B1 +:1040D0008091D70180FF0BC06091130185E0689F3C +:1040E000B001112475956795759567952AC081FF74 +:1040F00009C06091130185E0689FB0011124759596 +:1041000067951FC082FF07C06091130185E0689F1B +:10411000B001112416C04091D8014423C9F0609128 +:104120001201461788F72091130185E0289F90011E +:104130001124429FC001439F900D112470E00E9402 +:1041400037266038710540F46115710539F002C0F9 +:1041500065E070E0862F08958FE7089581E0089567 +:104160008091D70180FF08C06091110170E07595C2 +:1041700067957595679521C081FF06C06091110113 +:1041800070E07595679519C082FF04C060911101B8 +:1041900070E010C08091D8018823C1F060911001B7 +:1041A0008617A0F790911101989FC001112470E02B +:1041B0000E9437266038710528F46115710521F0D9 +:1041C000862F08958FE7089581E0089561E070E0FB +:1041D000F4CF803F21F40E946820819504C0813F84 +:1041E00029F40E9468208093DB010895823F21F426 +:1041F0000E946820819504C0833F29F40E946820B2 +:104200008093DA010895893F19F40E94B02005C017 +:104210008A3F31F40E94B02081958093DC0108959B +:104220008B3F21F40E94B020819504C08C3F29F47B +:104230000E94B0208093DD010895843F21F4809195 +:10424000D901816017C0853F21F48091D901826036 +:1042500011C0863F21F48091D90184600BC0873F53 +:1042600021F48091D901886005C0883F31F48091A4 +:10427000D90180618093D90108958D3F21F4809107 +:10428000D70181600BC08E3F21F48091D7018260FD +:1042900005C08F3F29F48091D70184608093D701B6 +:1042A0000895803F39F48091DB0187FF6CC0109244 +:1042B000DB0169C0813F29F48091DB011816BCF352 +:1042C00062C09091DA01823F29F497FF5CC010929E +:1042D000DA0159C0833F19F41916CCF354C0893F51 +:1042E00041F48091DC0118160CF04DC01092DC01F5 +:1042F0004AC08A3F29F48091DC0187FF44C0F6CF91 +:104300008B3F39F48091DD0187FF3DC01092DD01C4 +:104310003AC08C3F29F48091DD011816BCF333C0FC +:10432000843F21F48091D9018E7F17C0853F21F40D +:104330008091D9018D7F11C0863F21F48091D901F0 +:104340008B7F0BC0873F21F48091D901877F05C007 +:10435000883F31F48091D9018F7E8093D90113C0B9 +:104360008D3F21F48091D7018E7F0BC08E3F21F4C9 +:104370008091D7018D7F05C08F3F29F48091D701AF +:104380008B7F8093D7018091DA0181110EC08091DB +:10439000DB0181110AC08091DC01811106C080918E +:1043A000DD01811102C01092D801089589ED91E0DC +:1043B0000E94E5110E94401E9093D6018093D50182 +:1043C00008951F93CF93DF938091D5019091D601EB +:1043D0000E944C1E4091D801442321F020911401E9 +:1043E00030E006C0209115015AE0259F900111246C +:1043F0008217930708F482C08091DA011091DB01E3 +:10440000D091DC01C091DD01811107C0111105C0FF +:10441000D11103C0CC2309F471C04F3F19F04F5F95 +:104420004093D801181624F40E9468208093DA0182 +:104430008091DA0187FF05C00E94682081958093F2 +:10444000DA01111624F40E9468208093DB01809128 +:10445000DB0187FF05C00E94682081958093DB0106 +:104460006091DA01662339F11091DB01112319F112 +:10447000772767FD7095872F972F0E94482523E3A4 +:1044800033E343E35FE30E94AC250E94152560936C +:10449000DA01612F772767FD7095872F972F0E948C +:1044A000482523E333E343E35FE30E94AC250E9406 +:1044B00015256093DB011D1624F40E94B020809323 +:1044C000DC018091DC0187FF05C00E94B02081954E +:1044D0008093DC011C1624F40E94B0208093DD013F +:1044E0008091DD0187FF05C00E94B02081958093F7 +:1044F000DD01DF91CF911F910C94D621DF91CF91F7 +:104500001F910895E9EDF1E085E0DF011D928A95A4 +:10451000E9F71092D8011092D7010895833081F104 +:1045200028F4813059F08230D1F00895853009F4B3 +:1045300049C0B8F1863009F456C00895209115019C +:10454000862F90E0820F911D8F3F910520F4620F1E +:104550006093150108958FEF8093150108952091C0 +:104560001401862F90E0820F911D8F3F910520F45A +:10457000620F6093140108958FEF809314010895E2 +:1045800020911301862F90E0820F911D8F3F91059E +:1045900020F4620F6093130108958FEF809313014D +:1045A000089520911201862F90E0820F911D8F3F78 +:1045B000910520F4620F6093120108958FEF8093AC +:1045C0001201089520911101862F90E0820F911D14 +:1045D0008F3F910520F4620F6093110108958FEFD2 +:1045E00080931101089520911001862F90E0820F91 +:1045F000911D8F3F910520F4620F60931001089583 +:104600008FEF809310010895833011F128F48130E9 +:1046100049F0823091F00895853081F120F18630A3 +:10462000C1F1089580911501681720F4861B8093CD +:1046300015010895109215010895809114016817CD +:1046400020F4861B8093140108951092140108959C +:1046500080911301681720F4861B8093130108953D +:1046600010921301089580911201681720F4861B9F +:104670008093120108951092120108958091110102 +:10468000681720F4861B8093110108951092110180 +:10469000089580911001681720F4861B8093100103 +:1046A00008951092100108958D3109F442C020F54B +:1046B0008E3009F47CC070F4873009F45EC020F4B9 +:1046C000863009F442C033C08830D1F18B3009F410 +:1046D000AAC02DC0863109F4A6C038F4803109F48F +:1046E00070C0813109F47EC022C0893109F49BC0B9 +:1046F0008B3109F452C01BC0853309F48CC048F4D7 +:10470000873209F488C008F478C0893209F483C07C +:104710000EC0833438F48A3308F06DC0883309F44E +:1047200082C005C0833409F476C08834C1F080E0CB +:1047300008950E94CF240E94CE110E94D30A73C014 +:104740000E944D200E945F206EC08091CF01817F2A +:104750008E7F8093CF0181E08093DF0108950E94D6 +:104760003D172FEF83ED90E3215080409040E1F71B +:1047700000C000000E949A1E56C09091CF01892F60 +:104780008095817080FB90F919F09660986027C041 +:10479000997F977F9093CF0146C09091CF0191FB75 +:1047A000882780F921E0822780FB91F913C090913E +:1047B000CF0192FB882780F921E0822780FB92F9C4 +:1047C00009C09091CF0193FB882780F921E08227CF +:1047D00080FB93F99093CF01882329F19160909306 +:1047E000CF0108950E943D1780910D0191E0892726 +:1047F00080930D0118C027EC01C023EE280F61E063 +:1048000070E080E090E004C0660F771F881F991F5A +:104810002A95D2F704C061E070E080E090E00E9449 +:10482000391B0E943D1781E0089580E0089580E0E3 +:104830000895CF93C82F8091DF01813079F018F06F +:104840008230D1F184C0A0910E01B0910F018C9102 +:10485000813169F0823209F07CC009C0A0910E015B +:10486000B0910F018C91813111F0823249F48C2F7B +:104870000E94152481111DC08C2F0E9454231AC040 +:104880008C2F0E941724811114C0C43179F048F490 +:10489000CB3079F0C03109F060C082E08093DF0155 +:1048A00008C0C93219F0C83321F057C01092DF0197 +:1048B00054C081E0817053C0C93289F118F5C43108 +:1048C00071F1A8F4C73009F046C08AE08093150161 +:1048D00094E19093140193E090931301809312015B +:1048E00088E08093110188E28093100134C0CE519A +:1048F000C63088F5EC2FF0E0E65DFE4F80818093B6 +:10490000DE0129C0CE34E9F020F4CB3421F56AE091 +:1049100013C0C13579F0C235F1F461E00DC080916A +:10492000DE01882319F01092DE0115C081E080932A +:10493000DF0115C061E006C08091DE010E948E2279 +:104940000AC06AE08091DE010E94042304C0109234 +:10495000DF0180E004C081E002C080E0ABCFCF91F6 +:104960000895E1E8F0E08081886080838081816043 +:1049700080838FB7F89493E09093890090ED9093A3 +:1049800088008FBF0895EFE6F0E080818260808329 +:104990000895EFE6F0E080818D7F80830895EFE653 +:1049A000F0E0808192E08927808308951F920F9222 +:1049B0000FB60F9211242F933F934F935F936F93F2 +:1049C0007F938F939F93AF93BF93EF93FF938091C8 +:1049D000E0019091E10101969093E1018093E00163 +:1049E000811103C082E00E94D30AE091E101E695C3 +:1049F000E695F0E0EC51F84FE4918091E0018E13E0 +:104A000003C080E00E94D30AFF91EF91BF91AF9164 +:104A10009F918F917F916F915F914F913F912F91D6 +:104A20000F900FBE0F901F90189504D06894B1118D +:104A30008DC0089570D088F09F5790F0B92F9927B6 +:104A4000B751A0F0D1F0660F771F881F991F1AF099 +:104A5000BA95C9F712C0B13081F077D0B1E00895AE +:104A600074C0672F782F8827B85F39F0B93FCCF32F +:104A7000869577956795B395D9F73EF4909580958F +:104A8000709561957F4F8F4F9F4F0895E89409C0AF +:104A900097FB3EF490958095709561957F4F8F4F71 +:104AA0009F4F9923A9F0F92F96E9BB279395F69587 +:104AB000879577956795B795F111F8CFFAF4BB0F05 +:104AC00011F460FF1BC06F5F7F4F8F4F9F4F16C069 +:104AD000882311F096E911C0772321F09EE8872FF3 +:104AE000762F05C0662371F096E8862F70E060E0AF +:104AF0002AF09A95660F771F881FDAF7880F969528 +:104B0000879597F9089557FD9058440F551F59F010 +:104B10005F3F71F04795880F97FB991F61F09F3FAA +:104B200079F087950895121613061406551FF2CFD3 +:104B30004695F1DF08C0161617061806991FF1CF23 +:104B400086957105610508940895E894BB2766274A +:104B50007727CB0197F908950BD078C069D028F05A +:104B60006ED018F0952309F05AC05FC01124EECF23 +:104B7000CADFA0F3959FD1F3950F50E0551F629FB8 +:104B8000F001729FBB27F00DB11D639FAA27F00DA6 +:104B9000B11DAA1F649F6627B00DA11D661F829FCD +:104BA0002227B00DA11D621F739FB00DA11D621FB2 +:104BB000839FA00D611D221F749F3327A00D611DCF +:104BC000231F849F600D211D822F762F6A2F1124B1 +:104BD0009F5750408AF0E1F088234AF0EE0FFF1F04 +:104BE000BB1F661F771F881F91505040A9F79E3F3B +:104BF000510570F014C0AACF5F3FECF3983EDCF390 +:104C0000869577956795B795F795E7959F5FC1F777 +:104C1000FE2B880F911D9695879597F9089597F922 +:104C20009F6780E870E060E008959FEF80EC089552 +:104C300000240A941616170618060906089500247B +:104C40000A9412161306140605060895092E0394F5 +:104C5000000C11F4882352F0BB0F40F4BF2B11F469 +:104C600060FF04C06F5F7F4F8F4F9F4F089597FB8A +:104C7000072E16F4009407D077FD09D00E94512624 +:104C800007FC05D03EF4909581959F4F089570954F +:104C900061957F4F0895EE0FFF1F0590F491E02D71 +:104CA0000994AA1BBB1B51E107C0AA1FBB1FA61773 +:104CB000B70710F0A61BB70B881F991F5A95A9F7C5 +:104CC00080959095BC01CD010895F999FECF92BDD4 +:104CD00081BDF89A992780B50895A8E1B0E042E037 +:104CE00050E00C948826262FF999FECF1FBA92BD6A +:104CF00081BD20BD0FB6F894FA9AF99A0FBE0196BD +:104D000008950E947326272F0C947426DC01CB0192 +:104D1000FC01F999FECF06C0F2BDE1BDF89A3196CB +:104D200000B40D9241505040B8F70895F894FFCF69 +:104D30002002D50A620B3F0B0B0BD80A0101BC0104 +:104D400028080A03140A3F4D3639A50758072207D9 +:104D5000E9067C069506AE06C706010203040506B1 +:044D60000708090037 :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c index 23611ddd8..92b712bd8 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c @@ -106,8 +106,6 @@ #define L4 4 // layer_4 #define L5 5 // layer_5 #define L6 6 // layer_6 -#define L7 7 // layer_7 -#define L8 8 // layer_8 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* @@ -120,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y | * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - * | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + * | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT| * '------------------------' '------------------------' * .-----------. .-----------. * |INS |TG(2)| !M(UM)|DELT | @@ -143,8 +141,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS, KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, - KC_LALT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, - UM, KC_DELT, + KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, + M(UM), KC_DELT, KC_PGUP, KC_PGDN, KC_ENTER, KC_SPACE ), @@ -376,91 +374,70 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), -/* - * .------------------------------------.------------------------------------. - * | | | | | | | | | | | | | | | - * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - * | | | | | | | | | | | | | | | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | | | | | | |-----!-----! | | | | | | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | | | | | | | | | | | | | | | - * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------' '------------------------' - * .-----------. .-----------. - * | | | ! | | - * .-----+-----+-----! !-----+-----+-----. - * ! ! | | ! | ! ! - * ! ! !-----! !-----! ! ! - * | | | | ! | | | - * '-----------------' '-----------------' -*/ -[L7] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_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 -), -/* - * .------------------------------------.------------------------------------. - * | | | | | | | | | | | | | | | - * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - * | | | | | | | | | | | | | | | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | | | | | | |-----!-----! | | | | | | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | | | | | | | | | | | | | | | - * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------' '------------------------' - * .-----------. .-----------. - * | | | ! | | - * .-----+-----+-----! !-----+-----+-----. - * ! ! | | ! | ! ! - * ! ! !-----! !-----! ! ! - * | | | | ! | | | - * '-----------------' '-----------------' -*/ -[L8] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_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 -), }; const uint16_t PROGMEM fn_actions[] = {}; #define UC_MODE_WIN 0 #define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 +// TODO: allow default mode to be configured static uint16_t unicode_mode = UC_MODE_WIN; +uint16_t hextokeycode(uint8_t hex) { + if (hex == 0x0) { + return KC_P0; + } + if (hex < 0xA) { + return KC_P1 + (hex - 0x1); + } + return KC_A + (hex - 0xA); +} + +void unicode_action_function(uint16_t hi, uint16_t lo) { + switch (unicode_mode) { + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + } +} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { if (!record->event.pressed) { return MACRO_NONE; @@ -470,772 +447,291 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { case UM: unicode_mode = (unicode_mode + 1) % 2; break; - - default: - break; - } - if (unicode_mode == UC_MODE_WIN) { - switch(id) { - case UC_GREEK_SMALL_LETTER_OMICRON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(F), U(LALT), END - ); -case UC_LEFTWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_0), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_RHO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_1), U(LALT), END - ); -case UC_SUBSCRIPT_THREE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_3), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_EIGHTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(B), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_LAMDA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(B), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_THIRD: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_3), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_XI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(E), U(LALT), END - ); -case UC_THERE_DOES_NOT_EXIST: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_4), U(LALT), END - ); -case UC_SUPERSCRIPT_ONE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_9), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_BETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_2), U(LALT), END - ); -case UC_SUBSCRIPT_FIVE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_5), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_IOTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_9), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_FIFTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_5), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_PSI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_8), U(LALT), END - ); -case UC_SUBSCRIPT_NINE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_9), U(LALT), END - ); -case UC_SUPERSCRIPT_FOUR: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_4), U(LALT), END - ); -case UC_RIGHTWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_2), U(LALT), END - ); -case UC_SUPERSCRIPT_SIX: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_6), U(LALT), END - ); -case UC_DOWNWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_3), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_PI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_0), U(LALT), END - ); -case UC_SUPERSCRIPT_TWO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_2), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_OMEGA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_9), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_PSI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_8), U(LALT), END - ); -case UC_SUBSCRIPT_FOUR: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_4), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_NU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(D), U(LALT), END - ); -case UC_DIVISION_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(F), T(KP_7), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_3), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_RHO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_1), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_SIXTH: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_9), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_GAMMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_3), U(LALT), END - ); -case UC_VULGAR_FRACTION_TWO_THIRDS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_5), T(KP_4), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_NU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(D), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_ZETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_6), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_EPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_5), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_KAPPA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(A), U(LALT), END - ); -case UC_SUPERSCRIPT_SEVEN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_7), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_PI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_0), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_FINAL_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_2), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_XI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(E), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_THETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_8), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_ETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_7), U(LALT), END - ); -case UC_SUBSCRIPT_TWO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_2), U(LALT), END - ); -case UC_ASYMPTOTICALLY_EQUAL_TO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_4), T(KP_3), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_ALPHA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_1), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_PHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_6), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_PHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_6), U(LALT), END - ); -case UC_INFINITY: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_1), T(E), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_OMICRON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(F), U(LALT), END - ); -case UC_ELEMENT_OF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_8), U(LALT), END - ); -case UC_MULTIPLICATION_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(D), T(KP_7), U(LALT), END - ); -case UC_SUBSCRIPT_ZERO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_0), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_SIGMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_3), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_OMEGA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_9), U(LALT), END - ); -case UC_SUBSCRIPT_ONE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_1), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_ZETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_6), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_TAU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_4), U(LALT), END - ); -case UC_SUPERSCRIPT_FIVE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_5), U(LALT), END - ); -case UC_THERE_EXISTS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_3), U(LALT), END - ); -case UC_PLUS_MINUS_SIGN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_1), U(LALT), END - ); -case UC_VULGAR_FRACTION_THREE_QUARTERS: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(E), U(LALT), END - ); -case UC_SUPERSCRIPT_THREE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(KP_3), U(LALT), END - ); -case UC_EMPTY_SET: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_5), U(LALT), END - ); -case UC_UPWARDS_ARROW: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_1), T(KP_9), T(KP_1), U(LALT), END - ); -case UC_SUPERSCRIPT_NINE: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_9), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_DELTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_4), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_MU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(C), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_KAPPA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(A), U(LALT), END - ); -case UC_SUBSCRIPT_EIGHT: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_8), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_ALPHA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_1), U(LALT), END - ); -case UC_SUBSCRIPT_SEVEN: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_7), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_BETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_2), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_ETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_7), U(LALT), END - ); -case UC_SUPERSCRIPT_EIGHT: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_8), U(LALT), END - ); -case UC_SUPERSCRIPT_ZERO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(KP_0), U(LALT), END - ); -case UC_NOT_AN_ELEMENT_OF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_9), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_UPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_5), U(LALT), END - ); -case UC_NOT_EQUAL_TO: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_6), T(KP_0), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_CHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_7), U(LALT), END - ); -case UC_FOR_ALL: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_2), T(KP_0), T(KP_0), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_TAU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_4), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_QUARTER: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(C), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_CHI: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(C), T(KP_7), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_THETA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_8), U(LALT), END - ); -case UC_GREEK_SMALL_LETTER_IOTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(B), T(KP_9), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_LAMDA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(B), U(LALT), END - ); -case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_7), T(F), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_UPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(A), T(KP_5), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_MU: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(C), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_EPSILON: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_5), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_GAMMA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_3), U(LALT), END - ); -case UC_SUBSCRIPT_SIX: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_2), T(KP_0), T(KP_8), T(KP_6), U(LALT), END - ); -case UC_GREEK_CAPITAL_LETTER_DELTA: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_3), T(KP_9), T(KP_4), U(LALT), END - ); -case UC_VULGAR_FRACTION_ONE_HALF: - return MACRODOWN( - D(LALT), T(KP_PLUS), T(KP_0), T(KP_0), T(B), T(D), U(LALT), END - ); - default: - break; - } - } else if (unicode_mode == UC_MODE_LINUX) { - switch(id) { - case UC_GREEK_SMALL_LETTER_OMICRON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(F), T(KP_ENTER), END - ); + +case UC_GREEK_SMALL_LETTER_OMICRON: + unicode_action_function(0x03, 0xbf); + break; case UC_LEFTWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x90); + break; case UC_GREEK_CAPITAL_LETTER_RHO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa1); + break; case UC_SUBSCRIPT_THREE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x83); + break; case UC_VULGAR_FRACTION_ONE_EIGHTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(B), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x5b); + break; case UC_GREEK_SMALL_LETTER_LAMDA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(B), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xbb); + break; case UC_VULGAR_FRACTION_ONE_THIRD: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x53); + break; case UC_GREEK_SMALL_LETTER_XI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(E), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xbe); + break; case UC_THERE_DOES_NOT_EXIST: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x04); + break; case UC_SUPERSCRIPT_ONE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xb9); + break; case UC_GREEK_SMALL_LETTER_BETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb2); + break; case UC_SUBSCRIPT_FIVE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x85); + break; case UC_GREEK_CAPITAL_LETTER_IOTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x99); + break; case UC_VULGAR_FRACTION_ONE_FIFTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x55); + break; case UC_GREEK_SMALL_LETTER_PSI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc8); + break; case UC_SUBSCRIPT_NINE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x89); + break; case UC_SUPERSCRIPT_FOUR: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x74); + break; case UC_RIGHTWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x92); + break; case UC_SUPERSCRIPT_SIX: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x76); + break; case UC_DOWNWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x93); + break; case UC_GREEK_SMALL_LETTER_PI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc0); + break; case UC_SUPERSCRIPT_TWO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xb2); + break; case UC_GREEK_CAPITAL_LETTER_OMEGA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa9); + break; case UC_GREEK_CAPITAL_LETTER_PSI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa8); + break; case UC_SUBSCRIPT_FOUR: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x84); + break; case UC_GREEK_CAPITAL_LETTER_NU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(D), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9d); + break; case UC_DIVISION_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(F), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xf7); + break; case UC_GREEK_SMALL_LETTER_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc3); + break; case UC_GREEK_SMALL_LETTER_RHO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc1); + break; case UC_VULGAR_FRACTION_ONE_SIXTH: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x59); + break; case UC_GREEK_SMALL_LETTER_GAMMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb3); + break; case UC_VULGAR_FRACTION_TWO_THIRDS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_5), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x54); + break; case UC_GREEK_SMALL_LETTER_NU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(D), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xbd); + break; case UC_GREEK_SMALL_LETTER_ZETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb6); + break; case UC_GREEK_SMALL_LETTER_EPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb5); + break; case UC_GREEK_SMALL_LETTER_KAPPA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(A), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xba); + break; case UC_SUPERSCRIPT_SEVEN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x77); + break; case UC_GREEK_CAPITAL_LETTER_PI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa0); + break; case UC_GREEK_SMALL_LETTER_FINAL_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc2); + break; case UC_GREEK_CAPITAL_LETTER_XI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(E), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9e); + break; case UC_GREEK_SMALL_LETTER_THETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb8); + break; case UC_GREEK_SMALL_LETTER_ETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb7); + break; case UC_SUBSCRIPT_TWO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x82); + break; case UC_ASYMPTOTICALLY_EQUAL_TO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_4), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x43); + break; case UC_GREEK_SMALL_LETTER_ALPHA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb1); + break; case UC_GREEK_CAPITAL_LETTER_PHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa6); + break; case UC_GREEK_SMALL_LETTER_PHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc6); + break; case UC_INFINITY: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_1), T(E), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x1e); + break; case UC_GREEK_CAPITAL_LETTER_OMICRON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(F), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9f); + break; case UC_ELEMENT_OF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x08); + break; case UC_MULTIPLICATION_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(D), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xd7); + break; case UC_SUBSCRIPT_ZERO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x80); + break; case UC_GREEK_CAPITAL_LETTER_SIGMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa3); + break; case UC_GREEK_SMALL_LETTER_OMEGA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc9); + break; case UC_SUBSCRIPT_ONE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x81); + break; case UC_GREEK_CAPITAL_LETTER_ZETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x96); + break; case UC_GREEK_SMALL_LETTER_TAU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc4); + break; case UC_SUPERSCRIPT_FIVE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x75); + break; case UC_THERE_EXISTS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x03); + break; case UC_PLUS_MINUS_SIGN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xb1); + break; case UC_VULGAR_FRACTION_THREE_QUARTERS: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(E), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xbe); + break; case UC_SUPERSCRIPT_THREE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xb3); + break; case UC_EMPTY_SET: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x05); + break; case UC_UPWARDS_ARROW: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_1), T(KP_9), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x21, 0x91); + break; case UC_SUPERSCRIPT_NINE: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x79); + break; case UC_GREEK_SMALL_LETTER_DELTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb4); + break; case UC_GREEK_SMALL_LETTER_MU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(C), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xbc); + break; case UC_GREEK_CAPITAL_LETTER_KAPPA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(A), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9a); + break; case UC_SUBSCRIPT_EIGHT: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x88); + break; case UC_GREEK_CAPITAL_LETTER_ALPHA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_1), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x91); + break; case UC_SUBSCRIPT_SEVEN: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x87); + break; case UC_GREEK_CAPITAL_LETTER_BETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_2), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x92); + break; case UC_GREEK_CAPITAL_LETTER_ETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x97); + break; case UC_SUPERSCRIPT_EIGHT: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x78); + break; case UC_SUPERSCRIPT_ZERO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x70); + break; case UC_NOT_AN_ELEMENT_OF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x09); + break; case UC_GREEK_SMALL_LETTER_UPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc5); + break; case UC_NOT_EQUAL_TO: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_6), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x60); + break; case UC_GREEK_CAPITAL_LETTER_CHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa7); + break; case UC_FOR_ALL: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_2), T(KP_0), T(KP_0), T(KP_ENTER), END - ); + unicode_action_function(0x22, 0x00); + break; case UC_GREEK_CAPITAL_LETTER_TAU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa4); + break; case UC_VULGAR_FRACTION_ONE_QUARTER: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(C), T(KP_ENTER), END - ); + unicode_action_function(0x00, 0xbc); + break; case UC_GREEK_SMALL_LETTER_CHI: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(C), T(KP_7), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xc7); + break; case UC_GREEK_CAPITAL_LETTER_THETA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_8), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x98); + break; case UC_GREEK_SMALL_LETTER_IOTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(B), T(KP_9), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xb9); + break; case UC_GREEK_CAPITAL_LETTER_LAMDA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(B), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9b); + break; case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_7), T(F), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x7f); + break; case UC_GREEK_CAPITAL_LETTER_UPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(A), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0xa5); + break; case UC_GREEK_CAPITAL_LETTER_MU: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(C), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x9c); + break; case UC_GREEK_CAPITAL_LETTER_EPSILON: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_5), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x95); + break; case UC_GREEK_CAPITAL_LETTER_GAMMA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_3), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x93); + break; case UC_SUBSCRIPT_SIX: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_2), T(KP_0), T(KP_8), T(KP_6), T(KP_ENTER), END - ); + unicode_action_function(0x20, 0x86); + break; case UC_GREEK_CAPITAL_LETTER_DELTA: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_3), T(KP_9), T(KP_4), T(KP_ENTER), END - ); + unicode_action_function(0x03, 0x94); + break; case UC_VULGAR_FRACTION_ONE_HALF: - return MACRODOWN( - D(LCTRL), D(LSHIFT), T(U), U(LCTRL), U(LSHIFT), T(KP_0), T(KP_0), T(B), T(D), T(KP_ENTER), END - ); - default: - break; - } + unicode_action_function(0x00, 0xbd); + break; + default: + break; } return MACRO_NONE; }; diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md index 1dc019ab0..2c9e0a837 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md @@ -2,14 +2,15 @@ Compile this file to a `keymap.c` file using `compile_keymap.py` - compile_keymap.py keymaps/german-manuneo/keymap.md + python compile_keymap.py keymaps/german-manuneo/keymap.md + +Tested with python 2.7 and python 3.4 # Layout Config { "layout": "ergodox_ez", - "includes_dir": "quantum/", "keymaps_includes": [ "ergodox_ez.h", "action_layer.h", @@ -17,8 +18,6 @@ Compile this file to a `keymap.c` file using `compile_keymap.py` "keymap_extras/keymap_german.h", ], "key_prefixes": ["DE_", "KC_"], - "filler": "-+.'!x", - "separator": "|", "macros": { // TODO: implement macros // "MUC": "", @@ -41,7 +40,7 @@ Compile this file to a `keymap.c` file using `compile_keymap.py` !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y | '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - | | |LGUI|LALT|LCTL| !LALT| |LEFT|DOWN|RGHT| + | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT| '------------------------' '------------------------' .-----------. .-----------. |INS |TG(2)| !M(UM)|DELT | @@ -187,46 +186,3 @@ http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html | | | | ! | | | '-----------------' '-----------------' - -## Layer 7 - - .------------------------------------.------------------------------------. - | | | | | | | | | | | | | | | - !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - | | | | | | | | | | | | | | | - !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | |-----!-----! | | | | | | - !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | | | | | | | | | | - '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------' '------------------------' - .-----------. .-----------. - | | | ! | | - .-----+-----+-----! !-----+-----+-----. - ! ! | | ! | ! ! - ! ! !-----! !-----! ! ! - | | | | ! | | | - '-----------------' '-----------------' - - -## Layer 8 - - .------------------------------------.------------------------------------. - | | | | | | | | | | | | | | | - !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - | | | | | | | | | | | | | | | - !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | |-----!-----! | | | | | | - !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | | | | | | | | | | - '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - | | | | | | ! | | | | | - '------------------------' '------------------------' - .-----------. .-----------. - | | | ! | | - .-----+-----+-----! !-----+-----+-----. - ! ! | | ! | ! ! - ! ! !-----! !-----! ! ! - | | | | ! | | | - '-----------------' '-----------------' -- cgit v1.2.3-24-g4f1b From 22691de580da46c09ba9024f9543e43e115ce2b6 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Sun, 3 Apr 2016 21:46:32 +0200 Subject: add indent to generated keymap --- .../keymaps/german-manuneo/compile_keymap.py | 37 ++++- .../ergodox_ez/keymaps/german-manuneo/keymap.c | 178 ++++++++++----------- 2 files changed, 123 insertions(+), 92 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py index 3d2667276..7076a6ecb 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py @@ -43,6 +43,9 @@ KEYBOARD_LAYOUTS = { ] } +ROW_INDENTS = { + 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0] +} BLANK_LAYOUTS = [ # Compact Layout @@ -591,16 +594,43 @@ def unicode_macro_cases(config): ) -def iter_keymap_lines(keymap): +def iter_keymap_lines(keymap, row_indents=None): + col_widths = {} + col = 0 + # first pass, figure out the column widths + prev_row_index = None + for code, row_index in keymap.values(): + if row_index != prev_row_index: + col = 0 + if row_indents: + col = row_indents[row_index] + col_widths[col] = max(len(code), col_widths.get(col, 0)) + prev_row_index = row_index + col += 1 + + # second pass, yield the cell values + col = 0 prev_row_index = None for key_index in sorted(keymap): code, row_index = keymap[key_index] if row_index != prev_row_index: + col = 0 yield "\n" + if row_indents: + for indent_col in range(row_indents[row_index]): + pad = " " * (col_widths[indent_col] - 4) + yield (" /*-*/" + pad) + col = row_indents[row_index] + else: + yield pad yield " {}".format(code) if key_index < len(keymap) - 1: yield "," + # This will be yielded on the next iteration when + # we know that we're not at the end of a line. + pad = " " * (col_widths[col] - len(code)) prev_row_index = row_index + col += 1 def iter_keymap_parts(config, keymaps): @@ -628,11 +658,12 @@ def iter_keymap_parts(config, keymaps): # comment layer_lines = config['layer_lines'][layer_name] prefixed_lines = " * " + " * ".join(layer_lines) - yield "/*\n{}*/\n".format(prefixed_lines) + yield "/*\n{} */\n".format(prefixed_lines) # keymap codes keymap = keymaps[layer_name] - keymap_lines = "".join(iter_keymap_lines(keymap)) + row_indents = ROW_INDENTS.get(config['layout']) + keymap_lines = "".join(iter_keymap_lines(keymap, row_indents)) yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines) yield "};\n\n" diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c index 92b712bd8..d8911af41 100644 --- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c +++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c @@ -127,22 +127,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE| * '-----------------' '-----------------' -*/ + */ [L0] = KEYMAP( - MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, - MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, - MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, - MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, - KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, - KC_INS, TG(2), - KC_APP, - KC_BSPC, KC_LSFT, KC_ESC, - DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, - TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, - DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS, - KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, - KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, - M(UM), KC_DELT, + MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, + MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, + MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, + MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, + KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_INS, TG(2), + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_APP, + /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_LSFT, KC_ESC, + DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, + TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z, + /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS, + KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y, + /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, + M(UM), KC_DELT, KC_PGUP, KC_PGDN, KC_ENTER, KC_SPACE ), @@ -165,21 +165,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L1] = KEYMAP( - KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, - KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, - KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, + KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, + KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, - KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, - DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, - KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, - KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, + KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, + /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, + KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -203,21 +203,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L2] = KEYMAP( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL, - KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS, - KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS, - KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS, - KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL, + KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS, + /*-*/ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS, + KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS, + /*-*/ /*-*/ KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -241,24 +241,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L3] = KEYMAP( - KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL), - KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS, - KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET), - KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL), + KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS, + KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET), + KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), 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, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS, + KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS, + KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), 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, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS, - KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS, - M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS, - KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), 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 ), /* * .------------------------------------.------------------------------------. @@ -279,24 +279,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L4] = KEYMAP( - KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS, - KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS, - KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON), - KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), 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, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS, - KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA), - M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA), - KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON), + KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), 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, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS, + KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA), + /*-*/ M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA), + KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI), + /*-*/ /*-*/ 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 ), /* * .------------------------------------.------------------------------------. @@ -317,24 +317,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L5] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS, - KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON), - KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA), - M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS, - KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI), - 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, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON), + KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA), + /*-*/ M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS, + KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI), + /*-*/ /*-*/ 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 ), /* * .------------------------------------.------------------------------------. @@ -355,21 +355,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ! ! !-----! !-----! ! ! * | | | | ! | | | * '-----------------' '-----------------' -*/ + */ [L6] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_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 -- cgit v1.2.3-24-g4f1b From a90d68739a29debe93bdf9e26f2c126e8eca46e9 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 3 Apr 2016 16:00:10 -0400 Subject: music mode file --- keyboard/preonic/Makefile | 4 +- keyboard/preonic/keymaps/default/keymap.c | 2 +- keyboard/preonic/keymaps/lock/keymap.c | 2 +- keyboard/preonic/preonic.c | 16 +- keyboard/preonic/preonic.h | 4 +- keyboard/preonic/preonic_music.hex | 1713 +++++++++++++++++++++++++++++ 6 files changed, 1725 insertions(+), 16 deletions(-) create mode 100644 keyboard/preonic/preonic_music.hex diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 89c48e50a..664aff732 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# AUDIO_ENABLE = YES # Audio output on port C6 +MIDI_ENABLE = YES # MIDI controls +AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 392197f1d..5099b6581 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -88,7 +88,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -void * matrix_init_user(void) { +void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); play_notes(&start_up, 9, false); diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c index e253f2581..cfb7f0803 100644 --- a/keyboard/preonic/keymaps/lock/keymap.c +++ b/keyboard/preonic/keymaps/lock/keymap.c @@ -99,7 +99,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; -void * matrix_init_user(void) { +void matrix_init_user(void) { init_notes(); play_notes(&start_up, 9, false); } diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c index a678f7b09..e9ececb6d 100644 --- a/keyboard/preonic/preonic.c +++ b/keyboard/preonic/preonic.c @@ -1,16 +1,16 @@ #include "preonic.h" __attribute__ ((weak)) -void * matrix_init_user(void) { +void matrix_init_user(void) { }; __attribute__ ((weak)) -void * matrix_scan_user(void) { +void matrix_scan_user(void) { }; -void * matrix_init_kb(void) { +void matrix_init_kb(void) { #ifdef BACKLIGHT_ENABLE backlight_init_ports(); #endif @@ -24,13 +24,9 @@ void * matrix_init_kb(void) { DDRE |= (1<<6); PORTE |= (1<<6); - if (matrix_init_user) { - (*matrix_init_user)(); - } + matrix_init_user(); }; -void * matrix_scan_kb(void) { - if (matrix_scan_user) { - (*matrix_scan_user)(); - } +void matrix_scan_kb(void) { + matrix_scan_user(); }; diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h index 42d212329..6cfe14726 100644 --- a/keyboard/preonic/preonic.h +++ b/keyboard/preonic/preonic.h @@ -44,7 +44,7 @@ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \ } -void * matrix_init_user(void); -void * matrix_scan_user(void); +void matrix_init_user(void); +void matrix_scan_user(void); #endif diff --git a/keyboard/preonic/preonic_music.hex b/keyboard/preonic/preonic_music.hex new file mode 100644 index 000000000..603693bff --- /dev/null +++ b/keyboard/preonic/preonic_music.hex @@ -0,0 +1,1713 @@ +:100000000C9410030C9454030C9454030C94540358 +:100010000C9454030C9454030C9454030C94540304 +:100020000C9454030C9454030C9410170C94E21782 +:100030000C94BD290C9454030C9454030C94540355 +:100040000C9454030C9454030C9454030C945403D4 +:100050000C9454030C942A2A0C9454030C945403C7 +:100060000C9454030C9454030C9454030C945403B4 +:100070000C9454030C9454030C9454030C945403A4 +:100080000C94440E0C9454030C9454030C94540399 +:100090000C9454030C9454030C9454030C94540384 +:1000A0000C9454030C9454030C9454030763423689 +:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9 +:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD +:1000D0000000803F08000000BE922449123EABAAF7 +:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52 +:1000F000AA3E00000000BF000000803F000000009A +:1001000000084178D3BB4387D1133D190E3CC3BDD2 +:100110004282AD2B3E68EC8276BED98FE1A93E4C7F +:1001200080EFFFBE01C4FF7F3F00000000003500EC +:100130001E001F00200021002200230024002500B3 +:10014000260027002A002B0014001A0008001500C2 +:1001500017001C0018000C00120013002A002900D0 +:1001600004001600070009000A000B000D000E0035 +:100170000F0033003400E1001D001B0006001900D1 +:10018000050011001000360037003800280000304C +:10019000E000E200E30003522C002C000452500067 +:1001A000510052004F0035001E001F0020002100AA +:1001B0002200230024002500260027002A002B000F +:1001C00014001A00090013000A000D000F001800A7 +:1001D0001C0033002A002900040015001600170037 +:1001E00007000B00110008000C0012003400E100B1 +:1001F0001D001B000600190005000E00100036004F +:100200003700380028000030E000E200E30003522D +:100210002C002C0004525000510052004F003500B9 +:100220001E001F00200021002200230024002500C2 +:10023000260027002A002B00340036003700130068 +:100240001C0009000A00060015000F002A00290002 +:1002500004001200080018000C0007000B00170033 +:10026000110016003800E100330014000D000E00EC +:100270001B00050010001A0019001D0028000030A6 +:10028000E000E200E30003522C002C000452500076 +:10029000510052004F0035001E001F0020002100B9 +:1002A0002200230024002500260027002A00350212 +:1002B0001E021F0220022102220223022402250222 +:1002C000260227022A0001003A003B003C003D00C4 +:1002D0003E003F002D022E022F02300231020100AB +:1002E00040004100420043004400450000530153D8 +:1002F0000253005001000100010001000100010053 +:10030000010001000100AB00AA00A900AE00350009 +:100310001E001F00200021002200230024002500D1 +:10032000260027002A0035001E001F0020002100A3 +:100330002200230024002500260027002A000100B7 +:100340003A003B003C003D003E003F002D002E00E7 +:100350002F00300031000100400041004200430006 +:1003600044004500005301530253005001000100B6 +:100370000100010001000100010001000100AB00CB +:10038000AA00A900AE00006000600060006000608C +:10039000006000600060006000600060006000605D +:1003A000006000600060006000600060006000604D +:1003B000006000600060006000600060006000603D +:1003C000006000600060006000600060006000602D +:1003D000006000600060006000600060006000601D +:1003E00000600060006000300100010001000100B9 +:1003F00001000100010000600060006000602A034D +:1004000054006800650020005000720065006F0015 +:100410006E006900630020004B00650079006200F7 +:100420006F0061007200640000002C034F00720036 +:10043000740068006F006C0069006E006500610068 +:10044000720020004B006500790062006F006100BF +:100450007200640073000000040309040902D00064 +:10046000060100A0FA0904000001030101000921AE +:1004700011010001223F000705810308000A090459 +:1004800001000103010200092111010001224D00B8 +:100490000705820308000A090402000103000000A6 +:1004A0000921110100012236000705830308000A13 +:1004B00009040300020300000009211101000122C8 +:1004C0002000070584032000010705040320000124 +:1004D00009040400000101000009240100010900D1 +:1004E00001050904050002010300000724010001C1 +:1004F0004100062402010100062402020200092430 +:1005000003010301020100092403020401010100A7 +:100510000905060240000500000525010101090545 +:1005200085024000050000052501010312011001AC +:1005300000000008EDFE61600100010200010631CB +:10054000FF0974A1010975150025FF952075088123 +:10055000020976150025FF952075089102C0050156 +:100560000980A101850216010026B7001A01002AA0 +:10057000B700751095018100C0050C0901A1018526 +:1005800003160100269C021A01002A9C0275109590 +:10059000018100C005010902A1010901A1000509AD +:1005A000190129051500250195057501810295019F +:1005B000750381010501093009311581257F9502F7 +:1005C0007508810609381581257F95017508810612 +:1005D000050C0A38021581257F950175088106C032 +:1005E000C005010906A101050719E029E715002545 +:1005F00001950875018102950175088101050819A9 +:100600000129059505750191029501750391010573 +:1006100007190029FF150025FF950675088100C000 +:1006200011241FBECFEFDAE0DEBFCDBF04B603FE5C +:1006300024C08091050490910604A0910704B09114 +:1006400008048730904BA740B04BB9F410920504D2 +:1006500010920604109207041092080414BE84B786 +:10066000877F84BF88E10FB6F89480936000109272 +:1006700060000FBEE0E0F8E3099512E0A0E0B1E011 +:10068000E6ECF9E602C005900D92A832B107D9F761 +:1006900014E0A8E2B2E001C01D92A530B107E1F775 +:1006A0000E94C8130C94E1340C94000061111DC029 +:1006B000FC018281882351F085EE0E94901E0E94E9 +:1006C000BC3080E290E0A0E0B0E007C085EE0E9480 +:1006D000581F81E090E0A0E0B0E08093E1029093A9 +:1006E000E202A093E302B093E40280E090E0089578 +:1006F0000E94370E40E050E069E070E080E091E059 +:100700000C94880F08950E948B036E9A769A0C942D +:1007100078030C948203279A2F988FEF9FEF909382 +:100720008700809386008AE08093800089E180932F +:1007300081000C94653081110BC080918000877F0F +:100740008093800010928D0010928C002F98089555 +:100750002F98833041F480918000886080938000DE +:100760008FEF9FEF12C0909180009860909380006F +:1007700023E030E0281B3109220F331F8FEF9FEF5A +:1007800002C0969587952A95E2F790938D00809305 +:100790008C0008958B3B910568F4883A910530F5FB +:1007A000853A9105C0F48430910598F4019709F0D9 +:1007B0006FC071C0803E910508F46AC0883E910503 +:1007C00040F09C01205F31092031310508F060C004 +:1007D0005CC09C01A1C0853A910509F45FC0863ACE +:1007E000910509F45EC023E830E496C0883A91058B +:1007F00009F45AC0893A910509F459C08A3A910519 +:1008000009F458C08B3A910509F457C08C3A910508 +:1008100009F456C08D3A910509F455C0803B910505 +:1008200009F454C08E3A910509F453C08F3A9105EA +:1008300009F452C0813B910509F451C0823B9105F6 +:1008400009F450C0833B910509F44FC0843B9105E6 +:1008500009F44EC0853B910509F44DC0863B9105D6 +:1008600009F44CC0873B910509F44BC0883B9105C6 +:1008700009F44AC0893B910509F449C08A3B9105B6 +:1008800009F048C02AE236E447C09C01306544C004 +:1008900020E030E041C021E030E03EC021E830E41B +:1008A0003BC022E830E438C022EE34E435C029EE03 +:1008B00034E432C02AEE34E42FC025EB34E42CC0FB +:1008C00026EB34E429C027EB34E426C02CEC34E4D6 +:1008D00023C02DEC34E420C023E835E41DC02AE811 +:1008E00035E41AC022E935E417C024E935E414C020 +:1008F00021E236E411C023E236E40EC024E236E4FD +:100900000BC025E236E408C026E236E405C027E243 +:1009100036E402C020E034E4C90108959CE0799FE8 +:10092000F00111249CE3899FE00DF11D1124E60FD5 +:10093000F11DEE0FFF1FE25DFE4F25913491C901BD +:100940000895880F991F82559040FC01259134919C +:10095000C9010895880F991F825D9E4FFC01259162 +:100960003491C90108950E948E049C019A958115C5 +:100970009F4110F4C9010895C90190528115904119 +:1009800028F4C9019F700E94AA040895C9019053D8 +:100990008115904120F4C9019927906C0895C901EF +:1009A0009054409728F4C9018F709927946D089549 +:1009B000203180E4380719F480E091ED0895213169 +:1009C00090E4390719F480E090ED0895223140E475 +:1009D000340719F480E092ED0895233180E438075C +:1009E00019F480E093ED0895211590E53907A1F4FD +:1009F0000E948B2340E065E088E491E00E94880F2C +:100A00002FEF44E38CE0215040408040E1F700C0EC +:100A100000000E944F2A1EC1213090E5390731F4B1 +:100A20008091F10281608093F10214C1C901905557 +:100A30008115904108F062C0432F55274F7055270C +:100A400041305105F9F4C90174E0880F991F7A9576 +:100A5000E1F788279370B901E3E0660F771FEA9505 +:100A6000E1F760767727862B972B9C6823703327D6 +:100A700002C0440F551F2A95E2F74F715527842B6A +:100A8000952B08954230510529F4922F8827816FC4 +:100A9000906A089543305105B9F4C90153E0880FB5 +:100AA000991F5A95E1F7807E97702370332741E0B4 +:100AB00050E002C0440F551F2A95E2F74F715527A9 +:100AC000842B952B9C6808954430510589F5C90104 +:100AD00043E0880F991F4A95E1F7807E9770237055 +:100AE000332741E050E002C0440F551F2A95E2F73A +:100AF0004F715527842B952B9A680895C9019056FC +:100B00008115904118F4C901906F0895C90190575B +:100B10008115904120F4C9019F7090620895C90128 +:100B200090588115904120F4C9019F70906A0895F2 +:100B3000203E3105E0F4203C310568F521333105D4 +:100B400009F475C048F42932310509F46BC02A3222 +:100B5000310509F07BC075C02933310501F1223818 +:100B60003105E9F02533310509F070C051C0233E4D +:100B70003105B1F140F4203E3105D1F0223E31057E +:100B800009F064C01CC0263E310579F1273E3105CD +:100B900009F05CC038C0C9010E94A1040895809189 +:100BA000020380FD02C081FF51C080EE90E04FC083 +:100BB0008091020380FFF9CF89E390E048C08091E3 +:100BC000020382FF0AC08091020384FF03C080E019 +:100BD00090E03DC083EE90E03AC082EE90E037C0F6 +:100BE0008091020382FFEFCFF8CF8091020383FF51 +:100BF00007C08091020384FDEACF87EE90E027C012 +:100C000086EE90E024C08091020383FFF2CFF8CFFC +:100C10008091020385FF03C089E290E018C085E35C +:100C200090E015C08091020385FDF9CFF5CF80914A +:100C3000020386FF03C08AE290E009C081E390E0EE +:100C400006C08091020386FDF9CFF5CFC9010E944D +:100C5000CA030895089508950C942B065F926F922D +:100C60007F928F929F92AF92BF92CF92DF92EF923C +:100C7000FF920F931F93CF93DF93CDB7DEB72A97E1 +:100C80000FB6F894DEBF0FBECDBF9E012F5F3F4F62 +:100C90004E018BE0880E911C60E070E000E010E0F7 +:100CA000E12CF12CC12CD12CA12CB12C8AE0782E76 +:100CB000622E532E41E050E0E3E9F1E0A62DB52D80 +:100CC000872D01900D928A95E1F7F901819191911B +:100CD0009F01FC01E07FFF27E032F10559F48F709E +:100CE0009927FA0102C0EE0FFF1F8A95E2F7AE2A9C +:100CF000BF2A37C0E033F10559F48F709927FA0104 +:100D000002C0EE0FFF1F8A95E2F7CE2ADF2A29C024 +:100D1000E034F10559F48F709927FA0102C0EE0F03 +:100D2000FF1F8A95E2F7EE2AFF2A1BC0E035F10586 +:100D300059F48F709927FA0102C0EE0FFF1F8A95B0 +:100D4000E2F70E2B1F2B0DC0E036F10551F48F702A +:100D50009927FA0102C0EE0FFF1F8A95E2F76E2B6A +:100D60007F2B2815390509F0A7CF94B18A2D8095DE +:100D7000892384B985B18A2985B997B18C2D80954D +:100D8000892387B988B18C2988B99AB18E2D80952D +:100D900089238AB98BB18E298BB99DB1802F80951B +:100DA00089238DB98EB1802B8EB990B3862F809513 +:100DB000892380BB81B3862B81BB2A960FB6F8941A +:100DC000DEBF0FBECDBFDF91CF911F910F91FF907E +:100DD000EF90DF90CF90BF90AF909F908F907F90DB +:100DE0006F905F9008955F926F927F928F929F9223 +:100DF000AF92BF92CF92DF92EF92FF920F931F9329 +:100E0000CF93DF93CDB7DEB768970FB6F894DEBF08 +:100E10000FBECDBF85B7806885BF85B7806885BFA9 +:100E20000E942E069E012F5F3F4F4E0189E1880EE2 +:100E3000911C60E070E000E010E0E12CF12CC12C8E +:100E4000D12CA12CB12C98E1792E622E532E41E0A9 +:100E500050E0EDE9F1E0A62DB52D872D01900D9222 +:100E60008A95E1F7F901819191919F01FC01E07F61 +:100E7000FF27E032F10559F48F709927FA0102C07B +:100E8000EE0FFF1F8A95E2F7AE2ABF2A37C0E03384 +:100E9000F10559F48F709927FA0102C0EE0FFF1F78 +:100EA0008A95E2F7CE2ADF2A29C0E034F10559F409 +:100EB0008F709927FA0102C0EE0FFF1F8A95E2F7A3 +:100EC000EE2AFF2A1BC0E035F10559F48F709927EF +:100ED000FA0102C0EE0FFF1F8A95E2F70E2B1F2BBF +:100EE0000DC0E036F10551F48F709927FA0102C068 +:100EF000EE0FFF1F8A95E2F76E2B7F2B2815390521 +:100F000009F0A7CF94B18A2D8095892384B985B142 +:100F10008A2985B997B18C2D8095892387B988B1A5 +:100F20008C2988B99AB18E2D809589238AB98BB185 +:100F30008E298BB99DB1802F809589238DB98EB173 +:100F4000802B8EB990B3862F8095892380BB81B387 +:100F5000862B81BB10922902109228021092330234 +:100F60001092320210922B0210922A021092350235 +:100F70001092340210922D0210922C02109237021D +:100F80001092360210922F0210922E021092390205 +:100F900010923802109231021092300210923B02ED +:100FA00010923A0268960FB6F894DEBF0FBECDBF1E +:100FB000DF91CF911F910F91FF90EF90DF90CF9035 +:100FC000BF90AF909F908F907F906F905F900C94A8 +:100FD00083035F926F927F928F929F92AF92BF92A4 +:100FE000CF92DF92EF92FF920F931F93CF93DF93F5 +:100FF000CDB7DEB7A2970FB6F894DEBF0FBECDBF58 +:101000007E0149E1E40EF11C22E3C22E22E0D22E41 +:101010005E0153E2A50EB11C3AE0532E470101E0F8 +:1010200010E048E1642E55E0752EE3E9F1E0D401CB +:10103000852D01900D928A95E1F7F70181919191AB +:101040007F019C01207F33272032310589F424B1B0 +:101050008F709927A80102C0440F551F8A95E2F7A7 +:10106000CA01242B24B995B18095892385B94FC035 +:101070002033310589F427B18F709927F80102C018 +:10108000EE0FFF1F8A95E2F7CF012E2B27B998B1FB +:101090008095892388B93BC02034310589F42AB171 +:1010A0008F709927A80102C0440F551F8A95E2F757 +:1010B000CA01242B2AB99BB1809589238BB927C0FB +:1010C0002035310589F42DB18F709927F80102C0C0 +:1010D000EE0FFF1F8A95E2F7CF012E2B2DB99EB19F +:1010E000809589238EB913C02036310581F420B351 +:1010F0008F709927A80102C0440F551F8A95E2F707 +:10110000CA01242B20BB91B38095892381BB50EA6F +:101110005A95F1F7BE016F5F7F4F80E090E020E0CD +:1011200030E0EDE9F1E0DE011196462D01900D92DF +:101130004A95E1F7FB0141915191BF01FA01E07F2E +:10114000FF27E032F10511F4E3B113C0E033F105FC +:1011500011F4E6B10EC0E034F10511F4E9B109C0B3 +:10116000E035F10511F4ECB104C0E036F105B9F455 +:10117000EFB1F0E04F70552702C0F595E7954A951D +:10118000E2F7E0FD08C0A801022E02C0440F551F7F +:101190000A94E2F702C040E050E0842B952B2F5FC9 +:1011A0003F4F2C30310509F0BCCFF6012081318151 +:1011B0002817390721F091838083709270010E9473 +:1011C0002E06F2E0CF0ED11CEA14FB0409F02DCF5D +:1011D000809170018823A1F1815080937001882350 +:1011E00039F08FE99FE00197F1F700C0000028C0B7 +:1011F00080913202909133029093290280932802C9 +:10120000809134029091350290932B0280932A02B0 +:10121000809136029091370290932D0280932C0298 +:10122000809138029091390290932F0280932E0280 +:1012300080913A0290913B02909331028093300268 +:101240000E94890381E0A2960FB6F894DEBF0FBE1C +:10125000CDBFDF91CF911F910F91FF90EF90DF9065 +:10126000CF90BF90AF909F908F907F906F905F9046 +:101270000895E82FF0E0EE0FFF1FE85DFD4F80813D +:10128000918108950895CF92DF92EF92FF920F938C +:101290001F93CF93DF93CDB7DEB7CC5BD2400FB6B1 +:1012A000F894DEBF0FBECDBF8C01862F642F88233C +:1012B00079F0F80192812FE7482F992329F084E0F3 +:1012C00093E00E94EC1904C084E093E00E94FC19B2 +:1012D000F80180818B3091F59181943009F0A8C29A +:1012E0009281809173019923B1F08F5F8093730194 +:1012F00096E4E5EBF1E0DE01A958BD4F01900D92B7 +:101300009A95E1F7E0917101F0917201EE0FFF1FE4 +:1013100027E732E036C096E4E5EBF1E0DE01AF5CB2 +:10132000BD4F01900D929A95E1F7E0917101F09116 +:101330007201EE0FFF1F21E332E093C08A3009F003 +:10134000CBC0F8019181943009F072C292818091F2 +:101350007301992309F473C081508093730196E45B +:10136000E5EBF1E0DE01A551BE4F01900D929A959B +:10137000E1F7E0917101F0917201EE0FFF1F2BEE8A +:1013800031E02C0F3D1FE20FF31F60817181680F68 +:10139000711D882777FD8095982F0E94003220E0EC +:1013A00030E040E451E40E94653120E030E040E864 +:1013B00050E40E94FD309B01AC0160E070E080E0F1 +:1013C00090E40E94173321E230ED42E053E40E94A2 +:1013D000B4324CE050E00E94E30F20E04BE760E0C5 +:1013E00084E093E00E94DC1920E04BE761E084E0B8 +:1013F00093E00E94DC1920E04BE762E084E093E098 +:101400000E94DC1920E04BE763E084E093E00E9457 +:10141000DC1920E04BE764E084E093E0C454DD4F46 +:101420000FB6F894DEBF0FBECDBFDF91CF911F91F5 +:101430000F91FF90EF90DF90CF900C94DC1996E421 +:10144000E5EBF1E0DE01AB55BE4F01900D929A95B0 +:10145000E1F7E0917101F0917201EE0FFF1F25EAB3 +:1014600031E02C0F3D1FE20FF31F60817181680F87 +:10147000711D882777FD8095982F0E94003220E00B +:1014800030E040E451E40E94653120E030E040E883 +:1014900050E40E94FD309B01AC0160E070E080E010 +:1014A00090E40E94173321E230ED42E053E40E94C1 +:1014B000B4320E94130DC454DD4F0FB6F894DEBF52 +:1014C0000FBECDBFDF91CF911F910F91FF90EF9095 +:1014D000DF90CF900C94E60C893009F0D3C0F8016E +:1014E0009181943009F0A4C19281992309F4A0C19B +:1014F0008091710190917201019690937201809395 +:10150000710120E04BE760E084E093E00E94DC1989 +:1015100020E04BE761E084E093E00E94DC1920E0EA +:101520004BE762E084E093E00E94DC1920E04BE7A7 +:1015300063E084E093E00E94DC1920E04BE764E084 +:1015400084E093E00E94DC190E94E60C00E010E0C9 +:10155000E6E4FE2E80917301E5EBF1E0DE01A15A95 +:10156000BE4F9F2D01900D929A95E1F7E091710188 +:10157000F0917201E00FF11FEE0FFF1F2FE531E038 +:101580002C0F3D1FE20FF31F60817181680F711DE9 +:10159000882777FD8095982F0E94003220E030E068 +:1015A00040E451E40E94653120E030E040E850E43E +:1015B0000E94FD309B01AC0160E070E080E090E4AF +:1015C0000E94173321E230ED42E053E40E94B4322E +:1015D0004CE050E00E94E30F3FEF87EE93E0315084 +:1015E00080409040E1F700C0000080917301E5EB7E +:1015F000F1E0DE01A75EBE4F9F2D01900D929A95FE +:10160000E1F7E0917101F0917201E00FF11FEE0F2F +:10161000FF1F29E131E02C0F3D1FE20FF31F608116 +:101620007181680F711D882777FD8095982F0E9422 +:10163000003220E030E040E451E40E94653120E0D7 +:1016400030E040E850E40E94FD309B01AC0160E0D6 +:1016500070E080E090E40E94173321E230ED42E038 +:1016600053E40E94B4320E94130D8FEF9CE7019760 +:10167000F1F700C000000F5F1F4F0830110509F09F +:1016800069CF94C1883009F0D3C0F80191819430BA +:1016900009F0CEC09281992309F4CAC080917101EA +:1016A000909172010197909372018093710120E0F3 +:1016B0004BE760E084E093E00E94DC1920E04BE718 +:1016C00061E084E093E00E94DC1920E04BE762E0F7 +:1016D00084E093E00E94DC1920E04BE763E084E0C3 +:1016E00093E00E94DC1920E04BE764E084E093E0A3 +:1016F0000E94DC190E94E60C00E010E056E4F52E92 +:1017000080917301E5EBF1E0DE01AD52BF4F9F2DFB +:1017100001900D929A95E1F7E0917101F0917201BB +:10172000E00FF11FEE0FFF1F23ED30E02C0F3D1FE8 +:10173000E20FF31F60817181680F711D882777FDAB +:101740008095982F0E94003220E030E040E451E480 +:101750000E94653120E030E040E850E40E94FD3016 +:101760009B01AC0160E070E080E090E40E941733E0 +:1017700021E230ED42E053E40E94B4324CE050E00C +:101780000E94E30F3FEF87EE93E03150804090409E +:10179000E1F700C0000080917301E5EBF1E0DE01AC +:1017A000A357BF4F9F2D01900D929A95E1F7E091BD +:1017B0007101F0917201E00FF11FEE0FFF1F2DE894 +:1017C00030E02C0F3D1FE20FF31F60817181680F25 +:1017D000711D882777FD8095982F0E94003220E0A8 +:1017E00030E040E451E40E94653120E030E040E820 +:1017F00050E40E94FD309B01AC0160E070E080E0AD +:1018000090E40E94173321E230ED42E053E40E945D +:10181000B4320E94130D8FEF9CE70197F1F700C0DF +:1018200000000F5F1F4F0830110509F069CFBEC0DF +:10183000F801228190917301222309F45DC026E40E +:10184000E5EBF1E0DE01A95BBF4F01900D922A9517 +:10185000E1F7E0917101F0917201E80FF11DEE0FD7 +:10186000FF1F27E430E02C0F3D1FE20FF31F6081C4 +:101870007181690F711D882777FD8095982F0E94CF +:10188000003220E030E040E451E40E9465316B0119 +:101890007C01F801818165E070E0681B710988278F +:1018A00077FD8095982F0E9400329B01AC01C70103 +:1018B000B6010E94FD309B01AC0160E070E080E069 +:1018C00090E40E94173321E230ED42E053E40E949D +:1018D000B4324FE050E0C454DD4F0FB6F894DEBF91 +:1018E0000FBECDBFDF91CF911F910F91FF90EF9071 +:1018F000DF90CF900C94E30F26E4E5EBF1E0DE01FE +:10190000119601900D922A95E1F7E0917101F09105 +:101910007201E80FF11DEE0FFF1F21E030E02C0FE8 +:101920003D1FE20FF31F60817181690F711D8827D0 +:1019300077FD8095982F0E94003220E030E040E44F +:1019400051E40E9465316B017C01F801818165E001 +:1019500070E0681B7109882777FD8095982F0E9499 +:1019600000329B01AC01C701B6010E94FD309B0112 +:10197000AC0160E070E080E090E40E94173321E267 +:1019800030ED42E053E40E94B432C454DD4F0FB650 +:10199000F894DEBF0FBECDBFDF91CF911F910F91A5 +:1019A000FF90EF90DF90CF900C94130DC454DD4F57 +:1019B0000FB6F894DEBF0FBECDBFDF91CF911F9160 +:1019C0000F91FF90EF90DF90CF90089510928702D3 +:1019D00010928602809171008D7F809371008091BA +:1019E00090008F77809390001092480210924702E7 +:1019F0001092800210928102109282021092830251 +:101A000010927F0210927E02EEE5F2E0AEE4B2E0C8 +:101A100011921192119211921D921D9282E0EE3755 +:101A2000F807B1F708956F927F928F929F92AF92CD +:101A3000BF92CF92DF92EF92FF920F931F93CF93BB +:101A4000DF936B017C010EE712E04CE5A42E42E02F +:101A5000B42EC7E0D0E0A7019601F80192918291DF +:101A6000729162918F010E946131882349F0219720 +:101A7000F2E0AF1AB108CF3F8FEFD80761F734C05B +:101A8000F8011082118212821382F50111821082F4 +:101A9000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01AA +:101AA000AA0FBB1FA25BBD4FCE011AC00196448195 +:101AB0005581668177814083518362837383148269 +:101AC00015821682178212962D913C9113971196CA +:101AD0003C932E9313961C921E9212973496129654 +:101AE0008730910519F7C3CF8091860290918702C4 +:101AF000019797FD05C0909387028093860204C0EA +:101B00001092870210928602E0918602F09187027D +:101B10003097C9F4809171008D7F8093710080911E +:101B200090008F7780939000109280021092810233 +:101B3000109282021092830210927F0210927E0213 +:101B40001092470285C03197DF01AA0FBB1FAA0F71 +:101B5000BB1FA25ABD4FCD90DD90ED90FC90EE0FD3 +:101B6000FF1FE25BFD4FC081D181609080027090C9 +:101B700081028090820290908302A7019601662DD7 +:101B8000772D882D992D0E94613187FF25C0262D44 +:101B9000372D482D592DC701B6010E94FC3020E099 +:101BA00030E04AEF54E40E9465315B018C012A2D3C +:101BB0003B2D402F512F662D772D882D992D0E947A +:101BC000FD303B014C01A7019601772D992D0E9414 +:101BD0006131181664F72EC0A7019601662D772D86 +:101BE000882D992D0E94B032181634F5A701960160 +:101BF000662D772D882D992D0E94FC3020E030E055 +:101C00004AEF54E40E9465315B018C012A2D3B2D83 +:101C1000402F512F662D772D882D992D0E94FC3055 +:101C20003B014C01A7019601772D992D0E94B032FE +:101C300087FFECCF10924D02C0928002D0928102B9 +:101C4000E0928202F0928302D0937F02C0937E02E0 +:101C5000DF91CF911F910F91FF90EF90DF90CF9088 +:101C6000BF90AF909F908F907F906F9008953E9A15 +:101C7000E1E7F0E080818D7F808382E080939000B7 +:101C80008AE18093910008951F920F920FB60F92F0 +:101C90001124CF92DF92EF92FF922F933F934F93B5 +:101CA0005F936F937F938F939F93AF93BF93CF93E4 +:101CB000DF93EF93FF9380914702882309F479C063 +:101CC00020E030E0A9016091800270918102809152 +:101CD0008202909183020E94B03218160CF069C003 +:101CE00020E030E040E251E46091490270914A0204 +:101CF00080914B0290914C020E94B0321816BCF4B5 +:101D00008091840290918502019660918602709183 +:101D100087020E949C3490938502809384021092E3 +:101D2000490210924A0210924B0210924C02C0914A +:101D30008402D0918502CC0FDD1FCC0FDD1FC25A6B +:101D4000DD4F288139814A815B8160E074E284E75C +:101D50009BE40E9465310E94CD317093970060939F +:101D60009600288139814A815B8160E074E284E7D2 +:101D70009BE40E9465310E94CD3175956795709303 +:101D800099006093980020E030E040E85FE36091C4 +:101D9000490270914A0280914B0290914C020E943C +:101DA000FD306093490270934A0280934B029093F6 +:101DB0004C0280914802882309F493C0C0904302EA +:101DC000D0904402E0904502F090460220E030E0DE +:101DD000A901C701B6010E94B0321816F4F4A70198 +:101DE000960160E074E284E79BE40E9465310E9402 +:101DF000CD317093970060939600A701960160E043 +:101E000074E284E79BE40E9465310E94CD317595B0 +:101E10006795709399006093980060913D0270916E +:101E20003E026F5F7F4F70933E0260933D0280E001 +:101E300090E00E94FE3120913F023091400240919B +:101E40004102509142020E94B03287FD4AC0809107 +:101E50003C028F5F80933C029091F1038917A0F0C0 +:101E60008091F603882319F010923C020DC08091F6 +:101E700071008D7F80937100809190008F778093A7 +:101E80009000109248022DC0E091F203F091F3030C +:101E900080913C0298E0899FE00DF11D1124808122 +:101EA0009181A281B3818093430290934402A093D5 +:101EB0004502B093460220E030E040E85EE36481F2 +:101EC0007581868197810E94B43260933F0270933E +:101ED0004002809341029093420210923E0210927F +:101EE0003D02FF91EF91DF91CF91BF91AF919F9113 +:101EF0008F917F916F915F914F913F912F91FF90C3 +:101F0000EF90DF90CF900F900FBE0F901F9018951D +:101F10000F931F93CF93DF9300D0CDB7DEB78C0123 +:101F200080914702882331F04A8369830E94E60C3E +:101F300069814A8181E0809348021093F303009302 +:101F4000F2036093F1034093F6031092490210925A +:101F50004A0210924B0210924C0210923C02F8017D +:101F600040815181628173814093430250934402C6 +:101F7000609345027093460220E030E040E85EE363 +:101F800064817581868197810E94B43260933F029B +:101F900070934002809341029093420210923E025D +:101FA00010923D0280917100826080937100809157 +:101FB00090008068809390000F900F90DF91CF91F8 +:101FC0001F910F9108956F927F928F929F92AF927F +:101FD000BF92CF92DF92EF92FF920F931F93CF9316 +:101FE000DF936B017C01EA018091480281110E941C +:101FF000E60C81E08093470220E030E0A901C701B0 +:10200000B6010E94B03218160CF09AC0609080029F +:1020100070908102809082029090830220E030E0F4 +:10202000A901662D772D882D992D0E94613181118E +:1020300028C0C0928002D0928102E0928202F09287 +:102040008302D0937F02C0937E028091860290919A +:102050008702FC01EE0FFF1FEE0FFF1FE25AFD4F3C +:10206000C082D182E282F382FC01EE0FFF1FE25BAD +:10207000FD4FD183C083019690938702809386029F +:102080005FC0A7019601662D772D882D992D0E949E +:10209000613187FF25C0262D372D482D592DC701C9 +:1020A000B6010E94FC3020E030E04AEF54E40E9488 +:1020B00065315B018C012A2D3B2D402F512F662D60 +:1020C000772D882D992D0E94FD303B014C01A701F1 +:1020D0009601772D992D0E946131181664F7A9CFCA +:1020E000A7019601662D772D882D992D0E94B0327B +:1020F00018160CF09ECFA7019601662D772D882D1E +:10210000992D0E94FC3020E030E04AEF54E40E9418 +:1021100065315B018C012A2D3B2D402F512F662DFF +:10212000772D882D992D0E94FC303B014C01A70191 +:102130009601772D992D0E94B03287FFECCF79CF91 +:10214000809171008260809371008091900080681E +:1021500080939000DF91CF911F910F91FF90EF90AE +:10216000DF90CF90BF90AF909F908F907F906F90B7 +:102170000895809191020895CF93DF9300D01F922C +:10218000CDB7DEB72091FB03243021F523E029836E +:102190009B838A832093E9008FEF06C095ED9A9583 +:1021A000F1F70000882329F09091E800815095FF15 +:1021B000F5CF8091E80085FF0DC040E050E063E07E +:1021C00070E0CE0101960E94A6148091E8008E77FF +:1021D0008093E8000F900F900F90DF91CF910895BA +:1021E000CF93DF9300D01F92CDB7DEB72091FB03D2 +:1021F000243029F522E029839B838A8383E080931E +:10220000E9008FEF06C095ED9A95F1F7000088235D +:1022100029F09091E800815095FFF5CF8091E8007A +:1022200085FF0DC040E050E063E070E0CE01019614 +:102230000E94A6148091E8008E778093E8000F90AA +:102240000F900F90DF91CF9108952091FB032430E0 +:10225000F9F422E02093E9002FEF06C035ED3A951E +:10226000F1F70000222329F03091E800215035FFDA +:10227000F5CF2091E80025FF0BC040E050E065E07D +:1022800070E00E94A6148091E8008E778093E800A9 +:102290000895CF93DF93EC018091FB03843041F5E7 +:1022A00081E08093E9008FEF06C095ED9A95F1F7F4 +:1022B0000000882329F09091E800815095FFF5CF28 +:1022C0008091E80085FF14C040E050E068E070E0D5 +:1022D000CE010E94A6148091E8008E778093E800DA +:1022E00088E0FE01A9E8B2E001900D928A95E1F73D +:1022F000DF91CF910895BF92CF92DF92EF92FF923C +:102300000F931F93CF93DF937C01B62EE90100E07A +:1023100010E0C42ED12C0BC04991202F2B0D2F770C +:102320004F776FE0C7010E94DC190F5F1F4F0C153C +:102330001D0594F3DF91CF911F910F91FF90EF90C6 +:10234000DF90CF90BF90089570E06F5F7F4F6F7008 +:1023500077270C94DC190F931F93CF93C42F63300E +:10236000710509F04AC0842F807F803849F1803997 +:1023700009F043C0622F6F7770E080E090E00E9428 +:10238000003220E030E040E451E40E9465319B01DE +:10239000AC0160E070E080E090E40E9417330F77BA +:1023A00010E023E0159507952A95E1F72DEC3CEC1C +:1023B00042E053E40E94B432A8010E94E30F1DC022 +:1023C000622F6F7770E080E090E00E94003220E0A2 +:1023D00030E040E451E40E9465319B01AC0160E0D3 +:1023E00070E080E090E40E9417332DEC3CEC42E07A +:1023F00053E40E94B4320E94130DCC3F29F4CF91D4 +:102400001F910F910C94E60CCF911F910F9108959D +:102410000F931F93CF93DF93CDB7DEB727970FB6F8 +:10242000F894DEBF0FBECDBF8C0114C08A810E941C +:10243000B6199A819D839B819E839C819F83811184 +:102440001EC089818430B1F08730A1F08630A1F0C0 +:102450008530A1F0BE016F5F7F4F84E791E00E945D +:10246000231D8111E3CF84E791E00E94141D0E9497 +:102470008F190DC083E003C082E001C081E0AE018E +:102480004B5F5F4F682FC8010E94491AE3CF279620 +:102490000FB6F894DEBF0FBECDBFDF91CF911F9175 +:1024A0000F910895EF92FF920F93CF93DF9300D097 +:1024B00000D000D0CDB7DEB77B014A832B830C83DD +:1024C000842F2E834D830E94B6192E814D81811158 +:1024D0001BC082E0E816F10479F083E0E816F1040D +:1024E00021F0EA94EF2821F50BC0073F11F487E0B3 +:1024F00001C084E089830BC0273FD9F786E0FACF7B +:10250000473FB9F785E0F6CF42954F704983BE014A +:102510006F5F7F4F84E791E00E94D91C84E791E0D0 +:102520000E94F71C84E791E00E94141D0E948F19FD +:1025300026960FB6F894DEBF0FBECDBFDF91CF91C8 +:102540000F91FF90EF9008958091FA03811109C0D7 +:102550000E9495160E94F2168091E200846080939A +:10256000E20008951092FA030895089508950C94D6 +:10257000B229809192028F5F8093920262E30E945F +:102580007C34911135C0109292028091930288237D +:1025900079F18091FB03843049F58091E9008F70D7 +:1025A0009091EC0090FF02C090E801C090E0982B61 +:1025B00084E08093E9008091EB0080FF14C080915B +:1025C000EE0087FD03C00FC01092F1008091E8007B +:1025D00085FDFACF8091E80080FF05C08091E8007A +:1025E0008E778093E8009F709093E9001092930299 +:1025F000089542E061EC81E00E940B1642E061EC3C +:1026000082E00E940B1642E061EC83E00E940B1610 +:1026100042E261EC84E00E940B1642E361E885E04F +:102620000E940B1642E360E886E00C940B16809142 +:10263000FD03833009F454C030F4813071F08230EE +:1026400009F0A5C08CC08A3009F479C08B3009F438 +:102650005FC0893009F09BC020C08091FC03813AA3 +:1026600009F095C08091E800877F8093E800809111 +:10267000000490910104892B21F060E080E090E05B +:1026800003C068E089E892E070E00E944415809100 +:10269000E8008B778093E80008958091FC038132F5 +:1026A00009F075C08091000490910104892B09F014 +:1026B0006EC08091E800877F8093E80005C080911C +:1026C000FB03882309F463C08091E80082FFF7CF01 +:1026D0008091F100809391028091E8008B7753C044 +:1026E0008091FC03813A09F052C0809100049091DE +:1026F0000104892B09F04BC08091E800877F80930B +:10270000E8008091E80080FFFCCF80918A0136C00C +:102710008091FC038132D9F58091000490910104ED +:10272000892BA9F58091E800877F8093E8000E94BB +:1027300042168091FE0380938A010C948B23809132 +:10274000FC03813221F58091E800877F8093E800C7 +:102750000E9442168091FF03809388020895809121 +:10276000FC03813AA1F48091E800877F8093E80020 +:102770008091E80080FFFCCF809188028093F10077 +:102780008091E8008E778093E8000C9442160895BB +:1027900084E093E00E94181A62E572E184E093E01D +:1027A0000E946E1A68E072E184E093E00E94721A5F +:1027B00084B7877F84BF88E10FB6F8948093600068 +:1027C000109260000FBE90E080E80FB6F8948093FE +:1027D0006100909361000FBE0E949C1D0E9495169F +:1027E0000E94F2168091E20084608093E200789467 +:1027F0006BEA71E184E093E00E94141A64EA71E1EB +:1028000084E093E00E940C1A6BE771E184E093E0AE +:102810000E94101A0E94370E0E948F190E949E1D5E +:1028200080E891E00E94481D0BC00E946C298091B5 +:10283000F903882329F00E949A2981110E9490149B +:102840008091FB03853089F384E093E00E94211C92 +:102850000E94A81DF5CF292F332723303105B1F071 +:102860004CF42130310509F44DC02230310509F016 +:102870004EC007C02132310541F12232310591F1BC +:1028800046C0E0EDF0E08CE594E045C0992781304A +:10289000910569F08230910589F0892B09F037C0E4 +:1028A000E8E5F4E0E491F0E088E594E034C0EAE2A1 +:1028B000F4E0E491F0E08AE294E02DC0EEEFF3E082 +:1028C000E491F0E08EEF93E026C0643000F5E62F4F +:1028D000F0E0EE0FFF1FE550FE4F80819181E9E0AF +:1028E000F0E019C0643098F4E62FF0E0DF01AA0FA1 +:1028F000BB1FAD5FBD4F8D919C91E55FFD4FE081AA +:10290000F0E009C0E2E1F0E08CE295E004C0E0E034 +:10291000F0E080E090E0DA018D939C93CF01089580 +:1029200080E189BD82E189BD09B400FEFDCF8091BF +:10293000D8008F7D8093D8008091E00082608093E2 +:10294000E0008091E00081FDFCCF0895BF92CF921E +:10295000DF92EF92FF920F931F93CF93DF937C014F +:102960008B01EA010E946316B82E811133C02097B3 +:1029700031F028813981021B130BE20EF31EC12CAA +:10298000D12C23C08091E80085FD15C08091E8001E +:102990008E778093E800209749F0888199818C0D8B +:1029A0009D1D9983888325E0B22E14C00E94631672 +:1029B000882359F00EC0F70181917F018093F100C7 +:1029C00001501109FFEFCF1ADF0A01151105D1F6E9 +:1029D00001C0B82E8B2DDF91CF911F910F91FF90E9 +:1029E000EF90DF90CF90BF900895BF92CF92DF928B +:1029F000EF92FF920F931F93CF93DF937C018B0194 +:102A0000EA010E946316B82E811133C0209731F07D +:102A100028813981021B130BE20EF31EC12CD12C2D +:102A200023C08091E80085FD15C08091E8008B7778 +:102A30008093E800209749F0888199818C0D9D1D35 +:102A40009983888345E0B42E14C00E9463168823BE +:102A500059F00EC08091F100F70181937F01015080 +:102A60001109FFEFCF1ADF0A01151105D1F601C0D8 +:102A7000B82E8B2DDF91CF911F910F91FF90EF908A +:102A8000DF90CF90BF9008954091020450910304CD +:102A90004617570748F06115710539F44091E80071 +:102AA0004E774093E80001C0BA01FC0140E033C01A +:102AB0008091FB03882309F444C0853009F443C0A6 +:102AC0008091E80083FD41C08091E80082FD33C021 +:102AD0008091E80080FF1FC09091F3008091F20088 +:102AE000392F20E0A901482BCA0106C0419140932B +:102AF000F1006150710901966115710519F0883076 +:102B00009105A0F341E0089709F040E08091E800CA +:102B10008E778093E8006115710551F64111C8CF99 +:102B20000AC08091FB03882361F0853061F08091B9 +:102B3000E80083FD0AC08091E80082FFF2CF80E0C8 +:102B4000089582E0089583E0089581E0089540911A +:102B50000204509103044617570748F061157105A8 +:102B600039F44091E8004E774093E80001C0BA0183 +:102B7000FC0140E034C08091FB03882309F445C088 +:102B8000853009F444C08091E80083FD42C0809103 +:102B9000E80082FD34C08091E80080FF20C0909161 +:102BA000F3008091F200392F20E0A901482BCA01DF +:102BB00007C044914093F10031966150710901962C +:102BC0006115710519F08830910598F341E0089777 +:102BD00009F040E08091E8008E778093E80061156D +:102BE000710549F64111C7CF0AC08091FB038823C4 +:102BF00061F0853061F08091E80083FD0AC080912A +:102C0000E80082FFF2CF80E0089582E0089583E03B +:102C1000089581E00895982F2CC09093E9009817AB +:102C200039F07091EC002091ED005091F00003C05C +:102C3000242F762F50E021FD02C09F5F1AC03091F3 +:102C4000EB003E7F3093EB003091ED003D7F309301 +:102C5000ED003091EB0031603093EB007093EC00AD +:102C60002093ED005093F0002091EE0027FDE5CF7A +:102C700007C0973090F28F708093E90081E008954B +:102C800080E008958091FC0387FD05C08091E800F5 +:102C900080FF0EC012C08091E80082FD05C08091C7 +:102CA000FB038111F8CF08958091E8008B7708C06D +:102CB0008091FB038111EACF08958091E8008E771F +:102CC0008093E80008958091E4009091E50045E646 +:102CD0002091EC0020FD1FC023C02091FB03222384 +:102CE00091F0253091F02091EB0025FD10C020914E +:102CF000E4003091E5002817390751F34150C9012C +:102D000039F784E0089582E0089583E0089581E032 +:102D1000089580E008952091E80020FFDECFF9CFEC +:102D20002091E80022FFD9CFF4CF0E9403170E9420 +:102D30000B17E0EEF0E0808181608083E8EDF0E049 +:102D400080818F77808319BCA7EDB0E08C918E7F56 +:102D50008C9380818F7E80831092FA0308950F9365 +:102D60001F93CF93DF930E9403170E940B17C8EDA8 +:102D7000D0E088818F778883888180688883888184 +:102D80008F7D888319BC1092FB031092F703109279 +:102D9000F9031092F80300EE10E0F80180818B7FB8 +:102DA000808388818160888342E060E080E00E94C7 +:102DB0000B16E1EEF0E080818E7F8083E2EEF0E0A2 +:102DC000808181608083808188608083F801808138 +:102DD0008E7F8083888180618883DF91CF911F916E +:102DE0000F910895E8EDF0E080818F7E8083E7ED1C +:102DF000F0E080818160808384E082BF81E0809305 +:102E0000FA030C94AF16E8EDF0E080818E7F8083AA +:102E10001092E20008951092DA001092E1000895F5 +:102E20001F920F920FB60F9211242F933F934F933F +:102E30005F936F937F938F939F93AF93BF93EF9322 +:102E4000FF938091E10082FF0BC08091E20082FF3E +:102E500007C08091E1008B7F8093E1000E94B9124E +:102E60008091DA0080FF1FC08091D80080FF1BC0D6 +:102E70008091DA008E7F8093DA008091D90080FF04 +:102E80000DC080E189BD82E189BD09B400FEFDCF9E +:102E900081E08093FB030E94A41205C019BC10922C +:102EA000FB030E94B2128091E10080FF19C0809163 +:102EB000E20080FF15C08091E2008E7F8093E200E7 +:102EC0008091E20080618093E2008091D80080626E +:102ED0008093D80019BC85E08093FB030E94B61252 +:102EE0008091E10084FF30C08091E20084FF2CC01B +:102EF00080E189BD82E189BD09B400FEFDCF8091EA +:102F0000D8008F7D8093D8008091E1008F7E8093E0 +:102F1000E1008091E2008F7E8093E2008091E200E8 +:102F200081608093E2008091F703882311F084E0B0 +:102F300007C08091E30087FF02C083E001C081E009 +:102F40008093FB030E94B7128091E10083FF29C0A8 +:102F50008091E20083FF25C08091E100877F80930C +:102F6000E10082E08093FB031092F7038091E1007F +:102F70008E7F8093E1008091E2008E7F8093E2005B +:102F80008091E20080618093E20042E060E080E0B6 +:102F90000E940B168091F00088608093F0000E94E0 +:102FA000B512FF91EF91BF91AF919F918F917F915A +:102FB0006F915F914F913F912F910F900FBE0F90A6 +:102FC0001F9018951F920F920FB60F9211242F93F6 +:102FD0003F934F935F936F937F938F939F93AF93A1 +:102FE000BF93CF93EF93FF938091E9008F709091FF +:102FF000EC0090FF02C090E801C090E0C92FC82B00 +:103000001092E9008091F000877F8093F00078941F +:103010000E9426181092E9008091F0008860809349 +:10302000F000CF70C093E900FF91EF91CF91BF9175 +:10303000AF919F918F917F916F915F914F913F9150 +:103040002F910F900FBE0F901F9018951F93CF9345 +:10305000DF93CDB7DEB7AC970FB6F894DEBF0FBEE7 +:10306000CDBFECEFF3E08091F100819324E0E430F8 +:10307000F207C9F70E9417138091E80083FF37C158 +:103080008091FC039091FD03953009F488C038F4D9 +:103090009130B1F170F0933009F029C131C098300E +:1030A00009F4F8C0993009F404C1963009F01FC141 +:1030B0009DC0803821F0823809F019C108C0809184 +:1030C000F8039091F903992389F082600FC08091F1 +:1030D0000004909101048F7099278093E9008091FA +:1030E000EB0085FB882780F91092E9009091E800B9 +:1030F000977F9093E8008093F1001092F100D5C083 +:10310000882319F0823009F0F2C08F7121F08230EB +:1031100009F0EDC00BC08091FE03813009F0E7C0DB +:10312000933009F080E08093F9032FC08091FE0373 +:1031300081112BC080910004909101048F70992718 +:10314000009709F4D4C08093E9002091EB0020FFA0 +:103150001CC02091FD03233021F48091EB0080629C +:1031600012C09091EB0090619093EB0021E030E071 +:1031700001C0220F8A95EAF72093EA001092EA0034 +:103180008091EB0088608093EB001092E9008091C1 +:10319000E800877F8093E8000E944216A8C0811152 +:1031A000A6C08091FE039091FF038F779927182F77 +:1031B0009091E3009078982B9093E3008091E80041 +:1031C000877F8093E8000E9442168091E80080FF8C +:1031D000FCCF8091E30080688093E300112311F01D +:1031E00083E001C082E08093FB0381C0805882307D +:1031F00008F07DC08091FE039091FF038C3D23E099 +:10320000920779F583E08A838AE289834FB7F8943D +:10321000DE01139620E03EE051E2E32FF0E0509310 +:103220005700E49120FF03C0E295EF703F5FEF701D +:103230008E2F90E0EA3010F0C79601C0C0968D93B3 +:103240009D932F5F243149F74FBF8091E800877F1E +:103250008093E8006AE270E0CE0101960E94441576 +:1032600013C0AE01455D5F4F609100040E942B14B6 +:103270000097E9F12091E800277F2093E800BC0146 +:103280008BA59CA50E94A7158091E8008B77809361 +:10329000E8002DC0803859F58091E800877F809341 +:1032A000E8008091F7038093F1008091E8008E7729 +:1032B00071CF81111CC09091FE039230C0F48091B7 +:1032C000E800877F8093E8009093F7030E944216FE +:1032D0008091F703811104C08091E30087FF02C051 +:1032E00084E001C081E08093FB030E94F912809189 +:1032F000E80083FF0AC08091E800877F8093E800A0 +:103300008091EB0080628093EB00AC960FB6F8944E +:10331000DEBF0FBECDBFDF91CF911F910895CF9338 +:103320008091FB038823B1F08091E9008F70909128 +:10333000EC0090FF02C090E801C090E0C92FC82BBC +:103340001092E9008091E80083FD0E942618CF705A +:10335000C093E900CF910895881F8827881F08959A +:1033600091E0883F08F490E0892F0895982F907F8E +:10337000903B99F038F4903981F0903A71F09038A0 +:10338000C9F40BC0903DA1F018F4903C99F410C022 +:10339000903E19F0903F71F402C083E00895E82F49 +:1033A000E15FEF3038F4F0E0E15FFD4F8081089598 +:1033B00082E0089580E008950F932F774F776F7024 +:1033C000606BDC01ED91FC91022F242F462F63E00E +:1033D00070E009950F9108950F932F774F776F70D5 +:1033E0006069DC01ED91FC91022F242F462F63E0F0 +:1033F00070E009950F9108950F932F774F776F70B5 +:103400006068DC01ED91FC91022F242F462F63E0D0 +:1034100070E009950F910895FC017383628308950C +:10342000FC01738F628F0895FC01758F648F08957E +:10343000CF93DF93EC011DA21FA21EA2BC01685D09 +:103440007F4F40EC88519F4F0E94551C1B821A826F +:103450001D821C821F821E82198618861B861A8670 +:103460001D861C861F861E86198A188A1B8A1A8A40 +:103470001D8A1C8A1F8A1E8A198E188E1B8E1A8E10 +:103480001D8E1C8E1F8E1E8E19A218A2DF91CF9149 +:103490000895CF92DF92FF920F931F93CF93DF9304 +:1034A0001F92CDB7DEB7F62E6A018C0108511F4F6F +:1034B00008C0F60161916F01C80149830E945C1C3C +:1034C00049818C2D841B8F15A0F30F90DF91CF9134 +:1034D0001F910F91FF90DF90CF900895FC017183B1 +:1034E00060830895FC0171A360A30895AF92BF9219 +:1034F000CF92DF92EF92FF920F931F93CF93DF93C0 +:1035000000D01F92CDB7DEB77C016B01142FB22E15 +:10351000A02EDC0195968C9195978430F1F45A9603 +:10352000ED91FC915B97309709F4D8C0CB010197DE +:1035300063E070E00E948834DB01AA0FBB1FA60F76 +:10354000B71F49832A830B834C2D4A1B9E012F5F93 +:103550003F4FBD01C7010995B1C06230710509F443 +:1035600053C06330710529F06130710509F09CC0CA +:1035700083C0842F807F803A01F130F48038B9F025 +:10358000803909F0ABC00DC0803EE9F0803F09F101 +:10359000803B09F0A3C0D7011296ED91FC911397DF +:1035A00023C0D7011496ED91FC9115971DC0D7014A +:1035B0001696ED91FC91179717C0D7011896ED91CB +:1035C000FC91199711C0D7011A96ED91FC911B97A8 +:1035D0000BC0423F09F082C0D7011C96ED91FC91CF +:1035E0001D97309731F47AC0309709F477C0123FB5 +:1035F00021F42A2D4B2D62EF04C0612F6F702A2D0C +:103600004B2DC70109955AC0842F807F803D59F00A +:10361000803F79F0803C09F061C0D7011E96ED91A2 +:10362000FC911F9719C0D7015096ED91FC915197CD +:1036300013C0433F31F4D7015296ED91FC9153975B +:1036400008C0413F09F04AC0D7015496ED91FC9162 +:103650005597309741F442C0309709F43FC0133F6B +:1036600011F0113F19F44B2D612F03C0612F6F70C2 +:103670004B2DC701099522C0842F0E94B0198823C1 +:1036800031F0D7015696ED91FC91579707C0163F40 +:1036900029F5D7015896ED91FC9159973097F1F0A3 +:1036A000612FC70109950AC064307105A8F416C0DE +:1036B0000A2D2B2D412FB601C7010995D7015E9622 +:1036C000ED91FC915F97309789F00A2D2B2D412FBA +:1036D000B601C70109950AC0C12CD12CD7015C964F +:1036E000ED91FC915D97309719F7E8CF0F900F900F +:1036F0000F90DF91CF911F910F91FF90EF90DF908E +:10370000CF90BF90AF900895EF92FF920F931F93C9 +:10371000CF93DF93EC01162F862F0E94B0198823D8 +:1037200069F0FDA081E08DA300E020E0412F61E081 +:1037300070E0CE010E94761AFDA27CC0812F0E940B +:10374000AC194DA1882309F440C0443029F01AA3D4 +:1037500021E030E03FA32EA3812F0E94B6198130D3 +:1037600031F070F0823051F0833059F507C08DA3ED +:1037700000E020E0412F61E070E01EC08DA35AC040 +:10378000103F19F0173FE9F404C084E08DA31AA399 +:103790003FC02EA13FA1C90163E070E00E948834C0 +:1037A0008C0F9D1FFC0112A3B9016F5F7F4F7FA398 +:1037B0006EA30CA12BA14AA1CE010E94761A1DA2D4 +:1037C00039C01DA21FA21EA235C0442399F12EA10B +:1037D0003FA1C90163E070E00E9488347C01FE01D2 +:1037E000E80FF91F12A3B9016F5F7F4F7FA36EA38C +:1037F0008130910591F082E0E816F104D9F40CA132 +:103800002BA14AA1CE010E94761A8DA1843091F09D +:1038100081E090E09FA38EA30DC0423059F400E0F8 +:103820002BA14AA1CE010E94761A8DA1843011F0FD +:10383000FFA2EEA2DF91CF911F910F91FF90EF9029 +:103840000895CF92DF92EF92FF920F931F93CF9341 +:10385000DF93EC01E8A1F9A1309709F009958E01F9 +:1038600008511F4FC8010E948E1CE12CF12CC82E5C +:10387000D12C0FC060E0C8010E94A21C682FCE01AD +:103880000E94841B61E0C8010E94B31C8FEFE81AFC +:10389000F80AEC14FD0470F3DF91CF911F910F91A2 +:1038A000FF90EF90DF90CF900895FC0142837483E6 +:1038B00063831182108208950F931F93CF93DF9338 +:1038C000EC01062F0E94D41C182F298130E0C90179 +:1038D00001966A8170E00E949C34488150E0841710 +:1038E000950729F4812F0E94D71C80E012C0EB813C +:1038F000FC81E20FF31F00832981822F90E0019663 +:103900006A8170E00E949C348983812F0E94D71CB9 +:1039100081E0DF91CF911F910F910895CF93DF93B5 +:10392000EC010E94D41C29819881291710F0C22F24 +:1039300002C0CA81C20FC91B0E94D71C8C2FDF9105 +:10394000CF910895FC012081862F90E0820F911D78 +:10395000628170E00E949C340380F481E02DE80FC6 +:10396000F91F808108950F931F93CF93DF931F92C8 +:10397000CDB7DEB78C0169830E94D41C482FF801B3 +:1039800080816981262F30E0280F311D6281C901B5 +:1039900070E00E949C348083842F0F90DF91CF9140 +:1039A0001F910F910C94D71C8FB7F89408958FBF77 +:1039B0000895FC01CB012091FB032430B1F4218157 +:1039C0002F702093E90040E050E064E070E00E9436 +:1039D000A61481110BC09091E80095FD07C090914D +:1039E000E8009E779093E800089582E00895209182 +:1039F000FB032430A9F4FC0181818F708093E900DE +:103A00003091F3002091F200932F80E0822B892BDC +:103A100049F08091E8008E778093E8000C9463165B +:103A200082E0089580E008952091FB03243051F452 +:103A3000FC0121812F702093E9002091E80020FDF6 +:103A40000C94F71C0895FC01CB012091FB0324305A +:103A500011F080E0089526812F702093E9002091D5 +:103A6000E80022FFF6CF2091E80025FFF2CF40E0EA +:103A700050E064E070E00E94F5148091E80085FD5C +:103A800005C08091E8008B778093E80081E008957D +:103A900090939502809394020895E0919402F0919E +:103AA0009502309721F00190F081E02D099480E09B +:103AB0000895E0919402F0919502309721F00280F0 +:103AC000F381E02D09940895E0919402F09195021C +:103AD000309721F00480F581E02D0994089520911C +:103AE0009602309197028217930771F09093970294 +:103AF00080939602E0919402F0919502309721F024 +:103B00000680F781E02D0994089520919802309164 +:103B100099028217930771F090939902809398020B +:103B2000E0919402F0919502309721F00084F185A4 +:103B3000E02D0994089508950C949B1D0E94E62998 +:103B40000E94F3060E94BA2A0C9465300C942C064D +:103B50005F926F927F928F929F92AF92BF92CF921D +:103B6000DF92EF92FF920F931F93CF93DF93CDB726 +:103B7000DEB72A970FB6F894DEBF0FBECDBF0E9406 +:103B8000E9079AE9C92E92E0D92E00E010E0AA24B4 +:103B9000A394B12C502E802F0E9439093C01F601CC +:103BA000E190F1906F01E826F926E114F10431F477 +:103BB0000F5F1F4F0530110569F73AC08091F10280 +:103BC00081FD0E94420920E030E04501022E02C042 +:103BD000880C991C0A94E2F7C4018E219F21892B3D +:103BE00009F12E835F826820792081E0672809F43B +:103BF00080E088870E94EF298160782F9A878987E3 +:103C00004E815F8168858A850E94611EF801EE0FF2 +:103C1000FF1FE656FD4F808191818825992591836C +:103C2000808316C02F5F3F4F2C30310571F6C0CF17 +:103C30008FEF89838A831B820E94EF298160782F0E +:103C40009D838C8349815A816B818D810E94611E85 +:103C50000E94A72D1091A4020E944D1D1817D9F0A3 +:103C60000E944D1D8093A4022A960FB6F894DEBFE1 +:103C70000FBECDBFDF91CF911F910F91FF90EF90BD +:103C8000DF90CF90BF90AF909F908F907F906F907C +:103C90005F900C94A61D2A960FB6F894DEBF0FBE57 +:103CA000CDBFDF91CF911F910F91FF90EF90DF90EB +:103CB000CF90BF90AF909F908F907F906F905F90CC +:103CC0000895CF93DF93CDB7DEB72B970FB6F89457 +:103CD000DEBF0FBECDBF4F83588769877A878B873A +:103CE000DE01119686E0FD0111928A95E9F785E0E3 +:103CF000FE01379601900D928A95E1F749815A812C +:103D00006B817C818D819E810E944A262B960FB605 +:103D1000F894DEBF0FBECDBFDF91CF910895089517 +:103D2000CF93C82F882309F4C1C0823859F40E9468 +:103D30004D1D81FDBBC089E30E94B1280E943D2931 +:103D400089E30CC0833879F40E944D1D80FDAEC01C +:103D500083E50E94B1280E943D2983E50E94D32873 +:103D6000CF910C943D29843859F40E944D1D82FD59 +:103D70009DC087E40E94B1280E943D2987E4EECFD0 +:103D80008450813A48F48C2F0E94C72F81118EC035 +:103D90008C2F0E94B128E4CF8C2F805E883050F4A5 +:103DA000C77081E090E001C0880FCA95EAF70E94D1 +:103DB000F428D6CF8C2F855A833078F4C53A29F071 +:103DC000C63A31F482E890E005C081E890E002C094 +:103DD00083E890E0CF910C946F1D8C2F885A83312B +:103DE00008F064C0C83A39F1C93A41F1CA3A49F118 +:103DF000CB3A51F1CC3A59F1CD3A61F1C03B69F17E +:103E0000CE3A71F1CF3A79F1C13B81F1C23B89F1F0 +:103E1000C33B91F1C43B99F1C53BA1F1C63BA9F16C +:103E2000C73BB1F1C83BB9F1C93BC1F1CA3BC9F5C8 +:103E30008AE292E038C082EE90E035C089EE90E0F0 +:103E400032C08AEE90E02FC085EB90E02CC086EB6C +:103E500090E029C087EB90E026C08CEC90E023C076 +:103E60008DEC90E020C083E891E01DC08AE891E0ED +:103E70001AC082E991E017C084E991E014C081E2A0 +:103E800092E011C083E292E00EC084E292E00BC0A7 +:103E900085E292E008C086E292E005C087E292E007 +:103EA00002C080E090E0CF910C94851DCF910895E1 +:103EB000882309F44DC0823859F40E944D1D81FFBA +:103EC00047C089E30E94B1280E943D2989E30CC0C4 +:103ED000833871F40E944D1D80FF3AC083E50E9433 +:103EE000B1280E943D2983E50E94D3280C943D29E6 +:103EF000843859F40E944D1D82FF2AC087E40E9435 +:103F0000B1280E943D2987E4EFCF982F9450913A31 +:103F100008F4EACF982F905E983058F4282F277035 +:103F200081E090E001C0880F2A95EAF70E94FA2804 +:103F3000DDCF982F955A933020F480E090E00C94D8 +:103F40006F1D885A833120F480E090E00C94851D29 +:103F50000895882321F00E94F4280C943D290895A7 +:103F6000882321F00E94FA280C943D290895BF92DD +:103F7000CF92DF92EF92FF920F931F93CF93DF9335 +:103F8000CDB7DEB727970FB6F894DEBF0FBECDBF13 +:103F90008C0185E0F801DE01119601900D928A9561 +:103FA000E1F7F801D080E180F280558152955F7091 +:103FB00083819481892B41F0FFEFEF1208C081E0EB +:103FC00090E0DF1631F003C081E090E002C080E0B5 +:103FD00090E080FD7CC3C8015E830E948F1ED98261 +:103FE000EA8289819A810E946E28B92E8F830E946D +:103FF0006D280E9495275E816F81FF2021F00E942D +:1040000011296F815E812B2D22952F7030E0253094 +:10401000310509F4E6C06CF4243031050CF0A2C07F +:104020004B2D407F8B2D8F70223031050CF045C019 +:1040300017C02C3031054CF42A3031050CF0E7C1A3 +:104040002830310509F043C3E5C02D30310509F4AE +:10405000BAC20CF4A2C22F30310509F038C323C311 +:10406000182F411101C002C01295107FFF2059F096 +:10407000112309F46BC2812F6F830E9404290E94CF +:104080003D296F8163C2862F0E94581F112309F4B6 +:104090001EC3812F0E940A2927960FB6F894DEBF0F +:1040A0000FBECDBFDF91CF911F910F91FF90EF9089 +:1040B000DF90CF90BF900C943D29403211F0829553 +:1040C000807F662319F0613071F523C0FF20B1F0C5 +:1040D000511101C032C0513081F527960FB6F894C6 +:1040E000DEBF0FBECDBFDF91CF911F910F91FF902B +:1040F000EF90DF90CF90BF900C942429511101C014 +:1041000003C0513009F4E3C28E830E9427298E81B7 +:104110009AC1FF2021F0563008F0D9C20EC05530A8 +:1041200008F0D5C290C1FF20C9F0552331F0F80145 +:10413000958190FF0BC29F70958327960FB6F894D8 +:10414000DEBF0FBECDBFDF91CF911F910F91FF90CA +:10415000EF90DF90CF90BF900C94A91F552309F4E6 +:1041600072C109C22B2D26952695237030E02115AA +:10417000310529F02130310509F0A9C219C0FF200D +:1041800021F0862F9B2D937002C080E090E027964F +:104190000FB6F894DEBF0FBECDBFDF91CF911F9158 +:1041A0000F91FF90EF90DF90CF90BF900C946F1D18 +:1041B000FF2021F0862F9B2D937002C080E090E0BD +:1041C00027960FB6F894DEBF0FBECDBFDF91CF911B +:1041D0001F910F91FF90EF90DF90CF90BF900C94C4 +:1041E000851D862FFF2019F00E94AD2C02C00E9471 +:1041F000152D27960FB6F894DEBF0FBECDBFDF9109 +:10420000CF911F910F91FF90EF90DF90CF90BF90D3 +:104210000C949C2D8B2D837009F079C0F11057C23E +:10422000262F229526952770220F220F862F8F701A +:10423000C82ED12CE12CF12C022E04C0CC0CDD1C9C +:10424000EE1CFF1C0A94D2F764FF10C06FE070E010 +:1042500080E090E004C0660F771F881F991F2A95A1 +:10426000D2F7609570958095909503C060E070E0FE +:10427000CB012B2D269526952370422F50E04230FE +:104280005105D9F04330510569F16C297D298E29FA +:104290009F294130510551F127960FB6F894DEBFA2 +:1042A0000FBECDBFDF91CF911F910F91FF90EF9087 +:1042B000DF90CF90BF900C94AA276C297D298E297E +:1042C0009F2927960FB6F894DEBF0FBECDBFDF91B2 +:1042D000CF911F910F91FF90EF90DF90CF90BF9003 +:1042E0000C94BC270E94AA27C701B60127960FB6D7 +:1042F000F894DEBF0FBECDBFDF91CF911F910F911C +:10430000FF90EF90DF90CF90BF900C949827FF2004 +:1043100019F08B2D817001C08695882309F4D7C1CF +:10432000262F229526952770220F220F862F8F7019 +:10433000C82ED12CE12CF12C022E04C0CC0CDD1C9B +:10434000EE1CFF1C0A94D2F764FF10C06FE070E00F +:1043500080E090E004C0660F771F881F991F2A95A0 +:10436000D2F7609570958095909503C060E070E0FD +:10437000CB012B2D269526952370422F50E04230FD +:104380005105D9F04330510569F16C297D298E29F9 +:104390009F294130510551F127960FB6F894DEBFA1 +:1043A0000FBECDBFDF91CF911F910F91FF90EF9086 +:1043B000DF90CF90BF900C9449286C297D298E29DD +:1043C0009F2927960FB6F894DEBF0FBECDBFDF91B1 +:1043D000CF911F910F91FF90EF90DF90CF90BF9002 +:1043E0000C945B280E944928C701B60127960FB696 +:1043F000F894DEBF0FBECDBFDF91CF911F910F911B +:10440000FF90EF90DF90CF90BF900C943728603FE3 +:1044100059F120F4603E08F494C008C0623F09F4EA +:1044200067C0F0F1633F09F08CC065C0162F1F70A4 +:104430008B2D8F71FF2021F00E94E227812F7DCEEE +:104440000E94FD27812F27960FB6F894DEBF0FBE7E +:10445000CDBFDF91CF911F910F91FF90EF90DF9033 +:10446000CF90BF900C94B01FFF20B1F0553008F0F2 +:104470002EC18B2D8F7127960FB6F894DEBF0FBE1D +:10448000CDBFDF91CF911F910F91FF90EF90DF9003 +:10449000CF90BF900C941C28563008F018C1E9CF7B +:1044A000FF2099F08B2D8F7127960FB6F894DEBF01 +:1044B0000FBECDBFDF91CF911F910F91FF90EF9075 +:1044C000DF90CF90BF900C94E2278B2D8F712796B1 +:1044D0000FB6F894DEBF0FBECDBFDF91CF911F9115 +:1044E0000F91FF90EF90DF90CF90BF900C94FD273D +:1044F000F110EBCFD7CFFF2099F08B2D8F7127963E +:104500000FB6F894DEBF0FBECDBFDF91CF911F91E4 +:104510000F91FF90EF90DF90CF90BF900C94D32736 +:1045200027960FB6F894DEBF0FBECDBFDF91CF91B7 +:104530001F910F91FF90EF90DF90CF90BF900C9460 +:10454000CE27FF20A9F0552309F4ACCF862F27965C +:104550000FB6F894DEBF0FBECDBFDF91CF911F9194 +:104560000F91FF90EF90DF90CF90BF900C94901E32 +:10457000552309F4AACF862F27960FB6F894DEBFED +:104580000FBECDBFDF91CF911F910F91FF90EF90A4 +:10459000DF90CF90BF900C94581F4B2D4F70C801E7 +:1045A0000E94560327960FB6F894DEBF0FBECDBF0C +:1045B000DF91CF911F910F91FF90EF90DF90CF90FF +:1045C000BF900C940027F11082C09B2D9F70492F43 +:1045D00050E04230510599F144F44115510569F01C +:1045E0004130510509F073C019C043305105C1F184 +:1045F0004430510509F06BC044C027960FB6F894BB +:10460000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10461000EF90DF90CF90BF900C94763027960FB636 +:10462000F894DEBF0FBECDBFDF91CF911F910F91E8 +:10463000FF90EF90DF90CF90BF900C948D30279635 +:104640000FB6F894DEBF0FBECDBFDF91CF911F91A3 +:104650000F91FF90EF90DF90CF90BF900C94A93016 +:1046600027960FB6F894DEBF0FBECDBFDF91CF9176 +:104670001F910F91FF90EF90DF90CF90BF900C941F +:10468000BC30862F27960FB6F894DEBF0FBECDBF85 +:10469000DF91CF911F910F91FF90EF90DF90CF901E +:1046A000BF900C94E0304B2D4F70C80127960FB689 +:1046B000F894DEBF0FBECDBFDF91CF911F910F9158 +:1046C000FF90EF90DF90CF90BF900C944309279616 +:1046D0000FB6F894DEBF0FBECDBFDF91CF911F9113 +:1046E0000F91FF90EF90DF90CF90BF9008950E94C0 +:1046F00011290E9421290E94E6280E943D290E943A +:10470000482E0E949C2D80E090E00E946F1D80E06A +:1047100090E00C94851D0E9401290C9477230E943F +:104720006E28292F22952F7030E02C3031054CF463 +:104730002A3031056CF4225031092230310590F4D1 +:1047400007C02C30310551F02F30310559F406C027 +:10475000803E10F0803F31F481E0089593FB88277C +:1047600080F9089580E00895CF93DF9300D000D0C2 +:104770001F92CDB7DEB70F900F900F900F900F9054 +:10478000DF91CF910895CF93DF9300D000D000D078 +:10479000CDB7DEB726960FB6F894DEBF0FBECDBFFD +:1047A000DF91CF9108951F93CF93DF93C091DB02E8 +:1047B00016E012C0D0E01C9FF0011D9FF00D1124E7 +:1047C000E555FD4F408151816281738184819581DE +:1047D0000E94C3232196C7708091DC02C813EACFE0 +:1047E000DF91CF911F9108954091A5025091A602AB +:1047F0006091A7027091A8028091A9029091AA02EB +:104800000C94C3230F931F93CF93DF938091AA023D +:1048100082958F7009F069C08091A702882309F4FE +:1048200064C0A091DB02D091DC02B091A502C091DE +:10483000A6028091A8029091A90221E030E0BF3F3A +:1048400011F020E030E0122FBC016095709506E079 +:104850004AC0009721F0CF3F29F4212F05C021E065 +:1048600030E002C020E030E020FD3BC04A2F50E0A5 +:10487000049FF001059FF00D1124E555FD4F2181A6 +:10488000C2132FC02081B2132CC02281211129C054 +:10489000238134812817390718F0281B390B02C0EF +:1048A000260F371F283C3105E0F48091AA028F7053 +:1048B00080618093AA0286E0849FF001859FF00DBD +:1048C0001124E055FD4F80818F708061808385EADF +:1048D00092E00E94B71FDF91CF911F910F910C942E +:1048E000D323AF5FA770AD13B4CFDF91CF911F91EA +:1048F0000F910895EF92FF920F931F93CF93DF9341 +:10490000CDB7DEB762970FB6F894DEBF0FBECDBF4E +:104910008C0185E0F801DE011D9601900D928A95CB +:10492000E1F7D8014C9111965C91119712966C9118 +:1049300012971396ED90FC9014977091A502E09158 +:10494000A6028091A8029091A902009739F0EF3F4A +:1049500041F421E030E07F3F31F003C021E030E05E +:1049600002C020E030E020FD5CC12091A70222239C +:1049700009F4F1C0E816F90628F09701281B390B55 +:10498000C90104C0809590958E0D9F1D883C9105AE +:1049900008F098C08091AA02982F907F09F064C017 +:1049A000E51314C0741312C0611110C08F708061C0 +:1049B0008093AA020E94F42385EA92E00E94B71F26 +:1049C0008091AA02D80115968C9343C1EF2839F043 +:1049D0005F3F41F481E090E04F3F31F003C081E060 +:1049E00090E002C080E090E080FD03C081E0862777 +:1049F00002C080E090E080FF2EC08091DB02209119 +:104A0000DC0236E013C090E0389FF001399FF00DD2 +:104A10001124E555FD4F7181571306C0708147136E +:104A200003C07281671317C0019687708213EBCFA2 +:104A300012C19F7059F0882309F40BC107C09F7001 +:104A400029F0F8019581907F09F403C1805E8830D8 +:104A500008F4FFC0D2C0662309F4FBC08091AA020B +:104A600081608093AA02F5C0E51308C0741306C0E4 +:104A7000611104C0D80115968C939DC04D875E8747 +:104A80008D859E856A8B0E948F236A89882309F40D +:104A9000B4C0662309F4B1C02091AA02822F829586 +:104AA0008F7090E002970CF4C6C08091A50290919F +:104AB000A60298878F831986FB86EA862C87CE010B +:104AC000079646C08091AA02982F907F59F47E2DB8 +:104AD000F98AE88A89890E94B42385EA92E00E94D3 +:104AE000B71F95C0E51311C074130FC061110DC03D +:104AF000F8018583C8010E94B71FE5EAF2E086E06D +:104B0000DF011D928A95E9F7A2C04D875E878D85EA +:104B10009E856A8B0E948F236A89882309F46DC061 +:104B2000662309F46AC02091AA02822F82958F70B1 +:104B300090E002970CF47FC08091A5029091A602AC +:104B40009A8389831B82FD82EC822E83CE0101969B +:104B50000E94B71F70C0E816F90628F09701281BBD +:104B6000390BC90104C0809590958E0D9F1D883C1E +:104B7000910508F046C0662309F43FC0E51330C034 +:104B800074132EC02091AA0220FD21C0322F32952D +:104B90003F70832F90E00097D1F0D80115962C93A9 +:104BA00015970F9741F0832F8F5F8295807F2F702D +:104BB000282B15962C93C8010E94B71F86E0F80198 +:104BC000A5EAB2E001900D928A95E1F73EC086E039 +:104BD000F801A5EAB2E001900D928A95E1F737C09D +:104BE0004D875E878D859E850E948F23811123C00E +:104BF0008091AA0281608093AA02C8010E94B71F17 +:104C000026C07E2DF98AE88A89890E94B423E5EAC4 +:104C1000F2E086E0DF011D928A95E9F70E94F42315 +:104C200018C0662351F34D875E878D859E850E944F +:104C30008F23882311F386E0F801A5EAB2E0019002 +:104C40000D928A95E1F70E9402240E94F42381E0EC +:104C500014C080E012C04D875E878D859E850E94BE +:104C60006E28292F22952F7030E0223031050CF468 +:104C7000E0CE243031050CF6E2CE62960FB6F89401 +:104C8000DEBF0FBECDBFDF91CF911F910F91FF907F +:104C9000EF9008951F93CF93DF93CDB7DEB72C9796 +:104CA0000FB6F894DEBF0FBECDBF4F83588769871C +:104CB0007A878B879C87CE0107960E947A24882367 +:104CC000D9F02F8138858A859B85892B39F03F3F24 +:104CD00019F080E090E004C02F3FD9F781E090E028 +:104CE000892B09F06DC04F81588569857A858B8540 +:104CF0009C850E94C32364C086E0FE013796DE01D6 +:104D0000119601900D928A95E1F7FF81E8854A8519 +:104D10005B854115510539F0EF3F41F481E090E0AA +:104D2000FF3F31F003C081E090E002C080E090E0FE +:104D300080FD46C02091DC0230E0C90101968770F9 +:104D400099276091DB0270E08617970709F440C04D +:104D5000F983EA835D834C8396E0929FD001939F11 +:104D6000B00D1124A555BD4FFE01319601900D9255 +:104D70009A95E1F78093DC020E94D32321C0189F0B +:104D8000C001112485559D4F0E947A24882371F11A +:104D9000E091DB021E9FF0011124E555FD4F40819B +:104DA000518162817381848195810E94C3238091A6 +:104DB000DB0290E00196877099278093DB0201C0A7 +:104DC00016E08091DB029091DC028913D8CF0EC0EF +:104DD0000E948B231092DC021092DB02E5EAF2E0E3 +:104DE00086E0DF011D928A95E9F7EACF2C960FB68F +:104DF000F894DEBF0FBECDBFDF91CF911F91089514 +:104E0000DF92EF92FF920F931F93CF93DF93EC010A +:104E1000009709F46EC0D12CEE24E394F12C8E019E +:104E20000F5F1F4FFE018491843748F4843008F0EF +:104E30004CC0813071F0823009F05BC01EC08537F4 +:104E400009F43FC080F1982F9458903708F051C072 +:104E50003FC02296F8018491982F905E983050F4CC +:104E60008770FE2D01C0FF0F8A95EAF78F2F0E94F1 +:104E7000142913C00E94901E2FC02296F80184911D +:104E8000982F905E983060F48770FE2D01C0FF0F60 +:104E90008A95EAF78F2F0E941A290E943D291CC08B +:104EA0000E94581F19C02296F801049107C08FE98B +:104EB0009FE00197F1F700C0000001500111F7CF0A +:104EC0000BC02296F801D49007C00E94901E03C028 +:104ED0008F770E94581FE8018D2D07C08150EFE9A0 +:104EE000FFE03197F1F700C00000882309F497CF65 +:104EF000F5CFDF91CF911F910F91FF90EF90DF9051 +:104F000008956093E1027093E2028093E30290932C +:104F1000E4020C9477236093DD027093DE028093A9 +:104F2000DF029093E0020C94772308950C9481277C +:104F30000F931F930091E1021091E2022091E3028E +:104F40003091E402602B712B822B932B1F910F91D8 +:104F50000C9481270F931F930091E1021091E202BC +:104F60002091E3023091E402602371238223932392 +:104F70001F910F910C9481270F931F930091E102D1 +:104F80001091E2022091E3023091E4026027712740 +:104F9000822793271F910F910C94812760E070E086 +:104FA000CB010C948B2741E050E060E070E004C03E +:104FB000440F551F661F771F8A95D2F7CB01BA01A0 +:104FC0000C948B2741E050E060E070E004C0440F97 +:104FD000551F661F771F8A95D2F78091DD02909149 +:104FE000DE02A091DF02B091E002482B592B6A2B20 +:104FF0007B2BCB01BA010C948B2741E050E060E0A1 +:1050000070E004C0440F551F661F771F8A95D2F7C2 +:1050100040955095609570958091DD029091DE02EB +:10502000A091DF02B091E002482359236A237B2339 +:10503000CB01BA010C948B2741E050E060E070E0B6 +:1050400004C0440F551F661F771F8A95D2F78091C1 +:10505000DD029091DE02A091DF02B091E0024827CC +:1050600059276A277B27CB01BA010C948B270F9312 +:105070001F930091DD021091DE022091DF0230913A +:10508000E002602B712B822B932B1F910F910C94BC +:105090008B270F931F930091DD021091DE02209168 +:1050A000DF023091E00260237123822393231F915A +:1050B0000F910C948B270F931F930091DD02109199 +:1050C000DE022091DF023091E00260277127822703 +:1050D00093271F910F910C948B270895CF92DF9205 +:1050E000EF92FF920F931F93CF93DF93EC01C09049 +:1050F000E102D090E202E090E302F090E4028091BD +:10510000DD029091DE02A091DF02B091E002C82A98 +:10511000D92AEA2AFB2A0FE110E0B701A601002EE6 +:1051200004C076956795579547950A94D2F740FF46 +:1051300008C0BE01802F0E94B3048130910509F0A0 +:1051400007C00150110948F7BE0180E00E94B30476 +:10515000DF91CF911F910F91FF90EF90DF90CF9053 +:10516000089540918B0150918C0120E030E09FEF39 +:10517000FA01E20FF31F62816817A1F09F3F19F453 +:10518000611101C0922F2F5F3F4F2630310581F70B +:1051900007C0FA01E90FF11D97FDFA958283089582 +:1051A0009F3FB9F7089540918B0150918C0120E009 +:1051B00030E0FA01E20FF31F9281981301C01282CE +:1051C0002F5F3F4F26303105A1F7089581E090E031 +:1051D000E0918B01F0918C01E80FF91F108201968C +:1051E00088309105A9F708959091E502982B909346 +:1051F000E502089580959091E50298239093E50249 +:1052000008951092E50208959091E602982B9093EC +:10521000E602089580959091E60298239093E60225 +:1052200008951092E60208959091E702982B9093CA +:10523000E702089580959091E70298239093E70202 +:1052400008951092E70208958093E802089510925D +:10525000E802089540918B0150918C0120E030E0EC +:1052600080E0FA01E20FF31F918191118F5F2F5FB0 +:105270003F4F27303105A9F70895E0918B01F09158 +:105280008C018091E5028083E0918B01F0918C018B +:1052900080819091E602892B8083E0918B01F091CF +:1052A0008C0180819091E702892B80839091E802A4 +:1052B000992361F0E0918B01F0918C018081892B21 +:1052C00080830E942A2981110E94272980918B01C5 +:1052D00090918C010C94591D8091FB03843039F11D +:1052E0001092F20220E488E190E00FB6F894A895BD +:1052F000809360000FBE2093600080E00E949B03BB +:1053000080E00E942C0683B7817F846083BF83B7CF +:10531000816083BF7894889583B78E7F83BF88E14F +:105320000FB6F89480936000109260000FBE08954D +:1053300008950895CF9380E00E949B030E949829CE +:105340000E94E9070E949929C0E08C2F0E94390928 +:10535000892B29F4CF5FC530C1F780E001C081E01F +:10536000CF9108950E948B2380E00E949B030E94AE +:1053700065300E944D1D0C942C061F920F920FB6A3 +:105380000F9211248F939F93AF93BF938091F2025A +:10539000811113C08091F3029091F402A091F50263 +:1053A000B091F6024196A11DB11D8093F302909336 +:1053B000F402A093F502B093F602BF91AF919F91D2 +:1053C0008F910F900FBE0F901F90189582E084BDB3 +:1053D00093E095BD9AEF97BD80936E0008958FB7C7 +:1053E000F8944091F3025091F4026091F5027091AB +:1053F000F6028FBFCA010895CF92DF92EF92FF921B +:105400000F931F932FB7F8944091F3025091F40239 +:105410006091F5027091F6022FBF6A017B01EE24C4 +:10542000FF248C0120E030E0C016D106E206F3062E +:1054300020F09A01281B390B05C09C01209530955E +:10544000240F351FC9011F910F91FF90EF90DF903E +:10545000CF9008951F920F920FB60F9211248F9341 +:105460009F93AF93BF938091F3029091F402A09128 +:10547000F502B091F6020196A11DB11D8093F302D1 +:105480009093F402A093F502B093F602BF91AF910E +:105490009F918F910F900FBE0F901F9018950E94B3 +:1054A0009516F8942FEF87EA91E6215080409040BE +:1054B000E1F700C0000087E090EBDC018093050479 +:1054C00090930604A0930704B09308042CE088E1AD +:1054D00090E00FB6F894A895809360000FBE2093DB +:1054E0006000FFCFCF92DF92EF92FF920F931F9356 +:1054F000CF93DF93C82ED12C01E010E08D2D0E94B8 +:1055000039097C01C0E0D0E098010C2E02C0220FC6 +:10551000331F0A94E2F72E213F21232B29F42196F1 +:10552000CC30D10589F708C06C2F7D2D80E00E941A +:105530008E04C812F4CF06C0D39485E0D812DECF13 +:1055400080E001C081E0DF91CF911F910F91FF902A +:10555000EF90DF90CF900895CF93C82F8CE20E94F8 +:10556000722A882321F08C2FCF910C94722A80E02C +:10557000CF910895CF930E94FD2B811102C00E940C +:10558000DE2BC5E608C00E94E9078FE39CE901977E +:10559000F1F700C00000C150B1F789E20E94AC2AC7 +:1055A00081110AC18AE20E94AC2A81110E94DE2B7D +:1055B00085E00E94AC2A81110E944F2A0E94082C8B +:1055C0008093F10287E00E94AC2A882399F18BE155 +:1055D0000E94AC2A882351F09091F10291FB882718 +:1055E00080F921E0822780FB91F922C08EE00E94A1 +:1055F000AC2A882351F09091F10292FB882780F920 +:1056000021E0822780FB92F913C080E10E94AC2A3E +:105610009091F102882341F093FB882780F921E0E3 +:10562000822780FB93F904C0892F809580FB90F935 +:105630009093F1028091F1020E940C2C0E941A2C8E +:105640008093020380EE0E94AC2A882341F080916F +:105650000203982F909590FB80F98093020389E3D1 +:105660000E94AC2A882359F09091020391FB88276D +:1056700080F921E0822780FB91F99093020382EE6A +:105680000E94AC2A882359F09091020392FB88274C +:1056900080F921E0822780FB92F99093020386EE45 +:1056A0000E94AC2A882359F09091020393FB88272B +:1056B00080F921E0822780FB93F99093020383EE27 +:1056C0000E94AC2A882359F09091020394FB88270A +:1056D00080F921E0822780FB94F99093020385E30F +:1056E0000E94AC2A882359F09091020395FB8827E9 +:1056F00080F921E0822780FB95F99093020381E3F2 +:105700000E94AC2A882359F09091020396FB8827C7 +:1057100080F921E0822780FB96F99093020381E1D2 +:105720000E94AC2A882359F09091020397FB8827A6 +:1057300080F921E0822780FB97F990930203809102 +:1057400002030E941E2C87E20E94AC2AC82F8EE121 +:105750000E94AC2A8111C2608FE10E94AC2A8111A3 +:10576000C46080E20E94AC2A8111C86081E20E947C +:10577000AC2A8111C06182E20E94AC2A8111C06210 +:1057800083E20E94AC2A8111C06484E20E94AC2AA8 +:10579000882311F0C06802C0CC2329F08C2F0E940E +:1057A000152C6C2F03C00E94112C682F70E080E034 +:1057B00090E0CF910C949627CF9108956DEE7EEFF7 +:1057C00080E090E00E94CC3460E082E090E00E94B3 +:1057D000BE3460E083E090E00E94BE3460E084E08C +:1057E00090E00E94BE3460E085E090E00E94BE340C +:1057F00060E086E090E00C94BE3480E090E00E948F +:10580000B83421E08D3E9E4F09F020E0822F0895AC +:1058100082E090E00C94B034682F82E090E00C9429 +:10582000BE3483E090E00C94B034682F83E090E0C5 +:105830000C94BE3484E090E00C94B034682F84E083 +:1058400090E00C94BE3486E090E00C94B034682F65 +:1058500086E090E00C94BE348091FF0280FF0BC084 +:105860006091900185E0689FB0011124759567955E +:10587000759567952AC081FF09C06091900185E008 +:10588000689FB0011124759567951FC082FF07C0FE +:105890006091900185E0689FB001112416C040918D +:1058A000F9024423C9F060918F01461788F72091CF +:1058B000900185E0289F90011124429FC001439FE1 +:1058C000900D112470E00E949C346038710540F402 +:1058D0006115710539F002C065E070E0862F08950A +:1058E0008FE7089581E008958091FF0280FF08C04E +:1058F00060918E0170E0759567957595679521C0EB +:1059000081FF06C060918E0170E07595679519C0A2 +:1059100082FF04C060918E0170E010C08091F90296 +:105920008823C1F060918D018617A0F790918E01B8 +:10593000989FC001112470E00E949C34603871056A +:1059400028F46115710521F0862F08958FE70895D9 +:1059500081E0089561E070E0F4CF803F21F40E947F +:105960002C2C819504C0813F29F40E942C2C80931B +:10597000FC020895823F21F40E942C2C819504C0E2 +:10598000833F29F40E942C2C8093FB020895893FC9 +:1059900019F40E94742C05C08A3F31F40E94742CC3 +:1059A00081958093FD0208958B3F21F40E94742C11 +:1059B000819504C08C3F29F40E94742C8093FE02D0 +:1059C0000895843F21F48091FA02816017C0853FD9 +:1059D00021F48091FA02826011C0863F21F4809107 +:1059E000FA0284600BC0873F21F48091FA0288603C +:1059F00005C0883F31F48091FA0280618093FA02F9 +:105A000008958D3F21F48091FF0281600BC08E3F8D +:105A100021F48091FF02826005C08F3F29F48091BC +:105A2000FF0284608093FF020895803F29F48091F3 +:105A3000FC0287FF6EC007C0813F41F48091FC02E9 +:105A400018160CF066C01092FC0263C09091FB0225 +:105A5000823F19F497FF5DC005C0833F31F41916EA +:105A60000CF057C01092FB0254C0893F31F4809172 +:105A7000FD0218160CF04DC006C08A3F39F4809123 +:105A8000FD0287FF46C01092FD0243C08B3F29F400 +:105A90008091FE0287FF3DC006C08C3F39F48091A3 +:105AA000FE021816B4F51092FE0233C0843F21F4B2 +:105AB0008091FA028E7F05C0853F31F48091FA0211 +:105AC0008D7F8093FA0225C0863F21F48091FA02EF +:105AD0008B7FF7CF873F21F48091FA02877FF1CF48 +:105AE000883F21F48091FA028F7EEBCF8D3F21F425 +:105AF0008091FF028E7F0BC08E3F21F48091FF02C8 +:105B00008D7F05C08F3F29F48091FF028B7F8093AA +:105B1000FF028091FB0281110EC08091FC02811175 +:105B20000AC08091FD02811106C08091FE028111A0 +:105B300002C01092F90208958AEF92E00E94641D5B +:105B40000E94EF299093F8028093F7020895CF9373 +:105B50008091F7029091F8020E94FC294091F9028D +:105B6000442321F02091910130E006C02091920160 +:105B70005AE0259F900111248217930708F486C0EC +:105B80008091FB0281110DC09091FC02911109C01E +:105B90009091FD02911105C09091FE02992309F4A4 +:105BA00075C04F3F19F04F5F4093F902181624F467 +:105BB0000E942C2C8093FB028091FB0287FF05C082 +:105BC0000E942C2C81958093FB028091FC02181678 +:105BD00024F40E942C2C8093FC028091FC0287FF0D +:105BE00005C00E942C2C81958093FC026091FB02E1 +:105BF000662339F1C091FC02CC2319F1772767FDA8 +:105C00007095872F972F0E94003223E333E343E3FD +:105C10005FE30E94B4320E94CD316093FB026C2F8F +:105C2000772767FD7095872F972F0E94003223E317 +:105C300033E343E35FE30E94B4320E94CD316093CB +:105C4000FC028091FD02181624F40E94742C8093AB +:105C5000FD028091FD0287FF05C00E94742C819592 +:105C60008093FD028091FE02181624F40E94742C89 +:105C70008093FE028091FE0287FF05C00E94742C73 +:105C800081958093FE02CF910C949C2DCF91089525 +:105C9000EAEFF2E085E0DF011D928A95E9F71092C4 +:105CA000F9021092FF020895833089F130F48130B7 +:105CB00061F0823009F06EC019C0853009F449C026 +:105CC000B8F1863009F066C055C020919201862F48 +:105CD00090E0820F911D8F3F910520F4620F609339 +:105CE000920108958FEF8093920108952091910180 +:105CF000862F90E0820F911D8F3F910520F4620F57 +:105D00006093910108958FEF809391010895209100 +:105D10009001862F90E0820F911D8F3F910520F416 +:105D2000620F6093900108958FEF80939001089522 +:105D300020918F01862F90E0820F911D8F3F91055A +:105D400020F4620F60938F0108958FEF80938F018D +:105D5000089520918E01862F90E0820F911D8F3F34 +:105D6000910520F4620F60938E0108958FEF809368 +:105D70008E01089520918D01862F90E0820F911D54 +:105D80008F3F910520F4620F60938D0108958FEF8E +:105D900080938D010895833021F130F4813059F0E2 +:105DA000823009F049C012C0853089F128F186306F +:105DB00009F042C037C080919201681720F4861B19 +:105DC000809392010895109292010895809191011B +:105DD000681720F4861B8093910108951092910119 +:105DE000089580919001681720F4861B809390019C +:105DF000089510929001089580918F01681720F402 +:105E0000861B80938F01089510928F0108958091D1 +:105E10008E01681720F4861B80938E0108951092DE +:105E20008E01089580918D01681720F4861B809360 +:105E30008D01089510928D01089541E050E060E0D9 +:105E400070E004C0440F551F661F771F8A95D2F774 +:105E5000CB01BA010E9496270C948B23873200F560 +:105E60008E3108F089C08E3009F469C060F4873043 +:105E700009F44DC018F4863049F531C0883041F13D +:105E80008B3021F57EC0863109F47BC018F4803157 +:105E9000E9F45FC0893109F474C08B31B9F445C0AD +:105EA000883309F46EC048F4893209F467C0853339 +:105EB00009F464C0873251F461C0833409F45EC0D0 +:105EC00018F48A3318F056C0883499F080E00895A9 +:105ED0000E94082C0E941A2C0E94232C52C08091F0 +:105EE000F102817F8E7F8093F10281E08093000335 +:105EF00008950E948B232FEF83ED90E32150804083 +:105F00009040E1F700C000000E944F2A3AC09091F3 +:105F1000F102892F8095817080FB90F919F09660CD +:105F2000986025C0997F977F22C09091F10291FBE4 +:105F3000882780F921E0822780FB91F913C0909196 +:105F4000F10292FB882780F921E0822780FB92F9F9 +:105F500009C09091F10293FB882780F921E0822704 +:105F600080FB93F99093F102882359F0916090930C +:105F7000F10207C0895303C08D5101C080E00E9427 +:105F80001D2F81E0089580E0089580E00895CF936B +:105F9000C82F80910003813071F020F0823009F029 +:105FA00089C037C0A0918B01B0918C018C91823255 +:105FB00009F082C007C0A0918B01B0918C018C9137 +:105FC000823249F48C2F0E94C32F81111EC08C2F66 +:105FD0000E942E2F1CC08C2F0E94C52F811115C02E +:105FE000C43169F030F4CB3081F0C03109F068C0C1 +:105FF00009C0C93221F0C83309F062C006C010924E +:1060000000035EC082E08093000381E090E0817035 +:106010005AC0C932C9F060F4C431B1F020F4C730BD +:1060200009F04CC034C0CE51C63008F047C017C08C +:10603000CE3439F120F4CB3409F040C01CC0C13556 +:10604000C1F0C235D9F513C080910103882319F03E +:106050001092010333C081E08093000334C0EC2F21 +:10606000F0E0E25EFD4F80818093010327C061E094 +:1060700003C061E007C06AE0809101030E94542ED2 +:106080001DC06AE0809101030E94CB2E17C08EE1F3 +:106090008093920182E3809391018AE08093900142 +:1060A00084E180938F0188E080938E0188E2809361 +:1060B0008D0104C01092000380E005C081E003C0A0 +:1060C00080E090E0A4CFCF9108950E94FD2B811134 +:1060D00002C00E94DE2B0E94232C8093040480FFC8 +:1060E00002C0869501C080E00C949B03809104045B +:1060F000982F9695292F30E0233031054CF49F5F7F +:10610000990F8170892B8160809304040E94272C51 +:106110008091040486950C949B0380910404982F2D +:10612000969591F09158990F8170892B8093040472 +:106130008E7F91E009F490E08091040490FB80F957 +:10614000809304040E94272C8091040486950C946B +:106150009B0380910404982F909590FB80F9809385 +:1061600004040E94272C8091040480FF02C08695BD +:1061700001C080E00C949B0330910404232F2695EA +:106180002F5F2F77822F90E0317004972CF4220F2D +:10619000232B2093040402C0309304048091040450 +:1061A000282F2E7F91E009F490E090FB80F98093F6 +:1061B00004040E94272C8091040486950C949B0370 +:1061C00020910404922F96959827990F822F817021 +:1061D000892B809304048E7F91E009F490E08091F4 +:1061E000040490FB80F9809304040E94272C809182 +:1061F000040486950C949B035058BB27AA270ED005 +:1062000075C166D130F06BD120F031F49F3F11F4AD +:106210001EF45BC10EF4E095E7FB51C1E92F77D185 +:1062200080F3BA17620773078407950718F071F4B3 +:106230009EF58FC10EF4E0950B2EBA2FA02D0B0109 +:10624000B90190010C01CA01A0011124FF27591BBB +:1062500099F0593F50F4503E68F11A16F040A22FC1 +:10626000232F342F4427585FF3CF46953795279532 +:10627000A795F0405395C9F77EF41F16BA0B620B31 +:10628000730B840BBAF09150A1F0FF0FBB1F661F78 +:10629000771F881FC2F70EC0BA0F621F731F841FBB +:1062A00048F4879577956795B795F7959E3F08F0E1 +:1062B000B3CF9395880F08F09927EE0F97958795A0 +:1062C0000895D9D008F481E008950CD00FC107D10A +:1062D00040F0FED030F021F45F3F19F0F0C05111D2 +:1062E00039C1F3C014D198F39923C9F35523B1F3FD +:1062F000951B550BBB27AA2762177307840738F035 +:106300009F5F5F4F220F331F441FAA1FA9F333D093 +:106310000E2E3AF0E0E830D091505040E695001C47 +:10632000CAF729D0FE2F27D0660F771F881FBB1F03 +:10633000261737074807AB07B0E809F0BB0B802DDD +:10634000BF01FF2793585F4F2AF09E3F510568F029 +:10635000B6C000C15F3FECF3983EDCF386957795BD +:106360006795B795F7959F5FC9F7880F911D96952B +:10637000879597F90895E1E0660F771F881FBB1F87 +:10638000621773078407BA0720F0621B730B840B34 +:10639000BA0BEE1F88F7E095089504D06894B11108 +:1063A000D9C00895BCD088F09F5790F0B92F992795 +:1063B000B751A0F0D1F0660F771F881F991F1AF010 +:1063C000BA95C9F712C0B13081F0C3D0B1E00895D9 +:1063D000C0C0672F782F8827B85F39F0B93FCCF35A +:1063E000869577956795B395D9F73EF49095809506 +:1063F000709561957F4F8F4F9F4F0895E89409C026 +:1064000097FB3EF490958095709561957F4F8F4FE7 +:106410009F4F9923A9F0F92F96E9BB279395F695FD +:10642000879577956795B795F111F8CFFAF4BB0F7B +:1064300011F460FF1BC06F5F7F4F8F4F9F4F16C0DF +:10644000882311F096E911C0772321F09EE8872F69 +:10645000762F05C0662371F096E8862F70E060E025 +:106460002AF09A95660F771F881FDAF7880F96959E +:10647000879597F90895990F0008550FAA0BE0E842 +:10648000FEEF16161706E807F907C0F012161306F6 +:10649000E407F50798F0621B730B840B950B39F436 +:1064A0000A2661F0232B242B252B21F408950A269C +:1064B00009F4A140A6958FEF811D811D089597F9DC +:1064C0009F6780E870E060E008959FEF80EC08959A +:1064D00000240A94161617061806090608950024C3 +:1064E0000A9412161306140605060895092E03943D +:1064F000000C11F4882352F0BB0F40F4BF2B11F4B1 +:1065000060FF04C06F5F7F4F8F4F9F4F089557FD0F +:106510009058440F551F59F05F3F71F04795880F11 +:1065200097FB991F61F09F3F79F0879508951216A8 +:1065300013061406551FF2CF4695F1DF08C0161654 +:1065400017061806991FF1CF869571056105089405 +:106550000895E894BB2766277727CB0197F908951C +:106560008ADF08F48FEF08950BD0C0CFB1DF28F099 +:10657000B6DF18F0952309F0A2CFA7CF1124EACFF8 +:10658000C6DFA0F3959FD1F3950F50E0551F629F92 +:10659000F001729FBB27F00DB11D639FAA27F00D7C +:1065A000B11DAA1F649F6627B00DA11D661F829FA3 +:1065B0002227B00DA11D621F739FB00DA11D621F88 +:1065C000839FA00D611D221F749F3327A00D611DA5 +:1065D000231F849F600D211D822F762F6A2F112487 +:1065E0009F5750408AF0E1F088234AF0EE0FFF1FDA +:1065F000BB1F661F771F881F91505040A9F79E3F11 +:10660000510570F05CCFA6CF5F3FECF3983EDCF312 +:10661000869577956795B795F795E7959F5FC1F74D +:10662000FE2B880F911D9695879597F90895FA018D +:10663000EE0FFF1F30962105310599F161157105A7 +:1066400061F48038BFE39B0749F168949038810575 +:1066500061F08038BFEF9B0741F0992342F5FF3F7F +:10666000E1053105210511F1E8940894E795D90178 +:10667000AA2329F4AB2FBE2FF85FD0F310C0FF5F21 +:1066800070F4A695E0F7F73950F019F0FF3A38F4B6 +:106690009F779F930CD00F9007FC905808953EF081 +:1066A00014CF60E070E080E89FE308954FE79F77A4 +:1066B0005F934F933F932F939ED02F913F914F9194 +:1066C0005F9152DF05C019F40EF0F9CE42CFFDCE36 +:1066D00026DFC8F39638C0F707F80F92E8942BE34B +:1066E0003AEA48EB5FE74EDF0F920F920F924DB7F9 +:1066F0005EB70F92C0D0ECEAF0E016D04F915F91F8 +:10670000EF91FF91E595EE1FFF1F49F0FE57E068FE +:106710004427EE0F441FFA95E1F74195550B32D00F +:106720000F9007FE26C00895DF93CF931F930F931A +:10673000FF92EF92DF927B018C01689405C0DA2E04 +:10674000EF011EDFFE01E894A59125913591459159 +:106750005591AEF3EF0162DDFE019701A801DA94D5 +:1067600079F7DF90EF90FF900F911F91CF91DF911C +:1067700008959B01AC0160E070E080E89FE3A5CD47 +:106780009ECEACC0CCDEE8F39923D9F3940F511D13 +:10679000BBF39150504094F059F0882332F0660FCB +:1067A000771F881F91505040C1F79E3F510544F715 +:1067B000880F911D9695879597F908955F3FACF0E6 +:1067C000983E9CF0BB27869577956795B79508F41A +:1067D000B1609395C1F7BB0F58F711F460FFE8CF94 +:1067E0006F5F7F4F8F4F9F4FE3CFB4CE0EF076C0D9 +:1067F0006CCE689464CE93DEC8F39923D1F3C6F3CC +:10680000DF93CF931F930F93FF92C92FDD27882328 +:106810002AF02197660F771F881FDAF720E030E013 +:1068200040E85FEB9FE3883920F0803E30F021960E +:106830008F77E3DCE4EDF0E003C0DFDCE1E0F1E0E2 +:1068400073DF8B01BE01EC01FB2E6F57710975954B +:10685000771F880B990BD4DD28E132E741E35FE332 +:106860008FDEAF2D9801AE01FF900F911F91CF9158 +:10687000DF91D4DC3BCEFA01DC01AA0FBB1F9B01E8 +:10688000AC01BF5728F422273327442750781FC074 +:10689000B75188F4AB2F0024469537952795011CF6 +:1068A000A395D2F3002069F0220F331F441FB39544 +:1068B000DAF30DD0A1CC61307105A0E88A07B946A2 +:1068C00030F49B01AC0166277727882790783096B3 +:1068D00021F0208331834283538308959F3F31F019 +:1068E000915020F4879577956795B795880F911DFE +:1068F0009695879597F90895991B79E004C0991F9B +:10690000961708F0961B881F7A95C9F78095089509 +:10691000AA1BBB1B51E107C0AA1FBB1FA617B707C5 +:1069200010F0A61BB70B881F991F5A95A9F78095E1 +:106930009095BC01CD01089597FB072E16F40094A5 +:1069400007D077FD09D00E94883407FC05D03EF4BB +:10695000909581959F4F0895709561957F4F08950B +:10696000F999FECF92BD81BDF89A992780B5089517 +:10697000A8E1B0E042E050E00C94D334262FF9991E +:10698000FECF1FBA92BD81BD20BD0FB6F894FA9A12 +:10699000F99A0FBE019608950E94BE34272F0C94D9 +:1069A000BF34DC01CB01FC01F999FECF06C0F2BD7A +:1069B000E1BDF89A319600B40D9241505040B8F7BD +:0669C0000895F894FFCFDA +:1069C60055D0A446000016440000000000004842CE +:1069D60061978A460000C843000000000000484254 +:1069E60055D024460000C84300000000000048427D +:1069F60000005C460000C84300000000000048425A +:106A060061978A4600007A4455D0A4460000C843E0 +:106A1600000000000000484200005C460000C84339 +:106A2600000000000000484255D0244600001644ED +:106A36000507000C05854000000106400000010026 +:106A4600B91049112511F010BC1001E902280814EB +:106A56000A321E4200450025002600430061006000 +:106A660000200037006400650066006700440046A9 +:106A7600002400470000000200040005000700098A +:106A8600000B000C000E001000110013001500177B +:106A96000018001A001C001D001F002100230024FE +:106AA600002600280029002B002D002F0030003280 +:106AB6000034003500370039003B006E048704A01F +:106AC60004B904E10594055E053E053F4D362002F6 +:106AD60003020000010001010101010001010102A0 +:086AE60003040506070809007E +:00000001FF -- cgit v1.2.3-24-g4f1b From 976d0a327b563ff83d0f7bcee41b2360877bface Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 5 Apr 2016 09:21:44 -0400 Subject: add silent notes --- quantum/audio.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quantum/audio.c b/quantum/audio.c index 3a3a1a491..f29d941d7 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -247,6 +247,9 @@ ISR(TIMER3_COMPA_vect) { if (note_frequency > 0) { ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period + } else { + ICR3 = 0; + OCR3A = 0; } #endif -- cgit v1.2.3-24-g4f1b From 931b0a79fc071498c229b0051be0ebadd934a549 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 5 Apr 2016 09:44:01 -0400 Subject: updates to noise --- keyboard/preonic/keymaps/default/keymap.c | 6 +- keyboard/preonic/keymaps/nerdgasm/README.md | 34 ++++++++ keyboard/preonic/keymaps/nerdgasm/keymap.c | 117 ++++++++++++++++++++++++++++ keyboard/preonic/preonic.c | 9 +++ keyboard/preonic/preonic.h | 1 + 5 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 keyboard/preonic/keymaps/nerdgasm/README.md create mode 100644 keyboard/preonic/keymaps/nerdgasm/keymap.c diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 5099b6581..784670784 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -60,13 +60,9 @@ const uint16_t PROGMEM fn_actions[] = { float start_up[][2] = { {440.0*pow(2.0,(67)/12.0), 600}, - {0, 50}, {440.0*pow(2.0,(64)/12.0), 400}, - {0, 50}, {440.0*pow(2.0,(55)/12.0), 400}, - {0, 50}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 50}, {440.0*pow(2.0,(64)/12.0), 1000}, }; @@ -91,6 +87,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 9, false); + play_notes(&start_up, 5, false); #endif } diff --git a/keyboard/preonic/keymaps/nerdgasm/README.md b/keyboard/preonic/keymaps/nerdgasm/README.md new file mode 100644 index 000000000..d2f43bbdb --- /dev/null +++ b/keyboard/preonic/keymaps/nerdgasm/README.md @@ -0,0 +1,34 @@ +# The Default Planck Layout + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_CM] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_DV] = { /* Dvorak */ + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + }, + [_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + }, + [_LW] = { /* LOWER */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + } + }; \ No newline at end of file diff --git a/keyboard/preonic/keymaps/nerdgasm/keymap.c b/keyboard/preonic/keymaps/nerdgasm/keymap.c new file mode 100644 index 000000000..818102fbd --- /dev/null +++ b/keyboard/preonic/keymaps/nerdgasm/keymap.c @@ -0,0 +1,117 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "preonic.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_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_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_RS] = { /* RAISE */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, +[_LW] = { /* LOWER */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +// Guitar Notes +#define N_E 13180.5 +#define N_B 9870.8 +#define N_G 15680.0 +#define N_D 11740.7 +#define N_E 13180.5 + +float start_up[][2] = { + { N_E, 500 }, + { 0, 50 }, + { N_E, 500 }, + { 0, 50 }, + { N_E, 500 }, + { 0, 50 }, + { N_B, 500 }, + { 0, 50 }, + { N_E, 1000 }, + { 0, 50 }, + { N_G, 1500 }, + { 0, 50 }, +}; + +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; +}; + +void matrix_init_user(void) { +#ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 12, false); +#endif +} + +void process_action_user(keyrecord_t *record) { +#ifdef AUDIO_ENABLE + if (record->event.pressed) { + float keypress[][2] = { + {440.0*pow(2.0,(record->event.key.col*7)/12.0), 600} + }; + play_notes(&keypress, 1, false); + } +#endif +} diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c index e9ececb6d..f639f247a 100644 --- a/keyboard/preonic/preonic.c +++ b/keyboard/preonic/preonic.c @@ -10,6 +10,11 @@ void matrix_scan_user(void) { }; +__attribute__ ((weak)) +void process_action_user(keyrecord_t *record) { + +}; + void matrix_init_kb(void) { #ifdef BACKLIGHT_ENABLE backlight_init_ports(); @@ -30,3 +35,7 @@ void matrix_init_kb(void) { void matrix_scan_kb(void) { matrix_scan_user(); }; + +void process_action_kb(keyrecord_t *record) { + process_action_user(record); +} \ No newline at end of file diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h index 6cfe14726..51ed9ba39 100644 --- a/keyboard/preonic/preonic.h +++ b/keyboard/preonic/preonic.h @@ -46,5 +46,6 @@ void matrix_init_user(void); void matrix_scan_user(void); +void process_action_kb(keyrecord_t *record); #endif -- cgit v1.2.3-24-g4f1b