aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2018-08-02 23:07:33 -0400
committerGitHub <noreply@github.com>2018-08-02 23:07:33 -0400
commitac46378ac62c4365b5b67e306522df77027355ea (patch)
treee84d4392fdbb0ff0c43f06b391e72283b3d55e5c
parentbb4af7deeee495a8a96d8db46e077895a95f8bb0 (diff)
downloadqmk_firmware-ac46378ac62c4365b5b67e306522df77027355ea.tar.gz
qmk_firmware-ac46378ac62c4365b5b67e306522df77027355ea.zip
Update ISP flashing guide with pre-compiled binary (#3217)
* update flashing guide with pre-compiled binary * Add files via upload * Update isp_flashing_guide.md * update file and instructions * update instructions
-rw-r--r--docs/isp_flashing_guide.md79
-rw-r--r--util/pro_micro_ISP_B6_10.hex362
2 files changed, 412 insertions, 29 deletions
diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md
index 8abc45486..008f944cc 100644
--- a/docs/isp_flashing_guide.md
+++ b/docs/isp_flashing_guide.md
@@ -19,59 +19,80 @@ If you're having trouble flashing/erasing your board, and running into cryptic e
19 Memory write error, use debug for more info. 19 Memory write error, use debug for more info.
20 commands.c:360: Error writing memory data. (err -4) 20 commands.c:360: Error writing memory data. (err -4)
21 21
22You're likely going to need to ISP flash your board/device to get it working again. Luckily, this process is pretty straight-forward, provided you have any extra programmable keyboard, Arduino, or Teensy 2.0/Teensy 2.0++. There are also dedicated ISP flashers available for this, but most cost >$15, and it's assumed that if you are googling this error, this is the first you've heard about ISP flashing, and don't have one readily available (whereas you might have some other AVR board). __We'll be using a Teensy 2.0 with Windows 10 in this guide__ - if you are comfortable doing this on another system, please consider editing this guide and contributing those instructions! 22You're likely going to need to ISP flash your board/device to get it working again. Luckily, this process is pretty straight-forward, provided you have any extra programmable keyboard, Pro Micro, or Teensy 2.0/Teensy 2.0++. There are also dedicated ISP flashers available for this, but most cost >$15, and it's assumed that if you are googling this error, this is the first you've heard about ISP flashing, and don't have one readily available (whereas you might have some other AVR board). __We'll be using a Teensy 2.0 or Pro Micro with Windows 10 in this guide__ - if you are comfortable doing this on another system, please consider editing this guide and contributing those instructions!
23 23
24## Software Needed 24## Software Needed
25 25
26* [The Arduino IDE](https://www.arduino.cc/en/Main/Software) 26* [Teensy Loader](https://www.pjrc.com/teensy/loader.html) (if using a Teensy)
27* [Teensyduino](https://www.pjrc.com/teensy/td_download.html) (if you're using a Teensy) 27* QMK Toolbox (flash as usual - be sure to select the correct MCU) or `avrdude` via [WinAVR](http://www.ladyada.net/learn/avr/setup-win.html) (for Teensy & Pro Micro)
28* [WinAVR](http://www.ladyada.net/learn/avr/setup-win.html) (Windows)
29 28
30## Wiring 29## Wiring
31 30
32This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner: 31This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner:
33 32
34 Flasher B0 <-> Keyboard RESET 33### Teensy 2.0
35 Flasher B1 <-> Keyboard B1 (SCLK)
36 Flasher B2 <-> Keyboard B2 (MOSI)
37 Flasher B3 <-> Keyboard B3 (MISO)
38 Flasher VCC <-> Keyboard VCC
39 Flasher GND <-> Keyboard GND
40 34
41## The ISP Firmware 35 Teensy B0 <-> Keyboard RESET
36 Teensy B1 <-> Keyboard B1 (SCLK)
37 Teensy B2 <-> Keyboard B2 (MOSI)
38 Teensy B3 <-> Keyboard B3 (MISO)
39 Teensy VCC <-> Keyboard VCC
40 Teensy GND <-> Keyboard GND
41
42### Pro Micro
42 43
43Make sure your keyboard is unplugged from any device, and plug in your Teensy. 44 Pro Micro 10 (B6) <-> Keyboard RESET
45 Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
46 Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
47 Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
48 Pro Micro VCC <-> Keyboard VCC
49 Pro Micro GND <-> Keyboard GND
50
51## The ISP Firmware (now pre-compiled)
44 52
451. Run Arduino after you have everything installed 53The only difference between the .hex files below is which pin is connected to RESET. You can use them on other boards as well, as long as you're aware of the pins being used. If for some reason neither of these pins are available, [create an issue](https://github.com/qmk/qmk_firmware/issues/new), and we can generate one for you!
462. Select `Tools > Board * > Teensy 2.0`
473. Click `File > Examples > 11.ArduinoISP > ArduinoISP`
48 54
49Then scroll down until you see something that looks like this block of code: 55* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`)
56* Pro Micro: [`util/pro_micro_ISP_B6_10.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_mico_ISP_B6_10.hex) (`B6/10`)
50 57
51 // Configure which pins to use: 58**Flash your Teenys/Pro Micro with one of these and continue - you won't need the file after flashing your ISP device.**
52 59
53 // The standard pin configuration. 60## Just the Bootloader File
54 #ifndef ARDUINO_HOODLOADER2
55 61
56 #define RESET 0 // Use 0 (B0) instead of 10 62If you just want to get things back to normal, you can flash only a bootloader from [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util), and use your normal process to flash the firmware afterwards. Be sure to flash the correct bootloader for your chip:
57 #define LED_HB 11 // Use 11 (LED on the Teensy 2.0)
58 #define LED_ERR 8 // This won't be used unless you have an LED hooked-up to 8 (D3)
59 #define LED_PMODE 7 // This won't be used unless you have an LED hooked-up to 7 (D2)
60 63
61And make the changes in the last four lines. If you're using something besides the Teensy 2.0, you'll want to choose something else that makes sense for `LED_HB`. We define `RESET` as `0`/`B0` because that's what's close - if you want to use another pin for some reason, [you can use the pinouts to choose something else](https://www.pjrc.com/teensy/pinout.html). 64* [`atmega32u4`](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) - Most keyboards, Planck Rev 1-5, Preonic Rev 1-2
65* [`at90usb1286`](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128x_1_0_1.hex) - Planck Light Rev 1
62 66
63Once you've made your changes, you can click the Upload button (right arrow), which will open up the Teensy flasher app - you'll need to press the reset button on the Teensy the first time, but after that, it's automatic (you shouldn't be flashing this more than once, though). Once flashed, the orange LED on the Teensy will flash on and off, indicating it's ready for some action. 67If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU =` line will have the value you need. It may differ between different versions of the board.
64 68
65## The `.hex` File 69### Advanced/Production Techniques
66 70
67Before flashing your firmware, you're going to need to and do a little preparation. We'll be appending [this bootloader (also a .hex file)](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) to the end of our firmware by opening the original .hex file in a text editor, and removing the last line, which should be `:00000001FF` (this is an EOF message). After that's been removed, copy the entire bootloader's contents and paste it at the end of the original file, and save it. 71If you'd like to flash both the bootloader **and** the regular firmware at the same time, you need to combine the files.
68 72
69It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to ISP to write new firmware to your keyboard. 731. Open the original firmware .hex file in a text editor
742. Remove the last line (which should be `:00000001FF` - this is an EOF message)
753. Copy the entire bootloader's contents onto a new line (with no empty lines between) and paste it at the end of the original file
764. Save it as a new file by naming it `<keyboard>_<keymap>_production.hex`
70 77
71## Flashing Your Firmware 78It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to use ISP again to write new firmware to your keyboard.
79
80## Flashing Your Bootloader/Production File
72 81
73Make sure your keyboard is unplugged from any device, and plug in your Teensy. 82Make sure your keyboard is unplugged from any device, and plug in your Teensy.
74 83
84### QMK Toolbox
85
861. `AVRISP device connected` will show up in yellow
872. Select the correct bootloader/production .hex file with the `Open` dialog (spaces can't be in the path)
883. Be sure the correct `Microcontroller` option is selected
894. Hit `Flash`
905. Wait, as nothing will output for a while, especially with production files
91
92If the verification and fuse checks are ok, you're done! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
93
94### Command Line
95
75Open `cmd` and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with: 96Open `cmd` and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
76 97
77 avrdude -c avrisp -P COM3 -p atmega32u4 98 avrdude -c avrisp -P COM3 -p atmega32u4
diff --git a/util/pro_micro_ISP_B6_10.hex b/util/pro_micro_ISP_B6_10.hex
new file mode 100644
index 000000000..cf61bebb9
--- /dev/null
+++ b/util/pro_micro_ISP_B6_10.hex
@@ -0,0 +1,362 @@
1:10000000BDC00000E3C00000E1C00000DFC0000090
2:10001000DDC00000DBC00000D9C00000D7C0000078
3:10002000D5C00000D3C000003AC70000B1C700002F
4:10003000CDC00000CBC00000C9C00000C7C0000098
5:10004000C5C00000C3C00000C1C00000BFC00000A8
6:10005000BDC00000BBC00000B9C000007FC60000EA
7:10006000B5C00000B3C00000B1C00000AFC00000C8
8:10007000ADC00000ABC00000A9C00000A7C00000D8
9:10008000A5C00000A3C00000A1C000009FC00000E8
10:100090009DC000009BC0000099C0000097C00000F8
11:1000A00095C0000093C0000091C000000001000056
12:1000B0005D0112000200001A014300030000160156
13:1000C0000401030904FC001802030904E4001603F8
14:1000D000030904D6000C0C03310032003300340055
15:1000E0003500000016035500530042002000530065
16:1000F00065007200690061006C0000001803540084
17:10010000650065006E007300790064007500690089
18:100110006E006F000000040309040902430002019D
19:1001200000C0320904000001020201000524001091
20:10013000010524010001042402060524060001072C
21:1001400005820308004009040100020A00000007BC
22:100150000503024000000705840240000012010070
23:100160000202000020C01683040001010203010006
24:1001700001C10201803601813600110B11241FBE1E
25:10018000CFEFDAE0DEBFCDBF11E0A0E0B1E0EAE5FD
26:10019000F6E102C005900D92A232B107D9F722E034
27:1001A000A2E2B1E001C01D92A935B207E1F710E06B
28:1001B000CEEBD0E004C02197FE010E94250BCD3B81
29:1001C000D107C9F70E942D090C942B0B19CFDC0124
30:1001D000ED91FC910190F081E02D09948EBD00001D
31:1001E0000DB407FEFDCF8EB508950F931F930FB684
32:1001F000F8948091440290914502A0914602B091FA
33:1002000047020FBE409122015091230160912401C9
34:10021000709125018C019D01041B150B260B370BDA
35:100220000832110521053105F0F0809322019093E9
36:100230002301A0932401B09325012091010180EEB8
37:10024000820F813A28F090910001919590930001DE
38:1002500080910001820F80930101529A803810F43E
39:100260005A9801C05A9A1F910F91089590912601B2
40:10027000882319F0911103C004C0911102C02E9A75
41:1002800001C02E98809180008F7D8093800008951A
42:100290000F931F93CF93DF938B01EC01DD27FE01BA
43:1002A0009ED46EE170E080E090E098D5FE019DD490
44:1002B0006EE170E080E090E091D50150110978F78F
45:1002C000DF91CF911F910F91089540E05BE460E0D2
46:1002D00070E08FE492E00E94AA0A509A62E070E017
47:1002E00085E090E0D5DF519A62E070E086E090E032
48:1002F000CFDF529A62E070E087E090E0C9CF8823B8
49:1003000011F0589A01C0589884B58F7D84BD089526
50:10031000CF93DF9300D01F92CDB7DEB72B834A83F4
51:1003200069835CDF6981862F59DF4A81842F56DF1C
52:100330002B81822F0F900F900F90DF91CF914ECF96
53:1003400020913A012093270180913B01809328015D
54:1003500080913C018093290180913D0180932A0185
55:1003600080913E0180932B0180913F0180932C016D
56:100370008091400180932D018091410180932E0155
57:100380008091420180932F018091440190E0982F49
58:10039000882730914501830F911D909331018093FF
59:1003A00030018091460190E0982F882730914701D5
60:1003B000830F911D90933301809332018091480106
61:1003C00090E0982F882730914901830F911D9093D9
62:1003D00035018093340180914A0190E0A0E0B0E0C3
63:1003E000BA2FA92F982F882730914B01830F911D89
64:1003F000A11DB11DDC019927882740914C0150E0D7
65:10040000542F4427052E000C660B770B840F951F85
66:10041000A61FB71F30914D01830F911DA11DB11D66
67:100420008093360190933701A0933801B09339013E
68:1004300081E0203E08F480E080932601089581E069
69:1004400015DF269A6DD380914202882381F0813096
70:1004500051F48DB3809340029DB380914102809509
71:1004600089238DBB04C08FB7F8948093400283E545
72:100470008CBD1DBC299864E170E080E090E0AED4B2
73:1004800080E0F4DE80E991E00197F1F781E0EEDEB3
74:1004900062E370E080E090E0A1D420E040E063E51A
75:1004A0008CEA36DF81E090E090933D0280933C023D
76:1004B000089541D322982A982198299880E0D6DE81
77:1004C00026982E98EDE7F0E080818F7D8083109252
78:1004D0003D0210923C020895242F880F880F880F48
79:1004E000462F672F805C14CFCF93DF9300D0CDB71A
80:1004F000DEB7482F692F80E090E049836A83FFDEF2
81:1005000020E049816A818CE403DF6EE170E080E0E5
82:1005100090E064D481E090E00F900F90DF91CF9154
83:10052000EECE209132013091330180913A029091C8
84:100530003B022032310511F4807F089520343105CB
85:1005400011F4807E08952038310511F4807C0895DF
86:100550002115314009F480780895CF92DF92EF920F
87:10056000FF920F931F93CF93DF936C01DADF8C011F
88:10057000C0E0D0E0CC15DD0554F5D3DF7C010817D1
89:10058000190721F0C801B0DFCCDF7C01FE01E65C79
90:10059000FE4F60913A0270913B02408180E09CDF07
91:1005A0002296FE01E75CFE4F60913A0270913B0299
92:1005B000408181E091DF20913A0230913B022F5F30
93:1005C0003F4F30933B0220933A028701D3CFC801BB
94:1005D0008BDF80E1DF91CF911F910F91FF90EF9022
95:1005E000DF90CF900895462F880F880F880F20E066
96:1005F000672F805E8DCE0F931F93CF93DF938C0177
97:10060000C0E0D0E0C017D10704F560913A027091C4
98:100610003B0280E0E8DF682F8FE492E0D8DD609154
99:100620003A0270913B0281E0DEDF682F8FE492E0B6
100:10063000CEDD20913A0230913B022F5F3F4F309345
101:100640003B0220933A022296DDCF80E1DF91CF91E9
102:100650001F910F910895EF92FF920F931F93CF93E5
103:10066000DF937C0100913A0210913B02000F111FB1
104:10067000E801CE01801B910B8E159F055CF42FEFD6
105:100680004C2F6D2F80EA44DE682F8FE492E09FDDCF
106:100690002196EFCF80E1DF91CF911F910F91FF90D5
107:1006A000EF9008958FE492E0F2D5892BD9F38FE48F
108:1006B00092E026C608950F931F93CF93DF938C018A
109:1006C000CAE3D1E0CE018A539140801791071CF410
110:1006D000E9DF8993F7CFDF91CF911F910F910895B3
111:1006E000EF92FF920F931F93CF93DF93EC018B0157
112:1006F000CB01E1DF80E090E002DE8AE3E82E81E0DA
113:10070000F82E0C0F1D1FC017D10771F0F7012191B2
114:100710007F014C2F6D2F80ECFBDD6DE270E080E0FF
115:1007200090E05CD32196EFCF81E090E0E8DD80E1BE
116:10073000DF91CF911F910F91FF90EF9008950F934C
117:100740001F93CF93DF938C01C0913A02D0913B026B
118:1007500080913401909135018017910718F0CC0FEA
119:10076000DD1F0BC080913E0290913F020196909355
120:100770003F0280933E0281E10FC00132110540F03B
121:1007800060E270E0CE01ACDFA09600521109F5CF17
122:10079000B801CE01A5DF80E1DF91CF911F910F91CC
123:1007A000089580DF803231F464E18FE492E00FDD60
124:1007B00060E10AC080913E0290913F0201969093C1
125:1007C0003F0280933E0265E18FE492E000CDCF933B
126:1007D000C82F68DF803251F464E18FE492E0F7DCE7
127:1007E0006C2F8FE492E0F3DC60E10AC080913E025E
128:1007F00090913F02019690933F0280933E0265E103
129:100800008FE492E0CF91E3CC813859F020F4803826
130:1008100061F482E00BC0823831F0833931F483E532
131:1008200005C081E003C082E101C080E0D0CF84E058
132:1008300090E041DFEAE3F1E0238142816181808140
133:1008400067DDC5CFCF93DF93EC0135DF2BDF80323F
134:1008500041F464E18FE492E0BADCCE017EDE682FE1
135:100860000AC080913E0290913F02019690933F0210
136:1008700080933E0265E18FE492E0DF91CF91A7CCB7
137:10088000CF93DF930FDFC82FD0E0DC2FCC270ADF18
138:10089000C80FD11D07DF863421F4CE01DF91CF913F
139:1008A000D1CF8534B9F4CE014ADFC82FFBDE8032C8
140:1008B00031F464E18FE492E08ADC6C2F0CC080910B
141:1008C0003E0290913F02019690933F0280933E0238
142:1008D00065E101C061E18FE492E0DF91CF9177CCD7
143:1008E0000F931F93CF93DF93DDDEC82FDBDE082F3E
144:1008F000D9DE182FD7DE803259F080913E029091D8
145:100900003F02019690933F0280933E0265E115C03D
146:10091000D0E0DC2FCC27C00FD11D64E18FE492E042
147:1009200056DC163419F4CE0166DE06C0153419F40F
148:10093000CE0191DE01C081E1682F8FE492E0DF916A
149:10094000CF911F910F9143CCADDE803259F0809151
150:100950003E0290913F02019690933F0280933E02A7
151:1009600065E120C064E18FE492E031DC20E040E00A
152:1009700060E080E3CDDC682F8FE492E028DC20E0AB
153:1009800041E060E080E3C4DC682F8FE492E01FDC8C
154:1009900020E042E060E080E3BBDC682F8FE492E07F
155:1009A00016DC60E18FE492E012CC7CDE813509F444
156:1009B00077C0E0F4813409F460C050F4803309F466
157:1009C00040C0813309F442C0803209F07AC06FC060
158:1009D000853409F454C0803509F455C0823409F0D7
159:1009E00070C084E190E067DEABDC4CC0813609F476
160:1009F00053C0F0F4863509F452C0803609F44BC078
161:100A0000853509F05EC04EDE90E090933B02809306
162:100A10003A0248DE90E0982F882720913A023091E0
163:100A20003B02820F931F90933B0280933A022AC0AD
164:100A30008437A1F1853709F439C0843609F041C003
165:100A40001FCF10923F0210923E021CC02BDE80325C
166:100A500071F564E18FE492E0BADBE0914F02F0912E
167:100A600050020280F381E02D47E050E069E071E040
168:100A70008FE492E0099560E133C014DEC5CE85E0D5
169:100A800090E019DE8ECE80913C0290913D02892B40
170:100A9000C9F7D5DCF7CF06DE05DEF4CF21CFC7CE10
171:100AA00010923F0210923E0204DDECCF4DCF8091B8
172:100AB0003E0290913F02019690933F0280933E0246
173:100AC0000EC080913E0290913F02019690933F02AA
174:100AD00080933E02E7DD803211F462E101C065E1FE
175:100AE0008FE492E074CB80913C0290913D02892B7F
176:100AF00011F0589A01C0589884B58F7D84BD8091BB
177:100B00003E0290913F02892B11F0599A01C05998E9
178:100B10006CDB8FE492E0BBD3892B09F046CF0895BC
179:100B2000289A209A8CB580618CBD8CB580648CBD70
180:100B3000219A229A08958CB58F7B8CBD08951DBA99
181:100B4000109268001CBC10BE1FBA10927A0010925E
182:100B50006E0010926F00109271001092720010924D
183:100B6000C900ECEBF0E0108214B817B81AB81DB841
184:100B700010BA108215B818B81BB81EB811BA08956B
185:100B8000F894E1E6F0E020E82083108283E084BD61
186:100B900085BDEEE6F0E080818160808381E0809316
187:100BA000800092E090938100809390009093910058
188:100BB0009093C00094E09093C1008093C200809312
189:100BC000C3001092C40086E880937A0020937B00D3
190:100BD00010927E0010927D0040D178940895E93102
191:100BE00050F4EE0FE450FA4F0994E93120F4EE0F7F
192:100BF000E25DF94F09940895289A0895299A089575
193:100C00002A9A08952B9A08952F9A6AC0589A58C024
194:100C1000599A08955A9A08955B9A0895469A66C01B
195:100C2000479A6AC05E9A08955F9A6CC02C9A08959C
196:100C30002D9A4AC02E9A4EC08F9A08958E9A089582
197:100C40008D9A08958C9A0895899A0895889A08959E
198:100C50005C9A08955D9A0895769A08952898089563
199:100C6000299808952A9808952B9808952F9838C0A8
200:100C7000589826C0599808955A9808955B980895F1
201:100C8000469834C0479838C05E9808955F983AC037
202:100C90002C9808952D9818C02E981CC08F980895F0
203:100CA0008E9808958D9808958C9808958998089540
204:100CB000889808955C9808955D98089576980895A9
205:100CC000E4B5EF7DE4BD0895E0918000EF77E09317
206:100CD00080000895E0918000EF7DE093800008950A
207:100CE000E0918000E77FE09380000895E09190001C
208:100CF000EF77E09390000895E091C000EF77E093E4
209:100D0000C0000895E091C200E77FE093C20008951B
210:100D1000F89484B7877F84BF80916000806180935E
211:100D200060001092600080E29EE40197F1F781E09C
212:100D30008093E00080E28093D80080E69AEE0197ED
213:100D4000F1F7FDDE0C94003FFFCFF894F8DE80E66B
214:100D50009AEE0197F1F70C940000FFCF8F938FB7B5
215:100D60008F93809143028D5F8D37D0F4809343023F
216:100D7000809144028F5F80934402D8F080914502B5
217:100D80008F4F80934502A8F0809146028F4F809349
218:100D9000460278F0809147028F4F8093470209C046
219:100DA0008D5780934302809144028E5F809344026A
220:100DB00028F7809148028C5F8093480258F0809118
221:100DC00049028F4F8093490228F080914A028F4F49
222:100DD00080934A028F918FBF8F911895CF92DF92A7
223:100DE000EF92FF926B017C0119D09B01C114D104D9
224:100DF000E104F10471F012D0621B730B683E734082
225:100E0000A8F381E0C81AD108E108F10828513C4F45
226:100E1000EDCFFF90EF90DF90CF9008950FB6F8944C
227:100E200066B515B2709148028091490290914A02CC
228:100E30000FBE10FE05C06F3F19F07C5F8F4F9F4FB4
229:100E400011240024660F001C660F001C70290895F1
230:100E50008091E80080FFFCCF08958091D80087FF43
231:100E600002C085FF1BC081E08093D70080EA809399
232:100E7000D80082E189BD09B400FEFDCF80E98093EE
233:100E8000D8001092E00010925B0210925A02109269
234:100E900059021092E1008DE08093E20008951F92C4
235:100EA0000F920FB60F9211242F933F934F935F939E
236:100EB0006F937F938F939F93AF93BF93EF93FF9322
237:100EC0009091E1001092E10093FF11C01092E900AF
238:100ED00081E08093EB001092EC0082E28093ED00C1
239:100EE00088E08093F00010925B021092590292FF0A
240:100EF0001DC080915B028823C9F080914E02882337
241:100F000059F0815080934E02811106C084E0809395
242:100F1000E9008AE38093E80080914D02882331F054
243:100F2000815080934D02811101C0F2DE90FF0CC010
244:100F300080E18093E20010925B0281E080935A028C
245:100F400080EA8093D80019BC80915A02882379F0F6
246:100F500094FF0DC082E189BD09B400FEFDCF80E998
247:100F60008093D8008DE08093E20010925A02FF91A6
248:100F7000EF91BF91AF919F918F917F916F915F9111
249:100F80004F913F912F910F900FBE0F901F9018958A
250:100F90001F920F920FB60F921124EF92FF920F93B0
251:100FA0001F932F933F934F935F936F937F938F93F1
252:100FB0009F93AF93BF93CF93EF93FF931092E9006A
253:100FC0008091E80083FF30C1C091F1008091F10071
254:100FD000E090F100F090F1000091F1001091F1002B
255:100FE0002091F1003091F10092EF9093E80086306B
256:100FF00009F03FC086E0ECEAF0E0459155914E15CE
257:101000005F0511F0359615C0459155914017510770
258:1010100011F033960EC04591559184912F3F3105C3
259:1010200019F010F02FEF30E0281708F4822F3EEF70
260:1010300008C0815011F7F8C0891B3093E80088235D
261:10104000A9F09091E800292F2570D9F392FDEFC007
262:10105000982F813208F090E2292F222369F3FA01B8
263:1010600045914093F100AF012150F7CF903249F301
264:10107000DEC0853049F48EEF8093E800E9DE8E2DE6
265:1010800080688093E300D3C0893001F5C111CCC0E2
266:10109000E0925B021092590210924E028EEF809302
267:1010A000E80081E0EFE6F1E08093E900959190930C
268:1010B000EB00992331F095919093EC0095919093EA
269:1010C000ED008F5F853081F78EE1A9C0883049F44B
270:1010D000C03809F0A9C0BCDE80915B028093F100AA
271:1010E0007DC0813279F4C13A09F09EC0B1DEE2E000
272:1010F000F1E087E08E0F90819093F10031968E138E
273:10110000FACF6CC0803209F047C0C13209F08CC000
274:101110008091E80082FFFCCFE2E0F1E087E08E0FF3
275:101120009091F100908331968E13FACF8BEF8093DC
276:10113000E8008EEF8093E8003091020140910301B6
277:10114000809104012091050190E0A0E0B0E0DC0175
278:1011500099278827942B832BB22B86389105A105DC
279:10116000B10521F48FE080934D0261C0863991056D
280:10117000A105B10509F05BC084E08093E9009FEF11
281:101180008091EE00837039F09093E8008091E80040
282:1011900082FDFCCFF5CFD9DD823231F4C13209F0C6
283:1011A00043C0E092590204C0833221F4C132E1F518
284:1011B0004FDE14C0811116C04BDEC23851F40093CB
285:1011C000E9008091EB0085FB882780F91092E90007
286:1011D00001C080E08093F1001092F1008EEF8093C7
287:1011E000E80025C0982F9D7F9130F1F4C230E1F4E2
288:1011F000EF28D1F40F779FEF900F9630A8F49EEF71
289:101200009093E8000093E900833071F089E18093C6
290:10121000EB0081E090E001C0880F0A95EAF7809327
291:10122000EA001092EA0003C081E28093EB00FF9194
292:10123000EF91CF91BF91AF919F918F917F916F91DE
293:101240005F914F913F912F911F910F91FF90EF90E0
294:101250000F900FBE0F901F90189592DC36D843DC8C
295:10126000FECFCF93DF931F92CDB7DEB76983DC014A
296:10127000ED91FC910280F381E02D41E050E0BE0150
297:101280006F5F7F4F09950F90DF91CF910895FC011B
298:101290008FB7F89490915B02911102C090E010C05A
299:1012A00093E09093E9009091F200911109C0209190
300:1012B000E80022FFF3CF25FDF1CF2BE62093E800D5
301:1012C0008FBF2085318537FD03C09F3F09F09F5FA9
302:1012D000892F90E00895CF93DF93EC01888599855D
303:1012E00097FF09C0E881F9810680F781E02DCE01E2
304:1012F00009959987888788859985DF91CF91089589
305:10130000FC012085318537FD07C04FEF5FEF518726
306:101310004087C901992708959FB7F89480915B028F
307:10132000882369F083E08093E9002BE68091E80050
308:1013300085FD09C082FF03C02093E800F7CF9FBF5F
309:101340008FEF9FEF08958091F1002091E80025FD37
310:1013500003C02BE62093E8009FBF90E00895DF9242
311:10136000EF92FF920F931F93CF93DF938C01EB01CA
312:1013700080915B02882371F07FB7F89484E08093BA
313:10138000E90080914C02882369F08091E80085FD96
314:1013900007C07FBF81E0F801828320E030E0D1C048
315:1013A00010924C0220E030E064E080E4F82EA1EFDF
316:1013B000B0E09AE3E92EE3E0DE2E4115510509F491
317:1013C000BFC08091E400815F9091E80095FD16C058
318:1013D0007FBF9091E400981304C081E080934C0299
319:1013E00005C090915B02911104C081E0F8018283F5
320:1013F000A8C07FB7F8946093E900E6CF8091F2002F
321:101400009F2D981BE92FF0E04E175F0708F4942FEB
322:10141000E92FF0E04E1B5F0B2E0F3F1FE0E4E91BAE
323:10142000E03428F4EE0FFF27E85EF54F099480C002
324:1014300099919C9399919C9399919C9399919C9348
325:1014400099919C9399919C9399919C9399919C9338
326:1014500099919C9399919C9399919C9399919C9328
327:1014600099919C9399919C9399919C9399919C9318
328:1014700099919C9399919C9399919C9399919C9308
329:1014800099919C9399919C9399919C9399919C93F8
330:1014900099919C9399919C9399919C9399919C93E8
331:1014A00099919C9399919C9399919C9399919C93D8
332:1014B00099919C9399919C9399919C9399919C93C8
333:1014C00099919C9399919C9399919C9399919C93B8
334:1014D00099919C9399919C9399919C9399919C93A8
335:1014E00099919C9399919C9399919C9399919C9398
336:1014F00099919C9399919C9399919C9399919C9388
337:1015000099919C9399919C9399919C9399919C9377
338:1015100099919C9399919C9399919C9399919C9367
339:1015200099919C9399919C9399919C9399919C9357
340:101530008091E80085FFE092E800D0924E023DCF16
341:101540007FBFC901DF91CF911F910F91FF90EF9065
342:10155000DF9008952FEF3FEFFC01318720877DDC7E
343:101560000FB6F8948091440290914502A0914602F2
344:10157000B09147020FBE9C0180915B02882329F045
345:1015800068EC70E080E090E029CC80915A028823DA
346:1015900001F10FB6F8948091440290914502A09118
347:1015A0004602B09147020FBE40915A02442389F08F
348:1015B0000FB6F89440914402509145026091460262
349:1015C000709147020FBE481B590B4B3F510560F30A
350:1015D00011C00FB6F8948091440290914502A091F9
351:1015E0004602B09147020FBE821B930B853C994087
352:1015F00008F4C2CF08959FB7F89480915B028823C6
353:1016000021F080914E02811102C09FBF089584E0B5
354:101610008093E9008AE38093E80010924E02F5CFB0
355:10162000EACFEFE4F2E08AE0DF011D928A95E9F764
356:1016300088EE93E0A0E0B0E083839483A583B68333
357:1016400085E191E0918380830895EE0FFF1F05905F
358:0A165000F491E02D0994F894FFCF07
359:10165A00088000E10000000008415652204953501A
360:10166A0000000000003109AF09470980096B091021
361:02167A000B0063
362:00000001FF