Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 885 → Rev 886

/branches/V0.69k Code Redesign killagreg/GPS.c
File deleted
/branches/V0.69k Code Redesign killagreg/FlightCtrl.aps
1,0 → 0,0
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>11-Oct-2007 22:58:54</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\SVN\MikroKopter\FlightCtrl\branches\V0.64_ZeroWarnings\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>Settings.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -DVERSION_HAUPTVERSION=0 -DVERSION_NEBENVERSION=64 -DVERSION_KOMPATIBEL=5</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Program Files\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Program Files\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>Settings.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>timer0.h</FileName><Status>1</Status></File00018></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>21-Mar-2008 18:51:49</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>E:\Daten\Bastelprojekte\Mikrokopter\Software\Soucen\FlightCtrl\V0.68d Code Redesign killagreg\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>ubx.c</SOURCEFILE><SOURCEFILE>cmps03.c</SOURCEFILE><SOURCEFILE>fifo.c</SOURCEFILE><SOURCEFILE>mm3.c</SOURCEFILE><SOURCEFILE>mymath.c</SOURCEFILE><SOURCEFILE>spi.c</SOURCEFILE><SOURCEFILE>timer2.c</SOURCEFILE><SOURCEFILE>uart1.c</SOURCEFILE><SOURCEFILE>led.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>cmps03.h</HEADERFILE><HEADERFILE>eeprom.h</HEADERFILE><HEADERFILE>fifo.h</HEADERFILE><HEADERFILE>led.h</HEADERFILE><HEADERFILE>mm3.h</HEADERFILE><HEADERFILE>mymath.h</HEADERFILE><HEADERFILE>spi.h</HEADERFILE><HEADERFILE>timer2.h</HEADERFILE><HEADERFILE>uart1.h</HEADERFILE><HEADERFILE>ubx.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>cmps03.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fifo.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>led.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>mm3.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>mymath.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer2.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart1.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>ubx.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Programme\Winavr\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Programme\Winavr\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>timer0.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>makefile</FileName><Status>1</Status></File00018></Files><Workspace><File00000><Position>251 96 720 458</Position><LineCol>0 0</LineCol></File00000><File00001><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00001><File00002><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00002><File00003><Position>317 162 778 494</Position><LineCol>0 0</LineCol></File00003><File00004><Position>339 184 800 516</Position><LineCol>0 0</LineCol></File00004><File00005><Position>361 206 822 538</Position><LineCol>0 0</LineCol></File00005><File00006><Position>383 228 844 560</Position><LineCol>0 0</LineCol></File00006><File00007><Position>405 250 866 582</Position><LineCol>0 0</LineCol></File00007><File00008><Position>251 96 712 428</Position><LineCol>0 0</LineCol></File00008><File00009><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00009><File00010><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00010><File00011><Position>317 162 778 494</Position><LineCol>0 0</LineCol></File00011><File00012><Position>339 184 800 516</Position><LineCol>0 0</LineCol></File00012><File00013><Position>361 206 822 538</Position><LineCol>0 0</LineCol></File00013><File00014><Position>383 228 844 560</Position><LineCol>0 0</LineCol></File00014><File00015><Position>405 250 866 582</Position><LineCol>0 0</LineCol></File00015><File00016><Position>251 96 712 428</Position><LineCol>0 0</LineCol></File00016><File00017><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00017><File00018><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00018></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/branches/V0.69k Code Redesign killagreg/Hex-Files/Conrad LEA-4H Config-4Hz.txt
0,0 → 1,58
MON-VER - 0A 04 46 00 35 2E 30 30 20 20 20 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 35 3A 30 38 3A 31 30 00 01 30 30 30 34 30 30 30 31 00 00 4D 34 48 31 2E 31 43 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 36 3A 34 32 3A 33 30 00 00
CFG-ANT - 06 13 04 00 0B 00 0F 38
CFG-DAT - 06 06 02 00 00 00
CFG-FXN - 06 0E 24 00 12 00 00 00 C0 D4 01 00 C0 D4 01 00 C0 27 09 00 C0 27 09 00 A0 8C 00 00 40 77 1B 00 00 00 00 00 00 00 00 00
CFG-INF - 06 02 08 00 00 00 00 00 00 87 00 00
CFG-INF - 06 02 08 00 01 00 00 00 00 00 00 87
CFG-INF - 06 02 08 00 03 00 00 00 00 00 00 00
CFG-MSG - 06 01 06 00 01 01 00 00 00 00
CFG-MSG - 06 01 06 00 01 02 00 01 00 00
CFG-MSG - 06 01 06 00 01 03 00 00 00 00
CFG-MSG - 06 01 06 00 01 04 00 00 00 00
CFG-MSG - 06 01 06 00 01 06 00 01 00 00
CFG-MSG - 06 01 06 00 01 08 00 00 00 00
CFG-MSG - 06 01 06 00 01 11 00 00 00 00
CFG-MSG - 06 01 06 00 01 12 00 01 00 00
CFG-MSG - 06 01 06 00 01 20 00 00 00 00
CFG-MSG - 06 01 06 00 01 21 00 00 00 00
CFG-MSG - 06 01 06 00 01 22 00 00 00 00
CFG-MSG - 06 01 06 00 01 30 00 00 00 00
CFG-MSG - 06 01 06 00 01 31 00 00 00 00
CFG-MSG - 06 01 06 00 01 32 00 00 00 00
CFG-MSG - 06 01 06 00 02 10 00 00 00 00
CFG-MSG - 06 01 06 00 02 11 00 00 00 00
CFG-MSG - 06 01 06 00 02 20 00 00 00 00
CFG-MSG - 06 01 06 00 0A 01 00 00 00 00
CFG-MSG - 06 01 06 00 0A 02 00 00 00 00
CFG-MSG - 06 01 06 00 0A 03 00 00 00 00
CFG-MSG - 06 01 06 00 0A 06 00 00 00 00
CFG-MSG - 06 01 06 00 0A 07 00 00 00 00
CFG-MSG - 06 01 06 00 0A 08 00 00 00 00
CFG-MSG - 06 01 06 00 0A 09 00 00 00 00
CFG-MSG - 06 01 06 00 0B 00 00 00 00 00
CFG-MSG - 06 01 06 00 0B 30 00 00 00 00
CFG-MSG - 06 01 06 00 0B 31 00 00 00 00
CFG-MSG - 06 01 06 00 0D 01 00 00 00 00
CFG-MSG - 06 01 06 00 0D 03 00 00 00 00
CFG-MSG - 06 01 06 00 F0 00 00 00 00 01
CFG-MSG - 06 01 06 00 F0 01 00 00 00 01
CFG-MSG - 06 01 06 00 F0 02 00 00 00 01
CFG-MSG - 06 01 06 00 F0 03 00 00 00 01
CFG-MSG - 06 01 06 00 F0 04 00 00 00 01
CFG-MSG - 06 01 06 00 F0 05 00 00 00 01
CFG-MSG - 06 01 06 00 F0 06 00 00 00 00
CFG-MSG - 06 01 06 00 F0 07 00 00 00 00
CFG-MSG - 06 01 06 00 F0 08 00 00 00 01
CFG-MSG - 06 01 06 00 F1 00 00 00 00 00
CFG-MSG - 06 01 06 00 F1 01 00 00 00 00
CFG-MSG - 06 01 06 00 F1 03 00 00 00 00
CFG-MSG - 06 01 06 00 F1 04 00 00 00 00
CFG-NAV2 - 06 1A 28 00 03 00 00 00 03 03 10 02 50 C3 00 00 0F 0A 05 3C 00 01 00 00 FA 00 FA 00 64 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00
CFG-NMEA - 06 17 04 00 00 23 00 02
CFG-PRT - 06 00 14 00 01 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 02 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 03 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00
CFG-RATE - 06 08 06 00 FA 00 01 00 00 00
CFG-RXM - 06 11 02 00 03 00
CFG-SBAS - 06 16 08 00 00 00 01 00 00 00 00 00
CFG-TP - 06 07 14 00 40 42 0F 00 A0 86 01 00 01 01 00 00 32 00 34 03 00 00 00 00
/branches/V0.69k Code Redesign killagreg/Hex-Files/Conrad LEA-4H Config-5Hz.txt
0,0 → 1,58
MON-VER - 0A 04 46 00 35 2E 30 30 20 20 20 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 35 3A 30 38 3A 31 30 00 01 30 30 30 34 30 30 30 31 00 00 4D 34 48 31 2E 31 43 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 36 3A 34 32 3A 33 30 00 00
CFG-ANT - 06 13 04 00 0B 00 0F 38
CFG-DAT - 06 06 02 00 00 00
CFG-FXN - 06 0E 24 00 12 00 00 00 C0 D4 01 00 C0 D4 01 00 C0 27 09 00 C0 27 09 00 A0 8C 00 00 40 77 1B 00 00 00 00 00 00 00 00 00
CFG-INF - 06 02 08 00 00 00 00 00 00 87 00 00
CFG-INF - 06 02 08 00 01 00 00 00 00 00 00 87
CFG-INF - 06 02 08 00 03 00 00 00 00 00 00 00
CFG-MSG - 06 01 06 00 01 01 00 00 00 00
CFG-MSG - 06 01 06 00 01 02 00 01 00 00
CFG-MSG - 06 01 06 00 01 03 00 00 00 00
CFG-MSG - 06 01 06 00 01 04 00 00 00 00
CFG-MSG - 06 01 06 00 01 06 00 01 00 00
CFG-MSG - 06 01 06 00 01 08 00 00 00 00
CFG-MSG - 06 01 06 00 01 11 00 00 00 00
CFG-MSG - 06 01 06 00 01 12 00 01 00 00
CFG-MSG - 06 01 06 00 01 20 00 00 00 00
CFG-MSG - 06 01 06 00 01 21 00 00 00 00
CFG-MSG - 06 01 06 00 01 22 00 00 00 00
CFG-MSG - 06 01 06 00 01 30 00 00 00 00
CFG-MSG - 06 01 06 00 01 31 00 00 00 00
CFG-MSG - 06 01 06 00 01 32 00 00 00 00
CFG-MSG - 06 01 06 00 02 10 00 00 00 00
CFG-MSG - 06 01 06 00 02 11 00 00 00 00
CFG-MSG - 06 01 06 00 02 20 00 00 00 00
CFG-MSG - 06 01 06 00 0A 01 00 00 00 00
CFG-MSG - 06 01 06 00 0A 02 00 00 00 00
CFG-MSG - 06 01 06 00 0A 03 00 00 00 00
CFG-MSG - 06 01 06 00 0A 06 00 00 00 00
CFG-MSG - 06 01 06 00 0A 07 00 00 00 00
CFG-MSG - 06 01 06 00 0A 08 00 00 00 00
CFG-MSG - 06 01 06 00 0A 09 00 00 00 00
CFG-MSG - 06 01 06 00 0B 00 00 00 00 00
CFG-MSG - 06 01 06 00 0B 30 00 00 00 00
CFG-MSG - 06 01 06 00 0B 31 00 00 00 00
CFG-MSG - 06 01 06 00 0D 01 00 00 00 00
CFG-MSG - 06 01 06 00 0D 03 00 00 00 00
CFG-MSG - 06 01 06 00 F0 00 00 00 00 01
CFG-MSG - 06 01 06 00 F0 01 00 00 00 01
CFG-MSG - 06 01 06 00 F0 02 00 00 00 01
CFG-MSG - 06 01 06 00 F0 03 00 00 00 01
CFG-MSG - 06 01 06 00 F0 04 00 00 00 01
CFG-MSG - 06 01 06 00 F0 05 00 00 00 01
CFG-MSG - 06 01 06 00 F0 06 00 00 00 00
CFG-MSG - 06 01 06 00 F0 07 00 00 00 00
CFG-MSG - 06 01 06 00 F0 08 00 00 00 01
CFG-MSG - 06 01 06 00 F1 00 00 00 00 00
CFG-MSG - 06 01 06 00 F1 01 00 00 00 00
CFG-MSG - 06 01 06 00 F1 03 00 00 00 00
CFG-MSG - 06 01 06 00 F1 04 00 00 00 00
CFG-NAV2 - 06 1A 28 00 03 00 00 00 03 03 10 02 50 C3 00 00 0F 0A 05 3C 00 01 00 00 FA 00 FA 00 64 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00
CFG-NMEA - 06 17 04 00 00 23 00 02
CFG-PRT - 06 00 14 00 01 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 02 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 03 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00
CFG-RATE - 06 08 06 00 64 00 02 00 00 00
CFG-RXM - 06 11 02 00 03 00
CFG-SBAS - 06 16 08 00 00 00 01 00 00 00 00 00
CFG-TP - 06 07 14 00 40 42 0F 00 A0 86 01 00 01 01 00 00 32 00 34 03 00 00 00 00
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644_KILLAGREG_V0_69k.hex
0,0 → 1,2566
:100000000C94E4030C9401040C9401040C9401047A
:100010000C9401040C9401040C9401040C9401044C
:100020000C9401040C94CA0D0C9401040C9401046A
:100030000C94BF190C9401040C9401040C948B19BA
:100040000C9401040C9401040C94F50C0C94283EBF
:100050000C940F090C9401040C94B3050C94010446
:100060000C949F0E0C9401040C94D3180C9401046E
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D436F6E74726F1F
:100090006C3A20000A0D537570706F727420666F91
:1000A000722047505320617420317374205541529F
:1000B00054000A0D537570706F727420666F722051
:1000C0004D6963726F4D61673320436F6D7061736B
:1000D00073004F4B0A0D000A0D43616C6962726137
:1000E00074696E67206169722070726573737572CE
:1000F000652073656E736F722E2E000A0D414343A7
:10010000206E6F742063616C696272617465642132
:10011000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3DAF
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF
:100130003D000A0D466C69676874436F6E74726F98
:100140006C0A0D48617264776172653A25642E25E8
:10015000640A0D536F6674776172653A5625642E92
:100160002564256320002E005A5F52616E67653A50
:10017000202025346900595F52616E67653A20205E
:1001800025346900585F52616E67653A2020253436
:1001900069004D4D332052616E6765005A5F4F66AE
:1001A000667365743A202025336900595F4F66668F
:1001B0007365743A202025336900585F4F66667373
:1001C00065743A2020253369004D4D33204F666613
:1001D00073657400416C743A2025642E252E3364B7
:1001E000206D004C61743A2025642E252E33642541
:1001F0002E336420646567004C6F6E3A2025642EB0
:10020000252E3364252E33642064656700536174A2
:10021000733A202564204669783A203F3F005361B5
:1002200074733A202564204669783A203344005399
:100230006174733A202564204669783A203244007C
:10024000536174733A202564204669783A204E6FD2
:10025000004E6F204750532064617461210048694B
:100260003A253469202043663A25346920005468D1
:100270003A253469202059613A25346920005069B3
:100280003A2534692020526F3A2534692000457898
:100290007465726E436F6E74726F6C2020005261D1
:1002A0006E67653A2533692D25336900506F736990
:1002B00074696F6E3A2025336900536574706F69F5
:1002C0006E74202025336900536572766F202000FC
:1002D000506F343A2025336920506F383A20253347
:1002E0006900506F333A2025336920506F373A2028
:1002F00025336900506F323A2025336920506F361C
:100300003A2025336900506F313A20253369205057
:100310006F353A20253369004F6666436F757273F7
:10032000653A202535690048656164696E673A2041
:10033000202025356900436F757273653A202020AF
:100340002025356900436F6D706173732020202074
:100350002020200052432D4C6576656C3A202535CF
:100360006900566F6C746167653A20202535690015
:100370004865696768742025346920282533692910
:1003800000526F6C6C2020202534692028253369A9
:10039000290050697463682020253469202825339A
:1003A000692900414343202D2053656E736F72000D
:1003B00059617720202025346920282533692900B8
:1003C000526F6C6C20202534692028253369290060
:1003D0005069746368202534692028253369290011
:1003E0005961772020202534692028253369290088
:1003F000526F6C6C20202534692028253369290030
:1004000050697463682025346920282533692900E0
:100410004779726F202D2053656E736F72005033D1
:100420003A253469202050343A253469200050316F
:100430003A253469202050323A2534692000477328
:100440003A253469202059613A25346920005069E1
:100450003A2534692020526F3A2534692000433709
:100460003A253469202043383A2534692000433541
:100470003A253469202043363A2534692000433335
:100480003A253469202043343A2534692000433129
:100490003A253469202043323A25346920004865E2
:1004A0006164696E673A20202025356900526F6CBF
:1004B0006C3A202020202020253569005069746383
:1004C000683A202020202025356900417474697421
:1004D0007564650048656967687420436F6E74725F
:1004E0006F6C004E6F20004F66667365742020208D
:1004F000203A253569004169722050726573732E68
:100500003A2535690053657420506F696E743A203E
:10051000253569004865696768743A2020202025E0
:1005200035690028632920486F6C67657220427521
:1005300073730053657474696E673A2025642000F4
:1005400048573A5625642E25642053573A25642E81
:1005500025642563002B204D696B726F4B6F70749F
:100560006572202B005B25695D005B25695D000AD3
:100570000D5573696E6720506172616D65746572A7
:1005800020536574202564000A0D496E69742E207D
:10059000454550524F4D3A2047656E65726174690A
:1005A0006E672044656661756C742D506172616D73
:1005B000657465722E2E2E0000008F001E01AD01A5
:1005C0003B02CA025803E603740402058F051B06AA
:1005D000A7063307BE074808D2085B09E3096B0A80
:1005E000F20A780BFD0B810C040D860D070E870EA9
:1005F000060F840F00107B10F5106E11E5115B12D1
:10060000CF124213B31323149214FE146A15D31598
:100610003B16A11605176717C81727188318DE1889
:1006200037198E19E319361A871AD61A231B6E1B2F
:10063000B61BFD1B411C831CC31C001D3C1D751DEE
:10064000AB1DE01D121E421E6F1E9A1EC31EE91E28
:100650000D1F2E1F4D1F691F841F9B1FB01FC31F1F
:10066000D31FE11FEC1FF51FFB1FFF1F0020000120
:100670000203040405060708090A0B0B0C0D0E0FF4
:10068000101111121314151516171818191A1B1B0F
:100690001C1D1D1E1F1F202121222323242425254C
:1006A000262727282829292A2A2B2B2C2C2D2D2DAB
:1006B0002E2E2F2F3030303131323232333333342B
:1006C00034343535353636363737373738383839C4
:1006D0003939393A3A3A3A3B3B3B3B3C3C3C3C3C6F
:1006E0003D3D3D3D3E3E3E3E3E3F3F3F3F3F3F4026
:1006F00040404040404141414141414242424242EA
:1007000042424343434343434344444444444444B4
:100710004445454545454545454546464646464684
:10072000464646474747474747474747474748485A
:100730004848484848484848484949494949494932
:10074000494949494949494A4A4A4A4A4A4A4A4A10
:100750004A4A4A4A4A4B4B4B4B4B4B4B4B4B4B4BEE
:100760004B4B4B4B4B4B4C4C4C4C4C4C4C4C4C4CCF
:100770004C4C4C4C4C4C4C4C4C4D4D4D4D4D4D4DB2
:100780004D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4E98
:100790004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E79
:1007A0004E4E4E4E4E4E4E4E4E4F4F4F4F4F4F4F62
:1007B0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F49
:1007C0004F4F4F4F4F4F4F4F11241FBECFEFD0E130
:1007D000DEBFCDBF14E0A0E0B1E0EEE8FCE902C06E
:1007E00005900D92A63BB107D9F719E0A6EBB4E04E
:1007F00001C01D92A830B107E1F70E9403040C94D8
:10080000464E0C940000CF93DF93F89414B815B8BB
:10081000189B02C08BE001C08AE08093000184B184
:10082000836084B9209100012A3011F4289A01C014
:100830002898299884B7877F84BF80916000886159
:10084000809360001092600080ED97E09093D20456
:100850008093D10410924E0810924D0810927105A9
:100860001092700510926F0510926E0510926D0532
:1008700010926C052A3011F4289801C0289A0E9421
:1008800023180E94AB0C0E94A70D0E94EF060E9445
:1008900057190E94820E0E947C180E94DC417894B5
:1008A00010924F0785E48093500787E080935107AB
:1008B00020910001822F6AE00E94774D492F50E07D
:1008C000822F0E94774D90E02BE630E03F932F93EC
:1008D00025E430E03F932F931F921F925F934F9335
:1008E0009F938F9382E391E09F938F931F920E9437
:1008F000070A81E191E09F938F931F920E94070A5C
:10090000299A0E94713D84E00E94713B2DB73EB749
:10091000205F3F4F0FB6F8943EBF0FBE2DBF8050F3
:10092000944050F08BEF90E09F938F931F920E9422
:10093000070A0F900F900F9084EF91E00E94E00C57
:10094000EC01CE010E94E90C8823D9F38091B7080D
:1009500080FF20C087ED90E09F938F931F920E94AD
:10096000070A88EE93E00E94E00CEC010E947E11E1
:100970000F900F900F90CE010E94E90C8823D9F3BD
:1009800082ED90E09F938F931F920E94070A0F9031
:100990000F900F9082EB90E09F938F931F920E9495
:1009A000070A84E990E09F938F931F920E94070AA1
:1009B0000E94B7238DB79EB706960FB6F8949EBFD8
:1009C0000FBE8DBF809100018A3011F4289801C0BC
:1009D000289A80ED97E09093D2048093D10485E526
:1009E0008093590788E890E09F938F931F920E940D
:1009F000070A8091B7080F900F900F9082FF03C0F5
:100A00008CE790E002C084E790E09F938F931F9261
:100A10000E94070A0F900F900F9080E790E09F933D
:100A20008F931F920E94070A0E94BE1188E893E1EB
:100A300090936D0380936C030F900F900F908091B3
:100A4000CE048823E1F31092CE040E9461250E9417
:100A50007023209100012A3011F4289801C0289AAF
:100A600080910301882321F081508093030112C0FB
:100A70001092C2041092C3041092630710927D0575
:100A800010927C0510927F0510927E0510928105D0
:100A90001092800580916C0390916D03892B01F574
:100AA00085E090E090936D0380936C030E94A318FF
:100AB00080910403909105038F5F9F4FF9F480911B
:100AC00058058823D9F080E197E29093D20480936F
:100AD000D10480E890E090930503809304030EC056
:100AE00080916C0390916D03019790936D038093B7
:100AF0006C032A3011F4289801C0289A8091CE0402
:100B0000882321F080915805882311F40E9456070C
:100B10000E94FE07CE010E94E90C882309F48FCFC2
:100B200020910803309109038091C70890E02817AD
:100B300039079CF480910403909105038F5F9F4FC8
:100B400061F480E797E19093D2048093D10480E030
:100B500093E0909305038093040384E190E00E9466
:100B6000E00CEC016CCF1F920F920FB60F92112484
:100B70008F939F93EF93FF93809102018823E1F479
:100B80008091CA049091CB0401969093CB048093FA
:100B9000CA04FC01EA55F84FE081ED3019F08639BE
:100BA000910539F41092CB041092CA0481E080932D
:100BB0000201E093C60004C01092CB041092CA0454
:100BC000FF91EF919F918F910F900FBE0F901F900B
:100BD0001895DC0120E030E040E050E008C0FA0168
:100BE000EA55F84F8081280F311D4F5F5F4F4A173C
:100BF0005B07A9F73F70C90136E0969587953A954E
:100C0000E1F7835CFD01EA55F84F808311962F735D
:100C1000235CFD01EA55F84F2083A955B84F8DE0BC
:100C20008C93109202018091A6078093C6000895CC
:100C30001F93CF93DF93EA01722F93E29093A6075D
:100C40006093A7078093A807A3E0B0E060E04FC0DF
:100C5000FE01E60FF11D90816F5F715019F410E0F5
:100C600040E00FC0FE01E60FF11D40816F5F715043
:100C700011F410E006C0FE01E60FF11D10816F5F58
:100C80007150892F86958695835CFD01EA55F84F52
:100C9000808350E09A0184E0369527958A95E1F7A4
:100CA000892F90E083709070F4E0880F991FFA9577
:100CB000E1F7282B235CFD01E955F84F2083812FB4
:100CC00082958695869583704F705070440F551F9E
:100CD000440F551F842B835CFD01E855F84F80833A
:100CE0001F73135CFD01E755F84F108314967723AB
:100CF00009F0AECFCD010E94E905DF91CF911F91A0
:100D000008950F931F93CF93DF93EC01062F70E0AC
:100D1000A22FB0E012974AC0E42FF0E0E954F94F57
:100D200030814F5FE42FF0E0E954F94F50814F5F7D
:100D3000E42FF0E0E954F94F10814F5FE42FF0E029
:100D4000E954F94F20814F5F842F90E0A817B9072D
:100D500084F1701771F15D53FE01E70FF11D852FCE
:100D600082958F703D53330F330F382B30836130B2
:100D700001F1912F9D537F5FFE01E70FF11D71502F
:100D80005295507F892F86958695582B50836350B6
:100D90006F3F79F07E5FFE01E70FF11D9295990F8D
:100DA000990F907C2D53922B90837F5F662309F0DF
:100DB000B3CFDF91CF911F910F9108951F93182FFB
:100DC0008A3019F48DE00E94DE068091C00085FF14
:100DD000FCCF1093C60080E090E01F9108951F9310
:100DE0001FB7F8948091C1008F778093C1008091E4
:100DF000C1008F7B8093C100589A5098599A519A9C
:100E00001092C5008AE28093C4008091C000826085
:100E10008093C00088E18093C1008091C2008F77E9
:100E20008093C2008091C2008F7B8093C20080912A
:100E3000C2008F7D8093C2008091C2008F7E80931C
:100E4000C2008091C200877F8093C2008091C10060
:100E50008B7F8093C1008091C20084608093C20028
:100E60008091C20082608093C20002C08091C6005F
:100E70008091C00087FDFACF8091C1008068809387
:100E8000C1008091C10080648093C1001092BC04B5
:100E900081E08093020188EC90E00E94E00C909346
:100EA0004E0780934D071FBF1F9108958091020147
:100EB000882309F4A2C08091B704882371F080913F
:100EC0000201882351F06091C6042BE049E557E008
:100ED00087E40E9418061092B70480914D07909104
:100EE0004E070E94E90C882321F48091B9048823DD
:100EF000B1F080910201882391F06091C60422E450
:100F000044E657E084E40E9418061092B9048AEF80
:100F100090E00E94E00C90934E0780934D07609103
:100F200001016F3F89F0462F50E094E0440F551FB8
:100F30009A95E1F74C5F5E4F605D20E181E40E948D
:100F400018068FEF8093010190913C089923A1F03E
:100F500080910201882381F083E28093A607909319
:100F6000A7078DE08093A8071092020110923C0819
:100F70008091A6078093C6008091B804882359F118
:100F800080910201882339F10E94C7111092B804A0
:100F90003091BB04932F9F5F9093BB04943021F05A
:100FA0008091BA04882359F02EE149E458E060E0CA
:100FB00084E30E9418068FEF8093BB040CC044E1C9
:100FC000949FA0011124465E5C4F24E160E0832FD2
:100FD0008F5C0E9418068091B604882371F080917E
:100FE0000201882351F06091C6042AE04FE457E0E3
:100FF00086E50E9418061092B60408951F93CF93B9
:10100000DF93CDB7DEB722970FB6F894DEBF0FBEE1
:10101000CDBF8091BC04882309F4F7C08091B90644
:101020008B3609F47EC08C3688F48336E1F1843641
:1010300030F48136C1F0823609F0E5C020C0873631
:1010400009F480C0883609F0DEC047C0813709F452
:101050007DC0813708F4A4C0843709F459C08637AD
:1010600009F0D1C06BC02091BD0443E062E0CE0125
:1010700001960E9481068981809301012AC02091F6
:10108000BD0443E06BE089E597E00E948106809112
:10109000F40490915B07892B8093F404809162079C
:1010A00080933C08B0C02091BD0443E06BE089E52B
:1010B00097E00E9481068091F40490915B07892B50
:1010C0008093F4048091620780933C0881E08093D0
:1010D000B9048FEF8093030196C02091BD0443E0D3
:1010E00062E0CE0101960E9481068091F40499810C
:1010F000892B8093F4048A818F3F21F481E08093CF
:10110000BA0402C01092BA0481E08093B8047BC094
:101110002091BD0443E064E08EEB94E00E948106E0
:10112000D8CF2091BD0443E064E082EC94E00E94BB
:1011300081068091C50480933C08CBCF81E08093E9
:10114000B60461C081E08093B7045DC02091BD0406
:1011500043E062E0CE0101960E9481068091020187
:101160008823E1F389818F3F71F0863010F085E0AC
:10117000898389810E949F3B6091C604898126E40E
:101180004FEA58E009C01091C60482E00E94603B1B
:1011900026E44FEA58E0612F855B0E94180633C0B1
:1011A0002091BD0443E066E48FEA98E00E94810646
:1011B0008091B9068B560E948A3B6091DA0870E0F4
:1011C00080E090E024EC39E040E050E00E94584D8F
:1011D0006093740370937503809376039093770301
:1011E0006091DB0870E080E090E00E94584D6093D1
:1011F00078037093790380937A0390937B030E9422
:10120000623D0E941C251092BC0422960FB6F894F1
:10121000DEBF0FBECDBFDF91CF911F9108951F920A
:101220000F920FB60F9211241F932F933F934F935A
:101230005F936F937F938F939F93AF93BF93CF935E
:10124000DF93EF93FF931091C600812F0E94A64871
:101250008091BC04882309F06DC06091C7046623A7
:1012600071F4133279F41093B70681E08093C704C8
:1012700083E290E09093C9048093C8045BC0663910
:1012800008F054C0A62FB0E02091C8043091C904E2
:101290001D3069F0A954B94F1C936F5F6093C70468
:1012A000210F311D3093C9042093C80443C0FD01B0
:1012B000EB54F94F9081ED01CA54D94F8881A901AF
:1012C000491B5109481B51095F705093C904409351
:1012D000C8042081CA0136E0969587953A95E1F7D2
:1012E000835C8217F1F49881842F8F73835C891754
:1012F000C1F481E08093BC046093BD04A954B94F4C
:101300001C938091B906823571F488E190E02CE05D
:101310000FB6F894A895809360000FBE20936000EC
:1013200002C01092BC041092C70404C01092C704FB
:101330001092BC04FF91EF91DF91CF91BF91AF91DB
:101340009F918F917F916F915F914F913F912F91DD
:101350001F910F900FBE0F901F901895982F80919E
:101360003D08813069F48091F304E82FF0E0E65EF7
:10137000FC4F90838F5F8093F30421E030E005C041
:10138000892F0E94DE06282F30E0C90108951F939F
:10139000182F04C080E30E94AE0911501116D4F337
:1013A0001F9108951F93182F04C080E20E94AE0978
:1013B00011501116D4F31F9108950F931F93CF93DB
:1013C000DF938C01EB0108C0F8010F5F1F4FE49120
:1013D0008E2F0E94AE0921972097B1F7DF91CF9110
:1013E0001F910F9108950F931F93CF93DF938C015B
:1013F000EB0106C0F80181918F010E94AE0921978F
:101400002097C1F7DF91CF911F910F9108952F92EF
:101410003F924F925F926F927F928F929F92AF9284
:10142000BF92CF92DF92EF92FF920F931F93CF93D1
:10143000DF93CDB7DEB7E5970FB6F894DEBF0FBEEA
:10144000CDBF2B968FAD2B9780933D08CE01835B4C
:101450009F4F9B838A832D964EAC5FAC2D971EA623
:101460001FA618AA19AA9E01225D3F4F3DAB2CABC7
:10147000820102C00F5F1F4FF801F490FF2019F0A6
:10148000F5E2FF16B9F7B8016419750919F0C20140
:101490000E94DD09FF2009F445C228010894411C7F
:1014A000511C1982AA81BB8133241BAA2FEF2AABBE
:1014B000F2010894411C511CB490632D70E06170DE
:1014C000707035E7B31621F08B2D80628837C9F430
:1014D0006115710559F02D913D914D915C911397D6
:1014E0002EA73FA748AB59AB14960BC08D919C918A
:1014F00011979C0140E050E02EA73FA748AB59ABA5
:10150000129630E2B31621F48981882389F61CC033
:1015100043E2B41611F458E055C08AE2B81621F03F
:101520009DE2B91671F408C0FD011296E081EBABA3
:10153000E7FFBECFE195EBABE0E13E2AFFED3F22B6
:10154000B7CF2BE2B21611F4B982B2CF3EE2B31696
:1015500099F5F2010894411C511C84918A3221F0C2
:10156000B82E20E030E01DC0FD011296408151816F
:1015700057FF02C04FEF5FEF4AAB9ACFC90153E06C
:10158000880F991F5A95E1F7220F331F280F391F33
:101590002B0D311D20533040F2010894411C511C89
:1015A000B4908B2D80538A3048F3A90137FF02C0D5
:1015B0004FEF5FEF4AAB85CF40E3B41629F434FC1C
:1015C00077CF50E2352A74CF8B2D81538930D8F4F0
:1015D00020E030E0C90103E0880F991F0A95E1F788
:1015E000220F331F280F391F2B0D311D2053304080
:1015F000F2010894411C511CB4908B2D80538A3009
:1016000048F32BAB5ECF88E6B81619F494E0392A7C
:101610004FCFECE6BE1619F4F1E03F2A49CFBB8369
:10162000AA8323E6B21639F41296BB83AA831297D3
:101630008C918E8322C134E4B31639F044E6B4169B
:1016400031F059E6B516A9F502C081E0382A30FE1E
:1016500008C01496BB83AA835E914E913E912E9151
:101660000AC01296BB83AA839E918E919C01442747
:1016700037FD4095542F2EA73FA748AB59AB8EA5F9
:101680009FA5A8A9B9A9BB238CF42EA53FA548A95D
:1016900059A950954095309521953F4F4F4F5F4F39
:1016A0002EA73FA748AB59AB8DE28983BAE02B2E1A
:1016B00080C03FE4B31621F04FE6B41631F402C007
:1016C00051E0352AA8E02A2E73C080E7B81689F4C5
:1016D0001296BB83AA839E918E919C0140E050E0BC
:1016E0002EA73FA748AB59AB30E4332AF8E7BF2E0B
:1016F0005DC043E7B416D1F51296BB83AA83DE9092
:10170000CE90C114D10489F488E28E838EE68F8353
:1017100085E788878CE689878A8789E28B871C869C
:10172000E6E0CE2ED12CCC0EDD1E5AA957FD14C0FA
:10173000452F552747FD509560E070E0C6010E9497
:10174000304B009711F4FAA80EC0F82EFC188AA9A5
:101750008F154CF4F82E07C0F60101900020E9F730
:101760003197FE2EFC18198240E090C095E5B9161D
:1017700021F0A5E7BA1631F402C0B1E03B2A7AE0C5
:10178000272E16C0E8E5BE1621F0F8E7BF1609F0CF
:1017900070C033FE0BC02EA53FA548A959A921153D
:1017A00031054105510511F030E4332A60E1262E60
:1017B00019824AA947FD02C05FED35228EA59FA57B
:1017C000A8A9B9A90097A105B10549F49AA9992337
:1017D00031F45EE2C52ED12CCC0EDD1E46C06EA4C7
:1017E0007FA488A899A84EE2C42ED12CCC0EDD1E71
:1017F000E22CFF2400E010E06EA57FA588A999A93E
:10180000A80197010E94AA4D6A3020F430E3A32E6C
:10181000A60E08C027E5A22EA60EA8E5BA1611F45A
:10182000BFEDAB22F601A2926F016EA57FA588A93C
:1018300099A9A80197010E94AA4D2EA73FA748ABDE
:1018400059AB6E147F048006910618F039014A01E5
:10185000D3CFF8E02F1649F433FE07C020E3A216D9
:1018600021F080E3D6018E936D01FCA8FC184AA9F3
:101870000DC0BB2009F456C0BE82198296E0C92E65
:10188000D12CCC0EDD1E40E0FF24F394E42EEF18A3
:10189000E7FCEE248981882319F08F2D8F5F06C025
:1018A00036FC02C08F2D02C08F2D8E5FA82EAE0C8D
:1018B000032D10E080E3882E912C80229122811448
:1018C000910421F48BA98A190E94D2098981882365
:1018D00029F061E070E0CE01019609C006FF09C061
:1018E00080E38C83BD8262E070E0CE0104960E94AA
:1018F000F309B0E28B16910421F48BA98A190E9496
:10190000C7098E2D0E94C7096F2D772767FD709537
:10191000C6010E94F30904FFABCD8BA98A190E946E
:10192000D209A6CDE5960FB6F894DEBF0FBECDBFA7
:10193000DF91CF911F910F91FF90EF90DF90CF90AB
:10194000BF90AF909F908F907F906F905F904F90DF
:101950003F902F9008952FB7F894909100019A30FE
:1019600019F4529A5A9802C03F9A479884B18861F4
:1019700084B985B1877E85B99A3019F4529A5A98FC
:1019800002C03F9A479884B58F7A84BD84B5836A34
:1019900084BD85B5877385BD85B5887F826085BD2B
:1019A00017BC88E788BD16BC80916E00897F809344
:1019B0006E0080916E00816080936E002FBF08954D
:1019C0002091CC043091CD042F5F3F4F820F931FA5
:1019D00008952091CC043091CD04821B930B892F64
:1019E00099278695807490E008951F920F920FB604
:1019F0000F9211242F933F934F935F936F937F9395
:101A00008F939F93AF93BF93EF93FF938091D304F2
:101A100081508093D3048F3FB9F489E08093D3043D
:101A2000809106038F5F817080930603882319F4E9
:101A300081E08093CE048091CC049091CD040196F6
:101A40009093CD048093CC048091D1049091D204E2
:101A5000892BB1F08091D1049091D2040197909399
:101A6000D2048093D1042091D1043091D20480918A
:101A700004039091050382239323892BD1F406C09C
:101A80008FEF9FEF909305038093040380910001F3
:101A90008A3039F404C05A9A05C0479A03C05A984C
:101AA00001C047988091B70883FF08C00E94A141F8
:101AB00005C0809100018A3081F7EDCFFF91EF9151
:101AC000BF91AF919F918F917F916F915F914F9156
:101AD0003F912F910F900FBE0F901F901895AC0162
:101AE0002091CC043091CD042F5F3F4F05C08091F1
:101AF0007A00886C80937A008091CC049091CD0418
:101B0000B901681B790BCB01840F951F8070907809
:101B1000892F99278695882351F30895AC01209148
:101B2000CC043091CD042F5F3F4F8091CC04909135
:101B3000CD04B901681B790BCB01840F951F807010
:101B40009078892F99278695882379F308959FB7F0
:101B5000F894579A5F9AE0EBF0E080818F78808369
:101B6000808183688083E1EBF0E0808186738083ED
:101B70008081866080838AE08093B3001092B200F7
:101B8000E0E7F0E080818A7F8083808182608083CB
:101B90009FBF08951F920F920FB60F921124FF92CC
:101BA0000F931F932F933F934F935F936F937F9365
:101BB0008F939F93AF93BF93EF93FF93809107030E
:101BC0008150809307038F3F09F082C08091B0005D
:101BD0008093B0008091B00080688093B0008091C5
:101BE000930390E09093D5048093D4048091E4080B
:101BF000F090D10880FF23C00091D4041091D50447
:101C000060911A0570911B0580911C0590911D052E
:101C100020E830E040E050E00E94CC4DCA01B9011C
:101C20002F2D30E040E050E00E94584D20E032E09F
:101C300040E050E00E94CC4D020F131F22C00091E3
:101C4000D4041091D50460911A0570911B05809100
:101C50001C0590911D0520E830E040E050E00E9416
:101C6000CC4DCA01B9012F2D30E040E050E00E9478
:101C7000584D20E032E040E050E00E94CC4D021B85
:101C8000130B1093D5040093D4042091D404309105
:101C9000D5048091D20890E02817390754F020919C
:101CA000D4043091D5048091D30890E08217930733
:101CB00024F49093D5048093D4048091D40490911B
:101CC000D5048093B3008091D4088093070306C0A5
:101CD0008091B0008F738093B0005F98FF91EF9177
:101CE000BF91AF919F918F917F916F915F914F9134
:101CF0003F912F911F910F91FF900F900FBE0F906A
:101D00001F9018959FB7F89411B812B88FEF809371
:101D10007E00ECE7F0E080818F7180838081807E9F
:101D20008083AAE7B0E087E28C93EBE7F0E0808164
:101D3000887F80838C91886C8C939FBF08951F92BD
:101D40000F920FB60F921124EF92FF920F931F93F1
:101D50002F933F934F935F936F937F938F939F93B3
:101D6000AF93BF93CF93DF93EF93FF9380917A006C
:101D7000877380937A008091F1048F5F8093F104E0
:101D80008150853009F47EC0863090F4823009F4A9
:101D900040C0833030F48823F1F0813009F082C2F2
:101DA0002FC0833009F441C0843009F07BC25AC08F
:101DB000883009F4B2C0893038F4863009F473C031
:101DC000873009F06FC28CC0893009F4C3C08A30F3
:101DD00009F068C2DBC180917800909179009093FE
:101DE000F0048093EF0481E08093F2048091E60494
:101DF0009091E70401969093E7048093E60456C21D
:101E000080917800909179009093EE048093ED0496
:101E100082C080917800909179009093EC04809337
:101E2000EB0484E08093F20441C240910803509196
:101E3000090380917800909179009A01220F331F55
:101E4000240F351F63E070E00E94834D260F371F7B
:101E500036952795369527953093090320930803E7
:101E600086E0E0CF809114059091150520917800CF
:101E700030917900821B930B9093DF048093DE04F2
:101E800087E0D0CF80917800909179002091120561
:101E900030911305821B930B9093E1048093E0042F
:101EA0001092F20403C2809100012091EF0430915E
:101EB000F0048A3049F48091780090917900820F83
:101EC000931F9695879506C0809178009091790030
:101ED000820F931F9093DD048093DC0481E0A2CFF6
:101EE000809100012091ED043091EE048A3049F494
:101EF0008091780090917900820F931F9695879535
:101F000006C08091780090917900820F931F909382
:101F1000DB048093DA0482E085CF80910001209178
:101F2000EB043091EC048A3049F480917800909170
:101F30007900820F931F9695879506C0809178004F
:101F400090917900820F931F9093D9048093D804C5
:101F500085E068CF6091780070917900E090160577
:101F6000F09017050091180510911905882777FD45
:101F70008095982F0E943D4CA80197010E943D4BEF
:101F80000E940A4C7093E3046093E204E091E2043F
:101F9000F091E3048091E0049091E104C091DE04AB
:101FA000D091DF0497FF03C0909581959F4F64E027
:101FB00070E00E94974D9B01CE01D7FF03C0909522
:101FC00081959F4F64E070E00E94974D260F371F68
:101FD000E20FF31FF093E304E093E2048091E20444
:101FE0009091E30402970CF43EC060911605709145
:101FF0001705809118059091190520E030E84BE312
:1020000054E40E94784C88230CF078C06091160547
:102010007091170580911805909119052AE037ED08
:1020200043EA5CE30E943E4B6093160570931705EC
:10203000809318059093190580915A0590915B053E
:10204000845F914008F05AC06091160570911705A1
:1020500080911805909119052DEC3CEC4CEC5DE35A
:102060000E943E4B43C08091E2049091E3048F5F55
:102070009F4F0CF043C06091160570911705809139
:1020800018059091190520E030E849E054E40E94D9
:102090007C4C18169CF5609116057091170580917F
:1020A0001805909119052AE037ED43EA5CE30E9498
:1020B0003D4B609316057093170580931805909318
:1020C000190580915A0590915B05845F9140B0F4A9
:1020D000609116057091170580911805909119056A
:1020E0002DEC3CEC4CEC5DE30E943D4B60931605FF
:1020F00070931705809318059093190580917800C7
:10210000909179009093D7048093D60420914A054A
:1021100030914B0540914C0550914D058091E20462
:102120009091E304AA2797FDA095BA2F820F931FE1
:10213000A41FB51F80934A0590934B05A0934C05AF
:10214000B0934D05E0904A05F0904B0500914C0589
:1021500010914D0560914A0570914B0580914C0599
:1021600090914D0520E034E040E050E00E94CC4DDD
:10217000E21AF30A040B150BE0924A05F0924B05A4
:1021800000934C0510934D0583E04CCEE091780010
:10219000F09179008091E8049091E904E80FF91F2B
:1021A000F093E904E093E8048091EA048F5F809360
:1021B000EA04853008F476C0809178009091790027
:1021C00090930F0380930E034091E4045091E50433
:1021D00020913E0830913F082E1B3F0B80918205D5
:1021E00090918305281B390B8091820390E0BC01FC
:1021F000269FC001279F900D369F900D11249A01B4
:10220000A3E0220F331FAA95E1F7241B350B820FA1
:10221000931F68E070E00E94974D7093E50460930F
:10222000E404E0900A03F0900B0300910C0310917A
:102230000D03BF01882777FD8095982FA80197018E
:10224000220F331F441F551F2E0D3F1D401F511FCE
:10225000620F731F841F951F24E030E040E050E0C0
:102260000E94CC4D20930A0330930B0340930C0340
:1022700050930D0320913E0830913F0880910A034E
:1022800090910B03A0910C03B0910D03281B390B07
:1022900030938305209382051092EA041092E9049A
:1022A0001092E8041092F2041092F10480917C00E4
:1022B000807E9091F204892B80937C008091F104C0
:1022C000882329F080917A00886C80937A00FF91AE
:1022D000EF91DF91CF91BF91AF919F918F917F91BE
:1022E0006F915F914F913F912F911F910F91FF90AF
:1022F000EF900F900FBE0F901F9018951F93CF93E4
:10230000DF9383E00E94603B182F853108F01A505C
:1023100017BD84E690E00E946F0D80910E039091AE
:102320000F0382559340C0F410E016C017BD82E33E
:1023300090E00E946F0DDF93CF931F920E94070AD7
:1023400080910E0390910F030F900F900F9084587F
:10235000934030F01F5F02C0C6E6D1E01A3F30F371
:10236000612F83E00E94693B109340088CE291E06A
:102370000E946F0DDF91CF911F910895EAE1F3E084
:1023800080E2819383E0EA36F807D1F708959F92BF
:10239000AF92BF92CF92DF92EF92FF920F931F9373
:1023A000CF93DF938091F404282F30E0C90181702E
:1023B0009070682F8823A9F08091F504882311F08C
:1023C000815002C080916A038093F504EAE1F3E052
:1023D00080E2819383E0EA36F807D1F78FEF8093AC
:1023E000BB04A9014270507021FF17C09091F50401
:1023F00080916A03981719F41092F50403C09F5F47
:102400009093F504EAE1F3E080E2819393E0EA3609
:10241000F907D1F78FEF8093BB04662321F0452B9A
:1024200011F01092F5048091F504282F30E08A30E5
:1024300040F481E18093F3043F932F938AE695E083
:1024400007C080E18093F3043F932F9385E695E0E6
:102450009F938F9381E08F930E94070A0F900F90B4
:102460000F900F900F901091F504173009F40CC3E2
:10247000183098F4133009F427C1143038F41130AF
:1024800009F469C0123008F0C9C01DC0153009F444
:10249000F3C1163008F0AAC26BC11B3009F4E1C3C6
:1024A0001C3038F4193009F44AC31A3008F09BC3C1
:1024B00010C31D3009F43DC51D3008F424C41E307E
:1024C00009F0AEC56FC51092F30485E595E09F93C2
:1024D0008F9311E01F930E94070A84E18093F30415
:1024E00020910001822F6AE00E94774D492F50E031
:1024F000822F0E94774D90E02BE630E03F932F93A0
:1025000025E430E03F932F931F921F925F934F93E8
:102510009F938F9380E495E09F938F931F930E94E6
:10252000070A88E28093F3040E94623D90E09F9343
:102530008F9383E395E09F938F931F930E94070AE5
:102540008CE38093F30483E295E09F938F931F9332
:102550000E94070AD4C38091B70880FF47C0109239
:10256000F30480918205909183059F938F9384E17A
:1025700095E09F938F931F930E94070A84E18093B5
:10258000F30480918405909185059F938F9385E056
:1025900095E09F938F931F930E94070A88E2809390
:1025A000F30480910E0390910F039F938F9386EF16
:1025B00094E09F938F931F930E94070A8CE380936C
:1025C000F3048091400890E09F938F9387EE94E00E
:1025D0009F938F931F930E94070A8DB79EB74496CF
:1025E0000FB6F8949EBF0FBE8DBF1FC584E18093C8
:1025F000F30483EE94E09F938F931F930E94070A46
:1026000088E28093F30484ED94E09F938F931F936B
:102610000E94070A8DB79EB70696E2CF1092F30488
:102620008BEC94E09F938F9311E01F930E94070A15
:1026300084E18093F30460911A0570911B058091E9
:102640001C0590911D0520E034E040E050E00E9420
:10265000CC4D5F934F933F932F938CEB94E09F93DC
:102660008F931F930E94070A88E28093F30460917E
:10267000220570912305809124059091250520E085
:1026800034E040E050E00E94CC4D5F934F933F9385
:102690002F938DEA94E09F938F931F930E94070AD4
:1026A0008CE38093F30480916E0390916F039F936A
:1026B0008F938EE994E09F938F931F930E94070A54
:1026C0008DB79EB746968CCF1092F30480914D083B
:1026D00090914E0820914B0830914C089F938F9316
:1026E0003F932F938EE894E09F938F9311E01F9375
:1026F0000E94070A84E18093F3048091510890912D
:10270000520820914F08309150089F938F933F9328
:102710002F938EE794E09F938F931F930E94070A55
:1027200088E28093F3048091550890915608209197
:102730005308309154089F938F933F932F938EE6C5
:1027400094E09F938F931F930E94070A8CE38093DA
:10275000F3048091590890915A08209157083091BC
:1027600058089F938F933F932F938EE594E07BC0FF
:102770001092F304E091B008F0E0EE0FFF1FE75B6A
:10278000F74F20813181E091AF08F0E0EE0FFF1F9D
:10279000E75BF74F808191813F932F939F938F93B6
:1027A0008EE494E09F938F9311E01F930E94070A99
:1027B00084E18093F304E091B208F0E0EE0FFF1F94
:1027C000E75BF74F20813181E091B108F0E0EE0F37
:1027D000FF1FE75BF74F808191813F932F939F937A
:1027E0008F938EE394E09F938F931F930E94070A29
:1027F00088E28093F304E091B408F0E0EE0FFF1F4D
:10280000E75BF74F20813181E091B308F0E0EE0FF4
:10281000FF1FE75BF74F808191813F932F939F9339
:102820008F938EE294E09F938F931F930E94070AE9
:102830008CE38093F304E091B608F0E0EE0FFF1F05
:10284000E75BF74F20813181E091B508F0E0EE0FB2
:10285000FF1FE75BF74F808191813F932F939F93F9
:102860008F938EE194E09F938F931F930E94070AAA
:102870008DB79EB74C96B4CE1092F30480E194E0ED
:102880009F938F9311E01F930E94070A0F900F9060
:102890000F90809100018A3009F04AC084E1809352
:1028A000F30440910805509109058091D804909156
:1028B000D9042091080530910905821B930B5F9381
:1028C0004F939F938F9380E094E09F938F931F93F8
:1028D0000E94070A88E28093F30440910A05509110
:1028E0000B058091DA049091DB0420910A05309168
:1028F0000B05821B930B5F934F939F938F9380EFF6
:1029000093E09F938F931F930E94070A8CE3809319
:10291000F30480910C0590910D0520919B08309156
:102920009C089F938F933F932F9380EE93E055C025
:1029300084E18093F304809108059091090562E099
:1029400070E00E94974D8091D8049091D904209115
:10295000080530910905821B930B7F936F939F931A
:102960008F9380ED93E09F938F931F930E94070AAC
:1029700088E28093F30480910A0590910B0562E050
:1029800070E00E94974D8091DA049091DB042091D1
:102990000A0530910B05821B930B7F936F939F93D6
:1029A0008F9380EC93E09F938F931F930E94070A6D
:1029B0008CE38093F30480910C0590910D0562E007
:1029C00070E00E94974D80919B0890919C087F93A6
:1029D0006F939F938F9380EB93E09F938F931F93BD
:1029E0000E94070A8DB79EB74596FACD1092F30460
:1029F00083EA93E09F938F9311E01F930E94070A4D
:102A000084E18093F3048091120590911305209145
:102A1000E0043091E1049F938F933F932F9382E9D9
:102A200093E09F938F931F930E94070A88E28093FD
:102A3000F30480911405909115052091DE043091E6
:102A4000DF049F938F933F932F9381E893E09F93AD
:102A50008F931F930E94070A8CE38093F304609185
:102A600016057091170580911805909119050E941F
:102A70000A4C20919008309191087F936F933F9377
:102A80002F9380E793E036C184E18093F304809133
:102A90000803909109039F938F9382E693E09F939D
:102AA0008F9311E01F930E94070A88E28093F3043A
:102AB00080910105909102059F938F9384E593E0A7
:102AC0009F938F931F930E94070A8DB79EB70A9614
:102AD00087CD1092F30485E493E09F938F9311E0E8
:102AE0001F930E94070A84E18093F304809170038E
:102AF000909171039F938F9386E393E09F938F93BD
:102B00001F930E94070A88E28093F30480916E036A
:102B100090916F039F938F9387E293E09F938F939E
:102B20001F930E94070A8CE38093F30480914E0563
:102B300090914F059F938F9388E193E068C2109224
:102B4000F304809164059091650520915C053091B6
:102B50005D059F938F933F932F9386E093E09F9320
:102B60008F9311E01F930E94070A84E18093F3047E
:102B7000809166059091670520915E0530915F0513
:102B80009F938F933F932F9384EF92E09F938F9324
:102B90001F930E94070A88E28093F30480916805DE
:102BA0009091690520916005309161059F938F9305
:102BB0003F932F9382EE92E09F938F931F930E94F7
:102BC000070A8CE38093F30480916A0590916B056A
:102BD00020916205309163059F938F933F932F93CC
:102BE00080ED92E040CE1092F30488EC92E09F9347
:102BF0008F9311E01F930E94070A84E18093F304EE
:102C00008091930390E09F938F938AEB92E09F9340
:102C10008F931F930E94070A88E28093F3048091A8
:102C2000D4049091D5049F938F938CEA92E09F9364
:102C30008F931F930E94070A8CE38093F3042091E3
:102C4000D30830E08091D20890E03F932F939F9378
:102C50008F938EE992E09F938F931F930E94070AB0
:102C6000BCCC1092F3048EE892E09F938F9311E016
:102C70001F930E94070A84E18093F30420915D076B
:102C8000332727FD309580915C07992787FD909524
:102C90003F932F939F938F938EE792E09F938F9311
:102CA0001F930E94070A88E28093F30420915E0735
:102CB000332727FD309580915F0790E03F932F9356
:102CC0009F938F938EE692E09F938F931F930E9422
:102CD000070A8CE38093F3042091630730E080912E
:102CE0006007992787FD90953F932F939F938F932C
:102CF0008EE592E09F938F931F930E94070A8DB7F2
:102D00009EB748966DCC80917C06882371F4109212
:102D1000F30481E592E09F938F9381E08F930E946B
:102D2000070A0F900F900F9080C120917E062230ED
:102D300071F02330B1F080917D062223E1F41092EE
:102D4000F30490E09F938F9380E492E01BC0109275
:102D5000F30480917D0690E09F938F938FE292E041
:102D600011C01092F30480917D0690E09F938F93A1
:102D70008EE192E007C01092F30490E09F938F934E
:102D80008DE092E09F938F9381E08F930E94070ADA
:102D90000F900F900F900F900F90E0907F06F090A3
:102DA00080060091810610918206C801B70120E8D3
:102DB00036E948E950E00E94CC4D59016A01C8014A
:102DC000B70120E836E948E950E00E94CC4D7B018C
:102DD0008C0120E137E240E050E00E94CC4DE90157
:102DE00037FF03C0D095C195DF4FC801B70120E17F
:102DF00037E240E050E00E94CC4D2AE030E040E075
:102E000050E00E94CC4DB90137FF03C07095619529
:102E10007F4F84E18093F3047F936F93DF93CF938D
:102E2000BF92AF9288EF91E09F938F9399249394F0
:102E30009F920E94070AE0908306F090840600911A
:102E4000850610918606C801B70120E836E948E9F1
:102E500050E00E94CC4D59016A01C801B70120E839
:102E600036E948E950E00E94CC4D7B018C0120E11D
:102E700037E240E050E00E94CC4DE90137FF03C04B
:102E8000D095C195DF4FC801B70120E137E240E09E
:102E900050E00E94CC4D2AE030E040E050E00E943B
:102EA000CC4DB90137FF03C0709561957F4F88E223
:102EB0008093F3047F936F93DF93CF93BF92AF928E
:102EC00083EE91E09F938F939F920E94070AE09078
:102ED0008706F09088060091890610918A06C8013D
:102EE000B70128EE33E040E050E00E94CC4D59019C
:102EF0006A01C801B70128EE33E040E050E00E94CB
:102F0000CC4D9B0177FF03C0309521953F4F8CE35B
:102F10008093F3043F932F93BF92AF9284ED91E09F
:102F20009F938F939F920E94070A8DB79EB74996F1
:102F300057CB1092F30489EC91E09F938F9311E0AB
:102F40001F930E94070A84E18093F3048091F5089F
:102F5000992787FD90959F938F938AEB91E09F939C
:102F60008F931F930E94070A88E28093F304809155
:102F7000F608992787FD90959F938F938BEA91E0B0
:102F80009F938F931F930E94070A8CE38093F3040F
:102F90008091F708992787FD90959F938F938CE9EF
:102FA00091E035C01092F30482E991E09F938F93F2
:102FB00011E01F930E94070A84E18093F30480913B
:102FC000F8089091F9089F938F9384E891E09F937C
:102FD0008F931F930E94070A88E28093F3048091E5
:102FE000FA089091FB089F938F9386E791E09F9357
:102FF0008F931F930E94070A8CE38093F3048091C0
:10300000FC089091FD089F938F9388E691E09F9331
:103010008F931F930E94070A8DB79EB74296E0CA0E
:10302000115010936A031092F5041092F404DF918A
:10303000CF911F910F91FF90EF90DF90CF90BF90B5
:10304000AF909F90089587B18C6087B9429843985C
:1030500008954091F6045091F7044431510500F170
:103060004C3D5105E8F42091FC043091FD04C90168
:10307000880F991F8417950710F4429A01C042984F
:103080002F5F3F4F3093FD042093FC0421503040CC
:103090002417350730F01092FD041092FC0401C093
:1030A000429A4091F8045091F9044431510510F4CA
:1030B000439808954C3D5105E8F42091FA0430916D
:1030C000FB04C901880F991F8417950710F4439AD0
:1030D00001C043982F5F3F4F3093FB042093FA04C5
:1030E000215030402417350730F01092FB04109225
:1030F000FA040895439808959FB7F8943998389A38
:1031000088B1836088B9E9EBF0E080818C7F8083AF
:103110008AE28093B8009FBF089585EA8093BC003F
:10312000089584E98093BC0008958093BB0085E8EE
:103130008093BC00089585EC8093BC00089585E8D9
:103140008093BC000895EF92FF920F931F938CEB36
:10315000E82EF12C84E9F70180831092FE040BEB3A
:1031600010E0F80180818093FF041092FF0480E852
:10317000F70180831092BD001092BA00F80110820E
:103180001092B9001092B8000E947C1885EAF701ED
:103190008083F801108285E8F70180831F910F91E9
:1031A000FF90EF9008951F920F920FB60F92112487
:1031B0008F939F93EF93FF938091FE048F5F809393
:1031C000FE0481508330D1F1843028F4813081F0C5
:1031D000823060F508C08530C1F18530A0F18630BD
:1031E00009F04FC03EC08091FF04880F8E5A12C074
:1031F0008091FF048F5F8093FF048150813069F0DC
:10320000813030F0823061F0833009F047C00BC06C
:10321000809187088093BB0020C080919D08FACFE1
:1032200080919208F7CF8091AE08F4CF8091FF048F
:10323000843010F41092FE0485EA10C080910005DD
:10324000880F8D5AE7CF85EC09C0E0910005F0E0CA
:103250008091BB00EF5BF74F808385E88093BC00D3
:103260001DC080910005E82FF0E09091BB00EB5B62
:10327000F74F90838F5F80930005843010F0109299
:10328000000584E98093BC001092FE048AE090E07F
:1032900090936D0380936C031092FF04FF91EF9164
:1032A0009F918F910F900FBE0F901F9018959FB711
:1032B000F89456985E9A8AB180638AB98BB18F7CF4
:1032C0008BB9809100018A3011F4539A5B988091F8
:1032D00080008C708093800080918100837E809339
:1032E000810080918100836C8093810080918200B5
:1032F0008F738093820080916F00897F80936F002D
:1033000080916F00816280936F001092020510928D
:1033100001059FBF08951F920F920FB60F921124BF
:103320002F933F935F936F937F938F939F93AF936D
:10333000BF9380910305882391F42091010530917A
:103340000205809101059091020568E070E00E94FD
:10335000974D261B370B30930205209301051092E1
:103360000305BF91AF919F918F917F916F915F9175
:103370003F912F910F900FBE0F901F9018951F92A5
:103380000F920FB60F9211240F931F932F933F9319
:103390004F935F936F937F938F939F93AF93BF935D
:1033A000CF93DF93EF93FF932091860030918700B6
:1033B0008091040590910505281B390B80918600AA
:1033C000909187009093050580930405C9018D5461
:1033D00094400091060510910705835F9A4188F497
:1033E000043011053CF010926B03809103058F5F50
:1033F0008093030581E090E0909307058093060594
:1034000098C00E3011050CF094C0C9018B5F90403C
:10341000845B914008F072C0E901C25DD140F801BF
:10342000EE0FFF1FE75BF74F808191819E01281B04
:10343000390BC90137FF03C0909581959F4F0697BF
:1034400084F48091010590910205883C91054CF42B
:1034500080910105909102050A9690930205809350
:103460000105F801EE0FFF1FE75BF74F2081318167
:10347000C901880F991F820F931F8C0F9D1F64E055
:1034800070E00E94974D9B01CE0101968617970729
:103490001CF42150304006C021976C177D0714F4AE
:1034A0002F5F3F4F8091010590910205E801CC0FFD
:1034B000DD1F833C9105BCF0FE01E75BF74F808187
:1034C0009181A901481B590BCA0163E070E00E9479
:1034D000974DCB01880F991F860F971FC959D74F5A
:1034E0009983888304C0C959D74F19821882F8017B
:1034F000EE0FFF1FE75BF74F31832083F801319612
:10350000F0930705E0930605E530F10511F45D9AA7
:1035100006C05D98E630F10511F45C9A01C05C9834
:10352000809100018A3029F4379711F45B9A01C029
:103530005B988091010590910205892B49F080915B
:103540000105909102050197909302058093010572
:10355000FF91EF91DF91CF91BF91AF919F918F91AB
:103560007F916F915F914F913F912F911F910F919B
:103570000F900FBE0F901F9018952F923F924F9271
:103580005F926F927F928F929F92AF92BF92CF92F3
:10359000DF92EF92FF920F931F93CF93DF93CDB7FC
:1035A000DEB722970FB6F894DEBF0FBECDBF809175
:1035B0000C0590910D052091DC043091DD04821BF7
:1035C000930B90939C0880939B088091DA049091D0
:1035D000DB0420910A0530910B05821B930B90931D
:1035E0009808809397088091D8049091D9042091ED
:1035F000080530910905821B930B90939A088093DC
:103600009908E0909E08F0909F086091E004709106
:10361000E104882777FD8095982F2CE030E040E08A
:1036200050E00E94584D0027F7FC0095102FE60E41
:10363000F71E081F191FC801B70122E030E040E063
:1036400050E00E94CC4D30939F0820939E08E0905C
:10365000A808F090A9086091DE047091DF04882723
:1036600077FD8095982F2CE030E040E050E00E94FC
:10367000584D0027F7FC0095102FE60EF71E081F87
:10368000191FC801B70122E030E040E050E00E947D
:10369000CC4D3093A9082093A80820919008309130
:1036A00091086091E2047091E304882777FD80958A
:1036B000982F442737FD4095542F620F731F841FA6
:1036C000951F22E030E040E050E00E94CC4D309366
:1036D00091082093900840914205509143056091D4
:1036E0004405709145052091E0043091E104C90141
:1036F000880F991F820F931F880F991F880F991F9A
:10370000AA2797FDA095BA2F840F951FA61FB71F54
:103710008093420590934305A0934405B0934505DB
:1037200040914605509147056091480570914905C3
:103730002091DE043091DF04C901880F991F820FA8
:10374000931F880F991F880F991FAA2797FDA0958F
:10375000BA2F840F951FA61FB71F8093460590931D
:103760004705A0934805B09349052091E0043091A6
:10377000E1048091520590915305820F931F90931D
:103780005305809352052091DE043091DF0480912F
:10379000540590915505820F931F90935505809382
:1037A00054058091560590915705019690935705C1
:1037B0008093560520913E0530913F05409140058C
:1037C0005091410580919B0890919C08AA2797FDF4
:1037D000A095BA2F820F931FA41FB51F80933E059B
:1037E00090933F05A0934005B093410580919B08BD
:1037F00090919C089C01442737FD4095542F80915F
:10380000A0089091A108A091A208B091A308280F48
:10381000391F4A1F5B1F2093A0083093A1084093D3
:10382000A2085093A308203B83E8380788E04807A4
:1038300080E0580764F0205B3348484050402093B4
:10384000A0083093A1084093A2085093A308809148
:10385000A0089091A108A091A208B091A308B7FF79
:103860000CC080559C47A74FBF4F8093A0089093F2
:10387000A108A093A208B093A30890918A059A8307
:10388000992309F08AC080918B05882309F085C0AF
:103890008091B70886FF81C060919B0870919C0859
:1038A00020912E0530912F05409130055091310522
:1038B000E0909503FF2400E010E0882777FD8095D5
:1038C000982F0E94584D20E038E040E050E00E94E0
:1038D000CC4DCA01B901A80197010E94584D20E0C2
:1038E00030E140E050E00E94CC4D59016A01209344
:1038F000CA053093CB054093CC055093CD0560911C
:103900009B0870919C0820913605309137054091B5
:10391000380550913905882777FD8095982F0E94AA
:10392000584D20E038E040E050E00E94CC4DCA0104
:10393000B901A80197010E94584D20E030E140E014
:1039400050E00E94CC4D2093C6053093C7054093AC
:10395000C8055093C905D601C501D7FE07C0B0956B
:10396000A095909581959F4FAF4FBF4F813891059E
:10397000A105B10574F457FF07C0509540953095E7
:1039800021953F4F4F4F5F4F21383105410551057C
:10399000A4F081E08093510510C01092C6051092EA
:1039A000C7051092C8051092C9051092CA05109259
:1039B000CB051092CC051092CD058091970890917F
:1039C00098082090CA053090CB054090CC055090C7
:1039D000CD05820D931D90939808809397080091D0
:1039E000970810919808A090C605B090C705C090A0
:1039F000C805D090C90580919603682E7724882445
:103A00009924C401B301A60195010E94584D20E0FC
:103A100032E040E050E00E94CC4D020F131F1093A3
:103A200098080093970820913A0530913B05409102
:103A30003C0550913D058091970890919808AA27E0
:103A400097FDA095BA2F820F931FA41FB51F8093D7
:103A50003A0590933B05A0933C05B0933D054091FA
:103A60003605509137056091380570913905809180
:103A70009708909198082091860530918705821BC0
:103A8000930BAA2797FDA095BA2F840F951FA61F09
:103A9000B71F8093360590933705A0933805B093F0
:103AA00039058091360590913705A0913805B09180
:103AB0003905E0907803F090790300917A03109132
:103AC0007B03E816F9060A071B0704F580E197E275
:103AD000A0E0B0E08E199F09A00BB10B80933605D2
:103AE00090933705A0933805B0933905809136053A
:103AF00090913705A0913805B091390580933A052A
:103B000090933B05A0933C05B0933D05209136056D
:103B1000309137054091380550913905882799270C
:103B2000DC018E199F09A00BB10B281739074A0732
:103B30005B0704F580EF98EDAFEFBFEFE80EF91EDD
:103B40000A1F1B1FE0923605F092370500933805D7
:103B5000109339058091360590913705A09138056D
:103B6000B091390580933A0590933B05A0933C05AD
:103B7000B0933D058091DA049091DB040F9734F403
:103B800088E19CEF90939808809397088091DA04DD
:103B90009091DB04079734F480E398EF90939808B2
:103BA000809397089091000199839A30A9F48091AD
:103BB000DA049091DB04835F934034F088EE93E065
:103BC00090939808809397088091DA049091DB0491
:103BD0008A5F9340DCF014C08091DA049091DB049A
:103BE000855E974034F088EE93E090939808809338
:103BF00097088091DA049091DB04835F974034F05A
:103C000080ED97E0909398088093970880919908A9
:103C100090919A088A199B0990939A088093990821
:103C20000091990810919A08C401B301A201910171
:103C30000E94584D20E032E040E050E00E94CC4D20
:103C4000021B130B10939A080093990820913205D8
:103C50003091330540913405509135058091990894
:103C600090919A08AA2797FDA095BA2F820F931FCB
:103C7000A41FB51F8093320590933305A09334059C
:103C8000B093350540912E0550912F056091300578
:103C9000709131058091990890919A08209188053A
:103CA00030918905821B930BAA2797FDA095BA2F07
:103CB000840F951FA61FB71F80932E0590932F0585
:103CC000A0933005B093310580912E0590912F057A
:103CD000A0913005B0913105E0907403F090750328
:103CE0000091760310917703E816F9060A071B077F
:103CF00004F588EA91E6A0E0B0E08E199F09A00BD8
:103D0000B10B80932E0590932F05A0933005B093AF
:103D1000310580912E0590912F05A0913005B0912D
:103D200031058093320590933305A0933405B09309
:103D3000350520912E0530912F0540913005509189
:103D4000310588279927DC018E199F09A00BB10B3B
:103D5000281739074A075B0704F588E59EE9AFEFA6
:103D6000BFEFE80EF91E0A1F1B1FE0922E05F0920E
:103D70002F05009330051093310580912E05909109
:103D80002F05A0913005B0913105809332059093B5
:103D90003305A0933405B09335058091D8049091F4
:103DA000D9040F9734F488E19CEF90939A0880939C
:103DB00099088091D8049091D904079734F480E34E
:103DC00098EF90939A088093990899819A30A9F472
:103DD0008091D8049091D904835F934034F088EEA9
:103DE00093E090939A08809399088091D8049091D9
:103DF000D9048A5F9340DCF014C08091D80490917C
:103E0000D904855E974034F088EE93E090939A0849
:103E1000809399088091D8049091D904835F97404A
:103E200034F080ED97E090939A0880939908809100
:103E30007A00886C80937A0080913E0590913F05CE
:103E4000A0914005B091410580932A0590932B05E0
:103E5000A0932C05B0932D0580912E0590912F05F0
:103E6000A0913005B091310580931A0590931B0500
:103E7000A0931C05B0931D058091360590913705E0
:103E8000A0913805B09139058093220590932305C0
:103E9000A0932405B09325058091320590913305B8
:103EA000A0913405B091350580931E0590931F05B0
:103EB000A0932005B093210580913A0590913B0590
:103EC000A0913C05B0913D05809326059093270570
:103ED000A0932805B09329058091B70887FF63C098
:103EE0002A81222309F05FC080918B05882309F085
:103EF0005AC08091990890919A08893C91055CF08C
:103F00002091990830919A088091990890919A0887
:103F10002052334011C08091990890919A0888539B
:103F20009F4FA4F42091990830919A0880919908A4
:103F300090919A08205E3C4F880F991F880F991F17
:103F4000280F391F30939A08209399088091970879
:103F500090919808893C91055CF0209197083091E8
:103F6000980880919708909198082052334011C08A
:103F7000809197089091980888539F4FA4F42091BE
:103F80009708309198088091970890919808205E42
:103F90003C4F880F991F880F991F280F391F3093A6
:103FA00098082093970822960FB6F894DEBF0FBEAC
:103FB000CDBFDF91CF911F910F91FF90EF90DF90D8
:103FC000CF90BF90AF909F908F907F906F905F90B9
:103FD0004F903F902F9008950F931F930AE710E0A2
:103FE000F8018081877380838091D8049091D904EF
:103FF00090939A08809399088091DA049091DB0459
:1040000090939808809397088091DC049091DD0448
:1040100090939C0880939B086091E0047091E10468
:10402000882777FD8095982F2CE030E040E050E025
:104030000E94584D70939F0860939E086091DE0423
:104040007091DF04882777FD8095982F0E94584D46
:104050007093A9086093A8088091E2049091E3040A
:104060009093910880939008F8018081886C8083F8
:104070006091DA0870E080E090E024EC39E040E004
:1040800050E00E94584D60937403709375038093C1
:104090007603909377036091DB0870E080E090E016
:1040A0000E94584D609378037093790380937A034C
:1040B00090937B031F910F9108958091010590913A
:1040C0000205813A91050CF40AC38091BA088B3F2E
:1040D00098F08B3F19F480915C050EC08C3F19F469
:1040E00080915E0509C08D3F19F48091600504C080
:1040F0008E3F21F480916205809383038091830336
:10410000882319F41092830304C08F3F11F4809325
:1041100083038091B9088B3F98F08B3F19F480910D
:104120005C050EC08C3F19F480915E0509C08D3F7F
:1041300019F48091600504C08E3F21F480916205DE
:104140008093820380918203882319F41092820362
:1041500005C0843618F084E6809382038091BB0802
:104160008B3F98F08B3F19F480915C050EC08C3F1B
:1041700019F480915E0509C08D3F19F480916005A6
:1041800004C08E3F21F48091620580938403809166
:104190008403882319F41092840305C0843618F030
:1041A00084E6809384038091BD088B3F98F08B3F19
:1041B00019F480915C050EC08C3F19F480915E0566
:1041C00009C08D3F19F48091600504C08E3F21F431
:1041D000809162058093850380918503882319F47B
:1041E0001092850304C08F3F11F480938503809162
:1041F000C4088B3F98F08B3F19F480915C050EC08A
:104200008C3F19F480915E0509C08D3F19F48091AF
:10421000600504C08E3F21F480916205809386037F
:1042200080918603882319F41092860304C08F3F7F
:1042300011F4809386038091C5088B3F98F08B3FE3
:1042400019F480915C050EC08C3F19F480915E05D5
:1042500009C08D3F19F48091600504C08E3F21F4A0
:104260008091620580938703809187038B3010F4DF
:104270008AE002C08F3F11F4809387038091C608C3
:104280008B3F98F08B3F19F480915C050EC08C3FFA
:1042900019F480915E0509C08D3F19F48091600585
:1042A00004C08E3F21F48091620580938803809141
:1042B0008803882319F41092880304C08F3F11F4F7
:1042C000809388038091CB088B3F98F08B3F19F443
:1042D00080915C050EC08C3F19F480915E0509C089
:1042E0008D3F19F48091600504C08E3F21F48091C8
:1042F000620580938A0380918A03882319F41092BF
:104300008A0304C08F3F11F480938A038091CC0804
:104310008B3F98F08B3F19F480915C050EC08C3F69
:1043200019F480915E0509C08D3F19F480916005F4
:1043300004C08E3F21F48091620580938B038091AD
:104340008B03882319F410928B0304C08F3F11F460
:1043500080938B038091CD088B3F98F08B3F19F4AD
:1043600080915C050EC08C3F19F480915E0509C0F8
:104370008D3F19F48091600504C08E3F21F4809137
:10438000620580938C0380918C03882319F410922A
:104390008C0304C08F3F11F480938C038091CE086E
:1043A0008B3F98F08B3F19F480915C050EC08C3FD9
:1043B00019F480915E0509C08D3F19F48091600564
:1043C00004C08E3F21F48091620580938D0380911B
:1043D0008D03882319F410928D0304C08F3F11F4CC
:1043E00080938D038091CF088B3F98F08B3F19F419
:1043F00080915C050EC08C3F19F480915E0509C068
:104400008D3F19F48091600504C08E3F21F48091A6
:10441000620580938E0380918E03882319F4109295
:104420008E0304C08F3F11F480938E038091DF08C8
:104430008B3F98F08B3F19F480915C050EC08C3F48
:1044400019F480915E0509C08D3F19F480916005D3
:1044500004C08E3F21F48091620580938F03809188
:104460008F03882319F410928F0304C08F3F11F437
:1044700080938F038091E0088B3F98F08B3F19F475
:1044800080915C050EC08C3F19F480915E0509C0D7
:104490008D3F19F48091600504C08E3F21F4809116
:1044A00062058093900380919003882319F4109201
:1044B000900304C08F3F11F4809390038091E10832
:1044C0008B3F98F08B3F19F480915C050EC08C3FB8
:1044D00019F480915E0509C08D3F19F48091600543
:1044E00004C08E3F21F480916205809391038091F6
:1044F0009103882319F41092910304C08F3F11F4A3
:10450000809391038091E2088B3F98F08B3F19F4E0
:1045100080915C050EC08C3F19F480915E0509C046
:104520008D3F19F48091600504C08E3F21F4809185
:1045300062058093920380919203882319F410926C
:10454000920304C08F3F11F4809392038091D008AE
:104550008B3F98F08B3F19F480915C050EC08C3F27
:1045600019F480915E0509C08D3F19F480916005B2
:1045700004C08E3F21F48091620580939303809163
:104580009303882319F41092930304C08F3F11F40E
:10459000809393038091D5088B3F98F08B3F19F45B
:1045A00080915C050EC08C3F19F480915E0509C0B6
:1045B0008D3F19F48091600504C08E3F21F48091F5
:1045C00062058093940380919403882319F41092D8
:1045D000940304C08F3F11F4809394038091D80812
:1045E0008B3F98F08B3F19F480915C050EC08C3F97
:1045F00019F480915E0509C08D3F19F48091600522
:1046000004C08E3F21F480916205809395038091D0
:104610009503882319F41092950304C08F3F11F479
:10462000809395038091D9088B3F98F08B3F19F4C4
:1046300080915C050EC08C3F19F480915E0509C025
:104640008D3F19F48091600504C08E3F21F4809164
:1046500062058093960380919603882319F4109243
:10466000960304C08F3F11F4809396038091DE0877
:104670008B3F98F08B3F19F480915C050EC08C3F06
:1046800019F480915E0509C08D3F19F48091600591
:1046900004C08E3F21F4809162058093970380913E
:1046A0009703882319F41092970304C08F3F11F4E5
:1046B0008093970360918A0370E080E090E00E940D
:1046C000904927E137EB41ED58E30E94F54C6093A8
:1046D0007E0370937F0380938003909381030895FA
:1046E00080915805882301F510929D081092870843
:1046F000109292081092AE088091BE04882311F0A7
:10470000809387088091BF04882311F080939D08CF
:104710008091C004882311F08093AE088091C10479
:10472000882311F0809392088091870890E09093FD
:104730007F0780937E0780919D0890E0909381078A
:10474000809380078091AE0890E0909383078093D8
:1047500082078091920890E0909385078093840768
:104760001092FE041092FF040E948D18089510927A
:10477000130510921205109215051092140580E091
:1047800090E0A0E0B0E08093160590931705A09309
:104790001805B0931905109209051092080510929A
:1047A0000B0510920A0510920D0510920C0510923F
:1047B0009503109296030E94EC1F84E690E00E94FD
:1047C0006F0D0E94EC1F8091B70880FF10C0809190
:1047D0000E0390910F03875B934038F480910E0392
:1047E00090910F038E5E924010F40E947E11809192
:1047F000D8049091D904909309058093080580917D
:10480000DA049091DB0490930B0580930A05809164
:10481000DC049091DD0490930D0580930C0580914C
:104820000A0590910B0590930F0580930E058091DA
:10483000080590910905909311058093100584E077
:104840000E94713B8050944058F18091A80890914B
:10485000A90897FF03C0909581959F4F6CE070E089
:104860000E94974D709315056093140580919E08E2
:1048700090919F0897FF03C0909581959F4F6CE0A2
:1048800070E00E94974D709313056093120560913C
:10489000D6047091D704882777FD8095982F17C08C
:1048A00084E00E94713B909313058093120586E08B
:1048B0000E94713B909315058093140588E00E9437
:1048C000713BAA2797FDA095BA2FBC01CD010E948C
:1048D0003D4C6093160570931705809318059093CF
:1048E000190510922E0510922F0510923005109286
:1048F0003105109232051092330510923405109252
:104900003505109236051092370510923805109231
:10491000390510923A0510923B0510923C05109211
:104920003D0510923E0510923F05109240051092F1
:10493000410510929A0810929908109298081092C6
:10494000970810929C0810929B0880910A039091FE
:104950000B03A0910C03B0910D0390933F0880933B
:104960003E081092E5041092E40410924A05109259
:104970004B0510924C0510924D0580916E0390915D
:104980006F03909371038093700382E390E09093A0
:10499000D2048093D1046091DA0870E080E090E066
:1049A00024EC39E040E050E00E94584D6856754CC8
:1049B0008F4F9F4F609374037093750380937603BA
:1049C000909377036091DB0870E080E090E00E94B4
:1049D000584D6856754C8F4F9F4F60937803709376
:1049E000790380937A0390937B0310927D03109256
:1049F0007C03109275051092740510927705109241
:104A0000760560916E0370916F03882777FD80951E
:104A1000982F2EE036E040E050E00E94584D609321
:104A2000A0087093A1088093A2089093A308109205
:104A3000A5081092A40808951F93182F0EC0809106
:104A40005805882361F484E690E09093D204809323
:104A5000D1048AEF90E00E948E0D115080F71F91D3
:104A600008958091AF08E82FF0E0EE0FFF1FE75B9D
:104A7000F74F808191818D5E9F4F14F010929803C3
:104A8000808191818A5B9F4FDCF480919803882319
:104A9000B9F481E080939803809150058F5F8093F3
:104AA000500580915005853028F4809150050E9472
:104AB0001C25089588EE93E09093D2048093D1044E
:104AC00008952F923F924F925F926F927F928F92B2
:104AD0009F92AF92BF92CF92DF92EF92FF920F938D
:104AE0001F93CF93DF93CDB7DEB7A2970FB6F8949D
:104AF000DEBF0FBECDBF0E94BD1A299A209172055C
:104B0000309173058091C108482F50E0465F5F4F98
:104B100058874F834217530714F438872F838091A7
:104B2000010590910205883791050CF073C08091C2
:104B30000301882399F480910403909105038F5F0A
:104B40009F4F61F488E99AE39093D2048093D10453
:104B500080E09CE090930503809304038091B0056E
:104B60009091B105009731F001979093B105809332
:104B7000B00504C0109258051092590580910001AB
:104B80008A3011F4289A01C0289880915A05909192
:104B90005B05895E9340D8F18091C808A82FB0E0EA
:104BA000B887AF8381E080935905E091AF082E2F3D
:104BB00030E0220F331FF901E959F74F11821082BB
:104BC000A091B008B0E0AA0FBB1FFD01E959F74F53
:104BD00011821082E091B2084E2F50E0440F551F11
:104BE000CA018959974FFC0111821082275B374F08
:104BF000F90111821082A75BB74F11961C921E9289
:104C0000475B574FDA0111961C921E92DCC310923B
:104C10005805D9C380910105909102058D38910501
:104C20000CF4D1C3109259058091C90822E3829FE8
:104C3000C00111249093B1058093B005EF81F885F0
:104C4000B9976CF080915A0590915B05FFEF8F3F0B
:104C50009F0729F0019690935B0580935A058091F8
:104C60005A0590915B058F3F910509F0E8F4109289
:104C7000C2051092C3051092C4051092C50510928A
:104C8000BE051092BF051092C0051092C10510928A
:104C90007105109270058A3F910531F481E090E032
:104CA0009093A8058093A70520915C0530915D0540
:104CB0008091B308E82FF0E0EE0FFF1FE75BF74F9E
:104CC0008081918182599F4F281739071CF42F5FEB
:104CD0003F4F0CC08081918182599F4F821793076B
:104CE0004CF42115310531F02150304030935D05F1
:104CF00020935C0520915E0530915F058091B4089A
:104D0000E82FF0E0EE0FFF1FE75BF74F8081918106
:104D100082599F4F281739071CF42F5F3F4F0CC053
:104D20008081918182599F4F821793074CF42115FE
:104D3000310531F02150304030935F0520935E05FE
:104D400020916005309161058091B508E82FF0E071
:104D5000EE0FFF1FE75BF74F8081918182599F4FD4
:104D6000281739071CF42F5F3F4F0CC080819181B9
:104D700082599F4F821793074CF42115310531F06A
:104D800021503040309361052093600520916205E9
:104D9000309163058091B608E82FF0E0EE0FFF1F19
:104DA000E75BF74F8081918182599F4F2817390720
:104DB0001CF42F5F3F4F0CC08081918182599F4F1F
:104DC000821793074CF42115310531F02150304002
:104DD0003093630520936205209164053091650549
:104DE00080915B0890915C0882599F4F2817390782
:104DF0001CF42F5F3F4F0EC080915B0890915C08C0
:104E000082599F4F821793074CF42115310531F0D9
:104E1000215030403093650520936405209166054C
:104E20003091670580915D0890915E0882599F4F8F
:104E3000281739071CF42F5F3F4F0EC080915D0883
:104E400090915E0882599F4F821793074CF4211569
:104E5000310531F0215030403093670520936605CD
:104E6000209168053091690580915F0890916008F4
:104E700082599F4F281739071CF42F5F3F4F0EC0F0
:104E800080915F089091600882599F4F8217930725
:104E90004CF42115310531F0215030403093690533
:104EA0002093680520916A0530916B058091610817
:104EB0009091620882599F4F281739071CF42F5F81
:104EC0003F4F0EC0809161089091620882599F4FB8
:104ED000821793074CF42115310531F021503040F1
:104EE00030936B0520936A0580915C0590915D0578
:104EF00097FF05C010925D0510925C050AC08F3FB8
:104F0000910539F034F08FEF90E090935D05809338
:104F10005C0580915E0590915F0597FF05C010923A
:104F20005F0510925E050AC08F3F910539F034F09D
:104F30008FEF90E090935F0580935E058091600510
:104F40009091610597FF05C0109261051092600570
:104F50000AC08F3F910539F034F08FEF90E09093C5
:104F6000610580936005809162059091630597FFCC
:104F700005C010926305109262050AC08F3F91052B
:104F800039F034F08FEF90E09093630580936205E1
:104F9000809164059091650597FF05C010926505A5
:104FA000109264050AC08F3F910539F034F08FEFFD
:104FB00090E09093650580936405809166059091DB
:104FC000670597FF05C010926705109266050AC035
:104FD0008F3F910539F034F08FEF90E090936705A3
:104FE00080936605809168059091690597FF05C0DB
:104FF00010926905109268050AC08F3F910539F03B
:1050000034F08FEF90E0909369058093680580916C
:105010006A0590916B0597FF05C010926B05109281
:105020006A050AC08F3F910539F034F08FEF90E0A8
:1050300090936B0580936A05E091B108F0E0EE0F64
:10504000FF1FE75BF74F80819181813591050CF45B
:105050000EC180915805882309F009C18091B208DA
:10506000E82FF0E0EE0FFF1FE75BF74F80819181A3
:105070008C3491050CF4BFC08091AF058F5F809395
:10508000AF05893C08F4F3C01092AF05299810923F
:105090005B0510925A058091AF08282F30E0D901A6
:1050A000AA0FBB1FA75BB74F8D919C9111978734B7
:1050B00091059CF48091B008E82FF0E0EE0FFF1FFF
:1050C000E75BF74F8081918197FF03C090958195B1
:1050D0009F4F873491050CF46BC08091B008682F06
:1050E00070E0DB01AA0FBB1FA75BB74F8D919C91AE
:1050F0001197873491053CF0F901EE0FFF1FE75B34
:10510000F74F808191818D919C918734910564F056
:10511000F901EE0FFF1FE75BF74F80819181873424
:10512000910514F042E001C041E0FB01EE0FFF1FCA
:10513000E75BF74F80819181863491055CF4F9013A
:10514000EE0FFF1FE75BF74F808191818734910558
:105150000CF043E0FB01EE0FFF1FE75BF74F808190
:1051600091818A5B9F4F5CF4F901EE0FFF1FE75BB3
:10517000F74F80819181873491050CF044E0660FF0
:10518000771F675B774FDB018D919C918A5B9F4F07
:105190005CF4220F331F275B374FF9018081918127
:1051A000863491050CF445E0842F0E94813B1CC09D
:1051B0008091B70883FF18C08081918197FF03C059
:1051C000909581959F4F44977CF48D919C918A5B3B
:1051D0009F4F54F481E08093500588EE93E09093C4
:1051E000D2048093D10443C00E94623D0E949F3B41
:1051F0000E94B72335C080819181855B9F4FACF5BC
:105200008091AF058F5F8093AF05893C80F110924C
:10521000AF0529986FEF7FEF84E00E94793B1092F1
:105220005B0510925A050E94B72360911205709198
:10523000130584E00E94793B609114057091150577
:1052400086E00E94793B6091160570911705809168
:105250001805909119050E940F4C88E00E94793B37
:105260000E94623D0E941C2502C01092AF05E09191
:10527000B108F0E0EE0FFF1FE75BF74F80819181EF
:105280008B5A9F4F0CF09FC0E091B208F0E0EE0FF8
:10529000FF1FE75BF74F80819181855B9F4F0CF08B
:1052A0006BC08091AE058F5F8093AE05893C08F49A
:1052B00065C088EC8093AE0581E090E090935B053B
:1052C00080935A0581E0809358051092BA05109298
:1052D000BB051092BC051092BD0510923E051092C0
:1052E0003F05109240051092410510922E05109234
:1052F0002F0510923005109231051092360510924C
:105300003705109238051092390580911A05909151
:105310001B05A0911C05B0911D058093320590934B
:105320003305A0933405B093350580912205909103
:105330002305A0912405B091250580933A0590930B
:105340003B05A0933C05B0933D051092C205109219
:10535000C3051092C4051092C5051092BE051092A7
:10536000BF051092C0051092C1058091B70885FF56
:1053700005C00E94794302C01092AE05E091B208C8
:10538000F0E0EE0FFF1FE75BF74F808191818C34D7
:105390009105BCF08091AD058F5F8093AD05893C90
:1053A00090F088EC8093AD0510925B0510925A0541
:1053B000109258058091B70885FF05C00E94FF43F1
:1053C00002C01092AD0580916B03815080936B03F6
:1053D00080916B038F3F29F080915905882309F450
:1053E00077C30E945D2060916C0570916D057AA372
:1053F00069A38091AF08E82EFF24D701AA0FBB1F35
:10540000CD01875B974FFC018081918198A38F8F9D
:105410008091BE08682E7724A959B74F0D90BC9192
:10542000A02DBE8FAD8F8091BF08A82EBB242091E8
:105430007405309175053C8F2B8F20906E05309050
:105440006F058091B008082F10E0C801880F991FE0
:10545000DC01A75BB74F0D90BC91A02DBA8FA98F2F
:105460008959974FDC018D919C91988F8F8BE0919A
:105470007605F0917705FE8BED8BE091B208AE2FAB
:10548000B0E0AA0FBB1FA75BB74F0D90BC91A02D3A
:10549000BC8BAB8BE091B108F0E0EE0FFF1FE75B38
:1054A000F74FC080D18028E730E0C20ED31ED092E3
:1054B0007305C09272056091870370E080E090E010
:1054C0000E94904920E030E040E251E40E943E4BCF
:1054D00020E030E040E85CE30E94F54C6F87788B79
:1054E000898B9A8B6093AA087093AB088093AC0861
:1054F0009093AD086091880370E080E090E00E9496
:10550000904920E030EE4BE256E40E94A24B6093BB
:10551000930870939408809395089093960820912F
:10552000C304222331F08AE090E09093D204809368
:10553000D104E22F22FF09C080919203482F50E04E
:10554000440F551F440F551F10C023FD03C040E0FA
:1055500050E00BC08091920390E0880F991F880F54
:10556000991F44275527481B590B20917C053091E2
:105570007D05C901B3E0880F991FBA95E1F7821B39
:10558000930B840F951F68E070E00E94974D2B01EC
:1055900070937D0560937C05E4FF09C080919203C0
:1055A000482F50E0440F551F440F551F10C0E5FD14
:1055B00003C040E050E00BC08091920390E0880F60
:1055C000991F880F991F44275527481B590B809115
:1055D0007E0590917F059C01E3E0220F331FEA9541
:1055E000E1F7281B390BCA01820F931F68E070E0B6
:1055F0000E94974D4B0170937F0560937E058091CB
:10560000C204282F83FF03C082E390E004C082FF1E
:1056100007C08EEC9FEF909381058093800504C0B6
:10562000109281051092800521FF09C080917C03B2
:1056300090917D03019690937D0380937C0324FFDA
:1056400009C080917C0390917D03019790937D0325
:1056500080937C034F8D58A1469DC001479D900DBE
:10566000569D900D112429A13AA1220F331F69A143
:105670007AA1260F371FED8DFE8DEA9DD001EB9D9F
:10568000B00DFA9DB00D11244B8D5C8DA41BB50B94
:10569000BAA3A9A3820F931F64E070E00E94974D04
:1056A00089A19AA1860F971F9AA389A3C20162E0DC
:1056B00070E00E94974DA9A1BAA1A60FB71FBAA387
:1056C000A9A3B0936D05A0936C05E98DFA8DE69DB5
:1056D000C001E79D900DF69D900D11249101220FC0
:1056E000331F220D331D4F89588DB501469F500140
:1056F000479FB00C569FB00C1124AD89BE89AA1AE1
:10570000BB0A820F931F64E070E00E94974DA60EC3
:10571000B71EC40162E070E00E94974DA60EB71E4E
:10572000B0926F05A0926E052091800530918105A1
:10573000220F331F220F331FEB89FC892E1B3F0BD7
:1057400030937105209370058091630780FF56C0E8
:1057500080919203813808F451C080915C079927A9
:1057600087FD9095AC01469DC001479D900D569DCB
:10577000900D112469A17AA1680F791F70936D05AE
:1057800060936C0580915D07992787FD9095DC01FA
:10579000A69DC001A79D900DB69D900D1124A80E49
:1057A000B91EB0926F05A0926E0580915E07992791
:1057B00087FD9095280F391F309371052093700550
:1057C0002091BC0830E080916007992787FD909573
:1057D000FC012E9FC0012F9F900D3E9F900D112424
:1057E00090937D0380937C0380915F0790E08C15FC
:1057F0009D0524F490937305809372058091720542
:105800009091730597FF04C0109273051092720572
:105810008091B70882FF0CC080E090E0A0E0B0E08B
:105820008093930890939408A0939508B09396085A
:1058300020E030E040E050E06F85788989899A89DE
:105840000E94784C882364F480E090E0A0E0B0E00F
:105850008093AA089093AB08A093AC08B093AD08CE
:1058600020E030E040E050E06091930870919408AF
:1058700080919508909196080E94784C882364F452
:1058800080E090E0A0E0B0E08093930890939408CB
:10589000A0939508B0939608E0916C05F0916D0582
:1058A0002091780530917905CF0164E070E00E9485
:1058B000974D77FF03C0709561957F4F2617370787
:1058C0007CF4CF01F7FF03C0909581959F4F64E072
:1058D00070E00E94974D709379056093780506C03B
:1058E000215030403093790520937805E0916E0582
:1058F000F0916F0520917A0530917B05CF0164E02E
:1059000070E00E94974D77FF03C0709561957F4FBF
:10591000261737077CF4CF01F7FF03C090958195D8
:105920009F4F64E070E00E94974D70937B056093F9
:105930007A0506C02150304030937B0520937A05CC
:10594000F801EE0FFF1FE75BF74F20813181809157
:10595000D608482F50E04217530744F48091E308DB
:1059600082FF04C081E080938C0515C080918C0576
:10597000882389F0F801EE0FFF1FE75BF74F2081C6
:1059800031818091D708BA01681B71092617370742
:1059900014F410928C05F801EE0FFF1FE75BF74F30
:1059A0008081918166277727641B750B861797077F
:1059B00044F48091E30883FF04C081E080938D0567
:1059C00015C080918D05882389F0000F111F075B9A
:1059D000174FD8012D913C918091D70890E0841BFE
:1059E000950B8217930714F410928D05F701EE0FB3
:1059F000FF1FE75BF74F808191814817590744F4F7
:105A00008091E30880FF04C081E080938F0515C07A
:105A100080918F05882389F0F701EE0FFF1FE75B68
:105A2000F74F208131818091D708FA01E81BF109F5
:105A30002E173F0714F410928F05F701EE0FFF1F8A
:105A4000E75BF74F808191818617970744F4809137
:105A5000E30881FF04C081E080938E0517C0809128
:105A60008E05882399F0EE0CFF1C29E438E0E20E45
:105A7000F31ED7012D913C918091D70890E0841BB3
:105A8000950B8217930714F410928E0580918C0564
:105A9000882321F480918D05882321F081E0809373
:105AA0008B0502C010928B0580918F05882321F40D
:105AB00080918E05882351F081E080938A051092B1
:105AC0008B0510928C0510928D0502C010928A05EC
:105AD00080918B05882311F40C943D3B84E690E083
:105AE0009093D2048093D1048091D50890E0EF8107
:105AF000F8858E179F0714F498878F838091910300
:105B000090E09093F7048093F6048091920390E0E4
:105B10009093F9048093F8040E9429188091590504
:105B2000882381F1109271051092700510926D0515
:105B300010926C0510926F0510926E0580E090E057
:105B4000A8ECBFE38093AA089093AB08A093AC089D
:105B5000B093AD088BE09CEBA2E3BCE38093930889
:105B600090939408A0939508B093960810928B0593
:105B700010928A05109279051092780510927B0593
:105B800010927A0520918C0830918D0840918E08F2
:105B900050918F0880911A0590911B05A0911C05CA
:105BA000B0911D05820F931FA41FB51F80938C0811
:105BB00090938D08A0938E08B0938F082091880849
:105BC0003091890840918A0850918B088091220574
:105BD00090912305A0912405B0912505820F931F74
:105BE000A41FB51F8093880890938908A0938A0802
:105BF000B0938B0850908A05552029F480918B052D
:105C0000882309F44FC01092E7041092E604109222
:105C100042051092430510924405109245051092DA
:105C200046051092470510924805109249051092BA
:105C30008C0810928D0810928E0810928F08109286
:105C400088081092890810928A0810928B08809117
:105C50002E0590912F05A0913005B09131058093CC
:105C6000320590933305A0933405B09335058091A8
:105C7000360590913705A0913805B091390580938C
:105C80003A0590933B05A0933C05B0933D051092D7
:105C90008905109288051092870510928605552077
:105CA00009F0F5C080918B05882309F0F0C0609160
:105CB0001A0570911B0580911C0590911D05A090FF
:105CC000C308BB24CC24DD24E0909E08F0909F08FC
:105CD000A60195010E94CC4D0027F7FC0095102FDE
:105CE0002E193F09400B510BCA01B90120E130E0E8
:105CF00040E050E00E94CC4D39014A0160912205FC
:105D0000709123058091240590912505E090A808C5
:105D1000F090A908A60195010E94CC4D0027F7FC40
:105D20000095102F2E193F09400B510BCA01B901E4
:105D300020E130E040E050E00E94CC4D79018A0142
:105D40008091780590917905819734F480917A0556
:105D500090917B058197A4F0C401B30123E030E06A
:105D600040E050E00E94CC4D39014A01C801B70122
:105D700023E030E040E050E00E94CC4D79018A0100
:105D8000E091B208F0E0EE0FFF1FE75BF74F0190E4
:105D9000F081E02DF7FF03C0F095E195FF4F7A9772
:105DA000A4F0C401B30123E030E040E050E00E94E1
:105DB000CC4D39014A01C801B70123E030E040E091
:105DC00050E00E94CC4D79018A01F1E26F16710416
:105DD0008104910434F070E2672E712C812C912C97
:105DE00011C020EE62162FEF72062FEF82062FEF02
:105DF000920644F460EE662E6FEF762E6FEF862EDD
:105E00006FEF962E31E2E316F1040105110534F02F
:105E100050E2E52EF12C012D112D11C040EEE416BB
:105E20004FEFF4064FEF04074FEF140744F440EE32
:105E3000E42E4FEFF42E4FEF042F4FEF142F8091ED
:105E40002E0590912F05A0913005B091310586194E
:105E50009709A809B90980932E0590932F05A0935F
:105E60003005B09331058091360590913705A091AA
:105E70003805B09139058E199F09A00BB10B80939D
:105E8000360590933705A0933805B0933905809176
:105E9000E6049091E7048F3F910509F008F445C4AA
:105EA000552009F0DCC380918B05882309F0D7C306
:105EB00080915105882309F0D2C360918C087091BC
:105EC0008D0880918E0890918F0820E031E040E0AD
:105ED00050E00E94CC4D20938C0830938D08409365
:105EE0008E0850938F08609188087091890880917E
:105EF0008A0890918B0820E031E040E050E00E9459
:105F0000CC4D209388083093890840938A08509399
:105F10008B08E090C308FF2400E010E020914205C8
:105F2000309143054091440550914505C801B701A2
:105F30000E94584D20E031E040E050E00E94CC4DFE
:105F40002093420530934305409344055093450503
:105F500020914605309147054091480550914905EB
:105F6000C801B7010E94584D20E031E040E050E008
:105F70000E94CC4D20934605309347054093480539
:105F80005093490560918C0870918D0880918E081E
:105F900090918F082091420530914305409144052E
:105FA00050914505E090DC08FF2400E010E0621B02
:105FB000730B840B950BA80197010E94CC4DCA016D
:105FC000B90120E031E040E050E00E94CC4D690191
:105FD000309389052093880560918808709189081D
:105FE00080918A0890918B08209146053091470551
:105FF0004091480550914905621B730B840B950B2A
:10600000A80197010E94CC4DCA01B90120E031E0FE
:1060100040E050E00E94CC4D8901309387052093E9
:10602000860580917805909179058197BCF48091DF
:106030007A0590917B0581978CF4E091B208F0E0AD
:10604000EE0FFF1FE75BF74F0190F081E02DF7FFA8
:1060500003C0F095E195FF4F7A9794F0C60162E096
:1060600070E00E94974D7093890560938805C80180
:1060700062E070E00E94974D7093870560938605FB
:10608000E0901E05F0901F0500912005109121055C
:1060900080911A0590911B05A0911C05B0911D05DA
:1060A000E81AF90A0A0B1B0BE092B605F092B70545
:1060B0000093B8051093B90580913205909133058E
:1060C000A0913405B09135058E199F09A00BB10B35
:1060D0008093320590933305A0933405B093350532
:1060E00060902605709027058090280590902905DE
:1060F0008091220590912305A0912405B09125055A
:10610000681A790A8A0A9B0A6092B2057092B305EE
:106110008092B4059092B50580913A0590913B0527
:10612000A0913C05B0913D0586199709A809B909C8
:1061300080933A0590933B05A0933C05B0933D05B1
:106140002091A4083091A508213831054CF08091A8
:106150000C0590910D05019690930D0580930C050B
:1061600020583F4F4CF480910C0590910D050197FC
:1061700090930D0580930C051092A5081092A40829
:1061800081E090E090939E0580939D051092A30579
:106190001092A4051092A5051092A60580918C0876
:1061A00090918D08A0918E08B0918F08209195054F
:1061B000309196054091970550919805281B390B11
:1061C0004A0B5B0B57FF07C05095409530952195C2
:1061D0003F4F4F4F5F4F20523E44404050400CF0E5
:1061E000C1C071E0E71670E1F70670E0070770E0E4
:1061F00017070CF452C080919C05882309F449C00C
:10620000D801C7012CE0B595A795979587952A9554
:10621000D1F7019690939E0580939D05D801C70103
:10622000F3E0B595A79597958795FA95D1F7809363
:10623000A3059093A405A093A505B093A60589583E
:106240009341A040B04064F088E893E1A0E0B0E062
:106250008093A3059093A405A093A505B093A605EC
:106260006091A3057091A4058091A5059091A60564
:1062700020E031E040E050E00E94CC4D8091880564
:1062800090918905820F931F9093890580938805CB
:1062900066C081E080939C0562C010929C05F0E08E
:1062A000EF16F0EFFF06FFEF0F07FFEF1F070CF0F1
:1062B00056C080919B05882309F44DC088279927F3
:1062C000DC018E199F09A00BB10BECE0B595A795E9
:1062D00097958795EA95D1F7019690939E058093BF
:1062E0009D05C801B70128E030E040E050E00E9481
:1062F000CC4D2093A3053093A4054093A50550935E
:10630000A60528573C4E4F4F5F4F64F488E79CEE3C
:10631000AFEFBFEF8093A3059093A405A093A505CD
:10632000B093A6056091A3057091A4058091A50581
:106330009091A60520E031E040E050E00E94CC4D75
:106340008091880590918905820F931F909389050C
:106350008093880511C081E080939B050DC0109249
:106360009B050AC010929E0510929D0584EF91E056
:1063700090937303809372038091DD08C82EDD240F
:1063800080919D0590919E05C816D90624F4D0925F
:106390009E05C0929D0571E0E71674E0F70670E077
:1063A000070770E0170774F08091080590910905C0
:1063B00020919D0530919E05820F931F90930905B2
:1063C0008093080580E0E8168CEFF8068FEF080749
:1063D0008FEF180774F480910805909109052091BA
:1063E0009D0530919E05821B930B90930905809328
:1063F000080581E090E090939E0580939D051092A2
:106400009F051092A0051092A1051092A2058091FF
:10641000880890918908A0918A08B0918B082091F2
:106420009105309192054091930550919405281B58
:10643000390B4A0B5B0B57FF07C0509540953095C1
:1064400021953F4F4F4F5F4F20523E4440405040B8
:106450000CF0C1C0A1E06A16A0E17A06A0E08A06AD
:10646000A0E09A060CF452C080919A05882309F4A2
:1064700049C0D401C3017CE0B595A7959795879550
:106480007A95D1F7019690939E0580939D05D4014E
:10649000C30163E0B595A795979587956A95D1F760
:1064A00080939F059093A005A093A105B093A205AA
:1064B00089589341A040B04064F088E893E1A0E09F
:1064C000B0E080939F059093A005A093A105B093A1
:1064D000A20560919F057091A0058091A105909102
:1064E000A20520E031E040E050E00E94CC4D8091D8
:1064F000860590918705820F931F9093870580935F
:10650000860566C081E080939A0562C010929A0564
:10651000F0E06F16F0EF7F06FFEF8F06FFEF9F06AC
:106520000CF056C080919905882309F44DC0882746
:106530009927DC0186199709A809B9095CE0B59586
:10654000A795979587955A95D1F7019690939E05B3
:1065500080939D05C401B30128E030E040E050E0A5
:106560000E94CC4D20939F053093A0054093A10538
:106570005093A20528573C4E4F4F5F4F64F488E775
:106580009CEEAFEFBFEF80939F059093A005A09383
:10659000A105B093A20560919F057091A00580911F
:1065A000A1059091A20520E031E040E050E00E947A
:1065B000CC4D8091860590918705820F931F909313
:1065C00087058093860511C081E0809399050DC0F1
:1065D000109299050AC010929E0510929D0584EFB5
:1065E00091E0909373038093720380919D05909145
:1065F0009E05C816D90624F4D0929E05C0929D052A
:1066000071E0671674E0770670E0870670E0970621
:1066100074F080910A0590910B0520919D053091B1
:106620009E05820F931F90930B0580930A0580E0CF
:1066300068168CEF78068FEF88068FEF9806CCF4FB
:1066400080910A0590910B0520919D0530919E0542
:10665000821B930B90930B0580930A050AC010923E
:106660008705109286051092890510928805109270
:10667000510520E030E040E050E0609193087091D7
:10668000940880919508909196080E94784C8823F0
:1066900041F4109287051092860510928905109298
:1066A000880580918C0890918D08A0918E08B091FA
:1066B0008F088093950590939605A0939705B093C6
:1066C00098058091880890918908A0918A08B091D6
:1066D0008B088093910590939205A0939305B093B6
:1066E00094051092420510924305109244051092B1
:1066F00045051092460510924705109248051092E4
:10670000490510928C0810928D0810928E081092F4
:106710008F08109288081092890810928A081092A7
:106720008B081092E7041092E604C0907005D09098
:1067300071058601D7FE04C0002711270C191D0919
:1067400000311105C4F08091B70884FD14C081E0C8
:1067500090E09093A8058093A7058091A008909160
:10676000A10890937103809370038AEF90E0909357
:10677000730380937203E090C008B601882777FD09
:106780008095982F2E2D30E040E050E00E94584D2B
:106790009801442737FD4095542F0E94584D20E022
:1067A00032E040E050E00E94CC4D89019A01FF2484
:1067B000EC9CC001ED9C900DFC9C900D112464E0BC
:1067C00070E00E94974D600F711F882777FD8095BC
:1067D000982F6093BA057093BB058093BC05909386
:1067E000BD0520913E0530913F05409140055091F7
:1067F0004105261B370B480B590B20933E05309360
:106800003F05409340055093410580913E0590918E
:106810003F05A0914005B09141058155934CA040A2
:10682000B04064F080E593ECA0E0B0E080933E05DA
:1068300090933F05A0934005B093410580913E059C
:1068400090913F05A0914005B0914105805B9C432C
:10685000AF4FBF4F64F480EB9CE3AFEFBFEF80938B
:106860003E0590933F05A0934005B093410580916C
:10687000B70883FF68C180915005882349F0809153
:106880005805882329F40E9431250E947D405BC170
:10689000809190058150809390058F3F29F481E38A
:1068A000809390050E94AD3E60911A0570911B0582
:1068B00080911C0590911D0520E032E040E050E001
:1068C0000E94CC4D890137FF03C0109501951F4FE1
:1068D00060912205709123058091240590912505F2
:1068E00020E032E040E050E00E94CC4D690137FFEB
:1068F00004C0D094C194D108D394C016D1060CF42E
:10690000680129E1C216D10444F58091A705909150
:10691000A805892B11F18091720390917303892B43
:10692000E1F488EC90E09093D2048093D1046091DC
:10693000A0087091A1088091A2089091A3082EE070
:1069400036E040E050E00E94CC4D3093710320933C
:1069500070031092A8051092A70580916E03909184
:106960006F0397FF03C020E030E029C0E0906E0382
:10697000F0906F034CE152E0E40EF51E0027F7FCA7
:106980000095102F6091A0087091A1088091A20835
:106990009091A3082EE036E040E050E00E94CC4DFC
:1069A000E21AF30A040B150BC801B70128E631E01F
:1069B00040E050E00E94CC4D9B01245B3040C6017A
:1069C00068E070E00E94974D6F5F7F4FC90143E020
:1069D000880F991F4A95E1F70E94974D3B01882443
:1069E00077FC8094982C8091A0089091A108A091A8
:1069F000A208B091A308680E791E8A1E9B1E6092A1
:106A0000A0087092A1088092A2089092A308809199
:106A10008603A82EBB24CA9CC001CB9C900DDA9C97
:106A2000900D112460E470E00E94974D2501461AF4
:106A3000570A141415040CF080C0809172039091D1
:106A40007303009711F001977AC08091A408909188
:106A5000A508820F931F9093A5088093A4088091A6
:106A60007A0590917B052091780530917905820F08
:106A7000931F68E070E00E94974D6B0160E470E046
:106A8000C60ED71E8091700390917103AA2797FDBF
:106A9000A095BA2F0CE1E02E02E0F02E012D112D71
:106AA000E81AF90A0A0B1B0BC401B3012EE036E009
:106AB00040E050E00E94CC4DE20EF31E041F151F73
:106AC000C801B70128E631E040E050E00E94CC4D1B
:106AD000645B7040649DC001659D900D749D900D38
:106AE0001124B6010E94974DC501880F991F8A0D88
:106AF0009B1D8617970734F0909581959F4F6817D7
:106B000079070CF4BC0120913E0530913F0540917E
:106B1000400550914105CB01AA2797FDA095BA2FBA
:106B2000820F931FA41FB51F80933E0590933F05CE
:106B3000A0934005B093410506C08AEF90E0909382
:106B40007303809372038091B70885FF17C080910B
:106B50008C038093DD0580918F038093DC05809109
:106B600090038093DE0580915905882311F086EE0D
:106B700002C0809160050E94ED4608C01092750524
:106B80001092740510927705109276058091A905F0
:106B900081508093A9058F3F09F0A4C088E18093BC
:106BA000A90560911A0570911B0580911C059091B3
:106BB0001D05E090C308FF2400E010E0A801970144
:106BC0000E94CC4D309367072093660760912205A1
:106BD000709123058091240590912505A8019701C6
:106BE0000E94CC4D309369072093680780919E08DE
:106BF00090919F0890936B0780936A078091A808F3
:106C00009091A90890936D0780936C0780919B08E1
:106C100090919C0890936F0780936E0780918205F6
:106C200090918305909371078093700760914A0556
:106C300070914B0580914C0590914D0520E032E01C
:106C400040E050E00E94CC4D3093730720937207D0
:106C500080916E0390916F039093770780937607EE
:106C600080910803909109039093790780937807A6
:106C7000809101059091020590937B0780937A079C
:106C80006091A0087091A1088091A2089091A3083A
:106C90002EE036E040E050E00E94CC4D30937D077E
:106CA00020937C078091900890919108909387079A
:106CB000809386078091D4049091D50490938F0798
:106CC00080938E0780917405909175059093A3072A
:106CD0008093A20780917605909177059093A50700
:106CE0008093A40780918A058823A9F06091990870
:106CF00070919A08882777FD8095982F0E943D4CC7
:106D00002091AA083091AB084091AC085091AD0891
:106D10000E94F54C32C060911A0570911B0580915C
:106D20001C0590911D05E0909908F0909A080E942A
:106D30003D4C2091930830919408409195085091D2
:106D400096080E94F54C5B016C010027F7FC00954A
:106D5000102FC801B7010E943D4C2091AA08309124
:106D6000AB084091AC085091AD080E94F54C9B01D6
:106D7000AC01C601B5010E943E4B0E940A4C7093C3
:106D80009A086093990880918B058823A9F06091F7
:106D9000970870919808882777FD8095982F0E9412
:106DA0003D4C2091AA083091AB084091AC0850911D
:106DB000AD080E94F54C32C0609122057091230508
:106DC0008091240590912505E0909708F09098080F
:106DD0000E943D4C20919308309194084091950871
:106DE000509196080E94F54C5B016C010027F7FC5E
:106DF0000095102FC801B7010E943D4C2091AA08B0
:106E00003091AB084091AC085091AD080E94F54C10
:106E10009B01AC01C601B5010E943E4B0E940A4C89
:106E2000709398086093970860919B0870919C08F4
:106E3000A0902A05B0902B05C0902C05D0902D0570
:106E40008091930890919408A0919508B09196082C
:106E500089839A83AB83BC83882777FD8095982F9D
:106E60000E943D4C7B018C016091AA087091AB0897
:106E70008091AC089091AD089B01AC010E943E4B03
:106E80009B01AC01C801B7010E94F54C7B018C014C
:106E9000C601B5010E943D4C29813A814B815C813C
:106EA0000E94F54C20E030E040E05FE30E94F54CAA
:106EB0009B01AC01C801B7010E943E4B0E940A4CE5
:106EC00070939C0860939B088091990890919A0810
:106ED00090939107809390078091970890919808DC
:106EE00090939307809392078091990890919A08C4
:106EF0008150904434F080E090E490939A0880931D
:106F000099088091990890919A088050904C34F497
:106F100080E090EC90939A0880939908809197086C
:106F2000909198088150904434F080E090E49093E0
:106F300098088093970880919708909198088050BE
:106F4000904C34F480E090EC9093980880939708EC
:106F500080919B0890919C088150904434F080E08F
:106F600090E490939C0880939B0880919B0890915B
:106F70009C088050904C34F480E090EC90939C08F6
:106F800080939B08AF80B884AA0CBB1CAA0CBB1CC6
:106F90008091B708282F80FFC7C0809159058823AA
:106FA00009F0C2C08091830321FF0EC0823310F527
:106FB00080918205909183054497909385058093F5
:106FC00084051092AC0519C020917C0330917D039B
:106FD000280F311D8091BC0890E0AC01249FC001B6
:106FE000259F900D349F900D112444979093850513
:106FF0008093840581E08093AC05209182053091D7
:1070000083054091840550918505421753070CF084
:107010008BC08091AC05882309F486C080918403DD
:1070200090E0241B350BBC01629FC001639F900D53
:10703000729F900D112464E070E00E94974D4B0107
:10704000C090E404D090E50460914A0570914B052E
:1070500080914C0590914D05E0908503FF2400E060
:1070600010E020E830E040E050E00E94CC4DC80144
:10707000B7010E94584D20E230E040E050E00E940D
:10708000CC4D7EEF283E370714F428EE3EEF80917A
:10709000AA059091AB05FC01A4E0EE0FFF1FAA9595
:1070A000E1F7E81BF90BC60162E070E00E94974D22
:1070B000E61BF70B81E02931380714F028E131E0B5
:1070C000E21BF30BC501881999098E0F9F1F60E120
:1070D00070E00E94974D7093AB056093AA05809174
:1070E000B80890E0880F991F880F991F68177907D3
:1070F00064F4A816B9062CF09093AB058093AA050A
:1071000004C0B092AB05A092AA058091AA05909107
:10711000AB05A816B90624F4B092AB05A092AA0557
:10712000A090AA05B090AB058091C208282E332408
:107130008101000F111F000F111FC80180559040E1
:1071400045018A159B050CF44C01909275078092BD
:10715000740720919B0830919C088091BA0590910A
:10716000BB05A091BC05B091BD0542E0880F991FF9
:10717000AA1FBB1F4A95D1F7281B390B91EA891624
:107180009104ACF0F401F595E7952E173F070CF448
:10719000F901C40162E070E00E94974D709561951D
:1071A0007F4FCF01E617F7076CF4CB010BC0C90185
:1071B000205B3F4F14F480EB9FEF8135910514F075
:1071C00080E590E0980128193909281739070CF44F
:1071D000C9019401201B310B2C01821793070CF479
:1071E00029018091990890919A0860906C0570909F
:1071F0006D05861997099093A7088093A60820E04B
:1072000030E040E050E069817A818B819C810E946E
:10721000784C8823F1F1E0901A05F0901B0500915D
:107220001C0510911D056091C2057091C3058091E8
:10723000C4059091C5050E943D4C5B016C01C801DD
:10724000B7010E943D4C29813A814B815C810E94AB
:10725000F54C7B018C01B301882777FD8095982F31
:107260000E943D4C9B01AC01C801B7010E943D4BFF
:107270009B01AC01C601B5010E943E4B0E940A4C25
:107280006093C2057093C3058093C4059093C505B0
:107290001CC02091A6083091A708442737FD4095CF
:1072A000542F8091C2059091C305A091C405B0915F
:1072B000C505820F931FA41FB51F8093C20590932D
:1072C000C305A093C405B093C5058091C2059091F4
:1072D000C305A091C405B091C50581509A4FA04047
:1072E000B04064F080E09AEFA0E0B0E08093C20587
:1072F0009093C305A093C405B093C5058091C205C2
:107300009091C305A091C405B091C50580509640E9
:10731000AF4FBF4F64F480E096E0AFEFBFEF8093D4
:10732000C2059093C305A093C405B093C5056091B1
:10733000A6087091A70820917E0330917F034091A9
:107340008003509181032B873C874D875E87882778
:1073500077FD8095982F0E943D4C7B018C016091B8
:10736000C2057091C3058091C4059091C5050E9426
:107370003D4C9B01AC016B857C858D859E850E9473
:10738000F54C9B01AC01C801B7010E943E4B0E9425
:107390000A4C7B018C016B01C20157FE04C0882797
:1073A00099278419950962E070E00E94974D680D55
:1073B000791D882777FD8095982F2091970330E0DD
:1073C00040E050E00E94584D20E430E040E050E0C2
:1073D0000E94CC4D3E832D83C216D3060CF4970138
:1073E0006D817E81709561957F4F7A8769872617B9
:1073F00037070CF49B01F201E80DF91DCF01820F54
:10740000931F64E070E00E94974D77FF03C060E037
:1074100070E004C0261637060CF4B1018091C10853
:10742000A82FB0E0BAA3A9A36A177B070CF4BD018B
:1074300060938708CF01821B930B64E070E00E9489
:10744000974D77FF03C060E070E004C02616370652
:107450000CF4B101E9A1FAA16E177F070CF4BF018A
:1074600060939D08809197089091980860906E05B0
:1074700070906F0586199709909386088093850808
:1074800020E030E040E050E069817A818B819C818E
:107490000E94784C8823F1F1E0902205F0902305BA
:1074A00000912405109125056091BE057091BF05DE
:1074B0008091C0059091C1050E943D4C5B016C011B
:1074C000C801B7010E943D4C29813A814B815C8102
:1074D0000E94F54C7B018C01B301882777FD8095D4
:1074E000982F0E943D4C9B01AC01C801B7010E943E
:1074F0003D4B9B01AC01C601B5010E943E4B0E9471
:107500000A4C6093BE057093BF058093C0059093AD
:10751000C1051CC02091850830918608442737FD9D
:107520004095542F8091BE059091BF05A091C00554
:10753000B091C105820F931FA41FB51F8093BE0594
:107540009093BF05A093C005B093C1058091BE057F
:107550009091BF05A091C005B091C10581589E438F
:10756000A040B04064F080E89EE3A0E0B0E08093EB
:10757000BE059093BF05A093C005B093C10580914F
:10758000BE059091BF05A091C005B091C10580587E
:10759000914CAF4FBF4F64F480E891ECAFEFBFEF79
:1075A0008093BE059093BF05A093C005B093C1051D
:1075B0006091850870918608882777FD8095982FBF
:1075C0000E943D4C7B018C016091BE057091BF050E
:1075D0008091C0059091C1050E943D4C9B01AC017A
:1075E0006B857C858D859E850E94F54C9B01AC0149
:1075F000C801B7010E943E4B0E940A4C2D813E817A
:10760000621773070CF49B0149855A8524173507C7
:107610000CF49A01C40184199509820F931F64E048
:1076200070E00E94974D77FF03C060E070E004C0F7
:10763000261637060CF4B10189A19AA168177907BB
:107640000CF4BC016093AE08821A930AC401841939
:10765000950964E070E00E94974D77FF03C060E0F9
:1076600070E004C0261637060CF4B101A9A1BAA136
:107670006A177B0754F4BD0108C080918A058823EE
:1076800011F00C94742D0C947E2D60939208A296A8
:107690000FB6F894DEBF0FBECDBFDF91CF911F9123
:1076A0000F91FF90EF90DF90CF90BF90AF909F90A1
:1076B0008F907F906F905F904F903F902F900895A4
:1076C000A0E0B0E0A80FB11D0E941E4E802D90E0FA
:1076D0000895A0E0B0E0A80FB11D062E0E94304E24
:1076E0000895A0E0B0E0A80FB11D0E942B4ECF017D
:1076F0000895A0E0B0E0A80FB11D0B010E943C4E20
:107700000895863008F085E0A2E0B0E0082E0E94DF
:10771000304E0895982F863008F095E086E4989FC3
:10772000D0011124AC59BF4FEFEAF8E0182E0E94A7
:10773000414EA2E0B0E0092E0E94304E0895982FED
:10774000863008F095E086E4989FD0011124AC596A
:10775000BF4FEFEAF8E0182E0E94264E089581E010
:107760008093AF0882E08093B00843E04093B10873
:1077700064E06093B20855E05093B30836E030936C
:10778000B40887E08093B50828E02093B60888EE17
:107790008093B7089EE19093B8088BEF8093BA0866
:1077A0008AE08093BB089093B9089093BD084093FA
:1077B000BC082093BE0840E14093BF083093C00846
:1077C0002093C10886EE8093C2089093C30880E896
:1077D0008093C40834E63093C50888E78093C608D0
:1077E0008EE58093C70883E28093C80884E1809384
:1077F000C9081092CA084093CB088DEF8093CC083B
:107800003093CD089AE59093CE089093CF0890934B
:10781000DF089093E0081092E1081092E20830939C
:10782000D00888E28093D1081092E40822E32093E4
:10783000D20886E98093D3085093D4082093D508C2
:107840009093D6082093D7081092E3089093D80815
:107850005093D9083093DA083093DB0880E28093A4
:10786000DC086093DD082093DE08A9EEB8E0E9E9C2
:10787000F3E089E001900D928150E1F7089581E0F5
:107880008093AF0882E08093B00843E04093B10852
:1078900064E06093B20855E05093B30836E030934B
:1078A000B40887E08093B50828E02093B60888E6FE
:1078B0008093B7089EE19093B8088BEF8093BA0845
:1078C0008AE08093BB089093B9089093BD084093D9
:1078D000BC088CE08093BE0880E18093BF083093A1
:1078E000C0082093C10886EE8093C2089093C30815
:1078F00080E88093C40880E58093C50888E780937A
:10790000C6088EE58093C70883E28093C8089093E9
:10791000C9081092CA0840E24093CB088DEF8093CB
:10792000CC0834E63093CD082AE52093CE08209386
:10793000CF082093DF082093E0081092E10810920E
:10794000E2083093D00888E28093D1081092E408CE
:1079500092E39093D20886E98093D3085093D40899
:107960009093D5082093D6089093D7081092E308F7
:107970002093D8085093D9083093DA083093DB0865
:107980004093DC086093DD088BE48093DE08A9EE69
:10799000B8E0E3EAF3E087E001900D928150E1F76F
:1079A000089581E08093AF0882E08093B00883E07F
:1079B0008093B10854E05093B20835E03093B30897
:1079C00086E08093B40887E08093B50828E0209390
:1079D000B60888E68093B7089EE19093B8088BEFCD
:1079E0008093BA088AE08093BB089093B90890937B
:1079F000BD085093BC088FE08093BE089093BF08E9
:107A00008CE08093C0082093C10886EE8093C20862
:107A10009093C30880E88093C40880E58093C508EC
:107A200046E94093C6088EE58093C70883E28093B9
:107A3000C8089093C9081092CA0880E28093CB08C6
:107A40008DEF8093CC0824E62093CD089AE590939F
:107A5000CE089093CF089093DF089093E00810929F
:107A6000E1081092E2082093D00888E28093D108C0
:107A70001092E40882E38093D2084093D3083093B5
:107A8000D4088093D5089093D6088093D708109295
:107A9000E3089093D8083093D9082093DA0820930C
:107AA000DB0880E18093DC085093DD082093DE083A
:107AB000A9EEB8E0EBEAF3E086E001900D92815088
:107AC000E1F7089522E030E0D9010E941E4E802D9A
:107AD000863028F082E0D901082E0E94304E90E0D6
:107AE00008950F931F93CF93DF93A1E0B0E00E941E
:107AF0001E4E802D863469F188E895E09F938F9320
:107B00001F920E94070A0E94D13CC0E0D0E00F9073
:107B10000F900F900C2FC23039F0C33019F40E942F
:107B2000AF3B04C0C43010F00E943F3C802F0E9445
:107B30008A3B2196C630D10569F7A2E0B0E083E028
:107B4000082E0E94304EA1E0B0E086E4082E0E948C
:107B5000304E02E010E0D8010E941E4E802D0E949F
:107B60009F3BD8010E941E4E802D90E09F938F93E3
:107B70008FE695E09F938F931F920E94070A0F90C4
:107B80000F900F900F900F90DF91CF911F910F9159
:107B90000895CF93DF93DC01EC01EA81FB81219111
:107BA0008E81815019F48981E81BF109ED01FB8375
:107BB000EA838E839FB7F8948C9181508C939FBFFA
:107BC000822F90E0DF91CF910895FC0110827583A0
:107BD0006483738362834183478346830895CF938D
:107BE000DF93DC019C91ED018981981718F080E00A
:107BF00090E016C0ED01EC81FD8161938F81815091
:107C000019F48981E81BF109ED018F83FD83EC8371
:107C10009FB7F8948C918F5F8C939FBF81E090E029
:107C2000DF91CF910895FC0180818823E9F3CF0192
:107C30000E94C93D90E00895FC018081882319F4D9
:107C40008FEF9FEF0895CF010E94C93D90E0089506
:107C50001F920F920FB60F9211242F933F934F93C1
:107C60008F939F938091FE08833021F0843009F038
:107C70006AC008C08EB58093DB051EBC84E080938B
:107C8000FE0861C08091DB05992787FD9095382F0C
:107C900022278EB590E0282B392BC9018D509E4F9D
:107CA000875E9340D8F480910109823051F083308F
:107CB00071F0813081F4309303092093020982E04E
:107CC0000BC0309305092093040983E005C030936D
:107CD00007092093060981E080930109449A1092D4
:107CE000FE082091020930910309809104099091C6
:107CF000050928173907B1F42091020930910309C9
:107D000080910609909107092817390759F42091A5
:107D100004093091050980910609909107092817F7
:107D2000390741F08091CE05843168F48091CE0509
:107D30008F5F07C08091CE05882329F08091CE0502
:107D400081508093CE059F918F914F913F912F91BC
:107D50000F900FBE0F901F9018952F923F924F9249
:107D60005F926F927F928F929F92AF92BF92CF92CB
:107D7000DF92EF92FF920F931F93CF93DF93CDB7D4
:107D8000DEB766970FB6F894DEBF0FBECDBF809109
:107D9000CE05882309F465C1609102097091030939
:107DA0002091F508332727FD3095621B730B882738
:107DB00077FD8095982FEAE0660F771F881F991F3F
:107DC000EA95D1F72091F8083091F908442737FD5A
:107DD0004095542F0E94CC4D29873A874B875C876A
:107DE00060910409709105092091F608332727FD59
:107DF0003095621B730B882777FD8095982F5AE08A
:107E0000660F771F881F991F5A95D1F72091FA089E
:107E10003091FB08442737FD4095542F0E94CC4DEC
:107E20002D873E874F87588B60910609709107090F
:107E30002091F708332727FD3095621B730B8827A5
:107E400077FD8095982F4AE0660F771F881F991F4E
:107E50004A95D1F72091FC083091FD08442737FD61
:107E60004095542F0E94CC4D298B3A8B4B8B5C8BC9
:107E70008091CF0890E0845E9D4F68E671E00E949B
:107E8000974D8C010E941C429C01442737FD409570
:107E9000542F2D833E834F835887C8010E9465422B
:107EA0009C01442737FD4095542F29833A834B8307
:107EB0005C8360911A0570911B0580911C0590915F
:107EC0001D05E090CE08FF2433E0EE0CFF1C3A9530
:107ED000E1F700E010E0A80197010E94CC4D5901A4
:107EE0006A01C9010E941C423C01C5010E94654211
:107EF0005C01609122057091230580912405909189
:107F00002505A80197010E94CC4D79018A01C9017C
:107F10000E941C429E8B8D8BC7010E9465421C01F2
:107F200069817A818B819C8129853A854B855C8525
:107F30000E94584D7B018C016D817E818F819885D7
:107F40002D853E854F8558890E94584DE61AF70ABF
:107F5000080B190BC801B70120E030E240E050E007
:107F60000E94CC4DCC24B7FCC094DC2CCA01B901D2
:107F7000A60195010E94584D5B016C01882477FC95
:107F80008094982CC401B30129893A894B895C8972
:107F90000E94584DA61AB70AC80AD90A69817A817F
:107FA0008B819C812D853E854F8558890E94584D37
:107FB0007B018C016D817E818F81988529853A8531
:107FC0004B855C850E94584DE60EF71E081F191F51
:107FD000C801B70120E030E240E050E00E94CC4D03
:107FE000442437FC4094542CCA01B901A2019101E8
:107FF0000E94584D7B018C014D895E89BA0188270A
:1080000077FD8095982F29893A894B895C890E9450
:10801000584DE60EF71E081F191FC601B50120E0D6
:1080200030E240E050E00E94CC4D59016A01C801A5
:10803000B70120E030E240E050E00E94CC4DDA0190
:10804000C901B5010E946D429C0197FF05C08827B8
:108050009927821B930B13C088E691E0821B930B38
:108060000EC08091D1049091D204892B31F484E622
:1080700090E09093D2048093D1048FEF9FEF909380
:108080006F0380936E0380916E0390916F0397FF4F
:1080900005C010924F0510924E0516C080916E03D8
:1080A00090916F032091700330917103845E9D4F16
:1080B000821B930B68E671E00E94974D845B9040B1
:1080C00090934F0580934E0566960FB6F894DEBFE9
:1080D0000FBECDBFDF91CF911F910F91FF90EF9019
:1080E000DF90CF90BF90AF909F908F907F906F90D8
:1080F0005F904F903F902F900895CF92DF92EF9234
:10810000FF920F931F9380915005833009F412C1A1
:10811000843030F4813059F0823009F009C120C038
:10812000843009F46BC0853009F002C196C020E1AB
:1081300037E23093DA052093D90580EF98ED9093DC
:10814000D8058093D7053093D6052093D505909315
:10815000D4058093D3053093D2052093D10578C000
:1081600020910209309103098091D9059091DA0597
:108170002817390744F480910209909103099093DC
:10818000DA058093D9052091020930910309809185
:10819000D7059091D8058217930744F4809102097E
:1081A000909103099093D8058093D70520910409F5
:1081B000309105098091D5059091D605281739078A
:1081C00044F480910409909105099093D605809319
:1081D000D50520910409309105098091D30590912E
:1081E000D405821793070CF0A5C0809104099091E3
:1081F00005099093D4058093D3059CC0809100011C
:108200008A3011F4289A01C02898209106093091EB
:1082100007098091D1059091D2052817390744F4B8
:1082200080910609909107099093D2058093D1051A
:1082300020910609309107098091CF059091D005D2
:10824000821793070CF076C0809106099091070978
:108250009093D0058093CF056DC04091D705509184
:10826000D8058091D9059091DA059A01281B390B20
:108270003093F9082093F8080091D3051091D405A4
:10828000E091D505F091D60598012E1B3F0B309358
:10829000FB082093FA08C090CF05D090D005E0905D
:1082A000D105F090D20596012E193F093093FD08B3
:1082B0002093FC08840F951F62E070E00E94974DA8
:1082C0009B016093F508CF01800F911F62E070E081
:1082D0000E94974D6093F608C7018C0D9D1D62E0CA
:1082E00070E00E94974D6093F708622F8AE00E9429
:1082F000693B6091F6088BE00E94693B6091F7084A
:108300008CE00E94693B6091F8087091F9088DE05B
:108310000E94793B6091FA087091FB088FE00E94FF
:10832000793B6091FC087091FD0881E10E94793BE6
:10833000109250051F910F91FF90EF90DF90CF901A
:1083400008959091FE08913049F0913018F09230E4
:1083500091F525C04498459A81E01EC045988091CA
:108360000109823031F0833031F0813031F481E322
:1083700009C082E307C083E305C09093010910920E
:10838000FE0808958EBD88E090E00E94E00C909376
:1083900000098093FF0882E08093FE080895809191
:1083A000FF08909100090E94E90C882321F01EBC6F
:1083B00083E08093FE0808951F931FB7F89484B15B
:1083C000806A84B9269887B1806387B988B18F7C29
:1083D00088B983ED8CBD8DB58E7F8DBD81E0809396
:1083E00001091092FE088AE00E94603B8093F50824
:1083F0008BE00E94603B8093F6088CE00E94603B1B
:108400008093F7088DE00E94713B9093F908809368
:10841000F8088FE00E94713B9093FB088093FA0864
:1084200081E10E94713B9093FD088093FC081092BB
:10843000CE051FBF1F91089597FD02C041E004C003
:10844000909581959F4F4FEF68E671E00E94974DA0
:10845000FC018B35910554F08B5590408A35910580
:1084600038F484EB90E08E1B9F0BFC0181E00FC081
:10847000CF01855B90408A35910518F4E45BF040AC
:1084800005C088E691E08E1B9F0BFC018FEFEE0F7D
:10849000FF1FE854FA4F25913491992787FD909555
:1084A000B901689F9001699F300D789F300D1124AC
:1084B000842F992787FD9095AC01249FC001259FAB
:1084C000900D349F900D112408952AE530E0281B6B
:1084D000390BC9010E941C4208951F93CF93DF936B
:1084E000EB01672B29F4009719F480E090E091C02C
:1084F00097FF02C01FEF01C011E0209729F48AE521
:108500001802C001112485C09C01B901882777FD9C
:108510008095982F26E0660F771F881F991F2A9550
:10852000D1F79E01442737FD4095542F0E94CC4D32
:10853000F90137FF03C0F095E195FF4F31E0EA35CF
:10854000F30734F4E259F94F8491282F30E047C003
:108550004CE1E73AF4071CF02AE530E040C059E06E
:10856000ED38F5071CF029E530E039C085E0EA3B3D
:10857000F8071CF028E530E032C024E0E731F207CC
:108580001CF027E530E02BC033E0EE32F3071CF09F
:1085900026E530E024C042E0E939F4071CF025E587
:1085A00030E01DC052E0E233F5071CF024E530E076
:1085B00016C081E0E73EF8071CF023E530E00FC06D
:1085C00021E0ED3AF2071CF022E530E008C0EF5759
:1085D000F1401CF021E530E002C020E530E01C163F
:1085E0001D066CF4812F992787FD9095AC01249F7F
:1085F000C001259F900D349F900D11240AC01116C3
:108600002CF484EB90E0821B930B03C0C901845BC4
:108610009040DF91CF911F9108959F92AF92BF92AA
:10862000CF92DF92EF92FF920F931F935B016C0149
:10863000611571058105910511F17B018C0199246A
:10864000C601B501A80197010E94AA4D2E0D3F1D3C
:10865000401F511F5695479537952795E21AF30A03
:10866000040B150B82E0E816F1040105110558F022
:10867000939488E2981639F079018A01E1CF20E0DD
:1086800030E040E050E0CA01B9011F910F91FF9026
:10869000EF90DF90CF90BF90AF909F900895E091C2
:1086A000AF08F0E0EE0FFF1FE75BF74F0190F0819E
:1086B000E02DF7FF03C0F095E195FF4F3F971CF0C9
:1086C00081E090E00895E091B008F0E0EE0FFF1F28
:1086D000E75BF74F8081918120E030E097FF03C096
:1086E000909581959F4F0F9714F021E030E0C901DC
:1086F000089580917C0681508230F0F580917E064D
:108700008330D1F580917F0690918006A0918106FB
:10871000B09182068093EC059093ED05A093EE0551
:10872000B093EF058091830690918406A091850611
:10873000B09186068093F0059093F105A093F20521
:10874000B093F3058091870690918806A0918906E1
:10875000B0918A068093F4059093F505A093F605F1
:10876000B093F70581E08093F80588EE93E090934D
:10877000D2048093D10408951092F8050895809151
:108780007C0681508230C0F580917E068330A1F551
:1087900080917F0690918006A0918106B09182061B
:1087A0008093DF059093E005A093E105B093E20587
:1087B0008091830690918406A0918506B0918606EB
:1087C0008093E3059093E405A093E505B093E60557
:1087D0008091870690918806A0918906B0918A06BB
:1087E0008093E7059093E805A093E905B093EA0527
:1087F00081E08093EB0508951092EB0508951092A7
:10880000F805089510927505109274051092770579
:108810001092760508952F923F924F925F926F9239
:108820007F928F929F92AF92BF92CF92DF92EF9200
:10883000FF920F931F93CF93DF93CDB7DEB760976F
:108840000FB6F894DEBF0FBECDBF8C0180917C06C1
:10885000813009F091C280917E06833009F08CC28C
:1088600080916E0390916F0397FD86C201151105EB
:1088700009F47AC0F8018485882309F475C0823030
:1088800039F48091FB059091FC050817190791F1C7
:10889000109201061092020610920306109204062E
:1088A0001092FD051092FE051092FF051092000631
:1088B000F801648175818681978120E836E948E96D
:1088C00050E00E94CC4DDA01C9010E946542AA27FE
:1088D00097FDA095BA2F8093B2039093B303A09312
:1088E000B403B093B5031093FC050093FB0582E03D
:1088F000F801848720918306309184064091850693
:1089000050918606F80184819581A681B781281B44
:10891000390B4A0B5B0B29873A874B875C87609141
:108920007F06709180068091810690918206208159
:10893000318142815381621B730B840B950B209113
:10894000B2033091B3034091B4035091B5030E9438
:10895000584D20E030E240E050E00E94CC4D2D83A5
:108960003E834F83588718C010920106109202066A
:1089700010920306109204061092FD051092FE0557
:108980001092FF051092000619861A861B861C8617
:108990001D821E821F821886E090DC05FF2400E005
:1089A00010E0A090DD05BB24CC24DD2469857A8508
:1089B0008B859C85A80197010E94584D20E038E0E6
:1089C00040E050E00E94CC4D39014A01209101065F
:1089D000309102064091030650910406C601B5018C
:1089E0000E94584D20E030E240E050E00E94CC4D23
:1089F000222433242101221A330A440A550A261854
:108A00003708480859086D817E818F819885A801B3
:108A100097010E94584D20E038E040E050E00E946D
:108A2000CC4D79018A012091FD053091FE054091E0
:108A3000FF0550910006C601B5010E94584D20E087
:108A400030E240E050E00E94CC4DAA24BB246501F6
:108A5000A21AB30AC40AD50AAE18BF08C00AD10ABE
:108A6000C601B501A60195010E94584D7B018C01FC
:108A7000C201B101A20191010E94584DE60EF71EFC
:108A8000081F191FC801B7010E940D437B018C010B
:108A90006A31710581059105ECF0C201B10129E14E
:108AA00030E040E050E00E94584DA80197010E943C
:108AB000CC4D19012A01C601B50129E130E040E0A1
:108AC00050E00E94584DA80197010E94CC4D5901D9
:108AD0006A0178C069857A858B859C8520E130E0C4
:108AE00040E050E00E94CC4D80910106909102063A
:108AF000A0910306B0910406280F391F4A1F5B1F7F
:108B00002093010630930206409303065093040617
:108B100021308DE7380780E0480780E058072CF0C7
:108B200080E09DE7A0E0B0E009C0205033484F4FFF
:108B30005F4F64F480E093E8AFEFBFEF80930106EE
:108B400090930206A0930306B09304066D817E8184
:108B50008F81988520E130E040E050E00E94CC4DCC
:108B60008091FD059091FE05A091FF05B091000652
:108B7000280F391F4A1F5B1F2093FD053093FE0508
:108B80004093FF05509300062130ADE73A07A0E07F
:108B90004A07A0E05A072CF080E09DE7A0E0B0E093
:108BA00009C0205033484F4F5F4F64F480E093E892
:108BB000AFEFBFEF8093FD059093FE05A093FF05F7
:108BC000B0930006E090DE05FF2400E010E0209165
:108BD0008F06309190064091910650919206C801FF
:108BE000B7010E94584D20E032E040E050E00E9482
:108BF000CC4D221A330A440A550A29823A824B8202
:108C00005C82209193063091940640919506509194
:108C10009606C801B7010E94584D20E032E040E0BE
:108C200050E00E94CC4D15012601221A330A440A55
:108C3000550A80916E0390916F030E9465425C011A
:108C4000CC24B7FCC094DC2C80916E0390916F0310
:108C50000E941C423C01882477FC8094982CC60119
:108C6000B501A20191010E94584D7B018C01C40104
:108C7000B30129813A814B815C810E94584DE61AEB
:108C8000F70A080B190BC801B70120E030E240E0F9
:108C900050E00E94CC4D2D873E874F87588BC601F0
:108CA000B50129813A814B815C810E94584D7B013D
:108CB0008C01C401B301A20191010E94584DE60E3E
:108CC000F71E081F191FC801B70120E030E240E07D
:108CD00050E00E94CC4DAA24BB246501A21AB30A1D
:108CE000C40AD50AC601B501A60195010E94584DD6
:108CF0007B018C016D857E858F8598899B01AC01F8
:108D00000E94584DE60EF71E081F191FC801B70133
:108D10000E940D437B018C016E3271058105910526
:108D200004F16D857E858F8598892DE230E040E0E5
:108D300050E00E94584DA80197010E94CC4D2D870C
:108D40003E874F87588BC601B5012DE230E040E0E9
:108D500050E00E94584DA80197010E94CC4D590146
:108D60006A012D853E853093770520937605B09274
:108D70007505A092740518C01092750510927405BF
:108D80001092770510927605109201061092020655
:108D900010920306109204061092FD051092FE0533
:108DA0001092FF051092000660960FB6F894DEBF91
:108DB0000FBECDBFDF91CF911F910F91FF90EF902C
:108DC000DF90CF90BF90AF909F908F907F906F90EB
:108DD0005F904F903F902F900895863418F4109232
:108DE000FA0507C0803A10F481E001C082E0809368
:108DF000FA0580917C06813079F1813020F0823053
:108E000009F0AFC014C0109275051092740510924D
:108E10007705109276058091FA05882309F4A1C0A0
:108E200084E690E09093D2048093D10408958091D9
:108E3000A706882331F08091A70681508093A7066A
:108E4000089510927505109274051092770510928E
:108E5000760510927C0608958091A3069091A40651
:108E60009093A1078093A00780917E069091FA05C8
:108E7000833009F055C0913039F0913008F445C085
:108E8000923009F044C021C08091EB058823E9F1BC
:108E90000E944F43882369F00E94BF4310927505DA
:108EA0001092740510927705109276051092F905CC
:108EB00055C08091F905873018F58F5F8093F905CB
:108EC0000E94BF4380E090E01DC08091F805882398
:108ED00049F00E94BF430E944F438823C1F48CEEA7
:108EE00095E010C082E390E09093D2048093D10487
:108EF0008091EB05882349F00E944F43882339F481
:108F00008FED95E00E940B4429C00E94BF43109250
:108F100075051092740510927705109276051EC0A3
:108F200010927505109274051092770510927605CF
:108F30009923A1F080917D0628EC829FC001112425
:108F400020E436E0281B390B37FF02C020E030E078
:108F50002E5C3F4F3093D2042093D10482E0809363
:108F60007C060895EF92FF920F931F93809139062C
:108F7000813059F580910F0680937E0680913406EA
:108F800080937D0680911D0690911E06A0911F067C
:108F9000B091200680938B0690938C06A0938D064B
:108FA000B0938E0680912D0690912E06A0912F06EB
:108FB000B091300680939F069093A006A093A106DF
:108FC000B093A20682E080933906809156068130E4
:108FD00009F059C020913A0630913B0640913C0679
:108FE00050913D068091B3069091B406A091B506CC
:108FF000B091B60679018A01E81AF90A0A0B1B0B2F
:10900000E092A306F092A4060093A5061093A6068C
:109010002093B3063093B4064093B5065093B6063A
:1090200080913E0690913F06A0914006B091410686
:1090300080937F0690938006A0938106B09382066A
:109040008091420690914306A0914406B091450656
:109050008093830690938406A0938506B09386063A
:109060008091460690914706A0914806B091490626
:109070008093870690938806A0938906B0938A060A
:1090800082E08093560680917B06813009F04AC0C9
:1090900080915F0690916006A0916106B091620692
:1090A0008093930690939406A0939506B0939606AA
:1090B00080915B0690915C06A0915D06B0915E0682
:1090C00080938F0690939006A0939106B09392069A
:1090D0008091630690916406A0916506B091660642
:1090E000B095A095909581959F4FAF4FBF4F8093BE
:1090F000970690939806A0939906B0939A0680914C
:109100006B0690916C06A0916D06B0916E068093EF
:109110009B0690939C06A0939D06B0939E0682E0CA
:1091200080937B0680913906882359F080915606FA
:10913000882339F080917B06882319F081E08093A1
:109140007C061F910F91FF90EF900895482F80911A
:10915000B206843009F461C0853050F48130D1F01A
:10916000813098F08230D9F0833009F0D6C01CC02D
:10917000863009F487C0863008F461C0873009F46E
:10918000A8C0883009F0C9C0B1C0453B09F0C2C0D1
:1091900081E0A4C0423609F0BDC082E09FC04130EA
:1091A00009F0B8C083E09AC0463061F04231D9F08E
:1091B000423009F58AE396E09093AD068093AC06C1
:1091C0004D9607C085E096E09093AD068093AC067F
:1091D000C5969093AB068093AA0601979093A90633
:1091E0008093A8060AC087E596E09093AD06809329
:1091F000AC068596EECF1092B2068091B206882317
:1092000009F48DC084E08093B206842F8F5F809331
:10921000B1068F5F8093B0060895842F90E09093FD
:10922000AF068093AE069091B106940F9093B1066D
:109230008091B006890F8093B00685E04FC0242F3F
:1092400030E0322F22278091AE069091AF06820F38
:10925000931F9093AF068093AE069091B106940F42
:109260009093B1068091B006890F8093B006E0918B
:10927000A806F091A9068081813009F44BC01082C4
:1092800086E02CC0E091AC06F091AD068091AA0674
:109290009091AB06E817F90728F44193F093AD06D7
:1092A000E093AC069091B106940F9093B106809133
:1092B000B006890F8093B0068091AE069091AF06FC
:1092C00001979093AF068093AE06892B41F587E016
:1092D00005C08091B106481721F488E08093B2065A
:1092E0000895E091A806F091A90613C08091B006F8
:1092F000E091A806F091A906481759F481E080830F
:1093000095B1982795B90E94B2478FEF8093A70631
:1093100001C010821092B20608951092B20608950C
:10932000A8E0B0E0E6E9F9E40C94F14D7B018C0192
:10933000611571058105910519F482E089835AC090
:1093400083E089838EE1C82ED12CDC82CB82ED8232
:10935000FE820F831887C801B7010E94034ABC012F
:109360006150704077FF33C0EE27FF27E61BF70BF5
:1093700020E030E040E050E081E090E0A0E0B0E0AC
:109380000E2E04C0880F991FAA1FBB1F0A94D2F784
:109390000197A109B1098E219F21A023B123009734
:1093A000A105B10521F021E030E040E050E004C02B
:1093B00016950795F794E794EA95D2F72E293F2959
:1093C000402B512B2D833E834F8358870FC061154F
:1093D000710581F0062E04C0EE0CFF1C001F111F4A
:1093E0000A94D2F7ED82FE820F831887C61AD70A35
:1093F000DC82CB821A82CE0101960E94504AE8E0BC
:1094000028960C940D4EEF92FF920F931F939B01A1
:10941000AC01203080E0380781E0480780E0580741
:1094200080F42F3F31054105510509F020F4EE2469
:10943000FF24870119C068E0E62EF12C012D112DC3
:1094400013C0203080E0380780E0480781E05807EB
:1094500030F490E1E92EF12C012D112D05C088E1A9
:10946000E82EF12C012D112D80E290E0A0E0B0E07B
:109470008E199F09A00BB10B04C0569547953795DF
:109480002795EA94D2F7F901EA54FC4F2081821B18
:109490009109A109B1091F910F91FF90EF900895D3
:1094A0009F92AF92BF92CF92DF92EF92FF920F9373
:1094B0001F93EE24FF248701FC012481358146811E
:1094C000578191808081823010F44061A2C0843045
:1094D00009F49BC0823029F420E030E040E050E005
:1094E00005C0211531054105510519F4E0E0F0E012
:1094F00092C0828193816FEF823896070CF05AC038
:1095000062E87FEF681B790B6A3171052CF020E06F
:1095100030E040E050E02AC0AA24BB24650181E08D
:1095200090E0A0E0B0E0062E04C0880F991FAA1FAB
:10953000BB1F0A94D2F70197A109B1098223932393
:10954000A423B5230097A105B10529F071E0A72E4A
:10955000B12CC12CD12C04C0569547953795279531
:109560006A95D2F72A293B294C295D29DA01C901DC
:109570008F779070A070B07080349105A105B1050F
:1095800039F427FF09C0205C3F4F4F4F5F4F04C0A5
:10959000215C3F4F4F4F5F4F80E090E0203060E014
:1095A000360760E0460760E4560710F081E090E07F
:1095B000FC0123C08038910544F5FC01E158FF4FC0
:1095C000DA01C9018F779070A070B0708034910576
:1095D000A105B10539F427FF09C0205C3F4F4F4F6B
:1095E0005F4F04C0215C3F4F4F4F5F4F57FF05C097
:1095F0005695479537952795319687E05695479527
:10960000379527958A95D1F706C020E030E040E0F5
:1096100050E0EFEFF0E0E22EF32E942F9F77802FB3
:109620008078892B9E2F9795992797958F77082F6C
:10963000092B9E2F9695812F8078892B97949924BA
:1096400097948F77182F1929C801B7011F910F918F
:10965000FF90EF90DF90CF90BF90AF909F900895D4
:10966000FC014150504030F001900616D1F731977F
:10967000CF0108958827992708955058BB27AA2716
:109680000ED079C16AD130F06FD120F031F49F3F14
:1096900011F41EF45FC10EF4E095E7FB55C1E92F0C
:1096A0007BD180F3BA17620773078407950718F018
:1096B00071F49EF593C10EF4E0950B2EBA2FA02DF8
:1096C0000B01B90190010C01CA01A0011124FF276F
:1096D000591B99F0593F50F4503E68F11A16F0406A
:1096E000A22F232F342F4427585FF3CF4695379569
:1096F0002795A795F0405395C9F77EF41F16BA0B2E
:10970000620B730B840BBAF09150A1F0FF0FBB1FDB
:10971000661F771F881FC2F70EC0BA0F621F731F24
:10972000841F48F4879577956795B795F7959E3F81
:1097300008F0B3CF9395880F08F09927EE0F97950F
:10974000879508950CD017C10FD140F006D130F0A5
:1097500021F45F3F19F0F8C0511141C1FBC01CD189
:1097600098F39923C9F35523B1F3951B550BBB27E8
:10977000AA2762177307840738F09F5F5F4F220F95
:10978000331F441FAA1FA9F333D00E2E3AF0E0E88E
:1097900030D091505040E695001CCAF729D0FE2FDA
:1097A00027D0660F771F881FBB1F2617370748076C
:1097B000AB07B0E809F0BB0B802DBF01FF27935822
:1097C0005F4F2AF09E3F510568F0BEC008C15F3F61
:1097D000ECF3983EDCF3869577956795B795F7950A
:1097E0009F5FC9F7880F911D9695879597F9089502
:1097F000E1E0660F771F881FBB1F6217730784079E
:10980000BA0720F0621B730B840BBA0BEE1F88F7AC
:10981000E095089504D06894B111E1C00895C4D0D2
:1098200088F09F5790F0B92F9927B751A0F0D1F049
:10983000660F771F881F991F1AF0BA95C9F712C0D3
:10984000B13081F0CBD0B1E00895C8C0672F782F38
:109850008827B85F39F0B93FCCF38695779567953F
:10986000B395D9F73EF490958095709561957F4FAB
:109870008F4F9F4F0895E89409C097FB3EF4909551
:109880008095709561957F4F8F4F9F4F9923A9F0D9
:10989000F92F96E9BB279395F69587957795679568
:1098A000B795F111F8CFFAF4BB0F11F460FF1BC0AC
:1098B0006F5F7F4F8F4F9F4F16C0882311F096E93F
:1098C00011C0772321F09EE8872F762F05C06623ED
:1098D00071F096E8862F70E060E02AF09A95660FA6
:1098E000771F881FDAF7880F9695879597F908955F
:1098F00007D008F481E0089503D008F48FEF0895AD
:10990000990F0008550FAA0BE0E8FEEF1616170690
:10991000E807F907C0F012161306E407F50798F0F8
:10992000621B730B840B950B39F40A2661F0232B11
:10993000242B252B21F408950A2609F4A140A6958D
:109940008FEF811D811D089597F99F6780E870E072
:1099500060E008959FEF80EC089500240A941616A5
:10996000170618060906089500240A94121613060D
:10997000140605060895092E0394000C11F488239B
:1099800052F0BB0F40F4BF2B11F460FF04C06F5FB7
:109990007F4F8F4F9F4F089557FD9058440F551F8D
:1099A00059F05F3F71F04795880F97FB991F61F061
:1099B0009F3F79F087950895121613061406551FD8
:1099C000F2CF4695F1DF08C0161617061806991F44
:1099D000F1CF86957105610508940895E894BB2739
:1099E00066277727CB0197F908950BD0C4CFB5DF51
:1099F00028F0BADF18F0952309F0A6CFABCF1124D9
:109A0000EECFCADFA0F3959FD1F3950F50E0551F1D
:109A1000629FF001729FBB27F00DB11D639FAA27C3
:109A2000F00DB11DAA1F649F6627B00DA11D661F12
:109A3000829F2227B00DA11D621F739FB00DA11D33
:109A4000621F839FA00D611D221F749F3327A00DED
:109A5000611D231F849F600D211D822F762F6A2F89
:109A600011249F5750408AF0E1F088234AF0EE0F0E
:109A7000FF1FBB1F661F771F881F91505040A9F71B
:109A80009E3F510570F060CFAACF5F3FECF3983E48
:109A9000DCF3869577956795B795F795E7959F5F82
:109AA000C1F7FE2B880F911D9695879597F908951C
:109AB000629FD001739FF001829FE00DF11D649FB2
:109AC000E00DF11D929FF00D839FF00D749FF00D3E
:109AD000659FF00D9927729FB00DE11DF91F639FDF
:109AE000B00DE11DF91FBD01CF0111240895991B8F
:109AF00079E004C0991F961708F0961B881F7A9585
:109B0000C9F780950895AA1BBB1B51E107C0AA1F86
:109B1000BB1FA617B70710F0A61BB70B881F991F0E
:109B20005A95A9F780959095BC01CD01089597FBB2
:109B3000092E07260AD077FD04D0E5DF06D00020E5
:109B40001AF4709561957F4F0895F6F79095819579
:109B50009F4F0895A1E21A2EAA1BBB1BFD010DC049
:109B6000AA1FBB1FEE1FFF1FA217B307E407F507CD
:109B700020F0A21BB30BE40BF50B661F771F881FA9
:109B8000991F1A9469F760957095809590959B013F
:109B9000AC01BD01CF01089597FB092E05260ED01B
:109BA00057FD04D0D7DF0AD0001C38F450954095FB
:109BB000309521953F4F4F4F5F4F0895F6F79095A1
:109BC0008095709561957F4F8F4F9F4F08952F928D
:109BD0003F924F925F926F927F928F929F92AF923D
:109BE000BF92CF92DF92EF92FF920F931F93CF938A
:109BF000DF93CDB7DEB7CA1BDB0B0FB6F894DEBF21
:109C00000FBECDBF09942A88398848885F846E8446
:109C10007D848C849B84AA84B984C884DF80EE8090
:109C2000FD800C811B81AA81B981CE0FD11D0FB699
:109C3000F894DEBF0FBECDBFED010895F999FECFB8
:109C4000B2BDA1BDF89A119600B40895F7DF019254
:109C50001A94E1F70895F2DFE02DF0DFF02D08957A
:109C6000F999FECFB2BDA1BD00BC11960FB6F89414
:109C7000FA9AF99A0FBE0895F3DF012CF1DF11244F
:0E9C800008950190EDDF1A94E1F70895FFCFEB
:109C8E000AFF0164496E74656772616C5069746392
:109C9E0068202020496E74656772616C526F6C6C1F
:109CAE0020202020416363506974636820202020A7
:109CBE0020202020416363526F6C6C2020202020D6
:109CCE00202020204779726F596177202020202094
:109CDE002020202052656164696E67486569676857
:109CEE00742020204163635A202020202020202031
:109CFE00202020205468727573742020202020208C
:109D0E0020202020436F6D70617373486561646914
:109D1E006E672020566F6C746167652020202020AE
:109D2E00202020205265636569766572204C657629
:109D3E00656C20205961774779726F486561646957
:109D4E006E6720204D6F746F725F46726F6E742057
:109D5E00202020204D6F746F725F5265617220203B
:109D6E00202020204D6F746F725F526967687420D7
:109D7E00202020204D6F746F725F4C65667420201A
:109D8E00202020204163635F5A20202020202020A5
:109D9E0020202020535049204572726F72202020BF
:109DAE0020202020535049204F6B2020202020209F
:109DBE002020202020202020202020202020202095
:109DCE0020202020536572766F2020202020202016
:109DDE00202020205069746368202020202020201D
:109DEE0020202020526F6C6C20202020202020204C
:109DFE002020202020202020202020202020202055
:109E0E002020202020202020202020202020202044
:109E1E002020202020202020202020202020202034
:109E2E002020202020202020202020202020202024
:109E3E002020202020202020202020202020202014
:109E4E002020202020202020202020202020202004
:109E5E0020202020202020202020202020202020F4
:109E6E00202020204750535F5069746368202020C3
:109E7E00202020204750535F526F6C6C20202020F2
:109E8E0020202020FFFF010A6400007D0000FF0358
:109E9E000102030405060708090A48656C6C6F2069
:109EAE00576F726C6400000000000000000000009C
:109EBE000000000000000000000000000000000094
:109ECE000000000000000000000000000000000084
:109EDE000000000000000000000000000000000074
:109EEE00000000000000000000000E016400FFFFF3
:109EFE00FFFFF40190D0030090D00300ECFF17B7E2
:109F0E00D13830FB103A409696020A00000000004D
:109F1E00000000644600006401426567696E6E656C
:109F2E007200004E6F726D616C000053706F727430
:109F3E0000000100000000010202030303030404F9
:109F4E0004040404040405050505050505050505B9
:109F5E000505050505050606060606060606060699
:109F6E000606060606060606060606060606060683
:109F7E000606060606060707070707070707070769
:109F8E000707070707070707070707070707070753
:109F9E000707070707070707070707070707070743
:109FAE000707070707070707070707070707070733
:109FBE000707070707070808080808080808080819
:109FCE000808080808080808080808080808080803
:109FDE0008080808080808080808080808080808F3
:109FEE0008080808080808080808080808080808E3
:109FFE0008080808080808080808080808080808D3
:10A00E0008080808080808080808080808080808C2
:10A01E0008080808080808080808080808080808B2
:10A02E0008080808080808080808080808080808A2
:06A03E00080808080808EC
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644_NAVICTRL_V0_69k.hex
0,0 → 1,2189
:100000000C9442020C945F020C945F020C945F0209
:100010000C945F020C945F020C945F020C945F02DC
:100020000C945F020C94070C0C945F020C945F021A
:100030000C9462160C945F020C945F020C942E16C2
:100040000C945F020C945F020C942A0B0C945F02D8
:100050000C943D040C945F020C9407040C945F0212
:100060000C94DC0C0C945F020C9476150C945F02DB
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D436F6E74726F1F
:100090006C3A20004F4B0A0D000A0D43616C6962F7
:1000A000726174696E672061697220707265737322
:1000B0007572652073656E736F722E2E000A0D4186
:1000C0004343206E6F742063616C69627261746572
:1000D0006421000A0D3D3D3D3D3D3D3D3D3D3D3DE5
:1000E0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D40
:1000F0003D3D3D000A0D466C69676874436F6E7440
:10010000726F6C0A0D48617264776172653A25649A
:100110002E25640A0D536F6674776172653A562511
:10012000642E2564256320002E0048693A25346931
:10013000202043663A253469200054683A25346902
:10014000202059613A253469200050693A253469E4
:100150002020526F3A253469200045787465726E0C
:10016000436F6E74726F6C20200052616E67653A47
:100170002533692D25336900506F736974696F6E7B
:100180003A2025336900536574706F696E742020BE
:1001900025336900536572766F202000506F343A22
:1001A0002025336920506F383A2025336900506F7D
:1001B000333A2025336920506F373A2025336900C0
:1001C000506F323A2025336920506F363A2025335C
:1001D0006900506F313A2025336920506F353A203D
:1001E000253369004F6666436F757273653A202543
:1001F00035690048656164696E673A2020202535BD
:100200006900436F757273653A2020202025356997
:1002100000436F6D70617373202020202020200028
:1002200052432D4C6576656C3A2025356900566F32
:100230006C746167653A20202535690048656967F7
:1002400068742025346920282533692900526F6C91
:100250006C20202025346920282533692900506925
:1002600074636820202534692028253369290041DA
:100270004343202D2053656E736F720059617720C0
:10028000202025346920282533692900526F6C6CA1
:10029000202025346920282533692900506974639A
:1002A0006820253469202825336929005961772081
:1002B000202025346920282533692900526F6C6C71
:1002C000202025346920282533692900506974636A
:1002D0006820253469202825336929004779726F01
:1002E000202D2053656E736F720050333A253469A8
:1002F000202050343A253469200050313A253469A1
:10030000202050323A253469200047733A25346959
:10031000202059613A253469200050693A25346912
:100320002020526F3A253469200043373A2534693A
:10033000202043383A253469200043353A25346972
:10034000202043363A253469200043333A25346966
:10035000202043343A253469200043313A2534695A
:10036000202043323A253469200048656164696E73
:10037000673A20202025356900526F6C6C3A2020A6
:10038000202020202535690050697463683A2020B8
:1003900020202025356900417474697475646500F6
:1003A00048656967687420436F6E74726F6C004EA5
:1003B0006F20004F6666736574202020203A253533
:1003C00069004169722050726573732E3A25356950
:1003D0000053657420506F696E743A2025356900AA
:1003E0004865696768743A2020202025356900280F
:1003F000632920486F6C67657220427573730053E0
:10040000657474696E673A202564200048573A562F
:1004100025642E25642053573A25642E25642563D0
:10042000002B204D696B726F4B6F70746572202BBF
:10043000005B25695D005B25695D000A0D557369E8
:100440006E6720506172616D6574657220536574CA
:10045000202564000A0D496E69742E2045455052CE
:100460004F4D3A2047656E65726174696E6720442E
:10047000656661756C742D506172616D657465722D
:100480002E2E2E0011241FBECFEFD0E1DEBFCDBF38
:1004900014E0A0E0B1E0E4EFF4E802C005900D92B2
:1004A000A83BB107D9F718E0A8EBB4E001C01D9252
:1004B000A737B107E1F70E9461020C9479420C94CE
:1004C0000000CF93DF93F89414B815B8189B02C0BE
:1004D0008BE001C08AE08093000184B1836084B91D
:1004E000209100012A3011F4289A01C028982998F7
:1004F00084B7877F84BF80916000886180936000AB
:100500001092600080ED97E09093D4048093D30420
:100510001092710710927007109274051092730573
:1005200010927205109271051092700510926F056D
:100530002A3011F4289801C0289A0E94C6140E94FB
:10054000F50A0E94E40B0E94D8050E94FA150E9449
:10055000BF0C0E941F150E94263B789410927206D1
:1005600085E48093730687E08093740620910001F0
:10057000822F6AE00E94AA41492F50E0822F0E94F8
:10058000AA4190E02BE630E03F932F9325E430E042
:100590003F932F931F921F925F934F939F938F933D
:1005A00084EF90E09F938F931F920E94510883EDF8
:1005B00090E09F938F931F920E945108299A0E9466
:1005C000D53984E00E94D5372DB73EB7205F3F4F25
:1005D0000FB6F8943EBF0FBE2DBF8050944050F030
:1005E0008DEB90E09F938F931F920E9451080F9084
:1005F0000F900F9084EF91E00E94970BEC01CE01D9
:100600000E94A00B8823D9F38091DA0780FF20C0D5
:1006100089E990E09F938F931F920E94510888EE82
:1006200093E00E94970BEC010E94BB0F0F900F907C
:100630000F90CE010E94A00B8823D9F384E990E0AB
:100640009F938F931F920E9451080F900F900F90CD
:100650000E945A20809100018A3011F4289801C02C
:10066000289A80ED97E09093D4048093D30485E595
:1006700080937C0688E890E09F938F931F920E945E
:1006800051088091DA070F900F900F9082FF03C0FE
:100690008CE790E002C084E790E09F938F931F92D5
:1006A0000E9451080F900F900F9080E790E09F9369
:1006B0008F931F920E9451080E94FB0F88E893E1DC
:1006C00090936D0380936C030F900F900F90809127
:1006D000D004882309F493C01092D0040E9404220D
:1006E0000E941320209100012A3011F4289801C0A3
:1006F000289A80910301882321F08150809303017F
:1007000012C01092C4041092C50410928606109272
:10071000800510927F05109282051092810510923B
:1007200084051092830580916C0390916D03892B51
:1007300001F585E090E090936D0380936C030E9437
:10074000461580910403909105038F5F9F4FF9F444
:1007500080915B058823D9F080E197E29093D404DF
:100760008093D30480E890E0909305038093040382
:100770000EC080916C0390916D03019790936D036F
:1007800080936C032A3011F4289801C0289A809134
:10079000D004882321F080915B05882311F40E9406
:1007A0003F060E94E706CE010E94A00B882339F184
:1007B00020910803309109038091EA0790E02817FF
:1007C00039079CF480910403909105038F5F9F4F3C
:1007D00061F480E797E19093D4048093D30480E0A0
:1007E00093E090930503809304030E94EF3C84E020
:1007F0008093D50484E190E00E94970BEC018091F6
:10080000D504882309F063CF0E942A3D60CF1F9250
:100810000F920FB60F9211248F939F93EF93FF9334
:10082000809102018823E1F48091CC049091CD0461
:1008300001969093CD048093CC04FC01E753F94FCB
:10084000E081ED3019F08639910539F41092CD042C
:100850001092CC0481E080930201E093C60004C0B2
:100860001092CD041092CC04FF91EF919F918F9143
:100870000F900FBE0F901F9018951F920F920FB6FA
:100880000F9211242F933F934F935F936F937F9316
:100890008F939F93AF93BF93CF93DF93EF93FF9388
:1008A0007091C6008091BE04882309F06DC06091EC
:1008B000C904662371F4733279F47093DA0581E028
:1008C0008093C90483E290E09093CB048093CA04A0
:1008D0005BC0663908F054C0A62FB0E02091CA046E
:1008E0003091CB047D3069F0A652BA4F7C936F5F94
:1008F0006093C904270F311D3093CB042093CA04A1
:1009000043C0FD01E852FA4F9081ED01C752DA4F22
:100910008881A901491B5109481B51095F705093F7
:10092000CB044093CA042081CA0136E0969587958E
:100930003A95E1F7835C8217F1F49881842F8F73E5
:10094000835C8917C1F481E08093BE046093BF0487
:10095000A652BA4F7C938091DC05823571F488E110
:1009600090E02CE00FB6F894A895809360000FBE3D
:100970002093600002C01092BE041092C90404C00B
:100980001092C9041092BE04FF91EF91DF91CF91B4
:10099000BF91AF919F918F917F916F915F914F9197
:1009A0003F912F910F900FBE0F901F901895DC0173
:1009B00020E030E040E050E008C0FA01E753F94F92
:1009C0008081280F311D4F5F5F4F4A175B07A9F7E2
:1009D0003F70C90146E0969587954A95E1F7835C9B
:1009E000FD01E753F94F808311962F73235CFD01BE
:1009F000E753F94F2083A653B94F8DE08C931092A3
:100A000002018091C9068093C60008951F93CF9379
:100A1000DF93EA01722F93E29093C9066093CA06AE
:100A20008093CB0660E0A3E0B0E04FC0FE01E60F8C
:100A3000F11D90816F5F715019F410E040E00FC01C
:100A4000FE01E60FF11D40816F5F715011F410E05F
:100A500006C0FE01E60FF11D10816F5F7150892FF6
:100A600086958695835CFD01E753F94F808350E0BE
:100A70009A0184E0369527958A95E1F7892F90E0D1
:100A800083709070F4E0880F991FFA95E1F7282B96
:100A9000235CFD01E653F94F2083812F82958695D3
:100AA000869583704F705070440F551F440F551F2B
:100AB000842B835CFD01E553F94F80831F73135C26
:100AC000FD01E453F94F10831496772309F0AECF5C
:100AD000CD010E94D704DF91CF911F9108951F93FC
:100AE000CF93DF93EC0170E0A22FB0E0129748C0E3
:100AF000E42FF0E0E652FA4F30814F5FE42FF0E050
:100B0000E652FA4F50814F5FE42FF0E0E652FA4F81
:100B100010814F5FE42FF0E0E652FA4F20814F5FE3
:100B2000842F90E0A817B90774F15D53FE01E70F19
:100B3000F11D852F82958F703D53330F330F382B66
:100B40003083613001F1912F9D537F5FFE01E70FEC
:100B5000F11D71505295507F892F86958695582B9F
:100B6000508363506F3F79F07E5FFE01E70FF11D08
:100B70009295990F990F907C2D53922B90837F5FC4
:100B8000662309F0B5CFDF91CF911F9108951F9390
:100B9000182F8A3019F48DE00E94C7058091C0009B
:100BA00085FFFCCF1093C60080E090E01F91089570
:100BB0001F931FB7F8948091C1008F778093C10075
:100BC0008091C1008F7B8093C100589A5098599AA8
:100BD000519A1092C5008AE28093C4008091C000AF
:100BE00082608093C00088E18093C1008091C20040
:100BF0008F778093C2008091C2008F7B8093C20068
:100C00008091C2008F7D8093C2008091C2008F7E50
:100C10008093C2008091C200877F8093C200809140
:100C2000C1008B7F8093C1008091C200846080935B
:100C3000C2008091C20082608093C20002C0809195
:100C4000C6008091C00087FDFACF8091C100806806
:100C50008093C1008091C10080648093C100109294
:100C6000BE0481E08093020188EC90E00E94970B23
:100C700090937106809370061FBF1F910895809115
:100C80000201882309F4A2C08091B904882371F07D
:100C900080910201882351F06091C8042BE04CE759
:100CA00056E087E40E9406051092B9048091700610
:100CB000909171060E94A00B882321F48091BB04BF
:100CC0008823B1F080910201882391F06091C804DB
:100CD00022E447E856E084E40E9406051092BB0433
:100CE0008AEF90E00E94970B9093710680937006B4
:100CF000609101016F3F89F0462F50E094E0440F6E
:100D0000551F9A95E1F74C5F5E4F605D20E181E4ED
:100D10000E9406058FEF8093010190915F07992350
:100D2000A1F080910201882381F083E28093C906BB
:100D30009093CA068DE08093CB0610920201109228
:100D40005F078091C9068093C6008091BA0488230A
:100D500059F180910201882339F10E940410109208
:100D6000BA043091BD04932F9F5F9093BD049430DB
:100D700021F08091BC04882359F02EE14CE657E025
:100D800060E084E30E9406058FEF8093BD040CC0F1
:100D900044E1949FA0011124465E5C4F24E160E091
:100DA000832F8F5C0E9406058091B804882371F020
:100DB00080910201882351F06091C8042AE042E743
:100DC00056E086E50E9406051092B80408951F9328
:100DD000CF93DF93CDB7DEB722970FB6F894DEBF7F
:100DE0000FBECDBF8091BE04882309F4F7C0809167
:100DF000DC058B3609F47EC08C3688F48336E1F14D
:100E0000843630F48136C1F0823609F0E5C020C066
:100E1000873609F480C0883609F0DEC047C08137C4
:100E200009F47DC0813708F4A4C0843709F459C09F
:100E3000863709F0D1C06BC02091BF0443E062E067
:100E4000CE0101960E946F058981809301012AC01D
:100E50002091BF0443E06BE08CE796E00E946F05B1
:100E60008091F70490917E06892B8093F7048091FE
:100E7000850680935F07B0C02091BF0443E06BE01C
:100E80008CE796E00E946F058091F70490917E06B2
:100E9000892B8093F7048091850680935F0781E01A
:100EA0008093BB048FEF8093030196C02091BF0411
:100EB00043E062E0CE0101960E946F058091F70445
:100EC0009981892B8093F7048A818F3F21F481E0F7
:100ED0008093BC0402C01092BC0481E08093BA04E9
:100EE0007BC02091BF0443E064E080EC94E00E946A
:100EF0006F05D8CF2091BF0443E064E084EC94E018
:100F00000E946F058091C70480935F07CBCF81E07B
:100F10008093B80461C081E08093B9045DC02091E2
:100F2000BF0443E062E0CE0101960E946F0580910C
:100F300002018823E1F389818F3F71F0863010F040
:100F400085E0898389810E9403386091C804898182
:100F500026E442ED57E009C01091C80482E00E94E7
:100F6000C43726E442ED57E0612F855B0E940605F9
:100F700033C02091BF0443E066E482ED97E00E9415
:100F80006F058091DC058B560E94EE376091FD075E
:100F900070E080E090E024EC39E040E050E00E9416
:100FA0008B416093740370937503809376039093E1
:100FB00077036091FE0770E080E090E00E948B4133
:100FC000609378037093790380937A0390937B0303
:100FD0000E94C6390E94BF211092BE0422960FB60D
:100FE000F894DEBF0FBECDBFDF91CF911F91089562
:100FF000982F80916007813069F48091F604E82F82
:10100000F0E0E65EFC4F90838F5F8093F60421E072
:1010100030E005C0892F0E94C705282F30E0C901A4
:1010200008951F93182F04C080E30E94F807115001
:101030001116D4F31F9108951F93182F04C080E256
:101040000E94F80711501116D4F31F9108950F93C1
:101050001F93CF93DF938C01EB0108C0F8010F5F62
:101060001F4FE4918E2F0E94F80721972097B1F728
:10107000DF91CF911F910F9108950F931F93CF93FD
:10108000DF938C01EB0106C0F80181918F010E9472
:10109000F80721972097C1F7DF91CF911F910F910A
:1010A00008952F923F924F925F926F927F928F920C
:1010B0009F92AF92BF92CF92DF92EF92FF920F93E7
:1010C0001F93CF93DF93CDB7DEB7E5970FB6F894B4
:1010D000DEBF0FBECDBF2B968FAD2B9780936007E1
:1010E000CE01835B9F4F9B838A832D964EAC5FAC72
:1010F0002D971EA61FA618AA19AA9E01225D3F4F72
:101100003DAB2CAB820102C00F5F1F4FF801F49082
:10111000FF2019F0F5E2FF16B9F7B8016419750957
:1011200019F0C2010E942708FF2009F445C22801D6
:101130000894411C511C1982AA81BB8133241BAA2B
:101140002FEF2AABF2010894411C511CB490632D7F
:1011500070E06170707035E7B31621F08B2D8062FE
:101160008837C9F46115710559F02D913D914D9164
:101170005C9113972EA73FA748AB59AB14960BC0B1
:101180008D919C9111979C0140E050E02EA73FA7C4
:1011900048AB59AB129630E2B31621F4898188230B
:1011A00089F61CC043E2B41611F458E055C08AE237
:1011B000B81621F09DE2B91671F408C0FD0112962F
:1011C000E081EBABE7FFBECFE195EBABE0E13E2A80
:1011D000FFED3F22B7CF2BE2B21611F4B982B2CFA6
:1011E0003EE2B31699F5F2010894411C511C84911A
:1011F0008A3221F0B82E20E030E01DC0FD011296A9
:101200004081518157FF02C04FEF5FEF4AAB9ACF49
:10121000C90153E0880F991F5A95E1F7220F331F38
:10122000280F391F2B0D311D20533040F201089437
:10123000411C511CB4908B2D80538A3048F3A90176
:1012400037FF02C04FEF5FEF4AAB85CF40E3B416E4
:1012500029F434FC77CF50E2352A74CF8B2D81539B
:101260008930D8F420E030E0C90103E0880F991FED
:101270000A95E1F7220F331F280F391F2B0D311D5F
:1012800020533040F2010894411C511CB4908B2D26
:1012900080538A3048F32BAB5ECF88E6B81619F43A
:1012A00094E0392A4FCFECE6BE1619F4F1E03F2A5C
:1012B00049CFBB83AA8323E6B21639F41296BB83C7
:1012C000AA8312978C918E8322C134E4B31639F02D
:1012D00044E6B41631F059E6B516A9F502C081E02E
:1012E000382A30FE08C01496BB83AA835E914E91C3
:1012F0003E912E910AC01296BB83AA839E918E9135
:101300009C01442737FD4095542F2EA73FA748AB9B
:1013100059AB8EA59FA5A8A9B9A9BB238CF42EA56E
:101320003FA548A959A950954095309521953F4F23
:101330004F4F5F4F2EA73FA748AB59AB8DE2898334
:10134000BAE02B2E80C03FE4B31621F04FE6B4166E
:1013500031F402C051E0352AA8E02A2E73C080E79C
:10136000B81689F41296BB83AA839E918E919C0134
:1013700040E050E02EA73FA748AB59AB30E4332AFA
:10138000F8E7BF2E5DC043E7B416D1F51296BB83D4
:10139000AA83DE90CE90C114D10489F488E28E83B2
:1013A0008EE68F8385E788878CE689878A8789E23E
:1013B0008B871C86E6E0CE2ED12CCC0EDD1E5AA9E2
:1013C00057FD14C0452F552747FD509560E070E04C
:1013D000C6010E94633F009711F4FAA80EC0F82ED0
:1013E000FC188AA98F154CF4F82E07C0F60101905D
:1013F0000020E9F73197FE2EFC18198240E090C0DA
:1014000095E5B91621F0A5E7BA1631F402C0B1E0AE
:101410003B2A7AE0272E16C0E8E5BE1621F0F8E751
:10142000BF1609F070C033FE0BC02EA53FA548A91A
:1014300059A9211531054105510511F030E4332A30
:1014400060E1262E19824AA947FD02C05FED3522D0
:101450008EA59FA5A8A9B9A90097A105B10549F432
:101460009AA9992331F45EE2C52ED12CCC0EDD1E53
:1014700046C06EA47FA488A899A84EE2C42ED12CA1
:10148000CC0EDD1EE22CFF2400E010E06EA57FA54F
:1014900088A999A9A80197010E94DD416A3020F42A
:1014A00030E3A32EA60E08C027E5A22EA60EA8E5BF
:1014B000BA1611F4BFEDAB22F601A2926F016EA530
:1014C0007FA588A999A9A80197010E94DD412EA7AF
:1014D0003FA748AB59AB6E147F048006910618F005
:1014E00039014A01D3CFF8E02F1649F433FE07C083
:1014F00020E3A21621F080E3D6018E936D01FCA8B3
:10150000FC184AA90DC0BB2009F456C0BE8219823E
:1015100096E0C92ED12CCC0EDD1E40E0FF24F394C2
:10152000E42EEF18E7FCEE248981882319F08F2D33
:101530008F5F06C036FC02C08F2D02C08F2D8E5FDC
:10154000A82EAE0C032D10E080E3882E912C802273
:1015500091228114910421F48BA98A190E941C08FC
:101560008981882329F061E070E0CE01019609C0ED
:1015700006FF09C080E38C83BD8262E070E0CE018B
:1015800004960E943D08B0E28B16910421F48BA9C9
:101590008A190E9411088E2D0E9411086F2D77273D
:1015A00067FD7095C6010E943D0804FFABCD8BA975
:1015B0008A190E941C08A6CDE5960FB6F894DEBFE6
:1015C0000FBECDBFDF91CF911F910F91FF90EF9094
:1015D000DF90CF90BF90AF909F908F907F906F9053
:1015E0005F904F903F902F9008952FB7F89490916F
:1015F00000019A3019F4529A5A9802C03F9A4798BB
:1016000084B1886184B985B1877E85B99A3019F42F
:10161000529A5A9802C03F9A479884B58F7A84BDEF
:1016200084B5836A84BD85B5877385BD85B5887F9C
:10163000826085BD17BC88E788BD16BC80916E00AE
:10164000897F80936E0080916E00816080936E0030
:101650002FBF08951F920F920FB60F9211242F9350
:101660003F938F939F938091D504882329F0809195
:10167000D50481508093D5048091D6048150809305
:10168000D6048F3FB9F489E08093D6048091060395
:101690008F5F817080930603882319F481E0809323
:1016A000D0048091CE049091CF0401969093CF0402
:1016B0008093CE048091D3049091D404892BB1F00F
:1016C0008091D3049091D40401979093D404809393
:1016D000D3042091D3043091D404809104039091D9
:1016E000050382239323892BA1F406C08FEF9FEF7C
:1016F0009093050380930403809100018A3039F4AC
:1017000004C05A9A0BC0479A09C05A9807C0479814
:1017100005C0809100018A30B1F7F3CF9F918F917E
:101720003F912F910F900FBE0F901F901895209111
:10173000CE043091CF042F5F3F4F820F931F089547
:101740002091CE043091CF04821B930B892F9927CF
:101750008695807490E00895AC012091CE0430917C
:10176000CF042F5F3F4F05C080917A00886C809333
:101770007A008091CE049091CF04B901681B790B57
:10178000CB01840F951F80709078892F99278695BB
:10179000882351F30895AC012091CE043091CF04F9
:1017A0002F5F3F4F8091CE049091CF04B901681B09
:1017B000790BCB01840F951F80709078892F992722
:1017C0008695882379F308959FB7F894579A5F9A7E
:1017D000E0EBF0E080818F78808380818368808374
:1017E000E1EBF0E080818673808380818660808376
:1017F0008AE08093B3001092B200E0E7F0E08081CD
:101800008A7F80838081826080839FBF08951F923A
:101810000F920FB60F921124FF920F931F932F93E5
:101820003F934F935F936F937F938F939F93AF9368
:10183000BF93EF93FF938091070381508093070339
:101840008F3F09F082C08091B0008093B0008091FA
:10185000B00080688093B0008091930390E09093F3
:10186000D8048093D70480910708F090F40780FF94
:1018700023C00091D7041091D80460911D05709188
:101880001E0580911F059091200520E830E040E082
:1018900050E00E94FF41CA01B9012F2D30E040E025
:1018A00050E00E948B4120E032E040E050E00E9496
:1018B000FF41020F131F22C00091D7041091D804DA
:1018C00060911D0570911E0580911F059091200566
:1018D00020E830E040E050E00E94FF41CA01B90139
:1018E0002F2D30E040E050E00E948B4120E032E0BC
:1018F00040E050E00E94FF41021B130B1093D804FC
:101900000093D7042091D7043091D8048091F50733
:1019100090E02817390754F02091D7043091D8046B
:101920008091F60790E08217930724F49093D804EF
:101930008093D7048091D7049091D8048093B3000A
:101940008091F7078093070306C08091B0008F73E2
:101950008093B0005F98FF91EF91BF91AF919F91FD
:101960008F917F916F915F914F913F912F911F9137
:101970000F91FF900F900FBE0F901F9018959FB77B
:10198000F89411B812B88FEF80937E00ECE7F0E086
:1019900080818F7180838081807E8083AAE7B0E020
:1019A00087E28C93EBE7F0E08081887F80838C91E5
:1019B000886C8C939FBF08951F920F920FB60F9261
:1019C0001124EF92FF920F931F932F933F934F9306
:1019D0005F936F937F938F939F93AF93BF93CF93B7
:1019E000DF93EF93FF9380917A00877380937A005F
:1019F0008091F4048F5F8093F4048150853009F462
:101A00007EC0863090F4823009F440C0833030F4D8
:101A10008823F1F0813009F082C22FC0833009F4AD
:101A200041C0843009F07BC25AC0883009F4B2C08A
:101A3000893038F4863009F473C0873009F06FC2FA
:101A40008CC0893009F4C3C08A3009F068C2DBC198
:101A500080917800909179009093F3048093F20440
:101A600081E08093F5048091E9049091EA04019665
:101A70009093EA048093E90456C280917800909193
:101A800079009093F1048093F00482C080917800F3
:101A9000909179009093EF048093EE0484E080931A
:101AA000F50441C2409108035091090380917800E8
:101AB000909179009A01220F331F240F351F63E0A4
:101AC00070E00E94B641260F371F36952795369550
:101AD0002795309309032093080386E0E0CF809197
:101AE0001705909118052091780030917900821B9C
:101AF000930B9093E2048093E10487E0D0CF809130
:101B00007800909179002091150530911605821B7F
:101B1000930B9093E4048093E3041092F50403C2C2
:101B2000809100012091F2043091F3048A3049F44D
:101B30008091780090917900820F931F96958795F8
:101B400006C08091780090917900820F931F909346
:101B5000E0048093DF0481E0A2CF80910001209116
:101B6000F0043091F1048A3049F48091780090912A
:101B70007900820F931F9695879506C08091780013
:101B800090917900820F931F9093DE048093DD047F
:101B900082E085CF809100012091EE043091EF0426
:101BA0008A3049F48091780090917900820F931FD8
:101BB0009695879506C08091780090917900820F64
:101BC000931F9093DC048093DB0485E068CF6091E1
:101BD000780070917900E0901905F0901A05009155
:101BE0001B0510911C05882777FD8095982F0E9472
:101BF0007040A80197010E94703F0E943D40709381
:101C0000E6046093E504E091E504F091E604809138
:101C1000E3049091E404C091E104D091E20497FFC1
:101C200003C0909581959F4F64E070E00E94CA4187
:101C30009B01CE01D7FF03C0909581959F4F64E033
:101C400070E00E94CA41260F371FE20FF31FF09386
:101C5000E604E093E5048091E5049091E6040297A0
:101C60000CF43EC06091190570911A0580911B0516
:101C700090911C0520E030E84BE354E40E94AB4017
:101C800088230CF078C06091190570911A05809135
:101C90001B0590911C052AE037ED43EA5CE30E94A6
:101CA000713F6093190570931A0580931B059093FB
:101CB0001C0580915D0590915E05845F914008F060
:101CC0005AC06091190570911A0580911B05909179
:101CD0001C052DEC3CEC4CEC5DE30E94713F43C0D5
:101CE0008091E5049091E6048F5F9F4F0CF043C014
:101CF0006091190570911A0580911B0590911C0542
:101D000020E030E849E054E40E94AF4018169CF50A
:101D10006091190570911A0580911B0590911C0521
:101D20002AE037ED43EA5CE30E94703F60931905B7
:101D300070931A0580931B0590931C0580915D0597
:101D400090915E05845F9140B0F4609119057091A7
:101D50001A0580911B0590911C052DEC3CEC4CEC78
:101D60005DE30E94703F6093190570931A0580939C
:101D70001B0590931C0580917800909179009093B9
:101D8000DA048093D90420914D0530914E0540919D
:101D90004F05509150058091E5049091E604AA27E3
:101DA00097FDA095BA2F820F931FA41FB51F809394
:101DB0004D0590934E05A0934F05B0935005E090CC
:101DC0004D05F0904E0500914F0510915005609122
:101DD0004D0570914E0580914F059091500520E082
:101DE00034E040E050E00E94FF41E21AF30A040BA5
:101DF000150BE0924D05F0924E0500934F051093A0
:101E0000500583E04CCEE0917800F091790080910C
:101E1000EB049091EC04E80FF91FF093EC04E093CD
:101E2000EB048091ED048F5F8093ED04853008F41E
:101E300076C0809178009091790090930F03809301
:101E40000E034091E7045091E8042091610730911E
:101E500062072E1B3F0B8091850590918605281BFC
:101E6000390B8091820390E0BC01269FC001279F1F
:101E7000900D369F900D11249A01A3E0220F331F7D
:101E8000AA95E1F7241B350B820F931F68E070E0E1
:101E90000E94CA417093E8046093E704E0900A034B
:101EA000F0900B0300910C0310910D03BF018827E4
:101EB00077FD8095982FA8019701220F331F441FAB
:101EC000551F2E0D3F1D401F511F620F731F841F92
:101ED000951F24E030E040E050E00E94FF41209355
:101EE0000A0330930B0340930C0350930D0320918E
:101EF00061073091620780910A0390910B03A091D2
:101F00000C03B0910D03281B390B309386052093E9
:101F100085051092ED041092EC041092EB041092DF
:101F2000F5041092F40480917C00807E9091F50479
:101F3000892B80937C008091F404882329F0809180
:101F40007A00886C80937A00FF91EF91DF91CF91B6
:101F5000BF91AF919F918F917F916F915F914F91C1
:101F60003F912F911F910F91FF90EF900F900FBE17
:101F70000F901F9018951F93CF93DF9383E00E94DB
:101F8000C437182F853108F01A5017BD84E690E049
:101F90000E94AC0B80910E0390910F0382559340E9
:101FA000C0F410E016C017BD82E390E00E94AC0BB5
:101FB000DF93CF931F920E94510880910E0390915E
:101FC0000F030F900F900F908458934030F01F5FD5
:101FD00002C0C8E2D1E01A3F30F3612F83E00E94D3
:101FE000CD37109363078CE291E00E94AC0BDF9138
:101FF000CF911F910895EAE1F3E080E2819383E0BD
:10200000EA36F807D1F708951F938091F704282F37
:1020100030E0C90181709070682F8823A9F0809109
:10202000F804882311F0815002C080916A038093E4
:10203000F804EAE1F3E080E2819383E0EA36F8070E
:10204000D1F78FEF8093BD04A9014270507021FF3A
:1020500017C09091F80480916A03981719F41092B0
:10206000F80403C09F5F9093F804EAE1F3E080E294
:10207000819393E0EA36F907D1F78FEF8093BD049F
:10208000662321F0452B11F01092F8048091F8049A
:10209000282F30E08A3040F481E18093F6043F93AA
:1020A0002F9386E394E007C080E18093F6043F938A
:1020B0002F9381E394E09F938F9381E08F930E940D
:1020C00051080F900F900F900F900F901091F804FF
:1020D000153009F4FBC1163090F4123009F4D0C069
:1020E000133030F4112309F1113009F046C465C0F2
:1020F000133009F41BC1143009F03FC46BC1183010
:1021000009F411C3193038F4163009F499C21730A4
:1021100009F033C4E3C21A3009F49FC31A3008F43B
:1021200040C31B3009F029C4D6C31092F60481E2E3
:1021300094E09F938F9311E01F930E94510884E1D4
:102140008093F60420910001822F6AE00E94AA4148
:10215000492F50E0822F0E94AA4190E02BE630E008
:102160003F932F9325E430E03F932F931F921F92CC
:102170005F934F939F938F938CE094E09F938F9303
:102180001F930E94510888E28093F6040E94C6398A
:1021900090E09F938F938FEF93E09F938F931F9384
:1021A0000E9451088CE38093F6048FEE93E09F9396
:1021B0008F931F930E945108DCC38091DA0780FF40
:1021C00047C01092F60480918505909186059F93F3
:1021D0008F9380EE93E09F938F931F930E945108FB
:1021E00084E18093F60480918705909188059F9300
:1021F0008F9381ED93E09F938F931F930E945108DB
:1022000088E28093F60480910E0390910F039F93D0
:102210008F9382EC93E09F938F931F930E945108BA
:102220008CE38093F6048091630790E09F938F93F3
:1022300083EB93E09F938F931F930E9451088DB778
:102240009EB744960FB6F8949EBF0FBE8DBF9AC33B
:1022500084E18093F6048FEA93E09F938F931F931A
:102260000E94510888E28093F60480EA93E09F93ED
:102270008F931F930E9451088DB79EB70696E2CFA9
:102280001092F60487E993E09F938F9311E01F93D8
:102290000E94510884E18093F60460911D057091BD
:1022A0001E0580911F059091200520E034E040E05C
:1022B00050E00E94FF415F934F933F932F9388E834
:1022C00093E09F938F931F930E94510888E280931D
:1022D000F60460912505709126058091270590915F
:1022E000280520E034E040E050E00E94FF415F9389
:1022F0004F933F932F9389E793E09F938F931F937F
:102300000E9451088CE38093F60480916E039091B3
:102310006F039F938F938AE693E09F938F931F930E
:102320000E9451088DB79EB746968CCF1092F60446
:10233000809170079091710720916E0730916F071F
:102340009F938F933F932F938AE593E09F938F936F
:1023500011E01F930E94510884E18093F60480915C
:1023600074079091750720917207309173079F93BE
:102370008F933F932F938AE493E09F938F931F93C0
:102380000E94510888E28093F6048091780790912A
:10239000790720917607309177079F938F933F932A
:1023A0002F938AE393E09F938F931F930E9451088A
:1023B0008CE38093F60480917C0790917D072091B7
:1023C0007A0730917B079F938F933F932F938AE2F5
:1023D00093E03AC21092F604E091D307F0E0EE0FDA
:1023E000FF1FE459F84F20813181E091D207F0E0DE
:1023F000EE0FFF1FE459F84F808191813F932F9397
:102400009F938F938AE193E09F938F9311E01F93A3
:102410000E94510884E18093F604E091D507F0E032
:10242000EE0FFF1FE459F84F20813181E091D4076E
:10243000F0E0EE0FFF1FE459F84F808191813F9348
:102440002F939F938F938AE093E09F938F931F9393
:102450000E94510888E28093F604E091D707F0E0EB
:10246000EE0FFF1FE459F84F20813181E091D6072C
:10247000F0E0EE0FFF1FE459F84F808191813F9308
:102480002F939F938F938AEF92E09F938F931F9345
:102490000E9451088CE38093F604E091D907F0E0A4
:1024A000EE0FFF1FE459F84F20813181E091D807EA
:1024B000F0E0EE0FFF1FE459F84F808191813F93C8
:1024C0002F939F938F938AEE92E0BEC11092F604F1
:1024D0008CED92E09F938F9311E01F930E9451081F
:1024E0000F900F900F90809100018A3009F04AC040
:1024F00084E18093F60440910B0550910C05809186
:10250000DB049091DC0420910B0530910C05821BBB
:10251000930B5F934F939F938F938CEC92E09F93D9
:102520008F931F930E94510888E28093F604409194
:102530000D0550910E058091DD049091DE042091EF
:102540000D0530910E05821B930B5F934F939F9364
:102550008F938CEB92E09F938F931F930E9451086F
:102560008CE38093F60480910F05909110052091E3
:10257000BE073091BF079F938F933F932F938CEAB1
:1025800092E055C084E18093F60480910B05909110
:102590000C0562E070E00E94CA418091DB049091DA
:1025A000DC0420910B0530910C05821B930B7F936B
:1025B0006F939F938F938CE992E09F938F931F93D8
:1025C0000E94510888E28093F60480910D05909155
:1025D0000E0562E070E00E94CA418091DD04909196
:1025E000DE0420910D0530910E05821B930B7F9325
:1025F0006F939F938F938CE892E09F938F931F9399
:102600000E9451088CE38093F60480910F0590910D
:10261000100562E070E00E94CA418091BE0790916F
:10262000BF077F936F939F938F938CE792E09F9365
:102630008F931F930E9451088DB79EB7459602CE87
:102640001092F6048FE692E09F938F9311E01F9310
:102650000E94510884E18093F604809115059091C1
:1026600016052091E3043091E4049F938F933F93E8
:102670002F938EE592E09F938F931F930E945108B2
:1026800088E28093F60480911705909118052091B7
:10269000E1043091E2049F938F933F932F938DE455
:1026A00092E09F938F931F930E9451088CE3809335
:1026B000F6046091190570911A0580911B0590919F
:1026C0001C050E943D402091B3073091B4077F93D1
:1026D0006F933F932F938CE392E046C184E1809304
:1026E000F60480910803909109039F938F938EE2E3
:1026F00092E09F938F9311E01F930E94510888E20C
:102700008093F60480910405909105059F938F9323
:1027100080E292E09F938F931F930E9451088DB7A0
:102720009EB70A968FCD1092F60481E192E09F93B6
:102730008F9311E01F930E94510884E18093F60467
:1027400080917003909171039F938F9382E092E048
:102750009F938F931F930E94510888E28093F60401
:1027600080916E0390916F039F938F9383EF91E01D
:102770009F938F931F930E9451088CE38093F604DC
:1027800080915105909152059F938F9384EE91E033
:102790009F938F931F930E9451088DB79EB74296C7
:1027A00051CD1092F60480916705909168052091B3
:1027B0005F05309160059F938F933F932F9382ED38
:1027C00091E09F938F9311E01F930E94510884E141
:1027D0008093F6048091690590916A0520916105C6
:1027E000309162059F938F933F932F9380EC91E0FC
:1027F0009F938F931F930E94510888E28093F60461
:1028000080916B0590916C05209163053091640572
:102810009F938F933F932F938EEA91E09F938F9393
:102820001F930E9451088CE38093F60480916D05FC
:1028300090916E0520916505309166059F938F9369
:102840003F932F938CE991E09F938F931F930E9466
:1028500051088DB79EB74C96F5CC1092F60484E9DA
:1028600091E09F938F9311E01F930E94510884E1A0
:102870008093F6048091930390E09F938F9386E872
:1028800091E09F938F931F930E94510888E2809359
:10289000F6048091D7049091D8049F938F9388E792
:1028A00091E09F938F931F930E9451088CE3809334
:1028B000F6042091F60730E08091F50790E03F9311
:1028C0002F939F938F938AE691E09F938F931F930B
:1028D0000E945108B4CC1092F6048AE591E09F93CF
:1028E0008F9311E01F930E94510884E18093F604B6
:1028F00020918006332727FD309580917F06992708
:1029000087FD90953F932F939F938F938AE491E057
:102910009F938F931F930E94510888E28093F6043F
:1029200020918106332727FD30958091820690E023
:102930003F932F939F938F938AE391E09F938F937D
:102940001F930E9451088CE38093F6042091860621
:1029500030E080918306992787FD90953F932F93D0
:102960009F938F938AE291E09F938F931F930E948E
:1029700051088DB79EB7489665CC115010936A03E5
:102980001092F8041092F7041F91089587B18C609B
:1029900087B94298439808954091F9045091FA04F8
:1029A0004431510500F14C3D5105E8F42091FF04FC
:1029B00030910005C901880F991F8417950710F4FD
:1029C000429A01C042982F5F3F4F309300052093F9
:1029D000FF04215030402417350730F010920005D5
:1029E0001092FF0401C0429A4091FB045091FC04F4
:1029F0004431510510F4439808954C3D5105E8F4D5
:102A00002091FD043091FE04C901880F991F84179D
:102A1000950710F4439A01C043982F5F3F4F3093BE
:102A2000FE042093FD04215030402417350730F078
:102A30001092FE041092FD040895439808959FB7E4
:102A4000F8943998389A88B1836088B9E9EBF0E056
:102A500080818C7F80838AE28093B8009FBF089535
:102A600085EA8093BC00089584E98093BC000895B2
:102A70008093BB0085E88093BC00089585EC80932B
:102A8000BC00089585E88093BC000895EF92FF9202
:102A90000F931F938CEBE82EF12C84E9F7018083D0
:102AA000109201050BEB10E0F80180818093020584
:102AB0001092020580E8F70180831092BD00109209
:102AC000BA00F80110821092B9001092B8000E946A
:102AD0001F1585EAF7018083F801108285E8F70168
:102AE00080831F910F91FF90EF9008951F920F9296
:102AF0000FB60F9211248F939F93EF93FF938091C2
:102B000001058F5F8093010581508330D1F18430BE
:102B100028F4813081F0823060F508C08530C1F141
:102B20008530A0F1863009F04FC03EC0809102058B
:102B3000880F8E5A12C0809102058F5F8093020524
:102B40008150813069F0813030F0823061F0833023
:102B500009F047C00BC08091AA078093BB0020C03A
:102B60008091C007FACF8091B507F7CF8091D10748
:102B7000F4CF80910205843010F41092010585EAAB
:102B800010C080910305880F8D5AE7CF85EC09C0EE
:102B9000E0910305F0E08091BB00EC59F84F808391
:102BA00085E88093BC001DC080910305E82FF0E00C
:102BB0009091BB00E859F84F90838F5F8093030595
:102BC000843010F01092030584E98093BC001092C9
:102BD00001058AE090E090936D0380936C0310925E
:102BE0000205FF91EF919F918F910F900FBE0F9073
:102BF0001F9018959FB7F89456985E9A8AB1806393
:102C00008AB98BB18F7C8BB9809100018A3011F425
:102C1000539A5B98809180008C70809380008091A3
:102C20008100837E8093810080918100836C8093FA
:102C30008100809182008F738093820080916F0069
:102C4000897F80936F0080916F00816280936F0015
:102C500010920505109204059FBF08951F920F92D0
:102C60000FB60F9211242F933F935F936F937F932F
:102C70008F939F93AF93BF9380910605882391F420
:102C8000209104053091050580910405909105057A
:102C900068E070E00E94CA41261B370B309305059F
:102CA0002093040510920605BF91AF919F918F91DB
:102CB0007F916F915F913F912F910F900FBE0F9079
:102CC0001F9018951F920F920FB60F9211240F9319
:102CD0001F932F933F934F935F936F937F938F93A4
:102CE0009F93AF93BF93CF93DF93EF93FF93209185
:102CF0008600309187008091070590910805281B78
:102D0000390B8091860090918700909308058093FD
:102D10000705C9018D5494400091090510910A05D9
:102D2000835F9A4188F4043011053CF010926B03E4
:102D3000809106058F5F8093060581E090E0909377
:102D40000A058093090598C00E3011050CF094C057
:102D5000C9018B5F9040845B914008F072C0E9012B
:102D6000C25DD140F801EE0FFF1FE459F84F80819A
:102D700091819E01281B390BC90137FF03C0909533
:102D800081959F4F069784F48091040590910505E5
:102D9000883C91054CF480910405909105050A96B4
:102DA0009093050580930405F801EE0FFF1FE45989
:102DB000F84F20813181C901880F991F820F931F1D
:102DC0008C0F9D1F64E070E00E94CA419B01CE0100
:102DD0000196861797071CF42150304006C02197B2
:102DE0006C177D0714F42F5F3F4F8091040590917D
:102DF0000505E801CC0FDD1F833C9105BCF0FE0109
:102E0000E459F84F80819181A901481B590BCA01EF
:102E100063E070E00E94CA41CB01880F991F860FC2
:102E2000971FC657D84F9983888304C0C657D84F79
:102E300019821882F801EE0FFF1FE459F84F318311
:102E40002083F8013196F0930A05E0930905E530F7
:102E5000F10511F45D9A06C05D98E630F10511F4B4
:102E60005C9A01C05C98809100018A3029F4379700
:102E700011F45B9A01C05B9880910405909105055F
:102E8000892B49F080910405909105050197909355
:102E9000050580930405FF91EF91DF91CF91BF91DC
:102EA000AF919F918F917F916F915F914F913F91E2
:102EB0002F911F910F910F900FBE0F901F9018959B
:102EC0002F923F924F925F926F927F928F929F923A
:102ED000AF92BF92CF92DF92EF92FF920F931F9328
:102EE000CF93DF93CDB7DEB722970FB6F894DEBF4E
:102EF0000FBECDBF80910F05909110052091DF048A
:102F00003091E004821B930B9093BF078093BE0720
:102F10008091DD049091DE0420910D0530910E0525
:102F2000821B930B9093BB078093BA078091DB04BD
:102F30009091DC0420910B0530910C05821B930BC2
:102F40009093BD078093BC07E090C107F090C20743
:102F50006091E3047091E404882777FD8095982FB1
:102F60002CE030E040E050E00E948B410027F7FC6D
:102F70000095102FE60EF71E081F191FC801B70194
:102F800022E030E040E050E00E94FF413093C20771
:102F90002093C107E090CB07F090CC076091E1044B
:102FA0007091E204882777FD8095982F2CE030E01F
:102FB00040E050E00E948B410027F7FC0095102F65
:102FC000E60EF71E081F191FC801B70122E030E006
:102FD00040E050E00E94FF413093CC072093CB07A4
:102FE0002091B3073091B4076091E5047091E60435
:102FF000882777FD8095982F442737FD4095542FDB
:10300000620F731F841F951F22E030E040E050E004
:103010000E94FF413093B4072093B30740914505C8
:103020005091460560914705709148052091E30451
:103030003091E404C901880F991F820F931F880FF4
:10304000991F880F991FAA2797FDA095BA2F840F63
:10305000951FA61FB71F8093450590934605A09323
:103060004705B09348054091490550914A05609144
:103070004B0570914C052091E1043091E204C901A7
:10308000880F991F820F931F880F991F880F991F10
:10309000AA2797FDA095BA2F840F951FA61FB71FCB
:1030A0008093490590934A05A0934B05B0934C0536
:1030B0002091E3043091E4048091550590915605E8
:1030C000820F931F90935605809355052091E1043C
:1030D0003091E2048091570590915805820F931F1B
:1030E00090935805809357058091590590915A0502
:1030F000019690935A05809359052091410530918E
:10310000420540914305509144058091BE0790913E
:10311000BF07AA2797FDA095BA2F820F931FA41F60
:10312000B51F8093410590934205A0934305B0934A
:1031300044058091BE079091BF079C01442737FD4D
:103140004095542F8091C3079091C407A091C50763
:10315000B091C607280F391F4A1F5B1F2093C30772
:103160003093C4074093C5075093C607203B83E8BC
:10317000380788E0480780E0580764F0205B334850
:10318000484050402093C3073093C4074093C5077D
:103190005093C6078091C3079091C407A091C507BB
:1031A000B091C607B7FF0CC080559C47A74FBF4FD3
:1031B0008093C3079093C407A093C507B093C60735
:1031C00090918D059A83992309F08AC080918E058C
:1031D000882309F085C08091DA0786FF81C060915D
:1031E000BE077091BF0720913105309132054091A3
:1031F000330550913405E0909503FF2400E010E082
:10320000882777FD8095982F0E948B4120E038E039
:1032100040E050E00E94FF41CA01B901A8019701B6
:103220000E948B4120E030E140E050E00E94FF41ED
:1032300059016A012093CC053093CD054093CE050A
:103240005093CF056091BE077091BF07209139055B
:1032500030913A0540913B0550913C05882777FD18
:103260008095982F0E948B4120E038E040E050E0AC
:103270000E94FF41CA01B901A80197010E948B4138
:1032800020E030E140E050E00E94FF412093C8057B
:103290003093C9054093CA055093CB05D601C501AB
:1032A000D7FE07C0B095A095909581959F4FAF4FE1
:1032B000BF4F81389105A105B10574F457FF07C0D0
:1032C00050954095309521953F4F4F4F5F4F213896
:1032D000310541055105A4F081E08093540510C0EB
:1032E0001092C8051092C9051092CA051092CB051C
:1032F0001092CC051092CD051092CE051092CF05FC
:103300008091BA079091BB072090CC053090CD05F5
:103310004090CE055090CF05820D931D9093BB0732
:103320008093BA070091BA071091BB07A090C80517
:10333000B090C905C090CA05D090CB058091960386
:10334000682E772488249924C401B301A60195012D
:103350000E948B4120E032E040E050E00E94FF41BB
:10336000020F131F1093BB070093BA0720913D056E
:1033700030913E0540913F05509140058091BA073C
:103380009091BB07AA2797FDA095BA2F820F931F94
:10339000A41FB51F80933D0590933E05A0933F0564
:1033A000B09340054091390550913A0560913B0535
:1033B00070913C058091BA079091BB0720918905D7
:1033C00030918A05821B930BAA2797FDA095BA2FEF
:1033D000840F951FA61FB71F8093390590933A0558
:1033E000A0933B05B0933C058091390590913A0537
:1033F000A0913B05B0913C05E0907803F0907903F3
:1034000000917A0310917B03E816F9060A071B075F
:1034100004F580E197E2A0E0B0E08E199F09A00BCF
:10342000B10B8093390590933A05A0933B05B09377
:103430003C058091390590913A05A0913B05B091EA
:103440003C0580933D0590933E05A0933F05B093C6
:1034500040052091390530913A0540913B05509146
:103460003C0588279927DC018E199F09A00BB10B19
:10347000281739074A075B0704F580EF98EDAFEF8F
:10348000BFEFE80EF91E0A1F1B1FE0923905F092EC
:103490003A0500933B0510933C05809139059091C6
:1034A0003A05A0913B05B0913C0580933D05909372
:1034B0003E05A0933F05B09340058091DD049091B7
:1034C000DE040F9734F488E19CEF9093BB07809360
:1034D000BA078091DD049091DE04079734F480E30D
:1034E00098EF9093BB078093BA079091000199835E
:1034F0009A30A9F48091DD049091DE04835F9340BB
:1035000034F088EE93E09093BB078093BA078091E4
:10351000DD049091DE048A5F9340DCF014C080915A
:10352000DD049091DE04855E974034F088EE93E0F0
:103530009093BB078093BA078091DD049091DE04DD
:10354000835F974034F080ED97E09093BB078093C2
:10355000BA078091BC079091BD078A199B09909387
:10356000BD078093BC070091BC071091BD07C40143
:10357000B301A20191010E948B4120E032E040E0C2
:1035800050E00E94FF41021B130B1093BD070093F4
:10359000BC07209135053091360540913705509193
:1035A00038058091BC079091BD07AA2797FDA0958B
:1035B000BA2F820F931FA41FB51F809335059093D8
:1035C0003605A0933705B0933805409131055091E9
:1035D000320560913305709134058091BC0790915C
:1035E000BD0720918B0530918C05821B930BAA2778
:1035F00097FDA095BA2F840F951FA61FB71F809324
:10360000310590933205A0933305B0933405809132
:10361000310590913205A0913305B0913405E090C9
:103620007403F09075030091760310917703E81608
:10363000F9060A071B0704F588EA91E6A0E0B0E066
:103640008E199F09A00BB10B809331059093320521
:10365000A0933305B09334058091310590913205E4
:10366000A0913305B09134058093350590933605CC
:10367000A0933705B093380520913105309132057C
:10368000409133055091340588279927DC018E1924
:103690009F09A00BB10B281739074A075B0704F5F0
:1036A00088E59EE9AFEFBFEFE80EF91E0A1F1B1F6A
:1036B000E0923105F0923205009333051093340502
:1036C0008091310590913205A0913305B091340578
:1036D0008093350590933605A0933705B093380550
:1036E0008091DB049091DC040F9734F488E19CEF27
:1036F0009093BD078093BC078091DB049091DC041C
:10370000079734F480E398EF9093BD078093BC074C
:1037100099819A30A9F48091DB049091DC04835F55
:10372000934034F088EE93E09093BD078093BC07FC
:103730008091DB049091DC048A5F9340DCF014C03C
:103740008091DB049091DC04855E974034F088EE34
:1037500093E09093BD078093BC078091DB04909128
:10376000DC04835F974034F080ED97E09093BD07D1
:103770008093BC0780917A00886C80937A00809156
:10378000410590914205A0914305B0914405809375
:103790002D0590932E05A0932F05B09330058091B1
:1037A000310590913205A0913305B0913405809395
:1037B0001D0590931E05A0931F05B09320058091D1
:1037C000390590913A05A0913B05B0913C05809355
:1037D000250590932605A0932705B0932805809191
:1037E000350590913605A0913705B0913805809345
:1037F000210590932205A0932305B0932405809181
:103800003D0590913E05A0913F05B0914005809304
:10381000290590932A05A0932B05B0932C05809140
:10382000DA0787FF63C02A81222309F05FC08091F5
:103830008E05882309F05AC08091BC079091BD077E
:10384000893C91055CF02091BC073091BD078091C7
:10385000BC079091BD072052334011C08091BC0736
:103860009091BD0788539F4FA4F42091BC073091DD
:10387000BD078091BC079091BD07205E3C4F880F2B
:10388000991F880F991F280F391F3093BD07209368
:10389000BC078091BA079091BB07893C91055CF009
:1038A0002091BA073091BB078091BA079091BB076E
:1038B0002052334011C08091BA079091BB078853C2
:1038C0009F4FA4F42091BA073091BB078091BA07AB
:1038D0009091BB07205E3C4F880F991F880F991F5E
:1038E000280F391F3093BB072093BA0722960FB6D3
:1038F000F894DEBF0FBECDBFDF91CF911F910F9126
:10390000FF90EF90DF90CF90BF90AF909F908F90FF
:103910007F906F905F904F903F902F9008950F93FE
:103920001F930AE710E0F8018081877380838091FC
:10393000DB049091DC049093BD078093BC078091D9
:10394000DD049091DE049093BB078093BA078091C9
:10395000DF049091E0049093BF078093BE076091CD
:10396000E3047091E404882777FD8095982F2CE07C
:1039700030E040E050E00E948B417093C2076093BA
:10398000C1076091E1047091E204882777FD80957A
:10399000982F0E948B417093CC076093CB07809146
:1039A000E5049091E6049093B4078093B307F8017F
:1039B0008081886C80836091FD0770E080E090E0FA
:1039C00024EC39E040E050E00E948B4160937403A6
:1039D0007093750380937603909377036091FE074D
:1039E00070E080E090E00E948B41609378037093D8
:1039F000790380937A0390937B031F910F9108952D
:103A00008091040590910505813A91050CF40AC353
:103A10008091DD078B3F98F08B3F19F480915F0513
:103A20000EC08C3F19F48091610509C08D3F19F4D7
:103A30008091630504C08E3F21F4809165058093D9
:103A4000830380918303882319F41092830304C0B5
:103A50008F3F11F4809383038091DC078B3F98F0B4
:103A60008B3F19F480915F050EC08C3F19F4809153
:103A7000610509C08D3F19F48091630504C08E3F34
:103A800021F48091650580938203809182038823CD
:103A900019F41092820305C0843618F084E68093EE
:103AA00082038091DE078B3F98F08B3F19F4809161
:103AB0005F050EC08C3F19F48091610509C08D3FF0
:103AC00019F48091630504C08E3F21F4809165054F
:103AD0008093840380918403882319F410928403D3
:103AE00005C0843618F084E6809384038091E00753
:103AF0008B3F98F08B3F19F480915F050EC08C3F8F
:103B000019F48091610509C08D3F19F48091630516
:103B100004C08E3F21F480916505809385038091D8
:103B20008503882319F41092850304C08F3F11F494
:103B3000809385038091E7078B3F98F08B3F19F4C2
:103B400080915F050EC08C3F19F48091610509C01A
:103B50008D3F19F48091630504C08E3F21F480915C
:103B600065058093860380918603882319F410925B
:103B7000860304C08F3F11F4809386038091E80789
:103B80008B3F98F08B3F19F480915F050EC08C3FFE
:103B900019F48091610509C08D3F19F48091630586
:103BA00004C08E3F21F48091650580938703809146
:103BB00087038B3010F48AE002C08F3F11F48093AA
:103BC00087038091E9078B3F98F08B3F19F4809130
:103BD0005F050EC08C3F19F48091610509C08D3FCF
:103BE00019F48091630504C08E3F21F4809165052E
:103BF0008093880380918803882319F410928803A6
:103C000004C08F3F11F4809388038091EE078B3FAF
:103C100098F08B3F19F480915F050EC08C3F19F42A
:103C20008091610509C08D3F19F48091630504C03E
:103C30008E3F21F48091650580938A0380918A03E9
:103C4000882319F410928A0304C08F3F11F48093E3
:103C50008A038091EF078B3F98F08B3F19F4809196
:103C60005F050EC08C3F19F48091610509C08D3F3E
:103C700019F48091630504C08E3F21F4809165059D
:103C800080938B0380918B03882319F410928B030C
:103C900004C08F3F11F480938B038091F0078B3F1A
:103CA00098F08B3F19F480915F050EC08C3F19F49A
:103CB0008091610509C08D3F19F48091630504C0AE
:103CC0008E3F21F48091650580938C0380918C0355
:103CD000882319F410928C0304C08F3F11F4809351
:103CE0008C038091F1078B3F98F08B3F19F4809102
:103CF0005F050EC08C3F19F48091610509C08D3FAE
:103D000019F48091630504C08E3F21F4809165050C
:103D100080938D0380918D03882319F410928D0375
:103D200004C08F3F11F480938D038091F2078B3F85
:103D300098F08B3F19F480915F050EC08C3F19F409
:103D40008091610509C08D3F19F48091630504C01D
:103D50008E3F21F48091650580938E0380918E03C0
:103D6000882319F410928E0304C08F3F11F48093BE
:103D70008E03809102088B3F98F08B3F19F480915D
:103D80005F050EC08C3F19F48091610509C08D3F1D
:103D900019F48091630504C08E3F21F4809165057C
:103DA00080938F0380918F03882319F410928F03DF
:103DB00004C08F3F11F480938F03809103088B3FE1
:103DC00098F08B3F19F480915F050EC08C3F19F479
:103DD0008091610509C08D3F19F48091630504C08D
:103DE0008E3F21F48091650580939003809190032C
:103DF000882319F41092900304C08F3F11F480932C
:103E00009003809104088B3F98F08B3F19F48091C8
:103E10005F050EC08C3F19F48091610509C08D3F8C
:103E200019F48091630504C08E3F21F480916505EB
:103E30008093910380919103882319F41092910348
:103E400004C08F3F11F480939103809105088B3F4C
:103E500098F08B3F19F480915F050EC08C3F19F4E8
:103E60008091610509C08D3F19F48091630504C0FC
:103E70008E3F21F480916505809392038091920397
:103E8000882319F41092920304C08F3F11F4809399
:103E900092038091F3078B3F98F08B3F19F4809148
:103EA0005F050EC08C3F19F48091610509C08D3FFC
:103EB00019F48091630504C08E3F21F4809165055B
:103EC0008093930380919303882319F410929303B2
:103ED00004C08F3F11F4809393038091F8078B3FC8
:103EE00098F08B3F19F480915F050EC08C3F19F458
:103EF0008091610509C08D3F19F48091630504C06C
:103F00008E3F21F480916505809394038091940302
:103F1000882319F41092940304C08F3F11F4809306
:103F200094038091FB078B3F98F08B3F19F48091AD
:103F30005F050EC08C3F19F48091610509C08D3F6B
:103F400019F48091630504C08E3F21F480916505CA
:103F50008093950380919503882319F4109295031B
:103F600004C08F3F11F4809395038091FC078B3F31
:103F700098F08B3F19F480915F050EC08C3F19F4C7
:103F80008091610509C08D3F19F48091630504C0DB
:103F90008E3F21F48091650580939603809196036E
:103FA000882319F41092960304C08F3F11F4809374
:103FB0009603809101088B3F98F08B3F19F4809114
:103FC0005F050EC08C3F19F48091610509C08D3FDB
:103FD00019F48091630504C08E3F21F4809165053A
:103FE0008093970380919703882319F41092970385
:103FF00004C08F3F11F48093970360918A0370E0AF
:1040000080E090E00E94C33D27E137EB41ED58E3AB
:104010000E94284160937E0370937F038093800306
:1040200090938103089580915B05882301F5109298
:10403000C0071092AA071092B5071092D10780917D
:10404000C004882311F08093AA078091C1048823BB
:1040500011F08093C0078091C204882311F08093EF
:10406000D1078091C304882311F08093B507809114
:10407000AA0790E09093A2068093A1068091C007C2
:1040800090E09093A4068093A3068091D10790E0DE
:104090009093A6068093A5068091B50790E0909333
:1040A000A8068093A70610920105109202050E94AF
:1040B00030150895109216051092150510921805E6
:1040C0001092170580E090E0A0E0B0E08093190521
:1040D00090931A05A0931B05B0931C0510920C0534
:1040E00010920B0510920E0510920D0510921005FE
:1040F00010920F0510929503109296030E948F1C48
:1041000084E690E00E94AC0B0E948F1C8091DA073D
:1041100080FF10C080910E0390910F03875B934046
:1041200038F480910E0390910F038E5E924010F44C
:104130000E94BB0F8091DB049091DC0490930C05EE
:1041400080930B058091DD049091DE0490930E0521
:1041500080930D058091DF049091E0049093100509
:1041600080930F0580910D0590910E059093120597
:104170008093110580910B0590910C059093140587
:104180008093130584E00E94D5378050944058F105
:104190008091CB079091CC0797FF03C090958195B4
:1041A0009F4F6CE070E00E94CA41709318056093C5
:1041B00017058091C1079091C20797FF03C09095A2
:1041C00081959F4F6CE070E00E94CA417093160584
:1041D000609315056091D9047091DA04882777FD02
:1041E0008095982F17C084E00E94D53790931605CC
:1041F0008093150586E00E94D5379093180580932B
:10420000170588E00E94D537AA2797FDA095BA2FF9
:10421000BC01CD010E9470406093190570931A058E
:1042200080931B0590931C05109231051092320566
:104230001092330510923405109235051092360510
:1042400010923705109238051092390510923A05F0
:1042500010923B0510923C0510923D0510923E05D0
:1042600010923F05109240051092410510924205B0
:1042700010924305109244051092BD071092BC079E
:104280001092BB071092BA071092BF071092BE0798
:1042900080910A0390910B03A0910C03B0910D0340
:1042A00090936207809361071092E8041092E704EC
:1042B00010924D0510924E0510924F051092500528
:1042C00080916E0390916F039093710380937003BC
:1042D00082E390E09093D4048093D3046091FD072F
:1042E00070E080E090E024EC39E040E050E00E9493
:1042F0008B416856754C8F4F9F4F6093740370933A
:10430000750380937603909377036091FE0770E0C6
:1043100080E090E00E948B416856754C8F4F9F4F14
:10432000609378037093790380937A0390937B036F
:1043300010927D0310927C031092780510927705FD
:1043400010927A051092790560916E0370916F0357
:10435000882777FD8095982F2EE036E040E050E0EA
:104360000E948B416093C3077093C4078093C50775
:104370009093C6071092C8071092C70708951F931D
:10438000182F0EC080915B05882361F484E690E0CD
:104390009093D4048093D3048AEF90E00E94CB0BD7
:1043A000115080F71F9108958091D207E82FF0E017
:1043B000EE0FFF1FE459F84F808191818D5E9F4F72
:1043C00014F010929803808191818A5B9F4FDCF4F6
:1043D000809198038823B9F481E0809398038091B9
:1043E00053058F5F8093530580915305853028F4E2
:1043F000809153050E94BF21089588EE93E0909329
:10440000D4048093D30408952F923F924F925F92E9
:104410006F927F928F929F92AF92BF92CF92DF92D4
:10442000EF92FF920F931F93CF93DF93CDB7DEB739
:10443000A2970FB6F894DEBF0FBECDBF0E946017E3
:10444000299A20917505309176058091E407482FCF
:1044500050E0465F5F4F58874F834217530714F46D
:1044600038872F8380910405909105058837910541
:104470000CF071C080910301882399F480910403AA
:10448000909105038F5F9F4F61F488E99AE39093C1
:10449000D4048093D30480E09CE090930503809340
:1044A00004038091B2059091B305009731F0019714
:1044B0009093B3058093B20504C010925B051092EF
:1044C0005C05809100018A3011F4289A01C0289877
:1044D00080915D0590915E05895E934008F403C468
:1044E0008091EB07A82FB0E0B887AF8381E080937D
:1044F0005C05E091D2072E2F30E0220F331FF90127
:10450000E657F84F11821082A091D307B0E0AA0FAE
:10451000BB1FFD01E657F84F11821082E091D507CD
:104520004E2F50E0440F551FCA018657984FFC018B
:10453000118210822459384FF90111821082A45936
:10454000B84F11961C921E924459584FDA01119699
:104550001C921E92CDC380910405909105058D3863
:1045600091050CF4C5C310925C058091EC0722E321
:10457000829FC00111249093B3058093B205EF810F
:10458000F885B9976CF080915D0590915E05FFEF1D
:104590008F3F9F0729F0019690935E0580935D05FC
:1045A00080915D0590915E058F3F910509F0E8F4DB
:1045B0001092C4051092C5051092C6051092C70549
:1045C0001092C0051092C1051092C2051092C30549
:1045D00010927405109273058A3F910531F481E0C1
:1045E00090E09093AA058093A90520915F053091F2
:1045F00060058091D607E82FF0E0EE0FFF1FE45929
:10460000F84F8081918182599F4F281739071CF4F8
:104610002F5F3F4F0CC08081918182599F4F82173D
:1046200093074CF42115310531F02150304030937F
:10463000600520935F0520916105309162058091AE
:10464000D707E82FF0E0EE0FFF1FE459F84F808105
:10465000918182599F4F281739071CF42F5F3F4FD4
:104660000CC08081918182599F4F821793074CF42F
:104670002115310531F021503040309362052093EF
:10468000610520916305309164058091D807E82F7A
:10469000F0E0EE0FFF1FE459F84F808191818259BD
:1046A0009F4F281739071CF42F5F3F4F0CC08081A4
:1046B000918182599F4F821793074CF42115310540
:1046C00031F02150304030936405209363052091F0
:1046D0006505309166058091D907E82FF0E0EE0F6F
:1046E000FF1FE459F84F8081918182599F4F28170D
:1046F00039071CF42F5F3F4F0CC080819181825994
:104700009F4F821793074CF42115310531F021504A
:104710003040309366052093650520916705309100
:10472000680580917E0790917F0782599F4F2817D7
:1047300039071CF42F5F3F4F0EC080917E07909188
:104740007F0782599F4F821793074CF4211531053B
:1047500031F0215030403093680520936705209157
:10476000690530916A05809180079091810782598F
:104770009F4F281739071CF42F5F3F4F0EC08091C1
:1047800080079091810782599F4F821793074CF4BD
:104790002115310531F02150304030936A052093C6
:1047A000690520916B0530916C058091820790918D
:1047B000830782599F4F281739071CF42F5F3F4FFB
:1047C0000EC0809182079091830782599F4F821774
:1047D00093074CF42115310531F0215030403093CE
:1047E0006C0520936B0520916D0530916E058091CD
:1047F00084079091850782599F4F281739071CF429
:104800002F5F3F4F0EC0809184079091850782599A
:104810009F4F821793074CF42115310531F0215039
:10482000304030936E0520936D0580915F05909127
:10483000600597FF05C01092600510925F050AC0E1
:104840008F3F910539F034F08FEF90E09093600541
:1048500080935F05809161059091620597FF05C087
:1048600010926205109261050AC08F3F910539F0E0
:1048700034F08FEF90E09093620580936105809112
:1048800063059091640597FF05C01092640510922E
:1048900063050AC08F3F910539F034F08FEF90E047
:1048A00090936405809363058091650590916605FA
:1048B00097FF05C010926605109265050AC08F3FEC
:1048C000910539F034F08FEF90E090936605809376
:1048D0006505809167059091680597FF05C0109266
:1048E0006805109267050AC08F3F910539F034F0D2
:1048F0008FEF90E09093680580936705809169053C
:1049000090916A0597FF05C010926A05109269059B
:104910000AC08F3F910539F034F08FEF90E090930B
:104920006A058093690580916B0590916C0597FFEE
:1049300005C010926C0510926B050AC08F3F91055F
:1049400039F034F08FEF90E090936C0580936B0515
:1049500080916D0590916E0597FF05C010926E05D0
:1049600010926D050AC08F3F910539F034F08FEF3A
:1049700090E090936E0580936D05E091D407F0E090
:10498000EE0FFF1FE459F84F808191818135910529
:104990000CF40EC180915B05882309F009C1809158
:1049A000D507E82FF0E0EE0FFF1FE459F84F8081A4
:1049B00091818C3491050CF4BFC08091B1058F5F5B
:1049C0008093B105893C08F4F3C01092B105299891
:1049D00010925E0510925D058091D207282F30E07D
:1049E000D901AA0FBB1FA459B84F8D919C91119763
:1049F000873491059CF48091D307E82FF0E0EE0F07
:104A0000FF1FE459F84F8081918197FF03C0909573
:104A100081959F4F873491050CF46BC08091D3072B
:104A2000682F70E0DB01AA0FBB1FA459B84F8D910E
:104A30009C911197873491053CF0F901EE0FFF1F0F
:104A4000E459F84F808191818D919C918734910533
:104A500064F0F901EE0FFF1FE459F84F8081918156
:104A60008734910514F042E001C041E0FB01EE0FF4
:104A7000FF1FE459F84F80819181863491055CF4E1
:104A8000F901EE0FFF1FE459F84F808191818734BF
:104A900091050CF043E0FB01EE0FFF1FE459F84FC6
:104AA000808191818A5B9F4F5CF4F901EE0FFF1FBB
:104AB000E459F84F80819181873491050CF044E0EE
:104AC000660F771F6459784FDB018D919C918A5B4B
:104AD0009F4F5CF4220F331F2459384FF901808116
:104AE0009181863491050CF445E0842F0E94E537CE
:104AF0001CC08091DA0783FF18C08081918197FFE5
:104B000003C0909581959F4F44977CF48D919C9123
:104B10008A5B9F4F54F481E08093530588EE93E0C5
:104B20009093D4048093D30443C00E94C6390E945A
:104B300003380E945A2035C080819181855B9F4F48
:104B4000ACF58091B1058F5F8093B105893C80F110
:104B50001092B10529986FEF7FEF84E00E94DD3756
:104B600010925E0510925D050E945A206091150515
:104B70007091160584E00E94DD37609117057091F1
:104B8000180586E00E94DD376091190570911A05BD
:104B900080911B0590911C050E94424088E00E9474
:104BA000DD370E94C6390E94BF2102C01092B105B4
:104BB000E091D407F0E0EE0FFF1FE459F84F808139
:104BC00091818B5A9F4F0CF093C08091D507482F4D
:104BD00050E0FA01EE0FFF1FE459F84F80819181F8
:104BE000855B9F4F0CF065C08091B0058F5F80930F
:104BF000B005893C08F45FC088EC8093B00581E083
:104C000090E090935E0580935D0581E080935B0565
:104C10001092BC051092BD051092BE051092BF0502
:104C200010924105109242051092430510924405DE
:104C3000109231051092320510923305109234050E
:104C40001092390510923A0510923B0510923C05DE
:104C500080911D0590911E05A0911F05B091200522
:104C60008093350590933605A0933705B0933805AA
:104C70008091250590912605A0912705B0912805E2
:104C800080933D0590933E05A0933F05B09340056A
:104C90001092C4051092C5051092C6051092C70562
:104CA0001092C0051092C1051092C2051092C30562
:104CB00002C01092B005440F551F4459584FDA01F5
:104CC0008D919C918C3491058CF08091AF058F5F14
:104CD0008093AF05893C60F088EC8093AF0510921B
:104CE0005E0510925D0510925B0502C01092AF0543
:104CF00080916B03815080936B0380916B038F3F96
:104D000029F080915C05882309F477C30E94001D77
:104D1000E0916F05F0917005FAA3E9A38091D207A5
:104D2000E82EFF24D701AA0FBB1FCD018459984F4D
:104D3000FC018081918198A38F8F8091E107682E7B
:104D40007724A657B84F0D90BC91A02DBE8FAD8F84
:104D50008091E207A82EBB24209177053091780539
:104D60003C8F2B8F20907105309072058091D30776
:104D7000082F10E0C801880F991FDC01A459B84F13
:104D80000D90BC91A02DBA8FA98F8657984FDC014A
:104D90008D919C91988F8F8BE0917905F0917A0598
:104DA000FE8BED8BE091D507AE2FB0E0AA0FBB1FB5
:104DB000A459B84F0D90BC91A02DBC8BAB8BE0914A
:104DC000D407F0E0EE0FFF1FE459F84FC080D18008
:104DD00028E730E0C20ED31ED0927605C09275054A
:104DE0006091870370E080E090E00E94C33D20E086
:104DF00030E040E251E40E94713F20E030E040E8C2
:104E00005CE30E9428416F87788B898B9A8B609333
:104E1000CD077093CE078093CF079093D007609112
:104E2000880370E080E090E00E94C33D20E030EE17
:104E30004BE256E40E94D53F6093B6077093B707E4
:104E40008093B8079093B9072091C504222331F0CD
:104E50008AE090E09093D4048093D304E22F22FF61
:104E600009C080919203482F50E0440F551F440F12
:104E7000551F10C023FD03C040E050E00BC08091DF
:104E8000920390E0880F991F880F991F4427552798
:104E9000481B590B20917F0530918005C901B3E073
:104EA000880F991FBA95E1F7821B930B840F951F0A
:104EB00068E070E00E94CA412B0170938005609306
:104EC0007F05E4FF09C080919203482F50E0440F12
:104ED000551F440F551F10C0E5FD03C040E050E0D2
:104EE0000BC08091920390E0880F991F880F991F43
:104EF00044275527481B590B8091810590918205C5
:104F00009C01E3E0220F331FEA95E1F7281B390BE0
:104F1000CA01820F931F68E070E00E94CA414B01F2
:104F200070938205609381058091C404282F83FFCC
:104F300003C082E390E004C082FF07C08EEC9FEFC5
:104F4000909384058093830504C010928405109289
:104F5000830521FF09C080917C0390917D03019618
:104F600090937D0380937C0324FF09C080917C0390
:104F700090917D03019790937D0380937C034F8DE7
:104F800058A1469DC001479D900D569D900D11243E
:104F900029A13AA1220F331F69A17AA1260F371F39
:104FA000ED8DFE8DEA9DD001EB9DB00DFA9DB00D0B
:104FB00011244B8D5C8DA41BB50BBAA3A9A3820F42
:104FC000931F64E070E00E94CA4189A19AA1860FF4
:104FD000971F9AA389A3C20162E070E00E94CA41B0
:104FE000A9A1BAA1A60FB71FBAA3A9A3B093700530
:104FF000A0936F05E98DFA8DE69DC001E79D900DA8
:10500000F69D900D11249101220F331F220D331DA7
:105010004F89588DB501469F5001479FB00C569F50
:10502000B00C1124AD89BE89AA1ABB0A820F931F46
:1050300064E070E00E94CA41A60EB71EC40162E09F
:1050400070E00E94CA41A60EB71EB0927205A092EF
:1050500071052091830530918405220F331F220FA3
:10506000331FEB89FC892E1B3F0B30937405209373
:1050700073058091860680FF56C080919203813827
:1050800008F451C080917F06992787FD9095AC0167
:10509000469DC001479D900D569D900D112469A11C
:1050A0007AA1680F791F7093700560936F058091E6
:1050B0008006992787FD9095DC01A69DC001A79DDC
:1050C000900DB69D900D1124A80EB91EB0927205D8
:1050D000A092710580918106992787FD9095280FF0
:1050E000391F30937405209373052091DF0730E05A
:1050F00080918306992787FD9095FC012E9FC00122
:105100002F9F900D3E9F900D112490937D038093CF
:105110007C038091820690E08C159D0524F4909389
:10512000760580937505809175059091760597FFBA
:1051300004C010927605109275058091DA0782FFFF
:105140000CC080E090E0A0E0B0E08093B6079093C0
:10515000B707A093B807B093B90720E030E040E06C
:1051600050E06F85788989899A890E94AB408823AD
:1051700064F480E090E0A0E0B0E08093CD079093ED
:10518000CE07A093CF07B093D00720E030E040E0F7
:1051900050E06091B6077091B7078091B807909181
:1051A000B9070E94AB40882364F480E090E0A0E05F
:1051B000B0E08093B6079093B707A093B807B09379
:1051C000B907E0916F05F091700520917B05309152
:1051D0007C05CF0164E070E00E94CA4177FF03C004
:1051E000709561957F4F261737077CF4CF01F7FF45
:1051F00003C0909581959F4F64E070E00E94CA4182
:1052000070937C0560937B0506C02150304030933D
:105210007C0520937B05E0917105F091720520914A
:105220007D0530917E05CF0164E070E00E94CA41A7
:1052300077FF03C0709561957F4F261737077CF481
:10524000CF01F7FF03C0909581959F4F64E070E018
:105250000E94CA4170937E0560937D0506C021506F
:10526000304030937E0520937D05F801EE0FFF1F3F
:10527000E459F84F208131818091F907482F50E09F
:105280004217530744F48091060882FF04C081E06E
:1052900080938F0515C080918F05882389F0F801D0
:1052A000EE0FFF1FE459F84F208131818091FA07FA
:1052B000BA01681B71092617370714F410928F057D
:1052C000F801EE0FFF1FE459F84F808191816627A6
:1052D0007727641B750B8617970744F4809106089F
:1052E00083FF04C081E08093900515C080919005F4
:1052F000882389F0000F111F0459184FD8012D91F0
:105300003C918091FA0790E0841B950B82179307DC
:1053100014F410929005F701EE0FFF1FE459F84FB7
:10532000808191814817590744F48091060880FFD5
:1053300004C081E08093920515C080919205882376
:1053400089F0F701EE0FFF1FE459F84F20813181FA
:105350008091FA07FA01E81BF1092E173F0714F4B0
:1053600010929205F701EE0FFF1FE459F84F80816C
:1053700091818617970744F48091060881FF04C045
:1053800081E08093910517C080919105882399F061
:10539000EE0CFF1C2CE637E0E20EF31ED7012D9138
:1053A0003C918091FA0790E0841B950B821793073C
:1053B00014F41092910580918F05882321F4809137
:1053C0009005882321F081E080938E0502C0109221
:1053D0008E0580919205882321F480919105882380
:1053E00051F081E080938D0510928E0510928F050B
:1053F0001092900502C010928D0580918E05882331
:1054000011F40C94A13784E690E09093D404809337
:10541000D3048091F80790E0EF81F8858E179F07FD
:1054200014F498878F838091910390E09093FA040D
:105430008093F9048091920390E09093FC04809310
:10544000FB040E94CC1480915C05882381F11092AA
:105450007405109273051092700510926F051092EA
:1054600072051092710580E090E0A8ECBFE3809394
:10547000CD079093CE07A093CF07B093D0078BE0D2
:105480009CEBA2E3BCE38093B6079093B707A0938D
:10549000B807B093B90710928E0510928D0510923F
:1054A0007C0510927B0510927E0510927D0520915F
:1054B000AF073091B0074091B1075091B20780918A
:1054C0001D0590911E05A0911F05B0912005820F2A
:1054D000931FA41FB51F8093AF079093B007A093AD
:1054E000B107B093B2072091AB073091AC07409160
:1054F000AD075091AE078091250590912605A091AA
:105500002705B0912805820F931FA41FB51F809314
:10551000AB079093AC07A093AD07B093AE07509044
:105520008D05552029F480918E05882309F44FC0FC
:105530001092EA041092E904109245051092460573
:1055400010924705109248051092490510924A059D
:1055500010924B0510924C051092AF071092B007B5
:105560001092B1071092B2071092AB071092AC07DD
:105570001092AD071092AE078091310590913205DF
:10558000A0913305B091340580933505909336058D
:10559000A0933705B09338058091390590913A056D
:1055A000A0913B05B0913C0580933D0590933E054D
:1055B000A0933F05B093400510928C0510928B0587
:1055C00010928A0510928905552009F0F5C0809146
:1055D0008E05882309F0F0C060911D0570911E05AD
:1055E00080911F0590912005A090E607BB24CC2454
:1055F000DD24E090C107F090C207A60195010E944A
:10560000FF410027F7FC0095102F2E193F09400B92
:10561000510BCA01B90120E130E040E050E00E94A6
:10562000FF4139014A01609125057091260580915D
:10563000270590912805E090CB07F090CC07A601B4
:1056400095010E94FF410027F7FC0095102F2E19AD
:105650003F09400B510BCA01B90120E130E040E0A5
:1056600050E00E94FF4179018A0180917B05909171
:105670007C05819734F480917D0590917E0581971A
:10568000A4F0C401B30123E030E040E050E00E9408
:10569000FF4139014A01C801B70123E030E040E091
:1056A00050E00E94FF4179018A01E091D507F0E0C6
:1056B000EE0FFF1FE459F84F0190F081E02DF7FF46
:1056C00003C0F095E195FF4F7A97A4F0C401B301B0
:1056D00023E030E040E050E00E94FF4139014A0100
:1056E000C801B70123E030E040E050E00E94FF41F4
:1056F00079018A01F1E26F1671048104910434F09A
:1057000070E2672E712C812C912C11C020EE621654
:105710002FEF72062FEF82062FEF920644F460EE11
:10572000662E6FEF762E6FEF862E6FEF962E31E29C
:10573000E316F1040105110534F050E2E52EF12CD9
:10574000012D112D11C040EEE4164FEFF4064FEF7E
:1057500004074FEF140744F440EEE42E4FEFF42E0D
:105760004FEF042F4FEF142F8091310590913205A8
:10577000A0913305B091340586199709A809B90994
:105780008093310590933205A0933305B09334058F
:105790008091390590913A05A0913B05B0913C0567
:1057A0008E199F09A00BB10B8093390590933A0590
:1057B000A0933B05B0933C058091E9049091EA04E5
:1057C0008F3F910509F008F445C4552009F0DCC36A
:1057D00080918E05882309F0D7C3809154058823D2
:1057E00009F0D2C36091AF077091B0078091B10703
:1057F0009091B20720E031E040E050E00E94FF418C
:105800002093AF073093B0074093B1075093B2078E
:105810006091AB077091AC078091AD079091AE0796
:1058200020E031E040E050E00E94FF412093AB07D0
:105830003093AC074093AD075093AE07E090E60776
:10584000FF2400E010E0209145053091460540918D
:10585000470550914805C801B7010E948B4120E0DF
:1058600031E040E050E00E94FF4120934505309335
:1058700046054093470550934805209149053091CE
:105880004A0540914B0550914C05C801B7010E9453
:105890008B4120E031E040E050E00E94FF41209346
:1058A000490530934A0540934B0550934C05609150
:1058B000AF077091B0078091B1079091B207209126
:1058C0004505309146054091470550914805E090C7
:1058D000FF07FF2400E010E0621B730B840B950BA5
:1058E000A80197010E94FF41CA01B90120E031E0FF
:1058F00040E050E00E94FF41690130938C05209305
:105900008B056091AB077091AC078091AD079091CA
:10591000AE072091490530914A0540914B055091C1
:105920004C05621B730B840B950BA80197010E9419
:10593000FF41CA01B90120E031E040E050E00E949F
:10594000FF41890130938A052093890580917B0569
:1059500090917C058197BCF480917D0590917E05A6
:1059600081978CF4E091D507F0E0EE0FFF1FE4592A
:10597000F84F0190F081E02DF7FF03C0F095E1951D
:10598000FF4F7A9794F0C60162E070E00E94CA412E
:1059900070938C0560938B05C80162E070E00E94F3
:1059A000CA4170938A0560938905E0902105F090C3
:1059B0002205009123051091240580911D059091E9
:1059C0001E05A0911F05B0912005E81AF90A0A0BDF
:1059D0001B0BE092B805F092B9050093BA0510933D
:1059E000BB058091350590913605A0913705B091A2
:1059F00038058E199F09A00BB10B80933505909344
:105A00003605A0933705B09338056090290570904E
:105A10002A0580902B0590902C058091250590916A
:105A20002605A0912705B0912805681A790A8A0AE7
:105A30009B0A6092B4057092B5058092B60590926B
:105A4000B70580913D0590913E05A0913F05B0912D
:105A5000400586199709A809B90980933D059093D7
:105A60003E05A0933F05B09340052091C7073091B4
:105A7000C807213831054CF080910F059091100531
:105A800001969093100580930F0520583F4F4CF4DA
:105A900080910F05909110050197909310058093C8
:105AA0000F051092C8071092C70781E090E090930D
:105AB000A00580939F051092A5051092A60510924F
:105AC000A7051092A8058091AF079091B007A0910B
:105AD000B107B091B2072091970530919805409198
:105AE000990550919A05281B390B4A0B5B0B57FF00
:105AF00007C050954095309521953F4F4F4F5F4FD0
:105B000020523E44404050400CF0C1C071E0E716C6
:105B100070E1F70670E0070770E017070CF452C059
:105B200080919E05882309F449C0D801C7012CE063
:105B3000B595A795979587952A95D1F70196909356
:105B4000A00580939F05D801C701F3E0B595A795FF
:105B500097958795FA95D1F78093A5059093A6051B
:105B6000A093A705B093A80589589341A040B040E1
:105B700064F088E893E1A0E0B0E08093A5059093FD
:105B8000A605A093A705B093A8056091A5057091FF
:105B9000A6058091A7059091A80520E031E040E09E
:105BA00050E00E94FF4180918B0590918C05820FFF
:105BB000931F90938C0580938B0566C081E0809342
:105BC0009E0562C010929E05F0E0EF16F0EFFF0612
:105BD000FFEF0F07FFEF1F070CF056C080919D05E8
:105BE000882309F44DC088279927DC018E199F0965
:105BF000A00BB10BECE0B595A79597958795EA9525
:105C0000D1F701969093A00580939F05C801B70135
:105C100028E030E040E050E00E94FF412093A505DD
:105C20003093A6054093A7055093A80528573C4EEE
:105C30004F4F5F4F64F488E79CEEAFEFBFEF809368
:105C4000A5059093A605A093A705B093A80560911C
:105C5000A5057091A6058091A7059091A80520E063
:105C600031E040E050E00E94FF4180918B0590912F
:105C70008C05820F931F90938C0580938B0511C028
:105C800081E080939D050DC010929D050AC0109281
:105C9000A00510929F0584EF91E090937303809389
:105CA000720380910008C82EDD2480919F05909199
:105CB000A005C816D90624F4D092A005C0929F056D
:105CC00071E0E71674E0F70670E0070770E0170769
:105CD00074F080910B0590910C0520919F053091F7
:105CE000A005820F931F90930C0580930B0580E015
:105CF000E8168CEFF8068FEF08078FEF180774F49B
:105D000080910B0590910C0520919F053091A00585
:105D1000821B930B90930C0580930B0581E090E020
:105D20009093A00580939F051092A1051092A20563
:105D30001092A3051092A4058091AB079091AC0737
:105D4000A091AD07B091AE072091930530919405D5
:105D50004091950550919605281B390B4A0B5B0B1A
:105D600057FF07C050954095309521953F4F4F4FB5
:105D70005F4F20523E44404050400CF0C1C0A1E073
:105D80006A16A0E17A06A0E08A06A0E09A060CF462
:105D900052C080919C05882309F449C0D401C301F5
:105DA0007CE0B595A795979587957A95D1F701965B
:105DB0009093A00580939F05D401C30163E0B5953E
:105DC000A795979587956A95D1F78093A1059093AC
:105DD000A205A093A305B093A40589589341A040C0
:105DE000B04064F088E893E1A0E0B0E08093A105C2
:105DF0009093A205A093A305B093A4056091A1057B
:105E00007091A2058091A3059091A40520E031E056
:105E100040E050E00E94FF418091890590918A0501
:105E2000820F931F90938A058093890566C081E055
:105E300080939C0562C010929C05F0E06F16F0EF15
:105E40007F06FFEF8F06FFEF9F060CF056C0809194
:105E50009B05882309F44DC088279927DC01861902
:105E60009709A809B9095CE0B595A7959795879515
:105E70005A95D1F701969093A00580939F05C40190
:105E8000B30128E030E040E050E00E94FF41209361
:105E9000A1053093A2054093A3055093A40528576C
:105EA0003C4E4F4F5F4F64F488E79CEEAFEFBFEF7F
:105EB0008093A1059093A205A093A305B093A40598
:105EC0006091A1057091A2058091A3059091A40510
:105ED00020E031E040E050E00E94FF4180918905E0
:105EE00090918A05820F931F90938A05809389056C
:105EF00011C081E080939B050DC010929B050AC0E4
:105F00001092A00510929F0584EF91E09093730387
:105F10008093720380919F059091A005C816D906C1
:105F200024F4D092A005C0929F0571E0671674E03A
:105F3000770670E0870670E0970674F080910D0593
:105F400090910E0520919F053091A005820F931F1F
:105F500090930E0580930D0580E068168CEF78060F
:105F60008FEF88068FEF9806CCF480910D05909105
:105F70000E0520919F053091A005821B930B9093F5
:105F80000E0580930D050AC010928A0510928905AE
:105F900010928C0510928B051092540520E030E091
:105FA00040E050E06091B6077091B7078091B80764
:105FB0009091B9070E94AB40882341F410928A0562
:105FC0001092890510928C0510928B058091AF0775
:105FD0009091B007A091B107B091B2078093970557
:105FE00090939805A0939905B0939A058091AB077B
:105FF0009091AC07A091AD07B091AE078093930547
:1060000090939405A0939505B0939605109245053D
:1060100010924605109247051092480510924905C6
:1060200010924A0510924B0510924C051092AF0742
:106030001092B0071092B1071092B2071092AB07FE
:106040001092AC071092AD071092AE071092EA04BE
:106050001092E904C0907305D09074058601D7FEB4
:1060600004C0002711270C191D0900311105C4F0C7
:106070008091DA0784FD14C081E090E09093AA0536
:106080008093A9058091C3079091C40790937103F1
:10609000809370038AEF90E0909373038093720370
:1060A000E090E307B601882777FD8095982F2E2D85
:1060B00030E040E050E00E948B419801442737FDDA
:1060C0004095542F0E948B4120E032E040E050E0A8
:1060D0000E94FF4189019A01FF24EC9CC001ED9CC4
:1060E000900DFC9C900D112464E070E00E94CA4168
:1060F000600F711F882777FD8095982F6093BC05EE
:106100007093BD058093BE059093BF052091410516
:10611000309142054091430550914405261B370BB1
:10612000480B590B2093410530934205409343059A
:10613000509344058091410590914205A0914305FB
:10614000B09144058155934CA040B04064F080E587
:1061500093ECA0E0B0E08093410590934205A093BA
:106160004305B09344058091410590914205A0916B
:106170004305B0914405805B9C43AF4FBF4F64F42F
:1061800080EB9CE3AFEFBFEF809341059093420516
:10619000A0934305B09344058091DA0783FF5AC169
:1061A00080915305882339F080915B05882319F489
:1061B0000E94D4214FC160911D0570911E058091F0
:1061C0001F059091200520E032E040E050E00E9461
:1061D000FF41890137FF03C0109501951F4F609162
:1061E000250570912605809127059091280520E0CE
:1061F00032E040E050E00E94FF41690137FF04C0F7
:10620000D094C194D108D394C016D1060CF468017F
:1062100029E1C216D10444F58091A9059091AA05FF
:10622000892B11F18091720390917303892BE1F412
:1062300088EC90E09093D4048093D3046091C307DA
:106240007091C4078091C5079091C6072EE036E093
:1062500040E050E00E94FF413093710320937003AF
:106260001092AA051092A90580916E0390916F0378
:1062700097FF03C020E030E029C0E0906E03F0906B
:106280006F034CE152E0E40EF51E0027F7FC009589
:10629000102F6091C3077091C4078091C50790913A
:1062A000C6072EE036E040E050E00E94FF41E21ACF
:1062B000F30A040B150BC801B70128E631E040E0F2
:1062C00050E00E94FF419B01245B3040C60168E022
:1062D00070E00E94CA416F5F7F4FC90143E0880FA1
:1062E000991F4A95E1F70E94CA413B01882477FC37
:1062F0008094982C8091C3079091C407A091C50702
:10630000B091C607680E791E8A1E9B1E6092C30755
:106310007092C4078092C5079092C6078091860349
:10632000A82EBB24CA9CC001CB9C900DDA9C900D7A
:10633000112460E470E00E94CA412501461A570A00
:10634000141415040CF080C08091720390917303B3
:10635000009711F001977AC08091C7079091C80704
:10636000820F931F9093C8078093C70780917D0584
:1063700090917E0520917B0530917C05820F931FC3
:1063800068E070E00E94CA416B0160E470E0C60EF4
:10639000D71E8091700390917103AA2797FDA09555
:1063A000BA2F0CE1E02E02E0F02E012D112DE81A9B
:1063B000F90A0A0B1B0BC401B3012EE036E040E0E2
:1063C00050E00E94FF41E20EF31E041F151FC8019A
:1063D000B70128E631E040E050E00E94FF41645BF5
:1063E0007040649DC001659D900D749D900D1124B9
:1063F000B6010E94CA41C501880F991F8A0D9B1DD5
:106400008617970734F0909581959F4F6817790705
:106410000CF4BC01209141053091420540914305A7
:1064200050914405CB01AA2797FDA095BA2F820F62
:10643000931FA41FB51F8093410590934205A0931D
:106440004305B093440506C08AEF90E09093730330
:10645000809372038091AB0581508093AB058F3F91
:1064600009F0A4C088E18093AB0560911D0570918F
:106470001E0580911F0590912005E090E607FF24FE
:1064800000E010E0A80197010E94FF4130938A06C6
:106490002093890660912505709126058091270536
:1064A00090912805A80197010E94FF4130938C0626
:1064B00020938B068091C1079091C20790938E061E
:1064C00080938D068091CB079091CC079093900696
:1064D00080938F068091BE079091BF07909392069C
:1064E00080939106809185059091860590939406FE
:1064F0008093930660914D0570914E0580914F05F4
:106500009091500520E032E040E050E00E94FF41D1
:10651000309396062093950680916E0390916F03B9
:1065200090939A06809399068091080390910903AD
:1065300090939C0680939B0680910405909105059D
:1065400090939E0680939D066091C3077091C40747
:106550008091C5079091C6072EE036E040E050E0FC
:106560000E94FF413093A00620939F068091B307BD
:106570009091B4079093AA068093A9068091D704BE
:106580009091D8049093B2068093B10680917705DC
:10659000909178059093C6068093C5068091790501
:1065A00090917A059093C8068093C70680918D05D7
:1065B0008823A9F06091BC077091BD07882777FDFB
:1065C0008095982F0E9470402091CD073091CE0782
:1065D0004091CF075091D0070E94284132C060916E
:1065E0001D0570911E0580911F0590912005E0907A
:1065F000BC07F090BD070E9470402091B607309113
:10660000B7074091B8075091B9070E9428415B0134
:106610006C010027F7FC0095102FC801B7010E94FC
:1066200070402091CD073091CE074091CF07509117
:10663000D0070E9428419B01AC01C601B5010E9410
:10664000713F0E943D407093BD076093BC078091ED
:106650008E058823A9F06091BA077091BB0788273F
:1066600077FD8095982F0E9470402091CD07309142
:10667000CE074091CF075091D0070E94284132C0E9
:106680006091250570912605809127059091280538
:10669000E090BA07F090BB070E9470402091B607C7
:1066A0003091B7074091B8075091B9070E9428412F
:1066B0005B016C010027F7FC0095102FC801B701A2
:1066C0000E9470402091CD073091CE074091CF07B6
:1066D0005091D0070E9428419B01AC01C601B50131
:1066E0000E94713F0E943D407093BB076093BA07C0
:1066F0006091BE077091BF07A0902D05B0902E0548
:10670000C0902F05D09030058091B6079091B707C3
:10671000A091B807B091B90789839A83AB83BC83F2
:10672000882777FD8095982F0E9470407B018C010F
:106730006091CD077091CE078091CF079091D007DF
:106740009B01AC010E94713F9B01AC01C801B701E4
:106750000E9428417B018C01C601B5010E94704056
:1067600029813A814B815C810E94284120E030E000
:1067700040E05FE30E9428419B01AC01C801B701E2
:106780000E94713F0E943D407093BF076093BE0717
:106790008091BC079091BD079093B4068093B30697
:1067A0008091BA079091BB079093B6068093B50687
:1067B0008091BC079091BD078150904434F080E0F7
:1067C00090E49093BD078093BC078091BC079091A3
:1067D000BD078050904C34F480E090EC9093BD075E
:1067E0008093BC078091BA079091BB078150904479
:1067F00034F080E090E49093BB078093BA078091D7
:10680000BA079091BB078050904C34F480E090EC34
:106810009093BB078093BA078091BE079091BF0702
:106820008150904434F080E090E49093BF078093CF
:10683000BE078091BE079091BF078050904C34F402
:1068400080E090EC9093BF078093BE07AF80B88440
:10685000AA0CBB1CAA0CBB1C8091DA07282F80FF56
:10686000C7C080915C05882309F0C2C08091830372
:1068700021FF0EC0823310F5809185059091860529
:10688000449790938805809387051092AE0519C0B0
:1068900020917C0330917D03280F311D8091DF070B
:1068A00090E0AC01249FC001259F900D349F900D76
:1068B00011244497909388058093870581E0809305
:1068C000AE05209185053091860540918705509150
:1068D0008805421753070CF08BC08091AE058823C2
:1068E00009F486C08091840390E0241B350BBC0121
:1068F000629FC001639F900D729F900D112464E010
:1069000070E00E94CA414B01C090E704D090E804B7
:1069100060914D0570914E0580914F059091500505
:10692000E0908503FF2400E010E020E830E040E044
:1069300050E00E94FF41C801B7010E948B4120E254
:1069400030E040E050E00E94FF417EEF283E3707F4
:1069500014F428EE3EEF8091AC059091AD05FC015A
:10696000A4E0EE0FFF1FAA95E1F7E81BF90BC601A3
:1069700062E070E00E94CA41E61BF70B81E029311A
:10698000380714F028E131E0E21BF30BC501881948
:1069900099098E0F9F1F60E170E00E94CA417093B9
:1069A000AD056093AC058091DB0790E0880F991FDF
:1069B000880F991F6817790764F4A816B9062CF098
:1069C0009093AD058093AC0504C0B092AD05A09244
:1069D000AC058091AC059091AD05A816B90624F4DC
:1069E000B092AD05A092AC05A090AC05B090AD05FD
:1069F0008091E507282E33248101000F111F000F1D
:106A0000111FC8018055904045018A159B050CF463
:106A10004C0190929806809297062091BE07309183
:106A2000BF078091BC059091BD05A091BE05B091B6
:106A3000BF0542E0880F991FAA1FBB1F4A95D1F7D7
:106A4000281B390B91EA89169104ACF0F401F595F5
:106A5000E7952E173F070CF4F901C40162E070E0DE
:106A60000E94CA41709561957F4FCF01E617F707E5
:106A70006CF4CB010BC0C901205B3F4F14F480EBD9
:106A80009FEF8135910514F080E590E09801281979
:106A90003909281739070CF4C9019401201B310B5F
:106AA0002C01821793070CF429018091BC07909167
:106AB000BD0760906F0570907005861997099093D7
:106AC000CA078093C90720E030E040E050E06981C8
:106AD0007A818B819C810E94AB408823F1F1E09008
:106AE0001D05F0901E0500911F0510912005609175
:106AF000C4057091C5058091C6059091C7050E9497
:106B000070405B016C01C801B7010E94704029818F
:106B10003A814B815C810E9428417B018C01B30149
:106B2000882777FD8095982F0E9470409B01AC01CB
:106B3000C801B7010E94703F9B01AC01C601B501BD
:106B40000E94713F0E943D406093C4057093C5054B
:106B50008093C6059093C7051CC02091C90730914A
:106B6000CA07442737FD4095542F8091C405909162
:106B7000C505A091C605B091C705820F931FA41F3C
:106B8000B51F8093C4059093C505A093C605B09327
:106B9000C7058091C4059091C505A091C605B09127
:106BA000C70581509A4FA040B04064F080E09AEF52
:106BB000A0E0B0E08093C4059093C505A093C605FE
:106BC000B093C7058091C4059091C505A091C605F5
:106BD000B091C70580509640AF4FBF4F64F480E03E
:106BE00096E0AFEFBFEF8093C4059093C505A093E7
:106BF000C605B093C7056091C9077091CA07209177
:106C00007E0330917F0340918003509181032B8755
:106C10003C874D875E87882777FD8095982F0E9457
:106C200070407B018C016091C4057091C505809115
:106C3000C6059091C7050E9470409B01AC016B8511
:106C40007C858D859E850E9428419B01AC01C801F1
:106C5000B7010E94713F0E943D407B018C016B0196
:106C6000C20157FE04C0882799278419950962E05C
:106C700070E00E94CA41680D791D882777FD8095D4
:106C8000982F2091970330E040E050E00E948B4124
:106C900020E430E040E050E00E94FF413E832D833D
:106CA000C216D3060CF497016D817E8170956195B3
:106CB0007F4F7A876987261737070CF49B01F2010B
:106CC000E80DF91DCF01820F931F64E070E00E9470
:106CD000CA4177FF03C060E070E004C026163706A3
:106CE0000CF4B1018091E407A82FB0E0BAA3A9A3E6
:106CF0006A177B070CF4BD016093AA07CF01821BC2
:106D0000930B64E070E00E94CA4177FF03C060E02B
:106D100070E004C0261637060CF4B101E9A1FAA10F
:106D20006E177F070CF4BF016093C0078091BA070C
:106D30009091BB0760907105709072058619970954
:106D40009093A9078093A80720E030E040E050E04E
:106D500069817A818B819C810E94AB408823F1F10B
:106D6000E0902505F0902605009127051091280553
:106D70006091C0057091C1058091C2059091C305D5
:106D80000E9470405B016C01C801B7010E94704015
:106D900029813A814B815C810E9428417B018C01D1
:106DA000B301882777FD8095982F0E9470409B0142
:106DB000AC01C801B7010E94703F9B01AC01C60144
:106DC000B5010E94713F0E943D406093C0057093E1
:106DD000C1058093C2059093C3051CC02091A807EC
:106DE0003091A907442737FD4095542F8091C00565
:106DF0009091C105A091C205B091C305820F931F68
:106E0000A41FB51F8093C0059093C105A093C20530
:106E1000B093C3058091C0059091C105A091C205B2
:106E2000B091C30581589E43A040B04064F080E813
:106E30009EE3A0E0B0E08093C0059093C105A093CD
:106E4000C205B093C3058091C0059091C105A09182
:106E5000C205B091C3058058914CAF4FBF4F64F449
:106E600080E891ECAFEFBFEF8093C0059093C10530
:106E7000A093C205B093C3056091A8077091A907BC
:106E8000882777FD8095982F0E9470407B018C01A8
:106E90006091C0057091C1058091C2059091C305B4
:106EA0000E9470409B01AC016B857C858D859E8521
:106EB0000E9428419B01AC01C801B7010E94713FAB
:106EC0000E943D402D813E81621773070CF49B01A7
:106ED00049855A85241735070CF49A01C401841991
:106EE0009509820F931F64E070E00E94CA4177FF0A
:106EF00003C060E070E004C0261637060CF4B10150
:106F000089A19AA1681779070CF4BC016093D10795
:106F1000821A930AC4018419950964E070E00E9402
:106F2000CA4177FF03C060E070E004C02616370650
:106F30000CF4B101A9A1BAA16A177B0754F4BD01F1
:106F400008C080918D05882311F00C94092A0C94B7
:106F5000132A6093B507A2960FB6F894DEBF0FBE52
:106F6000CDBFDF91CF911F910F91FF90EF90DF90F8
:106F7000CF90BF90AF909F908F907F906F905F90D9
:106F80004F903F902F900895A0E0B0E0A80FB11D62
:106F90000E945142802D90E00895A0E0B0E0A80F3B
:106FA000B11D062E0E9463420895A0E0B0E0A80F34
:106FB000B11D0E945E42CF010895A0E0B0E0A80F8D
:106FC000B11D0B010E946F420895863008F085E0E4
:106FD000A2E0B0E0082E0E9463420895982F863008
:106FE00008F095E086E4989FD0011124AC59BF4F7A
:106FF000E2EDF7E0182E0E947442A2E0B0E0092E04
:107000000E9463420895982F863008F095E086E448
:10701000989FD0011124AC59BF4FE2EDF7E0182E34
:107020000E945942089581E08093D20782E08093C4
:10703000D30743E04093D40764E06093D50755E05D
:107040005093D60736E03093D70787E08093D80770
:1070500028E02093D90788EE8093DA079EE1909389
:10706000DB078BEF8093DD078AE08093DE07909348
:10707000DC079093E0074093DF072093E10740E1AE
:107080004093E2073093E3072093E40786EE809372
:10709000E5079093E60780E88093E70734E63093AE
:1070A000E80788E78093E9078EE58093EA0783E2A3
:1070B0008093EB0784E18093EC071092ED074093F7
:1070C000EE078DEF8093EF073093F0079AE59093EA
:1070D000F1079093F207909302089093030810929F
:1070E0000408109205083093F30788E28093F407B0
:1070F0001092070822E32093F50786E98093F607AC
:107100005093F7072093F8079093F9072093FA0715
:10711000109206089093FB075093FC073093FD07ED
:107120003093FE0780E28093FF076093000820936E
:107130000108ACE0B8E0E9E9F3E089E001900D92E4
:107140008150E1F7089581E08093D20782E0809337
:10715000D30743E04093D40764E06093D50755E03C
:107160005093D60736E03093D70787E08093D8074F
:1071700028E02093D90788E68093DA079EE1909370
:10718000DB078BEF8093DD078AE08093DE07909327
:10719000DC079093E0074093DF078CE08093E107E2
:1071A00080E18093E2073093E3072093E40786EEC3
:1071B0008093E5079093E60780E88093E70780E5F2
:1071C0008093E80788E78093E9078EE58093EA07D4
:1071D00083E28093EB079093EC071092ED0740E277
:1071E0004093EE078DEF8093EF0734E63093F0077E
:1071F0002AE52093F1072093F207209302082093B9
:10720000030810920408109205083093F30788E2EF
:107210008093F4071092070892E39093F50786E9AC
:107220008093F6075093F7079093F8072093F90798
:107230009093FA07109206082093FB075093FC07DF
:107240003093FD073093FE074093FF0760930008DB
:107250008BE480930108ACE0B8E0E3EAF3E087E078
:1072600001900D928150E1F7089581E08093D2075B
:1072700082E08093D30783E08093D40754E0509357
:10728000D50735E03093D60786E08093D70787E0AF
:107290008093D80728E02093D90788E68093DA07FF
:1072A0009EE19093DB078BEF8093DD078AE080936C
:1072B000DE079093DC079093E0075093DF078FE0A1
:1072C0008093E1079093E2078CE08093E30720939B
:1072D000E40786EE8093E5079093E60780E88093C5
:1072E000E70780E58093E80746E94093E9078EE5E4
:1072F0008093EA0783E28093EB079093EC07109268
:10730000ED0780E28093EE078DEF8093EF0724E690
:107310002093F0079AE59093F1079093F2079093EA
:107320000208909303081092040810920508209315
:10733000F30788E28093F4071092070882E38093B2
:10734000F5074093F6073093F7078093F80790937B
:10735000F9078093FA07109206089093FB07309381
:10736000FC072093FD072093FE0780E18093FF0731
:107370005093000820930108ACE0B8E0EBEAF3E09A
:1073800086E001900D928150E1F7089522E030E00F
:10739000D9010E945142802D863028F082E0D90127
:1073A000082E0E94634290E008950F931F93CF939D
:1073B000DF93A1E0B0E00E945142802D863469F154
:1073C00084E594E09F938F931F920E9451080E943E
:1073D0003539C0E0D0E00F900F900F900C2FC230E5
:1073E00039F0C33019F40E94133804C0C43010F0CF
:1073F0000E94A338802F0E94EE372196C630D10517
:1074000069F7A2E0B0E083E0082E0E946342A1E0A9
:10741000B0E086E4082E0E94634202E010E0D8014A
:107420000E945142802D0E940338D8010E9451428F
:10743000802D90E09F938F938BE394E09F938F93A5
:107440001F920E9451080F900F900F900F900F9075
:10745000DF91CF911F910F910895CF93DF93DC01BE
:10746000EC01EA81FB8121918E81815019F489819F
:10747000E81BF109ED01FB83EA838E839FB7F89443
:107480008C9181508C939FBF822F90E0DF91CF91A0
:107490000895FC0110827583648373836283418342
:1074A000478346830895CF93DF93DC019C91ED01E0
:1074B0008981981718F080E090E016C0ED01EC810A
:1074C000FD8161938F81815019F48981E81BF10955
:1074D000ED018F83FD83EC839FB7F8948C918F5FD0
:1074E0008C939FBF81E090E0DF91CF910895FC01E4
:1074F00080818823E9F3CF010E942D3A90E008951E
:10750000FC018081882319F48FEF9FEF0895CF014C
:107510000E942D3A90E008953C98449A1092B2034C
:1075200010921E0881E080931F0808956091D20593
:107530007091D305349B18C0CB0101969093D3056D
:107540008093D2058159914008F45FC08091B203C5
:10755000882319F081508093B2038FEF9FEF9093AF
:107560006F0380936E034DC0CB0101978956914004
:10757000B8F56A30710528F410926F0310926E030B
:1075800015C06A50704080E090E029E134E040E0AE
:1075900050E00E948B412AE09695879577956795F4
:1075A0002A95D1F770936F0360936E0380916E03F9
:1075B00090916F032091700330917103845E9D4F11
:1075C000821B930B68E671E00E94CA41845B904085
:1075D00090935205809351058CE08093B20311C0C3
:1075E0008091B203882319F081508093B2038FEF0A
:1075F0009FEF90936F0380936E0310925205109249
:1076000051051092D3051092D2058091B2038823C0
:10761000E1F48091D0059091D1050E94A00B8823C0
:10762000A1F08091D3049091D404892B31F484E6A5
:1076300090E09093D4048093D30484E690E00E9479
:10764000970B9093D1058093D005089584B1806AFB
:1076500084B93D9A82E58CBD1DBC459A8AE398E0C9
:10766000909376088093750881E0809320088AEAD9
:1076700080933A0883E880933B088AE080933C0833
:1076800010923E0810923D081092400810923F0858
:1076900010925B080895F89460911D0570911E0585
:1076A00080911F05909120052CE630E040E050E0ED
:1076B0000E94FF4130933E0820933D0860912505CC
:1076C0007091260580912705909128052CE630E0E1
:1076D00040E050E00E94FF413093400820933F0873
:1076E0006091C3077091C4078091C5079091C60748
:1076F0002EE036E040E050E00E94FF413093460823
:10770000209345088091BC079091BD07909348084D
:10771000809347088091BA079091BB0790934A08DD
:10772000809349088091BE079091BF0790934C08C1
:1077300080934B082091590530915A058091550549
:1077400090915605B9010E94CA41CB01880F991F3B
:10775000860F971F880F991F880F991F90934208D3
:10776000809341088091570590915805B9010E9476
:10777000CA41CB01880F991F860F971F880F991F49
:10778000880F991F909344088093430810925A05DC
:1077900010925905109256051092550510925805F1
:1077A0001092570580913C088A3049F08A3008F4DD
:1077B000A6C08B3029F18C3009F0A1C094C0809113
:1077C0008B0380934D0880918C0380934E088091A9
:1077D0008D0380934F0880918E0380935008809191
:1077E0008F03809351088091900380935208809179
:1077F00091038093530880919203809354087FC033
:10780000E091D407F0E0EE0FFF1FE459F84F01902C
:10781000F081E02D2FEFE038F20714F4E0E8FFEFFD
:10782000E038F10514F0EFE7F0E0E0934D08E09167
:10783000D507F0E0EE0FFF1FE459F84F0190F081FB
:10784000E02D6FEFE038F60714F4E0E8FFEFE038E2
:10785000F10514F0EFE7F0E0E0934E08E091D30774
:10786000F0E0EE0FFF1FE459F84F0190F081E02D9A
:107870008FEFE038F80714F4E0E8FFEFE038F105A7
:1078800014F0EFE7F0E0E0934F08E091D207F0E06A
:10789000EE0FFF1FE459F84F0190F081E02D2FEF1C
:1078A000E038F20714F4E0E8FFEFE038F10514F0F7
:1078B000EFE7F0E0E093500880915F058093510876
:1078C00080916105809352088091630580935308ED
:1078D0008091650580935408809104059091050579
:1078E000809355080CC080915305863020F010928B
:1078F000530585E002C08091530580934D0878942C
:1079000080915B08882309F461C040915D08509123
:107910005E08CA0181509E4F8F5F9340B0F4209162
:107920005F0830916008C90181509E4F8F5F93407E
:1079300060F48091DA0785FF08C050937805409382
:10794000770530937A0520937905809163089091AB
:10795000640821E08936920724F490936F038093A2
:107960006E0380916E0390916F0397FF05C0109294
:1079700052051092510516C080916E0390916F03CD
:107980002091700330917103845E9D4F821B930B95
:1079900068E671E00E94CA41845B90409093520572
:1079A0008093510580916708282F30E08091D3049F
:1079B0009091D4048217930788F48091530588230B
:1079C00069F43093D4042093D30408951092780579
:1079D0001092770510927A0510927905089580919A
:1079E0002008882309F435C045988091D705E82FF1
:1079F000F0E0ED54FC4F908190933C088F5F8093B2
:107A0000D705853010F01092D705109220080E94FB
:107A10004B3B81E08093D605000000000000000091
:107A20000000000000000000000000000000000056
:107A30000000000000000000000000000000000046
:107A4000000000000000000080913A08809359086F
:107A50008EBD089580912008882309F093C00DB44D
:107A600007FE90C084E08093D504459A2EB580919E
:107A7000D905813079F0813020F0823009F04FC093
:107A800015C01092D4052093D805213809F047C0BD
:107A900081E009C0253509F03CC08091D8058B5A9A
:107AA0008093D80582E08093D90539C08091D405B0
:107AB000E82FF0E0EF5DF74F20838F5F8093D405D0
:107AC0009091D805893140F12917C1F4F894ECE57B
:107AD000F8E0A1E2B8E089E10D9001928150E1F770
:107AE000789481E080935B088091AD069091AE061A
:107AF00001969093AE068093AD060BC08091AB06C5
:107B00009091AC0601969093AC068093AB061092D0
:107B10005B081092D90503C0920F9093D80520916D
:107B2000D605203208F02BC0459800000000000068
:107B30000000000000000000000000000000000045
:107B40000000000000000000000000000000000035
:107B500000000000000000000000E0917508F091B6
:107B60007608E20FF11D80818EBD808190915908C9
:107B7000890F809359082F5F2093D605089581E0DF
:107B8000809320080895A8E0B0E0E9ECFDE30C94B0
:107B900024427B018C01611571058105910519F461
:107BA00082E089835AC083E089838EE1C82ED12C7C
:107BB000DC82CB82ED82FE820F831887C801B70179
:107BC0000E94363EBC016150704077FF33C0EE2703
:107BD000FF27E61BF70B20E030E040E050E081E0BB
:107BE00090E0A0E0B0E00E2E04C0880F991FAA1FFD
:107BF000BB1F0A94D2F70197A109B1098E219F21D9
:107C0000A023B1230097A105B10521F021E030E0C8
:107C100040E050E004C016950795F794E794EA9584
:107C2000D2F72E293F29402B512B2D833E834F83A2
:107C300058870FC06115710581F0062E04C0EE0C47
:107C4000FF1C001F111F0A94D2F7ED82FE820F83E2
:107C50001887C61AD70ADC82CB821A82CE01019617
:107C60000E94833EE8E028960C944042EF92FF92F7
:107C70000F931F939B01AC01203080E0380781E017
:107C8000480780E0580780F42F3F31054105510532
:107C900009F020F4EE24FF24870119C068E0E62EE5
:107CA000F12C012D112D13C0203080E0380780E029
:107CB000480781E0580730F490E1E92EF12C012DBE
:107CC000112D05C088E1E82EF12C012D112D80E247
:107CD00090E0A0E0B0E08E199F09A00BB10B04C0AA
:107CE0005695479537952795EA94D2F7F901E854C8
:107CF000FC4F2081821B9109A109B1091F910F91AD
:107D0000FF90EF9008959F92AF92BF92CF92DF9233
:107D1000EF92FF920F931F93EE24FF248701FC0143
:107D2000248135814681578191808081823010F491
:107D30004061A2C0843009F49BC0823029F420E065
:107D400030E040E050E005C0211531054105510506
:107D500019F4E0E0F0E092C0828193816FEF823805
:107D600096070CF05AC062E87FEF681B790B6A3106
:107D700071052CF020E030E040E050E02AC0AA2459
:107D8000BB24650181E090E0A0E0B0E0062E04C0D5
:107D9000880F991FAA1FBB1F0A94D2F70197A10948
:107DA000B10982239323A423B5230097A105B1052C
:107DB00029F071E0A72EB12CC12CD12C04C056950E
:107DC0004795379527956A95D2F72A293B294C295B
:107DD0005D29DA01C9018F779070A070B07080348E
:107DE0009105A105B10539F427FF09C0205C3F4F7B
:107DF0004F4F5F4F04C0215C3F4F4F4F5F4F80E0BC
:107E000090E0203060E0360760E0460760E4560707
:107E100010F081E090E0FC0123C08038910544F52A
:107E2000FC01E158FF4FDA01C9018F779070A07013
:107E3000B07080349105A105B10539F427FF09C060
:107E4000205C3F4F4F4F5F4F04C0215C3F4F4F4F6F
:107E50005F4F57FF05C05695479537952795319643
:107E600087E056954795379527958A95D1F706C0AF
:107E700020E030E040E050E0EFEFF0E0E22EF32EC3
:107E8000942F9F77802F8078892B9E2F9795992705
:107E900097958F77082F092B9E2F9695812F8078A5
:107EA000892B9794992497948F77182F1929C801B3
:107EB000B7011F910F91FF90EF90DF90CF90BF908F
:107EC000AF909F900895FC014150504030F00190D8
:107ED0000616D1F73197CF0108958827992708957D
:107EE0005058BB27AA270ED079C16AD130F06FD184
:107EF00020F031F49F3F11F41EF45FC10EF4E095C1
:107F0000E7FB55C1E92F7BD180F3BA1762077307EE
:107F10008407950718F071F49EF593C10EF4E0956F
:107F20000B2EBA2FA02D0B01B90190010C01CA0133
:107F3000A0011124FF27591B99F0593F50F4503EDE
:107F400068F11A16F040A22F232F342F4427585FD0
:107F5000F3CF469537952795A795F0405395C9F7E8
:107F60007EF41F16BA0B620B730B840BBAF09150A0
:107F7000A1F0FF0FBB1F661F771F881FC2F70EC03F
:107F8000BA0F621F731F841F48F487957795679512
:107F9000B795F7959E3F08F0B3CF9395880F08F0FB
:107FA0009927EE0F9795879508950CD017C10FD19B
:107FB00040F006D130F021F45F3F19F0F8C05111C4
:107FC00041C1FBC01CD198F39923C9F35523B1F3E8
:107FD000951B550BBB27AA2762177307840738F038
:107FE0009F5F5F4F220F331F441FAA1FA9F333D097
:107FF0000E2E3AF0E0E830D091505040E695001C4B
:10800000CAF729D0FE2F27D0660F771F881FBB1F06
:10801000261737074807AB07B0E809F0BB0B802DE0
:10802000BF01FF2793585F4F2AF09E3F510568F02C
:10803000BEC008C15F3FECF3983EDCF386957795B0
:108040006795B795F7959F5FC9F7880F911D96952E
:10805000879597F90895E1E0660F771F881FBB1F8A
:10806000621773078407BA0720F0621B730B840B37
:10807000BA0BEE1F88F7E095089504D06894B1110B
:10808000E1C00895C4D088F09F5790F0B92F992788
:10809000B751A0F0D1F0660F771F881F991F1AF013
:1080A000BA95C9F712C0B13081F0CBD0B1E00895D4
:1080B000C8C0672F782F8827B85F39F0B93FCCF355
:1080C000869577956795B395D9F73EF49095809509
:1080D000709561957F4F8F4F9F4F0895E89409C029
:1080E00097FB3EF490958095709561957F4F8F4FEB
:1080F0009F4F9923A9F0F92F96E9BB279395F69501
:10810000879577956795B795F111F8CFFAF4BB0F7E
:1081100011F460FF1BC06F5F7F4F8F4F9F4F16C0E2
:10812000882311F096E911C0772321F09EE8872F6C
:10813000762F05C0662371F096E8862F70E060E028
:108140002AF09A95660F771F881FDAF7880F9695A1
:10815000879597F9089507D008F481E0089503D032
:1081600008F48FEF0895990F0008550FAA0BE0E867
:10817000FEEF16161706E807F907C0F012161306E9
:10818000E407F50798F0621B730B840B950B39F429
:108190000A2661F0232B242B252B21F408950A268F
:1081A00009F4A140A6958FEF811D811D089597F9CF
:1081B0009F6780E870E060E008959FEF80EC08958D
:1081C00000240A94161617061806090608950024B6
:1081D0000A9412161306140605060895092E039430
:1081E000000C11F4882352F0BB0F40F4BF2B11F4A4
:1081F00060FF04C06F5F7F4F8F4F9F4F089557FD03
:108200009058440F551F59F05F3F71F04795880F04
:1082100097FB991F61F09F3F79F08795089512169B
:1082200013061406551FF2CF4695F1DF08C0161647
:1082300017061806991FF1CF8695710561050894F8
:108240000895E894BB2766277727CB0197F908950F
:108250000BD0C4CFB5DF28F0BADF18F0952309F0B2
:10826000A6CFABCF1124EECFCADFA0F3959FD1F3F9
:10827000950F50E0551F629FF001729FBB27F00DD4
:10828000B11D639FAA27F00DB11DAA1F649F662729
:10829000B00DA11D661F829F2227B00DA11D621F78
:1082A000739FB00DA11D621F839FA00D611D221F32
:1082B000749F3327A00D611D231F849F600D211D16
:1082C000822F762F6A2F11249F5750408AF0E1F0B9
:1082D00088234AF0EE0FFF1FBB1F661F771F881F02
:1082E00091505040A9F79E3F510570F060CFAACF42
:1082F0005F3FECF3983EDCF3869577956795B795ED
:10830000F795E7959F5FC1F7FE2B880F911D969516
:10831000879597F90895629FD001739FF001829F1E
:10832000E00DF11D649FE00DF11D929FF00D839F04
:10833000F00D749FF00D659FF00D9927729FB00DA1
:10834000E11DF91F639FB00DE11DF91FBD01CF01B4
:1083500011240895991B79E004C0991F961708F01D
:10836000961B881F7A95C9F780950895AA1BBB1B99
:1083700051E107C0AA1FBB1FA617B70710F0A61B25
:10838000B70B881F991F5A95A9F780959095BC0146
:10839000CD01089597FB092E07260AD077FD04D05A
:1083A000E5DF06D000201AF4709561957F4F08959F
:1083B000F6F7909581959F4F0895A1E21A2EAA1B7A
:1083C000BB1BFD010DC0AA1FBB1FEE1FFF1FA21785
:1083D000B307E407F50720F0A21BB30BE40BF50B82
:1083E000661F771F881F991F1A9469F7609570950B
:1083F000809590959B01AC01BD01CF01089597FB3D
:10840000092E05260ED057FD04D0D7DF0AD0001C58
:1084100038F450954095309521953F4F4F4F5F4F21
:108420000895F6F790958095709561957F4F8F4FE1
:108430009F4F08952F923F924F925F926F927F923B
:108440008F929F92AF92BF92CF92DF92EF92FF9264
:108450000F931F93CF93DF93CDB7DEB7CA1BDB0B10
:108460000FB6F894DEBF0FBECDBF09942A883988B5
:1084700048885F846E847D848C849B84AA84B984BC
:10848000C884DF80EE80FD800C811B81AA81B981C8
:10849000CE0FD11D0FB6F894DEBF0FBECDBFED01DC
:1084A0000895F999FECFB2BDA1BDF89A119600B416
:1084B0000895F7DF01921A94E1F70895F2DFE02DB5
:1084C000F0DFF02D0895F999FECFB2BDA1BD00BC3B
:1084D00011960FB6F894FA9AF99A0FBE0895F3DF41
:1084E000012CF1DF112408950190EDDF1A94E1F7DA
:0484F0000895FFCF1D
:1084F4000AFF0164496E74656772616C5069746344
:1085040068202020496E74656772616C526F6C6CD0
:108514002020202041636350697463682020202058
:1085240020202020416363526F6C6C202020202087
:10853400202020204779726F596177202020202045
:108544002020202052656164696E67486569676808
:10855400742020204163635A2020202020202020E2
:10856400202020205468727573742020202020203D
:1085740020202020436F6D706173734865616469C6
:108584006E672020566F6C74616765202020202060
:10859400202020205265636569766572204C6576DB
:1085A400656C20205961774779726F486561646909
:1085B4006E6720204D6F746F725F46726F6E742009
:1085C400202020204D6F746F725F526561722020ED
:1085D400202020204D6F746F725F52696768742089
:1085E400202020204D6F746F725F4C6566742020CC
:1085F400202020204163635F5A2020202020202057
:1086040020202020535049204572726F7220202070
:1086140020202020535049204F6B20202020202050
:108624002020202020202020202020202020202046
:1086340020202020536572766F20202020202020C7
:1086440020202020506974636820202020202020CE
:1086540020202020526F6C6C2020202020202020FD
:108664002020202020202020202020202020202006
:1086740020202020202020202020202020202020F6
:1086840020202020202020202020202020202020E6
:1086940020202020202020202020202020202020D6
:1086A40020202020202020202020202020202020C6
:1086B40020202020202020202020202020202020B6
:1086C40020202020202020202020202020202020A6
:1086D400202020204750535F506974636820202075
:1086E400202020204750535F526F6C6C20202020A4
:1086F40020202020FFFF010A6400007D0000FF030A
:108704000102030405060708090A48656C6C6F201A
:10871400576F726C6400000000000000000000004D
:108724000000000000000000000000000000000045
:108734000000000000000000000000000000000035
:108744000000000000000000000000000000000025
:10875400000000000000000000000B016400FFFFA7
:10876400FFFFF40190D0030090D00300ECFF17B793
:10877400D13830FB103A409696020A0000000000FF
:10878400000000644600006401426567696E6E651E
:108794007200004E6F726D616C000053706F7274E2
:1087A40000000C0A0B0A0B0C000102020303030372
:1087B400040404040404040405050505050505056D
:1087C400050505050505050506060606060606064D
:1087D4000606060606060606060606060606060635
:1087E400060606060606060607070707070707071D
:1087F4000707070707070707070707070707070705
:1088040007070707070707070707070707070707F4
:1088140007070707070707070707070707070707E4
:1088240007070707070707070808080808080808CC
:1088340008080808080808080808080808080808B4
:1088440008080808080808080808080808080808A4
:108854000808080808080808080808080808080894
:108864000808080808080808080808080808080884
:108874000808080808080808080808080808080874
:108884000808080808080808080808080808080864
:108894000808080808080808080808080808080854
:0888A40008080808080808088C
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644_V0_69k.hex
1,2212 → 1,2125
:100000000C9432020C944D020C944D020C944D024F
:100010000C944D020C944D020C944D020C944D0224
:100020000C944D020C94940D0C944D020C944D02C2
:100030000C9425180C944D020C944D020C944D0216
:100040000C944D020C944D020C945D0C0C944D02DA
:100050000C94FD040C944D020C94C7040C944D02B6
:100060000C94990E0C944D020C944F170C944D0265
:100070000A0D466C69676874436F6E74726F6C0A20
:100080000D48617264776172653A25642E25640AB1
:100090000D536F6674776172653A5625642E256438
:1000A000256320000A0D3D3D3D3D3D3D3D3D3D3D2F
:1000B0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D70
:1000C0003D3D3D3D000A0D496E69742E2045455069
:1000D000524F4D3A2047656E6572696572652044DE
:1000E000656661756C742D506172616D65746572C1
:1000F0002E2E2E000A0D414343206E696368742042
:1001000061626765676C696368656E21000A0D420C
:10011000656E75747A6520506172616D6574657283
:100120007361747A202564000A0D4162676C656909
:100130006368204C756674647275636B73656E7367
:100140006F722E2E004F4B0A0D000A0D5374657509
:100150006572756E673A200048656164696E67482C
:100160006F6C64004E65757472616C000A0A0D0054
:100170002E005B25695D005B25695D002B204D69C4
:100180006B726F4B6F70746572202B0048573A5634
:1001900025642E25642053573A25642E2564256353
:1001A0000053657474696E673A20256420002863E3
:1001B0002920486F6C676572204275737300486F21
:1001C0006568653A202020202025356900536F6C32
:1001D0006C486F6568653A20253569004C75667412
:1001E000647275636B3A20253569004F666620207E
:1001F000202020203A20253569004B65696E652056
:100200000048F668656E726567656C756E670061BB
:100210006B742E204C616765004E69636B3A202039
:100220002020202025356900526F6C6C3A20202058
:10023000202020253569004B6F6D706173733A2063
:100240002020253569004B313A25346920204B3276
:100250003A25346920004B333A25346920204B3449
:100260003A25346920004B353A25346920204B3635
:100270003A25346920004B373A25346920204B3821
:100280003A25346920004E693A2534692020526F9E
:100290003A253469200047733A253469202047699C
:1002A0003A253469200050313A25346920205032F3
:1002B0003A253469200050333A25346920205034DF
:1002C0003A25346920004779726F202D2053656EDE
:1002D000736F72004E69636B2025346920282533C3
:1002E000692900526F6C6C202534692028253369F8
:1002F000290047696572202534692028253369293A
:10030000004E69636B202534692028253369290054
:10031000526F6C6C202534692028253369290047E9
:1003200069657220253469202825336929004143F5
:1003300043202D2053656E736F72004E69636B20EE
:1003400025346920282533692900526F6C6C2025DB
:10035000346920282533692900486F6368202534D3
:1003600069202825336929005370616E6E756E67A8
:100370003A202025356900456D70662E5065676509
:100380006C3A253569004B6F6D70617373202020C6
:1003900020202020005269636874756E673A20201F
:1003A000253569004D657373776572743A20202591
:1003B00035690053746172743A202020202025355D
:1003C0006900506F7469313A202025336900506FFD
:1003D0007469323A202025336900506F7469333ACA
:1003E000202025336900506F7469343A202025336A
:1003F0006900536572766F202000536574706F69D1
:100400006E742020253369005374656C6C756E67BB
:100410003A202533690052616E67653A2533692DAC
:100420002533690045787465726E436F6E74726F20
:100430006C2020004E693A2534692020526F3A25FD
:100440003469200047733A253469202047693A25EA
:100450003469200048693A253469202043663A25EA
:100460003469200011241FBECFEFD0E1DEBFCDBF25
:1004700013E0A0E0B1E0E8E7F7E802C005900D92D4
:10048000AA3AB107D9F718E0AAEAB3E001C01D9271
:10049000AC33B107E1F70C94BB020C940000FB01F4
:1004A000863008F085E0489FD0011124AC59BF4F39
:1004B000842F9927019724F00E94A8430192FACF34
:1004C0000895282FFB01863008F025E0429FD001D7
:1004D0001124AC59BF4F842F9927019724F0019024
:1004E0000E94B043FACFA2E0B0E0022E0E94B043D7
:1004F0000895A2E0B0E09D010E94A843802D8630BF
:1005000028F082E0D901082E0E94B043992708956F
:1005100080916107E82FFF27EE0FFF1FEB5CF84F7C
:10052000808191818D5E9F4F14F010920201808135
:1005300091818A5B9F4FBCF480910201882399F4DA
:1005400081E080930201809132068F5F80933206B2
:10055000853038F088EE93E09093CA038093C90306
:1005600002C00E94C01A809132069927909300071A
:100570008093FF060895CFEFD0E1DEBFCDBF14B862
:1005800015B897EEE92E93E0F92E8EEC9FEFE80E6A
:10059000F91EF7FEFACF88EEE82E83E0F82E189BBE
:1005A00002C08BE001C08AE08093010181E887B935
:1005B0008FEF88B98BE184B981E085B98EE38AB980
:1005C000579A87EF8BB984B7877F84BF809160008B
:1005D0008861809360001092600080ED97E09093B6
:1005E000CA038093C9031092250410922404109228
:1005F0003A0710923907109227041092260410929D
:10060000290410922804809101018A3011F428985D
:1006100001C0289A0E94440D0E9456080E9410189A
:100620000E944B0E0E9418170E94303F789410923F
:10063000220685E48093230687E0809324068BE6D8
:1006400090E09F938F9385E490E09F938F931F9208
:100650001F92809101016AE00E943843892F9927F7
:100660009F938F93809101010E94384399279F9314
:100670008F9380E790E09F938F931F920E94D309FE
:100680008DB79EB70D960FB6F8949EBF0FBE8DBF67
:1006900084EA90E09F938F931F920E94D309299A36
:1006A0000F900F900F9001E010E0D8010E94A84336
:1006B000802D863461F185EC90E09F938F931F929B
:1006C0000E94D3090E940F19C0E00F900F900F9065
:1006D000C23039F0C33019F40E94301A04C0C4305B
:1006E00010F00E949F1947E461E677E08C2F0E948A
:1006F0006102CF5FC63060F3A2E0B0E083E0082E75
:100700000E94B04386E4D801082E0E94B043A4E0C2
:10071000B0E00E94A843802D853050F084EF90E037
:100720009F938F931F920E94D3090F900F900F9069
:100730000E94790247E461E677E00E944F020E943E
:10074000790299279F938F938DE091E09F938F93E8
:100750001F920E94D309809169070F900F900F900C
:100760000F900F9080FF20C088E291E09F938F93BD
:100770001F920E94D30988EE93E00E943B0D7C01FA
:100780000E94510E0F900F900F90C7010E946A0DAA
:100790008823D9F385E491E09F938F931F920E9461
:1007A000D3090F900F900F900E943B1C8091010184
:1007B0008A3011F4289801C0289A80ED97E0909330
:1007C000CA038093C90385E5809334068AE491E0E7
:1007D0009F938F931F920E94D309809169070F9076
:1007E0000F900F9082FF03C088E591E002C084E67D
:1007F00091E09F938F931F920E94D3090F900F90C7
:100800000F908CE691E09F938F931F920E94D309E3
:100810000E94A21188E893E190938B0380938A034E
:1008200081E0809333060F900F900F908091CD035D
:10083000882309F4A4C01092CD0380913206882346
:1008400019F00E94880202C00E94A9270E947A24FF
:10085000209101012A3011F4289801C0289A809132
:100860000303882321F081508093030312C08093F7
:10087000AA038093AB0380933E0610920804109263
:1008800007041092060410920504109204041092BA
:10089000030480912A04882329F080912A0481503E
:1008A00080932A0480918A0390918B03892B01F510
:1008B00085E090E090938B0380938A030E94321727
:1008C00080910603909107038F5F9F4FF9F4809109
:1008D00021048823D9F080E197E29093CA038093A2
:1008E000C90380E890E090930703809306030EC04D
:1008F00080918A0390918B03019790938B0380934F
:100900008A032A3011F4289801C0289A8091CD03D7
:10091000882321F080912104882311F40E947C080F
:100920000E94E706C7010E946A0D882341F1809169
:100930007907282F33278091100390911103821794
:1009400093079CF480910603909107038F5F9F4F5C
:1009500061F480E797E19093CA038093C90380E034
:1009600093E090930703809306030E94D84084E0AD
:100970008093C80384E190E00E943B0D7C0180914C
:10098000C803882309F052CF0E9419414FCF1F920C
:100990000F920FB60F9211248F939F93EF93FF93B3
:1009A000809105038823E1F48091BE039091BF03F9
:1009B00001969093BF038093BE03FC01EC50FB4F64
:1009C000E081ED3019F08639910539F41092BF03BA
:1009D0001092BE0381E080930503E093C60004C03B
:1009E0001092BF031092BE03FF91EF919F918F91E0
:1009F0000F900FBE0F901F9018951F920F920FB679
:100A00000F9211242F933F934F935F938F939F9354
:100A1000AF93BF93EF93FF9390E08091C6008093D4
:100A2000B9035091C403563910F09093C5038091D7
:100A3000B9038D3009F05FC08091C503823009F0A1
:100A40005AC09093C503852F99278F5B994FFC015E
:100A5000329740812091C0033091C103241B31099A
:100A6000DC0111978C91281B3109C9019F7090936B
:100A7000C1038093C00346E0969587954A95E1F7B8
:100A8000982F935C9093C2032F733070235C209354
:100A9000C3038081981729F48C91281711F491E0F1
:100AA00006C090E08091B6038F5F8093B60380917B
:100AB000B803882309F06EC0992309F46BC081E064
:100AC0008093B8035093B503E52FFF27EF5BF94FF1
:100AD0008DE0808380914306823509F05BC088E118
:100AE00090E02CE00FB6F894A895809360000FBEBC
:100AF000209360004FC02091C503822F9927813039
:100B00009105F9F0823091051CF4892B21F040C049
:100B1000029711F13DC08091B903833239F480917D
:100B2000B803882319F481E08093C5038091B90349
:100B30008093410681E08093C4038091B903992793
:100B400022C02F5F2093C503E52FFF27EF5BF94FEE
:100B50008091B903808309C0E52FFF27EF5BF94F30
:100B60008091B9038083563920F45F5F5093C403AA
:100B700002C01092C5032091B9038091C0039091E7
:100B8000C103820F911D9093C1038093C00302C0E3
:100B90001092C503FF91EF91BF91AF919F918F91FB
:100BA0005F914F913F912F910F900FBE0F901F902B
:100BB0001895AC01A0E0B0E09D01A817B90748F472
:100BC000E4EFF4E08191280F311D1196A417B507C9
:100BD000C8F33F70FD01EC50FB4FC90156E09695FC
:100BE00087955A95E1F7835C80831196FD01EC505F
:100BF000FB4F2F733070822F835C8083AB50BB4FD1
:100C00008DE08C93109205038091F4048093C600CC
:100C100008951F93CF93DF93382FEA01722F10E0CE
:100C200083E28093F4046093F5043093F604A3E028
:100C3000B0E0772309F458C0772311F4972F07C049
:100C4000FE01E10FF11D1F5F9081715011F4472FDC
:100C50000EC0FE01E10FF11D1F5F4081715039F0A0
:100C6000FE01E10FF11D1F5F6081715001C0672F10
:100C7000FD01EC50FB4F892F86958695835C808320
:100C80001196FD01EC50FB4F892F992783709070CE
:100C900024E0880F991F2A95E1F755279A0194E0DF
:100CA000369527959A95E1F7822B835C8083119680
:100CB000FD01EC50FB4F4F705070440F551F440F17
:100CC000551F862F992726E0969587952A95E1F757
:100CD000842B835C80831196FD01EC50FB4F6F7376
:100CE000635C60831196A5CFCD010E94D905DF9189
:100CF000CF911F9108951F93CF93DF93EC0110E0E4
:100D0000662309F460C0A22FBB271297E42FFF27A8
:100D1000EF5BF94F30813D534F5FE42FFF27EF5BCF
:100D2000F94F50815D534F5FE42FFF27EF5BF94F81
:100D300070817D534F5FE42FFF27EF5BF94FE08118
:100D4000ED534F5F842F9927A817B907E4F1832F3C
:100D50009927880F991F880F991F352F32953F705B
:100D6000382B852F99278F709070F4E0880F991F8A
:100D7000FA95E1F7572F56955695582B872F9927B7
:100D80008370907076E0880F991F7A95E1F78E2B2B
:100D900061506F3FC1F0FE01E10FF11D30831F5F15
:100DA00061506F3F81F0FE01E10FF11D50831F5F25
:100DB00061506F3F41F0FE01E10FF11D80831F5F25
:100DC000662309F0A3CFDF91CF911F910895CF93B0
:100DD000DF93CDB7DEB724970FB6F894DEBF0FBE12
:100DE000CDBF8091B803882309F445C180914306A3
:100DF00099278836910509F494C089369105C4F481
:100E00008236910509F462C08336910544F48B342F
:100E1000910559F18136910509F44CC02AC18336F8
:100E2000910509F467C08736910509F4B2C021C164
:100E3000813791054CF48C3691050CF0D4C08B367B
:100E4000910509F492C015C18437910509F484C055
:100E5000853791052CF48137910509F49EC009C1AD
:100E60008637910509F491C004C12091B50343E090
:100E700062E0CE0101960E947B0689819A8190935F
:100E80003D0480933C0480913C0490913D0420916A
:100E90003A0430913B04821B930B845E9D4F68E6BD
:100EA00071E00E945843845B904090933904809392
:100EB0003804DFC02091B50343E062E0CE01039621
:100EC0000E947B068B81809304035BC02091B50355
:100ED00043E06BE084E396E00E947B068091F1039F
:100EE00090913606892B8093F10380913D06809383
:100EF0001907BFC02091B50343E06BE084E396E09F
:100F00000E947B068091F10390913606892B809395
:100F1000F10380913D068093190781E08093BB0324
:100F200030C02091B50343E062E0CE0103960E94F9
:100F30007B068091F1039B81892B8093F1038C8147
:100F40008F3F21F481E08093B20302C01092B2037C
:100F500081E08093BC038DC02091B50343E064E041
:100F60008EEA93E00E947B060CC02091B50343E01B
:100F700064E08AEA93E00E947B068091AD0380934F
:100F800019078FEF8093030374C081E08093BA0345
:100F900070C081E08093BD036CC02091B50343E035
:100FA00062E0CE0103960E947B06809105038823B0
:100FB000E1F38B818F3F61F0863010F085E08B8309
:100FC00047E461E677E08B810E944F028B8102C08B
:100FD0000E94790227E441E657E06091F304855BC3
:100FE0000E94090646C02091B50343E067E481E60C
:100FF00097E00E947B068091430647E461E677E034
:101000008B560E946102A2E0B0E0809143068B56AD
:10101000082E0E94B04380918C079927AA27BB27EE
:10102000BC01CD0124EC39E040E050E00E941943BE
:10103000DC01CB018093840390938503A093860306
:10104000B093870380918D079927AA27BB27BC01FE
:10105000CD010E941943DC01CB0180938003909362
:101060008103A0938203B09383030E9479020E94BC
:10107000C01A1092B80324960FB6F894DEBF0FBEC4
:10108000CDBFDF91CF910895CF93C82F8A3019F447
:101090008DE00E9444088091C00085FFFCCFC09382
:1010A000C60080E090E0CF910895089588E1809394
:1010B000C1008091C00082608093C0008091C10017
:1010C00080688093C1008091C10080648093C100DA
:1010D0008AE28093C40088EC90E00E943B0D9093DC
:1010E0002106809320068CED90E00E943B0D9093AA
:1010F000400680933F06089580910503882309F4F4
:10110000F7C08091BD03882371F080910503882387
:1011100051F02BE044E356E06091F30487E40E9431
:1011200009061092BD0380913F06909140060E94EF
:101130006A0D882309F44CC080910503882309F4C3
:1011400047C08091760490917704A0917804B09183
:101150007904BC01CD012CE630E040E050E00E9473
:101160008D4330932D0620932C0680916E04909130
:101170006F04A0917004B0917104BC01CD012CE604
:1011800030E040E050E00E948D4330932F062093E2
:101190002E06809112048093300680911104809372
:1011A000310628E04CE256E06091F30487E70E94A4
:1011B000090680913206853018F086E08093320669
:1011C00083E690E00E943B0D9093400680933F069B
:1011D00080912006909121060E946A0D882321F4B7
:1011E0008091BB038823B1F080910503882391F09F
:1011F00022E447ED56E06091F30484E40E9409067E
:101200001092BB038AEF90E00E943B0D9093210661
:1012100080932006609104036F3F91F0862F9927F9
:1012200034E0880F991F3A95E1F78D5F9E4F605D1E
:1012300020E1AC0181E40E9409068FEF8093040352
:10124000909119079923A1F080910503882381F0DB
:1012500083E28093F4049093F5048DE08093F60488
:1012600010920503109219078091F4048093C60030
:101270008091BC03882351F180910503882331F1CB
:101280000E94AB111092BC033091B303832F8F5F88
:101290008093B303843021F06091B203662359F048
:1012A00026E145E357E060E084E30E9409068FEF02
:1012B0008093B3030BC024E1829FC00111248E5E92
:1012C0009C4FAC01832F8F5C0E9409068091BA036A
:1012D000882371F080910503882351F02AE042E2CF
:1012E00056E06091F30486E50E9409061092BA0365
:1012F0000895982F80911A07813069F48091F20344
:10130000E82FFF27EE5EFC4F90838F5F8093F20300
:1013100021E030E005C0892F0E944408282F3327A0
:10132000C90108950F931F93CF93DF938C01EB01B5
:10133000672B39F0F80181918F010E94790921977B
:10134000C9F7DF91CF911F910F9108950F931F93CC
:10135000CF93DF938C01EB01672B41F0F8010F5F16
:101360001F4F84910E9479092197C1F7DF91CF9196
:101370001F910F910895CF93C82F181634F480E26F
:101380000E947909C1501C16D4F3CF910895CF93D0
:10139000C82F181634F480E30E947909C1501C1636
:1013A000D4F3CF9108952F923F924F925F926F9214
:1013B0007F928F929F92AF92BF92CF92DF92EF92E5
:1013C000FF920F931F93CF93DF93CDB7DEB7E097D4
:1013D0000FB6F894DEBF0FBECDBF26968FAD269711
:1013E0002896EEADFFAD28971CA61DA61EA61FA62B
:1013F00080931A07A8E46A2E712C6C0E7D1E5F0183
:10140000C50105C0053239F00894A11CB11CF501D5
:1014100004910023B9F7B501681B790B11F00E9404
:10142000A609002309F430C20894A11CB11C55245C
:1014300058AA252C1FEF59A6F5010894A11CB11C30
:101440000491053721F0802F80628837F1F450FE37
:101450000EC0F30124E030E0620E731E80819181A2
:10146000A281B3818CA79DA7AEA7BFA70EC0F30131
:10147000A2E0B0E06A0E7B1E808191819C0144272E
:1014800055272CA73DA74EA75FA7003221F489A5B9
:10149000882391F61BC0033211F438E081C00A3270
:1014A00011F00D3289F40A3251F4F30142E050E0B8
:1014B000640E751E208022200CF0BECF219450E1D6
:1014C000552A8FED5822B8CF0B3211F409A7B4CFAB
:1014D0000E32C1F5F5010894A11CB11C04910A3229
:1014E00079F4F301A2E0B0E06A0E7B1E60817181A5
:1014F000BFEF6F3F7B0714F46FEF7FEF162F9CCF8A
:1015000060E070E0802F80538A30A0F4CB01F3E0DC
:10151000880F991FFA95E1F7860F971F680F791FBB
:10152000600F711D60537040F5010894A11CB11C3F
:101530000491E8CFEFEF6F3F7E0714F46FEF7FEF7A
:10154000162F7FCF003329F454FC76CFF0E25F2AC8
:1015500073CF802F81538930D8F460E070E0CB01E5
:10156000E3E0880F991FEA95E1F7860F971F680F50
:10157000791F600F711D60537040F5010894A11C24
:10158000B11C0491802F80538A3048F3262E59CF06
:10159000083619F424E0522A4FCF0C3619F431E002
:1015A000532A4ACF033661F44E010894811C911CE2
:1015B000F30142E050E0640E751E808189831BC1F7
:1015C000043421F0043611F00936B1F5043411F475
:1015D00051E0552A50FE0AC0F30184E090E0680E05
:1015E000791E20813181428153810CC0F30142E098
:1015F00050E0640E751E808191819C01442737FD67
:101600004095542F2CA73DA74EA75FA78CA59DA55D
:10161000AEA5BFA5B7FF0DC0B095A09590958195DB
:101620009F4FAF4FBF4F8CA79DA7AEA7BFA78DE21F
:1016300089A77AE0472E7BC00F3411F00F3639F4BA
:101640000F3411F491E0592A68E0462E6FC000373C
:10165000A1F4F301A2E0B0E06A0E7B1E80819181CB
:101660009C01442755272CA73DA74EA75FA750E113
:10167000452E30E4532A08E759C00337C1F5F3017A
:1016800042E050E0640E751E8080918081149104C8
:1016900089F44E010894811C911C88E289838EE6AE
:1016A000F401818385E78B838CE68C838D8389E2CB
:1016B0008E831F8217FD13C0812F992787FD909578
:1016C000AC0160E070E0C4010E94A441009729F0E1
:1016D000D82ED8181D150CF090C0D12E8EC0F40154
:1016E00001900020E9F73197DE2ED81886C0053525
:1016F00011F0053739F4053511F4F1E05F2A4AE0BD
:10170000442E14C0083519F0083709F06CC030E1D8
:10171000432E53FE0BC02CA53DA54EA55FA521155C
:1017200031054105510511F030E4532A19A618ABD3
:1017300017FD02C04FED542229E2822E912C8C0E0F
:101740009D1E8CA59DA5AEA5BFA50097A105B105C1
:1017500021F498A9992309F43FC0C42CDD24EE2478
:10176000FF2433242CA53DA54EA55FA52C153D05D2
:101770004E055F0510F091E0392E6CA57DA58EA574
:101780009FA5A70196010E946B43DC01CB01182F96
:101790008A3010F4105D04C0195A083509F41F7D11
:1017A000D4011E934D016CA57DA58EA59FA5A70113
:1017B00096010E946B432CA73DA74EA75FA733203D
:1017C00081F6B8E04B1641F453FE06C0103321F009
:1017D00080E3F40182934F01CE010196D82ED818F0
:1017E000F8E2DF0E0BC0002309F44EC04E0108944E
:1017F000811C911C098381E0D82E19A61D2DC8A833
:10180000CD18C7FCCC2489A5882311F01F5F02C026
:1018100056FC1E5F1C0DE52CFF24C70180739070E1
:10182000892B21F4822D811B0E94BB0989A5882365
:1018300029F061E070E0CE01899609C0E6FE09C09A
:1018400080E38AA70BA762E070E0CE018A960E942F
:101850009209C70180739070809721F4822D811BBB
:101860000E94C7098C2D0E94C7098D2D992787FDDD
:101870009095BC01C4010E949209E4FEC1CD822D65
:10188000811B0E94BB09BCCDE0960FB6F894DEBF69
:101890000FBECDBFDF91CF911F910F91FF90EF90C1
:1018A000DF90CF90BF90AF909F908F907F906F9080
:1018B0005F904F903F902F9008951F920F920FB618
:1018C0000F9211242F933F935F936F937F938F9386
:1018D0009F93AF93BF93EF93FF938091C8038823A7
:1018E00029F08091C80381508093C8038091D00370
:1018F00081508093D0038F3FB9F489E08093D00367
:10190000809108038F5F817080930803882319F406
:1019100081E08093CD038091CE039091CF03019617
:101920009093CF038093CE038091C9039091CA0313
:101930000297C8F08091C9039091CA0301979093D0
:10194000CA038093C9038091C9039091CA0320916F
:1019500006033091070382239323892B11F021E0A2
:1019600009C020E007C020E08FEF9FEF90930703AE
:101970008093060380910101222331F08A3011F413
:101980005A9A07C0479A05C08A3011F45A9801C084
:1019900047988091690783FF5EC086B19927FC0153
:1019A000E071F07084FF0AC08091CB039091CC036A
:1019B00001969093CC038093CB034DC08091CB03D1
:1019C0009091CC03892B69F18091CB039091CC034A
:1019D0008A56914030F58091CB039091CC0369E217
:1019E00070E00E9444438091CB039091CC03860F1A
:1019F000971F9093CC038093CB038091CB0390915E
:101A0000CC030B9750F08091CB039091CC030A97B5
:101A100090933D0480933C0404C0F0933D04E09314
:101A20003C0480913C0490913D0420913A04309113
:101A30003B04821B930B845E9D4F68E671E00E941D
:101A40005843845B904090933904809338041092FB
:101A5000CC031092CB03FF91EF91BF91AF919F9177
:101A60008F917F916F915F913F912F910F900FBE5A
:101A70000F901F9018952091CE033091CF03280F1F
:101A8000391FC901019608958AE090E00E943B0D3C
:101A90009093D2038093D10382E085BD83EA84BD15
:101AA00017BC88E788BD96E096BD83EC8093B000B4
:101AB0009093B1008091700082608093700080915B
:101AC0006E00816080936E008AE08093B300109274
:101AD000B20008952091CE033091CF03821B930B67
:101AE000892F99278695807490700895CF93DF93FE
:101AF0000E943B0DEC01CE010E946A0D8823D9F3B0
:101B0000DF91CF910895CF93DF930E943B0DEC01BD
:101B100003C08FEE80937A00CE010E946A0D882365
:101B2000C1F3DF91CF9108951F920F920FB60F92DC
:101B300011240F931F932F933F934F935F936F93B2
:101B40007F938F939F93AF93BF93CF93DF93EF9345
:101B5000FF93809109038150809309038F3F09F01F
:101B600081C083E88093B00080917203082F112711
:101B70001093C7030093C603809196076091830773
:101B8000A0917604B0917704C0917804D091790443
:101B900080FF24C07727882799279D01AE01D7FFB2
:101BA00004C021583F4F4F4F5F4FA7E055954795D1
:101BB00037952795AA95D1F70E94194397FF04C03E
:101BC00061507E4F8F4F9F4FF9E0959587957795A0
:101BD0006795FA95D1F7060F171F23C07727882737
:101BE00099279D01AE01D7FF04C021583F4F4F4FA9
:101BF0005F4FE7E05595479537952795EA95D1F7DB
:101C00000E94194397FF04C061507E4F8F4F9F4F32
:101C100039E095958795779567953A95D1F7061BA5
:101C2000170B1093C7030093C6038091840799276D
:101C30002091C6033091C7032817390734F08091EB
:101C4000850799278217930724F49093C7038093FD
:101C5000C6038091C6038093B3008091860780936A
:101C6000090304C083E08093B0005F98FF91EF9177
:101C7000DF91CF91BF91AF919F918F917F916F91A4
:101C80005F914F913F912F911F910F910F900FBE38
:101C90000F901F90189510927C008FEE80937A0021
:101CA00008950F931F93CF93DF9303E010E0D801C3
:101CB0000E94A843802DC82FDD27C531D10508F02B
:101CC0002A97C7BD84E690E00E94830D80910A03A5
:101CD00090910B038255934010F4C0E0D0E0CA3FCE
:101CE000D105C0F4C7BD82E390E00E94830D80E778
:101CF00091E09F938F931F920E94D30980910A03D2
:101D000090910B030F900F900F908458934010F018
:101D10002196E5CFD8010C2E0E94B043C09328072E
:101D20008CE291E00E94830DDF91CF911F910F9182
:101D300008951F920F920FB60F921124EF92FF9207
:101D40000F931F932F933F934F935F936F937F93C3
:101D50008F939F93AF93BF93CF93DF93EF93FF93B3
:101D600010927A008091EA03682F77278F5F809323
:101D7000EA036530710509F48EC066307105BCF464
:101D80006230710509F44AC0633071053CF4611595
:101D9000710531F161307105C1F1AEC26330710579
:101DA00009F446C06430710509F45DC0A5C268300D
:101DB000710509F4C3C0693071054CF466307105D2
:101DC00009F482C06730710509F49BC095C269307F
:101DD000710509F4D0C06A30710509F4EBC18CC2F9
:101DE00080917800909179009093EC038093EB03BD
:101DF00081E08093E9038091D3039091D40301960D
:101E00009093D4038093D3037BC280917800909108
:101E100079009093EE038093ED038EC0809178005B
:101E2000909179009093F0038093EF0384E0BFC119
:101E300080911003909111039C01220F331F280FF2
:101E4000391F80917800909179000E944443260FB9
:101E5000371F369527953695279530931103209394
:101E6000100386E0A4C180918204909183042091A4
:101E7000780030917900821B930B90931C0780931C
:101E80001B0780911B0790911C079093E20380939E
:101E9000E10387E08CC180917800909179002091D6
:101EA000840430918504821B930B909327078093C1
:101EB000260780912607909127079093E00380934F
:101EC000DF031092E9031CC2809101012091EB0312
:101ED0003091EC038A3049F4809178009091790038
:101EE000820F931F9695879506C0809178009091F8
:101EF0007900820F931F9093E4038093E30381E0C2
:101F000056C1809101012091ED033091EE038A309A
:101F100049F48091780090917900820F931F9695F3
:101F2000879506C08091780090917900820F931F69
:101F30009093E6038093E50382E039C1809101012B
:101F40002091EF033091F0038A3049F480917800BA
:101F500090917900820F931F9695879506C0809186
:101F6000780090917900820F931F9093E8038093FB
:101F7000E70385E01CC18091780090917900AA2741
:101F800097FDA095BA2FBC01CD010E9457427B015D
:101F90008C0180917C0490917D04A0917E04B0918D
:101FA0007F049C01AD01C801B7010E94B141DC0171
:101FB000CB01BC01CD010E943A42DC01CB019093E0
:101FC000DE038093DD038091DD039091DE030297B1
:101FD0000CF446C080917C0490917D04A0917E0415
:101FE000B0917F0420E030E84BE354E4BC01CD0124
:101FF0000E94614288230CF088C080917C049091FB
:102000007D04A0917E04B0917F042AE037ED43EA7D
:102010005CE3BC01CD010E94B241DC01CB018093A5
:102020007C0490937D04A0937E04B0937F04809100
:10203000FD039091FE03845F914008F066C080919B
:102040007C0490917D04A0917E04B0917F042DECDE
:102050003CEC4CEC5DE3BC01CD010E94B2414BC0B5
:102060008091DD039091DE038F5F9F4F0CF04DC098
:1020700080917C0490917D04A0917E04B0917F04B6
:1020800020E030E849E054E4BC01CD010E94644204
:102090001816DCF580917C0490917D04A0917E045B
:1020A000B0917F042AE037ED43EA5CE3BC01CD0147
:1020B0000E94B141DC01CB0180937C0490937D04AC
:1020C000A0937E04B0937F048091FD039091FE0362
:1020D000845F9140D0F480917C0490917D04A09124
:1020E0007E04B0917F042DEC3CEC4CEC5DE3BC0134
:1020F000CD010E94B141DC01CB0180937C0490931F
:102100007D04A0937E04B0937F0481E08093D70385
:10211000809178009091790090931E0780931D071D
:102120008091DD039091DE039C01442737FD4095AB
:10213000542F80913E0490913F04A0914004B091AF
:102140004104820F931FA41FB51F80933E049093F8
:102150003F04A0934004B093410420913E04309189
:102160003F04409140045091410457FF04C0215066
:102170003C4F4F4F5F4FAAE05595479537952795B0
:10218000AA95D1F780913E0490913F04A09140041C
:10219000B0914104821B930BA40BB50B80933E04BA
:1021A00090933F04A0934004B093410483E0809354
:1021B000E903A6C080912B0790912C07209178000D
:1021C00030917900820F931F90932C0780932B07F7
:1021D000809123078F5F80932307809123078530A9
:1021E00008F48AC0809178009091790090930B0355
:1021F00080930A03109223078091D5039091D60310
:10220000BC01F3E0660F771FFA95E1F7681B790BC5
:1022100080917B03482F552780911F0790912007BD
:1022200020912B0730912C07821B930B20911F04C8
:1022300030912004821B930B489F9001499F300DE1
:10224000589F300D1124620F731F77FF02C0695F22
:102250007F4FE3E075956795EA95E1F77093D603B4
:102260006093D50380912B0790912C07EC01EE270A
:10227000D7FDE095FE2F20910C0330910D03409186
:102280000E0350910F03DA01C901880F991FAA1F8D
:10229000BB1F820F931FA41FB51FC80FD91FEA1FB2
:1022A000FB1FF7FF03C02396E11DF11D82E0F595AA
:1022B000E795D795C7958A95D1F7C0930C03D0932E
:1022C0000D03E0930E03F0930F0380910C039091A4
:1022D0000D03A0910E03B0910F039C0180911F0785
:1022E00090912007821B930B9093200480931F04EE
:1022F00010922C0710922B071092E9031092EA0318
:102300008091E90380937C008091EA03882319F08F
:102310008FEE80937A00FF91EF91DF91CF91BF9183
:10232000AF919F918F917F916F915F914F913F916D
:102330002F911F910F91FF90EF900F900FBE0F9074
:102340001F90189590E2E2E1F3E08FE491938150C1
:1023500087FFFCCF08951F93CF93DF938091F10304
:1023600080FF0FC08091F503882311F0815002C0D7
:1023700080916C038093F5030E94A2118FEF8093EC
:10238000B3038091F10381FF0AC08091F5038F5F51
:102390008093F5030E94A2118FEF8093B303809185
:1023A000F103992780FF04C081FF02C01092F5035A
:1023B0008091F503282F33278A3040F481E1809300
:1023C000F2033F932F9382E791E007C080E180936F
:1023D000F2033F932F9387E791E09F938F9381E0E0
:1023E0008F930E94D3090F900F900F900F900F9032
:1023F0008091F503C82FDD27C530D10509F46AC2E5
:10240000C630D105ACF4C230D10509F4E9C0C330FF
:10241000D10534F4209739F1219709F477C0FDC430
:10242000C330D10509F44EC1249709F4B7C1F5C4EE
:10243000C830D10509F4A9C3C930D10544F4C63068
:10244000D10509F41CC3279709F47EC3E6C4CA303A
:10245000D10509F432C4CA30D1050CF4D9C32B9785
:1024600009F471C4DAC41092F2038CE791E09F93EF
:102470008F9311E01F930E94D30984E18093F203AC
:102480000F900F900F908BE690E09F938F9385E4D1
:1024900090E09F938F93DF93CF93809101016AE047
:1024A0000E943843892F99279F938F938091010130
:1024B0000E94384399279F938F938CE891E09F93D4
:1024C0008F931F930E94D30988E28093F2038DB704
:1024D0009EB70D960FB6F8949EBF0FBE8DBF0E949B
:1024E000790299279F938F9381EA91E09F938F932D
:1024F0001F930E94D3098CE38093F2030F900F90F7
:102500000F900F900F908EEA91E061C08091690763
:1025100080FF4AC01092F20380911F049091200422
:102520009F938F938EEB91E09F938F9311E01F9376
:102530000E94D30984E18093F2030F900F900F90D3
:102540000F900F9080911D0490911E049F938F9384
:102550008DEC91E09F938F931F930E94D30988E2A3
:102560008093F2030F900F900F900F900F90809137
:102570000A0390910B039F938F938CED91E09F93AF
:102580008F931F930E94D3098CE38093F2030F90E3
:102590000F900F900F900F908091280799279F938D
:1025A0008F938BEE91E07EC384E18093F2038AEFF8
:1025B00091E09F938F9311E01F930E94D30988E2CB
:1025C0008093F2030F900F900F9081E092E09F9321
:1025D0008F931F930E94D3090F900F900F9022C4E6
:1025E0001092F2038FE092E09F938F93C1E0CF931C
:1025F0000E94D30984E18093F2030F900F900F9013
:102600008091760490917704A0917804B091790438
:10261000B7FF04C081509C4FAF4FBF4F6AE0B595E4
:10262000A795979587956A95D1F7BF93AF939F9399
:102630008F9389E192E09F938F93CF930E94D30968
:1026400088E28093F2038DB79EB707960FB6F89491
:102650009EBF0FBE8DBF80916E0490916F04A091BC
:102660007004B0917104B7FF04C081509C4FAF4F0C
:10267000BF4F5AE0B595A795979587955A95D1F78D
:10268000BF93AF939F938F9388E292E09F938F9332
:10269000CF930E94D3098CE38093F2038DB79EB74A
:1026A00007960FB6F8949EBF0FBE8DBF80913C0475
:1026B00090913D049F938F9387E392E09F938F9334
:1026C000CF93F3C21092F2038091390790913A07A9
:1026D0009F938F9380913707909138079F938F93A3
:1026E00086E492E09F938F9311E01F930E94D30999
:1026F00084E18093F2038DB79EB707960FB6F894E6
:102700009EBF0FBE8DBF80913D0790913E079F9366
:102710008F9380913B0790913C079F938F9386E521
:1027200092E09F938F931F930E94D30988E2809336
:10273000F2038DB79EB707960FB6F8949EBF0FBEF3
:102740008DBF80914107909142079F938F93809115
:102750003F07909140079F938F9386E692E09F9367
:102760008F931F930E94D3098CE38093F2038DB75C
:102770009EB707960FB6F8949EBF0FBE8DBF80918F
:102780004507909146079F938F93809143079091BF
:1027900044079F938F9386E792E031C31092F20330
:1027A00080916207E82FFF27EE0FFF1FEB5CF84FC9
:1027B000808191819F938F9380916107E82FFF27FC
:1027C000EE0FFF1FEB5CF84F808191819F938F93F9
:1027D00086E892E09F938F9311E01F930E94D309A4
:1027E00084E18093F2038DB79EB707960FB6F894F5
:1027F0009EBF0FBE8DBF80916407E82FFF27EE0FAD
:10280000FF1FEB5CF84F808191819F938F938091A4
:102810006307E82FFF27EE0FFF1FEB5CF84F808167
:1028200091819F938F9386E992E09F938F931F935B
:102830000E94D30988E28093F2038DB79EB7079672
:102840000FB6F8949EBF0FBE8DBF80916607E82F2C
:10285000FF27EE0FFF1FEB5CF84F808191819F9364
:102860008F9380916507E82FFF27EE0FFF1FEB5C2A
:10287000F84F808191819F938F9386EA92E09F9396
:102880008F931F930E94D3098CE38093F2038DB73B
:102890009EB707960FB6F8949EBF0FBE8DBF80916E
:1028A0006807E82FFF27EE0FFF1FEB5CF84F8081D2
:1028B00091819F938F9380916707E82FFF27EE0FF9
:1028C000FF1FEB5CF84F808191819F938F9386EB84
:1028D00092E095C21092F20386EC92E09F938F9360
:1028E000C1E0CF930E94D309809101010F900F9016
:1028F0000F908A3009F05AC084E18093F2038091EE
:102900008E0490918F049F938F938091E703909111
:10291000E80320918E0430918F04821B930B9F93C8
:102920008F9384ED92E09F938F93CF930E94D3096E
:1029300088E28093F2038DB79EB707960FB6F8949E
:102940009EBF0FBE8DBF80918C0490918D049F938C
:102950008F938091E5039091E60320918C04309150
:102960008D04821B930B9F938F9383EE92E09F9332
:102970008F93CF930E94D3098CE38093F2038DB79A
:102980009EB707960FB6F8949EBF0FBE8DBF80917D
:102990008A0490918B049F938F938091D407909198
:1029A000D5079F938F9382EF92E065C084E1809377
:1029B000F20380918E0490918F0497FD0196959576
:1029C00087959F938F938091E7039091E8032091DF
:1029D0008E0430918F04821B930B9F938F9381E021
:1029E00093E09F938F93CF930E94D30988E28093C3
:1029F000F2038DB79EB707960FB6F8949EBF0FBE31
:102A00008DBF80918C0490918D0497FD01969595D2
:102A100087959F938F938091E5039091E603209192
:102A20008C0430918D04821B930B9F938F9380E1D4
:102A300093E09F938F93CF930E94D3098CE380936D
:102A4000F2038DB79EB707960FB6F8949EBF0FBEE0
:102A50008DBF80918A0490918B0497FD0196959586
:102A600087959F938F938091D4079091D5079F93DB
:102A70008F938FE193E09F938F93CF93C3C1109275
:102A8000F2038EE293E09F938F9311E01F930E94D5
:102A9000D30984E18093F2030F900F900F908091FF
:102AA0008404909185049F938F938091DF0390918C
:102AB000E0039F938F938BE393E09F938F931F93F8
:102AC0000E94D30988E28093F2038DB79EB70796E0
:102AD0000FB6F8949EBF0FBE8DBF80918204909177
:102AE00083049F938F938091E1039091E2039F93DE
:102AF0008F938AE493E09F938F931F930E94D3094F
:102B00008CE38093F2038DB79EB707960FB6F894C7
:102B10009EBF0FBE8DBF80917C0490917D04A091DB
:102B20007E04B0917F04BC01CD010E943A42DC01D9
:102B3000CB019F938F938091BA079091BB079F938E
:102B40008F9389E593E05BC184E18093F2038091E8
:102B50001003909111039F938F9388E693E09F93C6
:102B60008F9311E01F930E94D30988E28093F203B0
:102B70000F900F900F900F900F9080912A0499273B
:102B80009F938F9387E793E08DC01092F20386E8BE
:102B900093E09F938F9311E01F930E94D30984E1E8
:102BA0008093F2030F900F900F90809138049091D2
:102BB00039049F938F9385E993E09F938F931F939D
:102BC0000E94D30988E28093F2030F900F900F9038
:102BD0000F900F9080913C0490913D049F938F93B0
:102BE00084EA93E09F938F931F930E94D3098CE311
:102BF0008093F2030F900F900F900F900F908091A1
:102C00003A0490913B049F938F9383EB93E04AC0E7
:102C10001092F20380913104909132049F938F932C
:102C200082EC93E09F938F9311E01F930E94D3094E
:102C300084E18093F2030F900F900F900F900F900C
:102C400080912F04909130049F938F938EEC93E0AA
:102C50009F938F931F930E94D30988E28093F2037E
:102C60000F900F900F900F900F9080912D049091E6
:102C70002E049F938F938AED93E09F938F931F93DE
:102C80000E94D3098CE38093F2030F900F900F9072
:102C90000F900F9080912B0490912C049F938F9311
:102CA00086EE93E09F938F931F930E94D3090F901A
:102CB0000F900F900F900F90B5C01092F20382EF1B
:102CC00093E09F938F9311E01F930E94D30984E1B7
:102CD0008093F2030F900F900F90809172039927C9
:102CE0009F938F938AEF93E09F938F931F930E94FC
:102CF000D30988E28093F2030F900F900F900F900A
:102D00000F908091C6039091C7039F938F9388E0A3
:102D100094E09F938F931F930E94D3098CE3809339
:102D2000F2030F900F900F900F900F9080918507F6
:102D300099279F938F938091840799279F938F93CF
:102D400086E194E05CC01092F20384E294E09F93E9
:102D50008F9311E01F930E94D30984E18093F203C3
:102D60000F900F900F9080913806992787FD9095CE
:102D70009F938F9380913706992787FD90959F9316
:102D80008F9384E394E09F938F931F930E94D309C2
:102D900088E28093F2038DB79EB707960FB6F8943A
:102DA0009EBF0FBE8DBF80913906992787FD9095F4
:102DB0009F938F9380913A0699279F938F9384E4F2
:102DC00094E09F938F931F930E94D3098CE3809389
:102DD000F2038DB79EB707960FB6F8949EBF0FBE4D
:102DE0008DBF80913E0699279F938F9380913B06DC
:102DF000992787FD90959F938F9384E594E09F9307
:102E00008F931F930E94D3098DB79EB707960FB675
:102E1000F8949EBF0FBE8DBF05C0815080936C0398
:102E20001092F5031092F103DF91CF911F91089555
:102E30001092B9008AE28093B800089585EA8093E1
:102E4000BC0080E090E0089584E98093BC00089580
:102E50001092B9008093BB0085E88093BC0080E0AD
:102E600090E008950E9424171092F8038091BB000F
:102E70001092F70380E88093BC001092BD0010927E
:102E8000BA001092BB001092B9001092B8000E94D4
:102E900018170E941E1780E00E94281708951F929D
:102EA0000F920FB60F9211242F933F934F935F937E
:102EB0006F937F938F939F93AF93BF93EF93FF9302
:102EC0008091F803282F33278F5F8093F8032330F6
:102ED000310509F446C0243031054CF42130310568
:102EE000D1F0223031057CF5232B81F083C02530D1
:102EF0003105E1F1253031050CF441C026303105B2
:102F0000F1F12730310509F45AC074C08091F703FC
:102F1000880F8E5A51C08091F703282F33278F5F77
:102F20008093F7032130310509F43EC0223031058A
:102F30001CF4232BB1F15EC022303105C1F12330E6
:102F40003105C1F157C00E9424178091F7038430E6
:102F500018F41092F80302C01092F7030E941E1793
:102F600049C08091F603880F8D5A26C08091F603E0
:102F7000E82FFF27E35DF84F8091BB0080838091AD
:102F8000F60399278130910579F0823091051CF480
:102F9000892B39F02FC08230910549F0039751F009
:102FA00029C08091AB0708C08091B20705C080910D
:102FB000CC0702C08091CE070E9428171BC09091B9
:102FC000F603E92FFF27E35DF84F8091BB00848370
:102FD000892F8F5F8093F603843010F01092F603F0
:102FE0000E9424178AE090E090938B0380938A03D9
:102FF0001092F8038091BC0080688093BC00FF9120
:10300000EF91BF91AF919F918F917F916F915F9160
:103010004F913F912F910F900FBE0F901F901895D9
:1030200083EC8093810080916F00806280936F00B9
:1030300010928B0410928A0410928D0410928C04CA
:1030400010928F0410928E0408951F920F920FB663
:103050000F9211240F931F932F933F934F935F93DE
:103060006F937F938F939F93AF93BF93CF93DF9390
:10307000EF93FF9340918600509187008091F90370
:103080009091FA03481B590B80918600909187001C
:103090009093FA038093F903CA018D549440A09150
:1030A000FB03B091FC03835F9A4158F4149714F02A
:1030B00010926D0381E090E09093FC038093FB03FA
:1030C00099C0AA30B1050CF095C0CA018B5F904041
:1030D000845B914008F071C0425D5140FD01EA0FF0
:1030E000FB1FEB5CF84F80819181FA01E81BF90B23
:1030F000CF01F7FF03C0909581959F4F06974CF441
:1031000080912A04883C28F480912A04865F809369
:103110002A04FD01EA0FFB1FEB5CF84F80819181CF
:103120009C01220F331F280F391F240F351F37FF33
:1031300002C02D5F3F4FE901D595C795D595C7953D
:10314000CA0101968C179D0714F4219706C04150BF
:103150005040C417D5070CF4219680912A04833C73
:10316000D8F08D010A0F1B1FF801EB5CF84F80812E
:1031700091819E01281B390BC90163E070E00E9418
:103180005843CB01880F991F860F971F055B184F77
:10319000F8019183808307C0AA0FBB1FA55BB84FBE
:1031A00011961C921E92E091FB03F091FC03EE0F2E
:1031B000FF1FEB5CF84FD183C0838091FB0390919C
:1031C000FC0301969093FC038093FB03059711F495
:1031D0005D9A01C05D988091FB039091FC0386305D
:1031E000910511F45C9A01C05C98079711F45B9A01
:1031F00001C05B98FF91EF91DF91CF91BF91AF91AB
:103200009F918F917F916F915F914F913F912F91FE
:103210001F910F910F900FBE0F901F90189581E096
:103220008093610782E08093620783E08093630765
:1032300054E05093640735E03093650786E080934F
:10324000660787E08093670728E02093680788E691
:10325000809369079EE190936A078BEF80936C07D8
:103260008AE080936D0790936B0790936F0750935C
:103270006E078FE080937007909371076CE0609306
:1032800072072093730786EE8093740790937507F7
:1032900080E88093760780E58093770746E940933E
:1032A00078078EE58093790783E280937A0790937D
:1032B0007B0710927C0780E280937D078DEF8093DF
:1032C0007E0724E620937F079AE5909380079093EA
:1032D0008107909391079093920710929307109211
:1032E00094072093820788E28093830710929607C1
:1032F00082E3809384074093850730938607809309
:103300008707909388078093890710929507909379
:103310008A0730938B0720938C0720938D0780E1D9
:1033200080938E0750938F0720939007ABE9B7E007
:10333000ECE8F3E001900D926150E1F7089581E02F
:103340008093610782E08093620743E040936307C4
:1033500074E07093640755E05093650736E030934E
:10336000660787E08093670728E02093680788E670
:10337000809369079EE190936A078BEF80936C07B7
:103380008AE080936D0790936B0790936F0740934B
:103390006E076CE06093700780E180937107309353
:1033A00072072093730786EE8093740790937507D6
:1033B00080E88093760780E58093770788E780939D
:1033C00078078EE58093790783E280937A0790935C
:1033D0007B0710927C0740E240937D078DEF80933E
:1033E0007E0734E630937F072AE5209380072093F9
:1033F00081072093910720939207109293071092D0
:1034000094073093820788E280938307109296078F
:1034100092E39093840786E980938507509386070B
:1034200090938707209388079093890710929507B8
:1034300020938A0750938B0730938C0730938D0726
:1034400040938E0770938F078BE480939007ABE9CE
:10345000B7E0E3E9F3E001900D926150E1F70895E0
:1034600081E08093610782E08093620743E04093AC
:10347000630764E06093640755E05093650736E0A6
:103480003093660787E08093670728E020936807FA
:1034900088EE809369079EE190936A078BEF809393
:1034A0006C078AE080936D0790936B0790936F078A
:1034B00040936E072093700740E14093710730936B
:1034C00072072093730786EE8093740790937507B5
:1034D00080E88093760734E63093770788E7809317
:1034E00078078EE58093790783E280937A0784E1F9
:1034F00080937B0710927C0740937D078DEF80932C
:103500007E0730937F079AE5909380079093810719
:1035100090939107909392071092930710929407BB
:103520003093820788E2809383071092960722E304
:103530002093840786E9809385075093860720931C
:103540008707909388072093890710929507909397
:103550008A0750938B0730938C0730938D0780E256
:1035600080938E0760938F0720939007ABE9B7E0B5
:10357000EBE9F3E08CE001900D928150E1F70895C2
:10358000CF93C82FC150CF3F81F080912104882371
:1035900061F484E690E09093CA038093C9038AEFB4
:1035A00090E00E94760DC15080F7CF91089510925F
:1035B0007A008091E7039091E8039093B407809399
:1035C000B3078091E5039091E6039093AA07809357
:1035D000A9078091E3039091E4039093D50780932A
:1035E000D4078091DF039091E003AA2797FDA0956F
:1035F000BA2FBC01CD012CE030E040E050E00E9449
:103600001943DC01CB019093D2078093D1078091BD
:10361000E1039091E203AA2797FDA095BA2FBC0180
:10362000CD010E941943DC01CB019093E207809306
:10363000E1078091DD039091DE039093BB078093B7
:10364000BA078FEE80937A0080916507E82FFF27F5
:10365000EE0FFF1FEB5CF84F8081918182599F4FE5
:103660002091310430913204281739071CF42F5F60
:103670003F4F0CC08081918182599F4F82179307E1
:103680004CF42115310531F0215030403093320493
:103690002093310480916607E82FFF27EE0FFF1F6C
:1036A000EB5CF84F8081918182599F4F20912F04CC
:1036B00030913004281739071CF42F5F3F4F0CC09E
:1036C0008081918182599F4F821793074CF4211575
:1036D000310531F0215030403093300420932F04D5
:1036E00080916707E82FFF27EE0FFF1FEB5CF84F75
:1036F0008081918182599F4F20912D0430912E0419
:10370000281739071CF42F5F3F4F0CC0808191812F
:1037100082599F4F821793074CF42115310531F0E0
:103720002150304030932E0420932D04809168075F
:10373000E82FFF27EE0FFF1FEB5CF84F8081918190
:1037400082599F4F20912B0430912C042817390760
:103750001CF42F5F3F4F0CC08081918182599F4F95
:10376000821793074CF42115310531F02150304078
:1037700030932C0420932B048091310490913204D7
:1037800097FF05C010923204109231040AC08F3F97
:10379000910539F034F08FEF90E0909332048093EC
:1037A000310480912F049091300497FF05C010924E
:1037B000300410922F040AC08F3F910539F034F085
:1037C0008FEF90E09093300480932F0480912D042C
:1037D00090912E0497FF05C010922E0410922D0494
:1037E0000AC08F3F910539F034F08FEF90E090934D
:1037F0002E0480932D0480912B0490912C0497FF2C
:1038000005C010922C0410922B040AC08F3F910522
:1038100039F034F08FEF90E090932C0480932B04D8
:1038200080918C079927AA27BB27BC01CD0124ECE6
:1038300039E040E050E00E941943DC01CB01809365
:10384000840390938503A0938603B09387038091AC
:103850008D079927AA27BB27BC01CD010E941943D8
:10386000DC01CB018093800390938103A0938203BA
:10387000B0938303089510928504109284041092EB
:1038800083041092820480E090E0A0E0B0E0809396
:103890007C0490937D04A0937E04B0937F041092E7
:1038A0008F0410928E0410928D0410928C0410924A
:1038B0008B0410928A0410920A04109209040E9448
:1038C000D71A84E690E00E94830D0E94D71A809157
:1038D000690780FF10C080910A0390910B03875BFA
:1038E000934038F480910A0390910B038E5E9240CE
:1038F00010F40E94510E8091E7039091E803909399
:103900008F0480938E048091E5039091E603909359
:103910008D0480938C048091E3039091E403909351
:103920008B0480938A0480918C0490918D049093F1
:1039300089048093880480918E0490918F049093E1
:1039400087048093860444E050E0DA010E94A84393
:10395000802D853078F18091E1079091E207809188
:10396000E1079091E20797FF03C0909581959F4FE3
:103970006CE070E00E94584370938304609382046B
:103980008091D1079091D2078091D1079091D20771
:1039900097FF03C0909581959F4F6CE070E00E9467
:1039A0005843709385046093840480911D0790911F
:1039B0001E0734C0DA010E94A843802D9927982F52
:1039C0008827DA0111960E94A843202D820F911DAD
:1039D0009093850480938404DA0112960E94A84390
:1039E000802D9927982F8827DA0113960E94A843E3
:1039F000202D820F911D9093830480938204DA011D
:103A000014960E94A843802D9927982F8827DA01C1
:103A100015960E94A843202D820F911DAA2797FD7D
:103A2000A095BA2FBC01CD010E945742DC01CB0109
:103A300080937C0490937D04A0937E04B0937F04D4
:103A40001092560410925704109258041092590480
:103A50001092520410925304109254041092550480
:103A600010924E0410924F04109250041092510480
:103A700010924A0410924B0410924C0410924D0480
:103A80001092460410924704109248041092490480
:103A90001092B4071092B3071092AA071092A907C8
:103AA0001092D5071092D40780910C0390910D03CA
:103AB000A0910E03B0910F039093200780931F07EE
:103AC0001092D6031092D50310923E0410923F0438
:103AD000109240041092410480913C0490913D0466
:103AE00090933B0480933A040E94063F82E390E067
:103AF0009093CA038093C90380918C079927AA27C2
:103B0000BB27BC01CD0124EC39E040E050E00E942D
:103B10001943DC01CB018856954CAF4FBF4F8093C2
:103B2000840390938503A0938603B09387038091C9
:103B30008D079927AA27BB27BC01CD010E941943F5
:103B4000DC01CB018856954CAF4FBF4F809380036B
:103B500090938103A0938203B093830310926F0329
:103B600010926E0380913C0490913D04AA2797FD2A
:103B7000A095BA2FBC01CD012EE036E040E050E028
:103B80000E941943DC01CB018093DD079093DE078F
:103B9000A093DF07B093E00710923404109233042F
:103BA00081E08093000108959F92AF92BF92CF92DF
:103BB000DF92EF92FF920F931F93CF93DF93809149
:103BC0008A0490918B042091E3033091E403821BDB
:103BD000930B9093D5078093D4078091E503909140
:103BE000E60320918C0430918D04821B930B9093FB
:103BF000AA078093A9078091E7039091E803209199
:103C00008E0430918F04821B930B9093B4078093A2
:103C1000B3078091A9079091AA0790931207809308
:103C200011078091D1079091D2077C010027F7FC02
:103C30000095102F8091DF039091E003AA2797FD54
:103C4000A095BA2FBC01CD012CE030E040E050E05F
:103C50000E941943DC01CB01E80EF91E0A1F1B1F4D
:103C600017FF05C00894E11CF11C011D111D1595DD
:103C70000795F794E794F092D207E092D1078091EC
:103C8000E1079091E2077C010027F7FC0095102FD7
:103C90008091E1039091E203AA2797FDA095BA2FA6
:103CA000BC01CD012CE030E040E050E00E9419431F
:103CB000DC01CB01E80EF91E0A1F1B1F17FF05C010
:103CC0000894E11CF11C011D111D15950795F79431
:103CD000E794F092E207E092E1078091BA079091B1
:103CE000BB079C01442737FD4095542F8091DD038D
:103CF0009091DE03AA2797FDA095BA2F280F391FB0
:103D00004A1F5B1F57FF04C02F5F3F4F4F4F5F4F4E
:103D100055954795379527953093BB072093BA075C
:103D20008091DF039091E0036CE070E0869F90014A
:103D3000879F300D969F300D1124C9019C014427A7
:103D400037FD4095542F8091660490916704A091AF
:103D50006804B0916904820F931FA41FB51F80935C
:103D6000660490936704A0936804B09369048091FB
:103D7000E1039091E203869F9001879F300D969F0B
:103D8000300D1124C9019C01442737FD4095542F63
:103D90008091620490916304A0916404B0916504E1
:103DA000820F931FA41FB51F809362049093630436
:103DB000A0936404B09365048091C2079091C307F7
:103DC0002091DF033091E003820F931F9093C3078C
:103DD0008093C2078091D6079091D7072091E10385
:103DE0003091E203820F931F9093D7078093D607F9
:103DF0008091800490918104019690938104809336
:103E0000800480915E0490915F04A0916004B09161
:103E10006104BC01CD010E9457425B016C0180919D
:103E20001D0790911E07AA2797FDA095BA2FBC01E8
:103E3000CD010E9457427B018C0180917C049091BE
:103E40007D04A0917E04B0917F049C01AD01C80166
:103E5000B7010E94B141DC01CB019C01AD01C6015B
:103E6000B5010E94B241DC01CB01BC01CD010E9431
:103E70003A42DC01CB0180935E0490935F04A093EF
:103E80006004B09361048091D4079091D507AA276C
:103E900097FDA095BA2FC091DD07D091DE07E09184
:103EA000DF07F091E007C80FD91FEA1FFB1FC0937F
:103EB000DD07D093DE07E093DF07F093E007809102
:103EC000D4079091D5079C01442737FD4095542F86
:103ED0008091460490914704A0914804B091490410
:103EE000820F931FA41FB51F80934604909347042D
:103EF000A0934804B09349048091D4079091D507CA
:103F00009C01442737FD4095542F809142049091A5
:103F10004304A0914404B0914504820F931FA41F51
:103F2000B51F8093420490934304A0934404B0933C
:103F30004504C03B33E8D30738E0E30730E0F3073C
:103F400064F0C05BD348E840F040C093DD07D093F5
:103F5000DE07E093DF07F093E0078091DD079091A3
:103F6000DE07A091DF07B091E007B7FF0CC08055D6
:103F70009C47A74FBF4F8093DD079093DE07A09328
:103F8000DF07B093E00790901804992009F0C3C0B0
:103F900080911704882309F0BEC08091690786FFCD
:103FA000BAC08091D4079091D507AA2797FDA09514
:103FB000BA2F2091560430915704409158045091E3
:103FC0005904BC01CD010E9419439B01AC0197FF2C
:103FD00004C02150384F4F4F5F4F6BE055954795C8
:103FE000379527956A95D1F780910A04E82EFF242A
:103FF00000271127CA01B901A80197010E9419439E
:10400000DC01CB018093900490939104A0939204DF
:10401000B0939304B7FF04C08150904FAF4FBF4F90
:104020005C016D013CE0D594C794B794A7943A9590
:10403000D1F7A0929004B0929104C0929204D092D1
:1040400093048091D4079091D507AA2797FDA09556
:10405000BA2F20914E0430914F044091500450915A
:104060005104BC01CD010E94194397FF04C0615067
:10407000784F8F4F9F4F2BE0959587957795679554
:104080002A95D1F7A80197010E941943DC01CB01C1
:104090008093940490939504A0939604B09397040E
:1040A000B7FF04C08150904FAF4FBF4F9C01AD018F
:1040B0001CE055954795379527951A95D1F720938C
:1040C0009404309395044093960450939704D6013A
:1040D000C501D7FE07C0B095A095909581959F4FDB
:1040E000AF4FBF4F81389105A105B10584F4DA01C6
:1040F000C90157FF07C0B095A095909581959F4F36
:10410000AF4FBF4F81389105A105B105A4F081E003
:104110008093350410C0109294041092950410926C
:1041200096041092970410929004109291041092A9
:104130009204109293048091A9079091AA0720916C
:10414000900430919104820F931F9093AA0780935B
:10415000A90700910904202F332744275527809170
:10416000940490919504A0919604B0919704BC0199
:10417000CD010E9419439B01AC0197FF04C021505F
:104180003E4F4F4F5F4FC9E055954795379527955F
:10419000CA95D1F78091A9079091AA07820F931F22
:1041A0009093AA078093A9078091A9079091AA07E5
:1041B0009C01442737FD4095542F80914A049091EB
:1041C0004B04A0914C04B0914D04820F931FA41F87
:1041D000B51F80934A0490934B04A0934C04B09372
:1041E0004D048091A9079091AA0720911B0430915A
:1041F0001C04821B930B9C01442737FD4095542FD0
:1042000080914E0490914F04A0915004B0915104BC
:10421000820F931FA41FB51F80934E0490934F04E9
:10422000A0935004B0935104C0918003D0918103B6
:10423000E0918203F0918303C817D907EA07FB07CF
:10424000C4F488EA91E6A0E0B0E08C1B9D0BAE0BB5
:10425000BF0B80934E0490934F04A0935004B093EF
:10426000510480934A0490934B04A0934C04B09360
:104270004D0422273327A9012C1B3D0B4E0B5F0B4E
:1042800080914E0490914F04A0915004B09151043C
:1042900082179307A407B507B4F4CE01DF01885A4B
:1042A0009146A040B04080934E0490934F04A09359
:1042B0005004B093510480934A0490934B04A0930C
:1042C0004C04B0934D048091E5039091E6030F9761
:1042D00034F488E19CEF9093AA078093A90780911A
:1042E000E5039091E603079734F480E398EF909309
:1042F000AA078093A907109101011A30A9F48091AF
:10430000E5039091E603835F934034F088EE93E0F9
:104310009093AA078093A9078091E5039091E60303
:104320008A5F9340DCF014C08091E5039091E6032E
:10433000855E974034F088EE93E09093AA078093CF
:10434000A9078091E5039091E603835F974034F0DD
:1043500080ED97E09093AA078093A9078091B30717
:104360009091B4072091940430919504821B930B93
:104370009093B4078093B307202F33274427552702
:104380008091900490919104A0919204B091930433
:10439000BC01CD010E9419439B01AC0197FF04C0F1
:1043A00021503E4F4F4F5F4FB9E055954795379598
:1043B0002795BA95D1F78091B3079091B407821BE6
:1043C000930B9093B4078093B3078091B3079091B8
:1043D000B4079C01442737FD4095542F8091520427
:1043E00090915304A0915404B0915504820F931FEF
:1043F000A41FB51F8093520490935304A0935404B8
:10440000B09355048091B3079091B407209119049B
:1044100030911A04821B930B9C01442737FD409571
:10442000542F8091560490915704A0915804B09154
:104430005904820F931FA41FB51F809356049093B5
:104440005704A0935804B0935904C0918403D091A9
:104450008503E0918603F0918703C817D907EA071F
:10446000FB07C4F488EA91E6A0E0B0E08C1B9D0B4A
:10447000AE0BBF0B8093560490935704A09358043F
:10448000B09359048093520490935304A09354041E
:10449000B093550422273327A9012C1B3D0B4E0B4B
:1044A0005F0B8091560490915704A0915804B091ED
:1044B000590482179307A407B507B4F4CE01DF01AE
:1044C000885A9146A040B040809356049093570478
:1044D000A0935804B09359048093520490935304CA
:1044E000A0935404B09355048091E7039091E8039E
:1044F0000F9734F488E19CEF9093B4078093B3074F
:104500008091E7039091E803079734F480E398EFF4
:104510009093B4078093B3071A30A9F48091E7030E
:104520009091E803835F934034F088EE93E090939A
:10453000B4078093B3078091E7039091E8038A5F03
:104540009340DCF014C08091E7039091E803855E0E
:10455000974034F088EE93E09093B4078093B307CC
:104560008091E7039091E803835F974034F080EDFA
:1045700097E09093B4078093B3078FEE80937A000F
:104580008091460490914704A0914804B091490459
:1045900080935A0490935B04A0935C04B0935D04F1
:1045A0008091560490915704A0915804B0915904F9
:1045B0008093760490937704A0937804B093790461
:1045C00080914E0490914F04A0915004B0915104F9
:1045D00080936E0490936F04A0937004B093710461
:1045E0008091520490915304A0915404B0915504C9
:1045F0008093720490937304A0937404B093750431
:1046000080914A0490914B04A0914C04B0914D04C8
:1046100080936A0490936B04A0936C04B0936D0430
:104620008091690787FF6EC0992009F06BC0809167
:104630001704882309F066C08091B3079091B407EE
:10464000893C91058CF02091B3073091B407220F7B
:10465000331F220F331F8091B3079091B407820F4D
:10466000931F8052934017C08091B3079091B40775
:1046700088539F4FA4F42091B3073091B407220FC1
:10468000331F220F331F8091B3079091B407820F1D
:10469000931F805E9C4F9093B4078093B3078091E3
:1046A000A9079091AA07893C91058CF02091A90750
:1046B0003091AA07220F331F220F331F8091A907C1
:1046C0009091AA07820F931F8052934017C0809148
:1046D000A9079091AA0788539F4FA4F42091A90796
:1046E0003091AA07220F331F220F331F8091A90791
:1046F0009091AA07820F931F805E9C4F9093AA0708
:104700008093A90780916507E82FFF27EE0FFF1F11
:10471000EB5CF84F8081918182599F4F2091310449
:1047200030913204281739071CF42F5F3F4F0CC01B
:104730008081918182599F4F821793074CF42115F4
:10474000310531F021503040309332042093310450
:1047500080916607E82FFF27EE0FFF1FEB5CF84FF5
:104760008081918182599F4F20912F043091300494
:10477000281739071CF42F5F3F4F0CC080819181AF
:1047800082599F4F821793074CF42115310531F060
:10479000215030403093300420932F0480916707DC
:1047A000E82FFF27EE0FFF1FEB5CF84F8081918110
:1047B00082599F4F20912D0430912E0428173907DC
:1047C0001CF42F5F3F4F0CC08081918182599F4F15
:1047D000821793074CF42115310531F021503040F8
:1047E00030932E0420932D0480916807E82FFF2733
:1047F000EE0FFF1FEB5CF84F8081918182599F4F34
:1048000020912B0430912C04281739071CF42F5FBA
:104810003F4F0CC08081918182599F4F821793072F
:104820004CF42115310531F02150304030932C04E7
:1048300020932B04809131049091320497FF05C09E
:1048400010923204109231040AC08F3F910539F062
:1048500034F08FEF90E09093320480933104809194
:104860002F049091300497FF05C0109230041092ED
:104870002F040AC08F3F910539F034F08FEF90E09C
:104880009093300480932F0480912D0490912E04F6
:1048900097FF05C010922E0410922D040AC08F3F7E
:1048A000910539F034F08FEF90E090932E048093CF
:1048B0002D0480912B0490912C0497FF05C0109239
:1048C0002C0410922B040AC08F3F910539F034F06C
:1048D0008FEF90E090932C0480932B04DF91CF9185
:1048E0001F910F91FF90EF90DF90CF90BF90AF900E
:1048F0009F90089580912104882301F58093B20749
:104900008093AB078093CC078093CE078091AE0352
:10491000882311F08093AB078091AF03882311F0B7
:104920008093B2078091B003882311F08093CE0763
:104930008091B103882311F08093CC078091AB075D
:1049400099279093F2068093F1068091B2079927F8
:104950009093F4068093F3068091CE079927909365
:10496000F6068093F5068091CC0799279093F80678
:104970008093F7061092F8031092F7030E941E1717
:1049800008951F9380916C078B3F98F08B3F19F42B
:10499000809131040EC08C3F19F480912F0409C01E
:1049A0008D3F19F480912D0404C08E3F21F4809135
:1049B0002B0480937A0380917A03882321F08F3F20
:1049C00011F480937A0380916B078B3F98F08B3FB3
:1049D00019F4809131040EC08C3F19F480912F049A
:1049E00009C08D3F19F480912D0404C08E3F21F43D
:1049F00080912B0480937B0380917B03882329F093
:104A0000843618F084E680937B0380916D078B3F9A
:104A100098F08B3F19F4809131040EC08C3F19F44B
:104A200080912F0409C08D3F19F480912D0404C09A
:104A30008E3F21F480912B04809379038091790338
:104A4000882329F0843618F084E6809379038091D6
:104A50006F078B3F98F08B3F19F4809131040EC0A3
:104A60008C3F19F480912F0409C08D3F19F4809177
:104A70002D0404C08E3F21F480912B048093780391
:104A800080917803882321F08F3F11F4809378037D
:104A9000809176078B3F98F08B3F19F48091310419
:104AA0000EC08C3F19F480912F0409C08D3F19F47A
:104AB00080912D0404C08E3F21F480912B048093BB
:104AC000770380917703882321F08F3F11F480933F
:104AD0007703809177078B3F98F08B3F19F4809193
:104AE00031040EC08C3F19F480912F0409C08D3F12
:104AF00019F480912D0404C08E3F21F480912B0481
:104B000080937603809176038B3010F48AE002C0A4
:104B10008F3F11F480937603809178078B3F98F054
:104B20008B3F19F4809131040EC08C3F19F48091B1
:104B30002F0409C08D3F19F480912D0404C08E3FCD
:104B400021F480912B048093750380917503882351
:104B500021F08F3F11F48093750380917D078B3F87
:104B600098F08B3F19F4809131040EC08C3F19F4FA
:104B700080912F0409C08D3F19F480912D0404C049
:104B80008E3F21F480912B048093730380917303F3
:104B9000882321F08F3F11F48093730380917E0767
:104BA0008B3F98F08B3F19F4809131040EC08C3FFD
:104BB00019F480912F0409C08D3F19F480912D04C0
:104BC00004C08E3F21F480912B04809312048091C5
:104BD0001204882321F08F3F11F4809312048091F6
:104BE0007F078B3F98F08B3F19F4809131040EC002
:104BF0008C3F19F480912F0409C08D3F19F48091E6
:104C00002D0404C08E3F21F480912B048093110465
:104C100080911104882321F08F3F11F480931104B7
:104C2000809180078B3F98F08B3F19F4809131047D
:104C30000EC08C3F19F480912F0409C08D3F19F4E8
:104C400080912D0404C08E3F21F480912B04809329
:104C5000100480911004882321F08F3F11F4809379
:104C60001004809181078B3F98F08B3F19F480915D
:104C700031040EC08C3F19F480912F0409C08D3F80
:104C800019F480912D0404C08E3F21F480912B04EF
:104C900080930F0480910F04882321F08F3F11F43B
:104CA00080930F04809191078B3F98F08B3F19F40C
:104CB000809131040EC08C3F19F480912F0409C0FB
:104CC0008D3F19F480912D0404C08E3F21F4809112
:104CD0002B0480930E0480910E04882321F08F3FD3
:104CE00011F480930E04809192078B3F98F08B3FD4
:104CF00019F4809131040EC08C3F19F480912F0477
:104D000009C08D3F19F480912D0404C08E3F21F419
:104D100080912B0480930D0480910D04882321F051
:104D20008F3F11F480930D04809193078B3F98F08F
:104D30008B3F19F4809131040EC08C3F19F480919F
:104D40002F0409C08D3F19F480912D0404C08E3FBB
:104D500021F480912B0480930C0480910C0488230F
:104D600021F08F3F11F480930C04809194078B3FC6
:104D700098F08B3F19F4809131040EC08C3F19F4E8
:104D800080912F0409C08D3F19F480912D0404C037
:104D90008E3F21F480912B0480930B0480910B04AF
:104DA000882321F08F3F11F480930B0480918207B8
:104DB0008B3F98F08B3F19F4809131040EC08C3FEB
:104DC00019F480912F0409C08D3F19F480912D04AE
:104DD00004C08E3F21F480912B0480937203809154
:104DE0007203882321F08F3F11F480937203809126
:104DF00087078B3F98F08B3F19F4809131040EC0E8
:104E00008C3F19F480912F0409C08D3F19F48091D3
:104E10002D0404C08E3F21F480912B0480937103F4
:104E200080917103882321F08F3F11F480937103E7
:104E300080918A078B3F98F08B3F19F48091310461
:104E40000EC08C3F19F480912F0409C08D3F19F4D6
:104E500080912D0404C08E3F21F480912B04809317
:104E60000A0480910A04882321F08F3F11F4809373
:104E70000A0480918B078B3F98F08B3F19F4809147
:104E800031040EC08C3F19F480912F0409C08D3F6E
:104E900019F480912D0404C08E3F21F480912B04DD
:104EA0008093090480910904882321F08F3F11F435
:104EB00080930904809190078B3F98F08B3F19F401
:104EC000809131040EC08C3F19F480912F0409C0E9
:104ED0008D3F19F480912D0404C08E3F21F4809100
:104EE0002B048093700380917003882321F08F3FFF
:104EF00011F48093700310917303812F992787FD1C
:104F00009095A92FB92FBC01CD010E94574217FFE0
:104F100006C020E030E040E853E40E94B24127E1BF
:104F200037EB41ED58E30E94D142DC01CB01809385
:104F30007C0390937D03A0937E03B0937F038091C5
:104F400074078093D307809173078093B5071F91EF
:104F500008952F923F924F925F926F927F928F921D
:104F60009F92AF92BF92CF92DF92EF92FF920F93F8
:104F70001F93CF93DF93CDB7DEB765970FB6F89445
:104F8000DEBF0FBECDBF0E94D41D299AE09022043F
:104F9000F0902304FA82E9828091B50799270A9656
:104FA000E816F90614F49A83898380912A048436DA
:104FB00008F06EC080910303882399F48091060362
:104FC000909107038F5F9F4F61F488E99AE3909374
:104FD000CA038093C90380E09CE090930703809309
:104FE00006038091B4049091B504009731F00197C5
:104FF0009093B5048093B40404C0109221041092DD
:105000003704809101018A3011F4289A01C0289850
:105010008091FD039091FE03895E9340B0F18091F1
:105020007A07282F33273A83298381E08093370436
:1050300080916107A82FBB27AA0FBB1FFD01E55B6D
:10504000F84F1182108280916207282F3327220F98
:10505000331FC901855B984FFC0111821082AB5C44
:10506000B84F11961C921E922B5C384FD9011196A5
:105070001C921E9280916407E82FFF27EE0FFF1FFE
:10508000EB5CF84F118210828BC21092210488C20F
:1050900080912A048D3808F483C2109237049091CD
:1050A0007B0782E3989FC00111249093B5048093FD
:1050B000B404E981FA81B9976CF08091FD03909175
:1050C000FE03FFEF8F3F9F0729F001969093FE03A9
:1050D0008093FD038091FD039091FE038F3F910526
:1050E00009F0B0F4109298041092990410929A0466
:1050F00010929B0410929C0410929D0410929E04A6
:1051000010929F048A3F910519F481E08093BC04BA
:1051100080916307E82FFF27EE0FFF1FEB5CF84F2E
:1051200080819181813591050CF491C120912104F8
:10513000222309F08CC180916407E82FFF27EE0F2E
:10514000FF1FEB5CF84F808191818C3491050CF44A
:10515000F5C08091B6048F5F8093B604893C08F453
:1051600076C129982093B6041092FE031092FD0395
:1051700030916107E32FFF27EE0FFF1FEB5CF84F25
:105180008081918187349105B4F480916207E82F82
:10519000FF27EE0FFF1FEB5CF84F8081918101909C
:1051A000F081E02DF7FF03C0F095E195FF4FE73464
:1051B000F1050CF47AC041E020916207A22FBB27D1
:1051C000AA0FBB1FAB5CB84F8D919C911197873490
:1051D000910544F0E32FFF27EE0FFF1FEB5CF84F24
:1051E000808191818D919C918734910574F080919B
:1051F0006107E82FFF27EE0FFF1FEB5CF84F808160
:105200009181873491050CF042E0E22FFF27EE0FE9
:10521000FF1FEB5CF84F808191818634910574F417
:1052200080916107E82FFF27EE0FFF1FEB5CF84F1F
:1052300080819181873491050CF043E0E22FFF27B4
:10524000EE0FFF1FEB5CF84F808191818A5B9F4FCF
:1052500074F480916107E82FFF27EE0FFF1FEB5CCE
:10526000F84F80819181873491050CF044E0E22F62
:10527000FF27EE0FFF1FEB5CF84F808191818A5B67
:105280009F4F74F480916107E82FFF27EE0FFF1FF7
:10529000EB5CF84F80819181863491050CF445E0F8
:1052A000A2E0B0E0042E0E94B04380916207E82F94
:1052B000FF27EE0FFF1FEB5CF84F8081918101907B
:1052C000F081E02DF7FF03C0F095E195FF4F749753
:1052D000BCF480916107E82FFF27EE0FFF1FEB5C06
:1052E000F84F808191818A5B9F4F54F481E08093D5
:1052F000320688EE93E09093CA038093C903A7C057
:105300000E94790247E461E677E00E944F028091B3
:10531000690780FF10C080910A0390910B03875B9F
:10532000934038F480910A0390910B038E5E924073
:1053300010F40E94510E0E943B1C82C0808191811A
:10534000855B9F4F0CF081C08091B6048F5F809386
:10535000B604893C08F47BC02998A4E0B0E08FEF44
:10536000082E0E94B043209321042093B60410928B
:10537000FE031092FD030E943B1CA4E0B0E080916C
:1053800084049091850497FF02C081509F4F892F1C
:10539000990F990B082E0E94B043A5E0B0E08091D0
:1053A000840490918504082E0E94B043A6E0B0E0EA
:1053B000809182049091830497FF02C081509F4F97
:1053C000892F990F990B082E0E94B043A7E0B0E0F7
:1053D0008091820490918304082E0E94B04308E0DB
:1053E00010E080917C0490917D04A0917E04B091A6
:1053F0007F04BC01CD010E943A42DC01CB019C013B
:1054000097FF02C021503F4F832F992787FD9A9520
:10541000D801082E0E94B04309E010E080917C047E
:1054200090917D04A0917E04B0917F04BC01CD01D8
:105430000E943A42DC01CB01D801082E0E94B04301
:105440000E9479020E94C01A02C02093B604809183
:105450006307E82FFF27EE0FFF1FEB5CF84F8081FB
:1054600091818B5A9F4F0CF09BC020916407E22FD3
:10547000FF27EE0FFF1FEB5CF84F80819181855B6A
:105480009F4F0CF06DC08091B7048F5F8093B7047D
:10549000893C08F467C088EC8093B70481E090E011
:1054A0009093FE038093FD0381E08093210410928A
:1054B000A0041092A1041092A2041092A3041092CE
:1054C0004604109247041092480410924904109226
:1054D0004204109243041092440410924504109226
:1054E00056041092570410925804109259041092C6
:1054F0004E0410924F041092500410925104809167
:10550000760490917704A0917804B0917904809307
:10551000520490935304A0935404B0935504809183
:105520006E0490916F04A0917004B0917104809307
:105530004A0490934B04A0934C04B0934D041092F2
:1055400098041092990410929A0410929B0410925D
:105550009C0410929D0410929E0410929F0402C01D
:105560001092B704E22FFF27EE0FFF1FEB5CF84FFE
:10557000808191818C3491058CF08091B8048F5F8B
:105580008093B804893C60F01092210488EC8093E9
:10559000B8041092FE031092FD0302C01092B804EA
:1055A00080916D03815080936D0380916D038F3FD7
:1055B00029F080913704882309F4DFC30E94C124B5
:1055C0008091C5049091C604AC01440F551F480F4B
:1055D000591FF0906107AF2DBB27AA0FBB1FFD011C
:1055E000EB5CF84FE0907007CE2CDD248081918138
:1055F0008C9D80018D9D100D9C9D100D1124400FE0
:10560000511F57FF02C04D5F5F4F55954795559508
:105610004795A55BB84F80917107682F77278D91CB
:105620009C91869F9001879F300D969F300D11248D
:10563000420F531F5093C6044093C5048091ED045C
:105640009091EE042091E9043091EA04820F931FB7
:10565000481B590B50932904409328048091C70498
:105660009091C804AC01440F551F480F591F009179
:105670006207A02FBB27AA0FBB1FFD01EB5CF84FF1
:10568000808191818C9DF0018D9DF00D9C9DF00D90
:1056900011244E0F5F1F57FF02C04D5F5F4F55959E
:1056A000479555954795A55BB84F8D919C91869FE1
:1056B0009001879F300D969F300D1124420F531F8C
:1056C0005093C8044093C7048091EB049091EC047C
:1056D0002091E7043091E804820F931F481B590B77
:1056E000509327044093260480916407E82FFF27F6
:1056F000EE0FFF1FEB5CF84F8081918190958195B3
:105700009F4F909325048093240480916307E82F92
:10571000FF27EE0FFF1FEB5CF84F808191818858C7
:105720009F4F909323048093220410917603812F3E
:10573000992787FD9095A92FB92FBC01CD010E9413
:10574000574217FF06C020E030E040E853E40E94D3
:10575000B24120E030E040E251E40E94B241DC017D
:10576000CB0120E030E040E85CE3BC01CD010E94C9
:10577000D142DC01CB018093D8079093D907A09345
:10578000DA07B093DB0710917503812F992787FD06
:105790009095A92FB92FBC01CD010E94574217FF48
:1057A00006C020E030E040E853E40E94B24120E02F
:1057B00030EE4BE256E40E94F441DC01CB018093D1
:1057C000C8079093C907A093CA07B093CB0760910D
:1057D000AB03662331F08AE090E09093CA03809394
:1057E000C903462F552742FF09C080910B04282F7B
:1057F0003327220F331F220F331F13C09A01287043
:10580000307043FF0EC080910B04282F33278CEF9C
:105810009FEF289FA001299F500D389F500D112404
:105820009A018091070490910804AC01F3E0440FC1
:10583000551FFA95E1F7481B590B420F531F57FFAD
:1058400002C0495F5F4FE3E055954795EA95E1F760
:105850005093080440930704462F552744FF09C07E
:1058600080910B04282F3327220F331F220F331F61
:1058700013C09A012072307045FF0EC080910B0456
:10588000282F33278CEF9FEF289FD001299FB00D41
:10589000389FB00D11249D0180910504909106045C
:1058A000AC0163E0440F551F6A95E1F7481B590BA3
:1058B000420F531F57FF02C0495F5F4F83E055956A
:1058C00047958A95E1F7509306044093050440916B
:1058D000AA03842F992783FF03C082E390E007C0C7
:1058E0009C012470307082FF07C08EEC9FEF909374
:1058F00004048093030404C030930404209303043D
:10590000242F332721FF09C080916E0390916F03EC
:10591000019690936F0380936E0324FF09C08091DA
:105920006E0390916F03019790936F0380936E03C2
:10593000809107049091080497FD019695958795AD
:10594000E0912804F0912904E80FF91FF09329044D
:10595000E0932804809105049091060497FD019638
:10596000959587956091260470912704680F791F9B
:10597000709327046093260480910304909104049B
:10598000880F991F880F991F409124045091250476
:10599000480F591F509325044093240480913E06DC
:1059A00080FF59C080910B04813808F454C0809165
:1059B0003706992787FD90952E2D3327829FD0019A
:1059C000839FB00D929FB00D1124EA0FFB1FF0933F
:1059D0002904E093280480913806992787FD909543
:1059E000829FF001839FF00D929FF00D11246E0FA6
:1059F0007F1F7093270460932604809139069927AE
:105A000087FD9095480F591F509325044093240417
:105A100080913B06282F332727FD309580916E0714
:105A20009927289FA001299F500D389F500D1124C0
:105A300050936F0340936E0380913A06282F3327CB
:105A400080912204909123042817390724F430937D
:105A5000230420932204809122049091230497FF31
:105A600004C010922304109222048091690782FFDF
:105A70000CC080E090E0A0E0B0E08093C807909375
:105A8000C907A093CA07B093CB078091D80790911C
:105A9000D907A091DA07B091DB0720E030E040E0C1
:105AA00050E0BC01CD010E946142882364F480E093
:105AB00090E0A0E0B0E08093D8079093D907A0933E
:105AC000DA07B093DB078091C8079091C907A091CE
:105AD000CA07B091CB0720E030E040E050E0BC01C5
:105AE000CD010E946142882364F480E090E0A0E050
:105AF000B0E08093C8079093C907A093CA07B093FA
:105B0000CB074091280450912904CA0157FD039600
:105B10009C01359527953595279537FF03C030951E
:105B200021953F4F809101049091020482179307C1
:105B30006CF4CA0157FF03C0909581959F4F97FD64
:105B40000396959587959595879501C001979093B4
:105B50000204809301044091260450912704CA0155
:105B600057FD03969C01359527953595279537FF69
:105B700003C0309521953F4F8091FF039091000421
:105B8000821793076CF4CA0157FF03C09095819563
:105B90009F4F97FD0396959587959595879501C09D
:105BA0000197909300048093FF038091370488232A
:105BB00041F010920204109201041092000410921D
:105BC000FF03E02FFF27EE0FFF1FEB5CF84F409124
:105BD0008807242F3327808191812817390744F4BF
:105BE0008091950782FF04C081E08093160413C062
:105BF000E02FFF27EE0FFF1FEB5CF84F842F992754
:105C000020918907821B910920813181281739074A
:105C100014F41092160440916207E42FFF27EE0F50
:105C2000FF1FEB5CF84F50918807852F992722279B
:105C30003327281B390B808191818217930744F405
:105C40008091950783FF04C081E08093150416C0FE
:105C500080911504882391F0E42FFF27EE0FFF1F9A
:105C6000EB5CF84F809189079927851B910920816A
:105C700031818217930714F410921504EF2DFF273A
:105C8000EE0FFF1FEB5CF84F40918807242F33275E
:105C9000808191812817390744F48091950780FF0E
:105CA00004C081E08093130417C0809113048823FB
:105CB00099F0EF2DFF27EE0FFF1FEB5CF84F842FBD
:105CC000992720918907821B91092081318128170A
:105CD000390714F41092130440916107E42FFF2751
:105CE000EE0FFF1FEB5CF84F50918807852F992727
:105CF00022273327281B390B808191818217930734
:105D000044F48091950781FF04C081E080931404DE
:105D100016C080911404882391F0E42FFF27EE0F22
:105D2000FF1FEB5CF84F809189079927851B91092C
:105D3000208131818217930714F41092140480910A
:105D40001604882319F480911504811181E0809351
:105D5000170480911304882321F48091140488236C
:105D600051F081E0809318041092170410921604E9
:105D70001092150402C08093180420911704222366
:105D800031F084E690E09093CA038093C903222304
:105D900021F480911804882351F080918707992776
:105DA000A981BA818A179B0714F49A838983B091D9
:105DB0003704BB83BB2341F11092250410922404C5
:105DC000109229041092280410922704109226049D
:105DD00080E090E0A8ECBFE38093D8079093D907C8
:105DE000A093DA07B093DB078BE09CEBA2E3BCE364
:105DF0008093C8079093C907A093CA07B093CB07B5
:105E000010921704109218048091BE079091BF075A
:105E1000A091C007B091C10720917604309177041A
:105E20004091780450917904820F931FA41FB51FED
:105E30008093BE079093BF07A093C007B093C1079C
:105E40008091C4079091C507A091C607B091C7077C
:105E500060906E0470906F04809070049090710454
:105E6000860D971DA81DB91D8093C4079093C50783
:105E7000A093C607B093C7078091B6079091B70764
:105E8000A091B807B091B907E0907204F090730444
:105E90000091740410917504EC82FD820E831F83BF
:105EA0008E0D9F1DA01FB11F8093B6079093B7075B
:105EB000A093B807B093B9078091AE079091AF0750
:105EC000A091B007B091B107E0906A04F0906B0424
:105ED00000916C0410916D04E886F9860A871B878F
:105EE0008E0D9F1DA01FB11F8093AE079093AF072B
:105EF000A093B007B093B10750901804552029F42F
:105F000080911704882309F45FC0109266041092F0
:105F1000670410926804109269041092620410924F
:105F2000630410926404109265041092BE071092EC
:105F3000BF071092C0071092C1071092C4071092B9
:105F4000C5071092C6071092C7071092B6071092A5
:105F5000B7071092B8071092B9071092AE071092C7
:105F6000AF071092B0071092B1078091560490913C
:105F70005704A0915804B09159048093520490930F
:105F80005304A0935404B093550480914E0490910F
:105F90004F04A0915004B091510480934A0490930F
:105FA0004B04A0934C04B0934D041092D403109270
:105FB000D30310921A041092190410921C04109228
:105FC0001B04552009F0FBC080911704882309F0B9
:105FD000F6C080917507E82EFF2400271127CA011B
:105FE000B901A80197010E948D4359016A0180916E
:105FF000D1079091D207AA2797FDA095BA2FA81A8A
:10600000B90ACA0ADB0AC401B301A80197010E94B8
:106010008D4379018A018091E1079091E207AA27D7
:1060200097FDA095BA2FE81AF90A0A0B1B0BD601A7
:10603000C501D7FE03C00F96A11DB11D5C016D0106
:1060400054E0D594C794B794A7945A95D1F7D80142
:10605000C70117FF03C00F96A11DB11D7C018D0163
:1060600044E015950795F794E7944A95D1F7809108
:10607000010490910204819734F48091FF03909180
:1060800000048197A4F0C601B50123E030E040E0B0
:1060900050E00E948D4359016A01C801B70123E015
:1060A00030E040E050E00E948D4379018A01809108
:1060B0006407E82FFF27EE0FFF1FEB5CF84F80818E
:1060C00091810190F081E02DF7FF03C0F095E195FB
:1060D000FF4F7A97A4F0C601B50123E030E040E01D
:1060E00050E00E948D4359016A01C801B70123E0C5
:1060F00030E040E050E00E948D4379018A0121E2C6
:10610000A216B104C104D1042CF030E2A32EB12CAC
:10611000C12CD12C30EEA3163FEFB3063FEFC306E0
:106120003FEFD30644F420EEA22E2FEFB22E2FEF36
:10613000C22E2FEFD22E41E2E416F1040105110523
:106140002CF090E2E92EF12C012D112D50EEE516E8
:106150005FEFF5065FEF05075FEF150744F480EE8C
:10616000E82E8FEFF82E8FEF082F8FEF182F8091EA
:10617000560490915704A0915804B09159048A197B
:106180009B09AC09BD098093560490935704A093D2
:106190005804B093590480914E0490914F04A091FB
:1061A0005004B09151048E199F09A00BB10B80933C
:1061B0004E0490934F04A0935004B09351048091E7
:1061C000D3039091D4038F3F910509F008F474C56F
:1061D000552009F0F1C480911704882309F0ECC41C
:1061E00080913504882309F0E7C48091BE0790911F
:1061F000BF07A091C007B091C107B7FF04C081508D
:106200009F4FAF4FBF4F292E3A2E4B2E552447FCA0
:106210005A942092BE073092BF074092C007509216
:10622000C1078091C4079091C507A091C607B0919E
:10623000C707B7FF04C081509F4FAF4FBF4F892F93
:106240009A2FAB2FBB27A7FDBA958C879D87AE876A
:10625000BF878093C4079093C507A093C607B093E8
:10626000C70780917507E82EFF240027112720918A
:106270006604309167044091680450916904C80134
:10628000B7010E94194397FF04C061507F4F8F4FA1
:106290009F4FA72EB82EC92EDD24C7FCDA94A092FA
:1062A0006604B0926704C0926804D0926904209199
:1062B0006204309163044091640450916504C80104
:1062C000B7010E94194397FF04C061507F4F8F4F61
:1062D0009F4F672E782E892E992487FC9A9460927E
:1062E00062047092630480926404909265048091C9
:1062F0005E0490915F04A0916004B0916104B7FFC7
:1063000004C081509F4FAF4FBF4F892F9A2FAB2FA3
:10631000BB27A7FDBA9580935E0490935F04A0937A
:106320006004B0936104D201C1018A199B09AC09D0
:10633000BD098093AC049093AD04A093AE04B093D8
:10634000AF0420918E07E22EFF2400271127BC0105
:10635000CD01A80197010E948D4359016A01209344
:10636000BD043093BE044093BF045093C0048C8599
:106370009D85AE85BF8586199709A809B9098093BF
:10638000B0049093B104A093B204B093B304BC01E1
:10639000CD01A80197010E948D432093C104309341
:1063A000C2044093C3045093C404D601C501D7FE70
:1063B00004C081509F4FAF4FBF4F892F9A2FAB2FF3
:1063C000BB27A7FDBA9590931A048093190457FF31
:1063D00004C021503F4F4F4F5F4FBB2757FDBA9529
:1063E000A52F942F832F90931C0480931B048091DE
:1063F0000104909102048197D4F48091FF0390915D
:1064000000048197A4F480916407E82FFF27EE0F22
:10641000FF1FEB5CF84F808191810190F081E02DAE
:10642000F7FF03C0F095E195FF4F7A97C4F0809194
:10643000190490911A0497FD01969595879590936C
:106440001A048093190480911B0490911C0497FDF9
:1064500001969595879590931C0480931B048091D9
:10646000B6079091B707A091B807B091B907B7FFE9
:1064700004C081509F4FAF4FBF4F892F9A2FAB2F32
:10648000BB27A7FDBA958093B6079093B707A09353
:10649000B807B093B9078091AE079091AF07A0916C
:1064A000B007B091B107B7FF04C081509F4FAF4F05
:1064B000BF4F892F9A2FAB2FBB27A7FDBA9580938B
:1064C000AE079093AF07A093B007B093B107809148
:1064D000760490917704A0917804B0917904EC80CF
:1064E000FD800E811F81E81AF90A0A0B1B0BE0924E
:1064F000A404F092A5040093A6041093A70480912D
:106500006E0490916F04A0917004B091710428857D
:1065100039854A855B85281B390B4A0B5B0B209319
:10652000A8043093A9044093AA045093AB04E092CA
:10653000AC04F092AD040093AE041093AF0420932A
:10654000B0043093B1044093B2045093B3048091EB
:10655000520490915304A0915404B09155048E19A3
:106560009F09A00BB10B8093520490935304A09306
:106570005404B093550480914A0490914B04A09127
:106580004C04B0914D04821B930BA40BB50B80936C
:106590004A0490934B04A0934C04B0934D04209173
:1065A000330430913404213831054CF080918A0451
:1065B00090918B04019690938B0480938A042058C9
:1065C0003F4F4CF480918A0490918B0401979093F3
:1065D0008B0480938A04A090C407B090C507C09034
:1065E000C607D090C707C601B5012AE130E040E0F8
:1065F00050E00E948D4330930607209305071092C8
:1066000034041092330481E090E09093CA048093A4
:10661000C9048091CF049091D004A091D104B0918D
:10662000D2042091BE073091BF074091C00750911E
:10663000C107821B930BA40BB50B815E914BAF4F2F
:10664000BF4F8F539C49A040B04008F0FEC0F1E01E
:10665000EF16F0E1FF06F0E00F07F0E01F070CF483
:106660006CC08091CB04882309F463C0D801C701B2
:1066700017FF07C088279927DC018E199F09A00BF7
:10668000B10BB7FF04C08150904FAF4FBF4F2CE00C
:10669000B595A795979587952A95D1F701969093EB
:1066A000CA048093C904D801C70117FF03C0079625
:1066B000A11DB11D13E0B595A795979587951A95DE
:1066C000D1F78093BD049093BE04A093BF04B09310
:1066D000C00489589341A040B04064F088E893E139
:1066E000A0E0B0E08093BD049093BE04A093BF04EB
:1066F000B093C0042091BD043091BE044091BF040A
:106700005091C00457FF04C021503F4F4F4F5F4F7F
:10671000232F342F452F552747FD5A958091190473
:1067200090911A04820F931F90931A048093190476
:1067300006C081E08093CB0402C01092CB04E090AD
:10674000AC04F090AD040091AE041091AF0420E0D1
:10675000E21620EFF2062FEF02072FEF12070CF0E0
:1067600071C08091CC04882309F468C0A801970106
:1067700017FF07C022273327A9012E193F09400B15
:10678000510B57FF04C02150304F4F4F5F4FECE08B
:106790005595479537952795EA95D1F78091C90486
:1067A0009091CA04820F931F9093CA048093C904E6
:1067B000D801C70117FF03C00796A11DB11D73E0E3
:1067C000B595A795979587957A95D1F78093BD0450
:1067D0009093BE04A093BF04B093C00488579C4E0E
:1067E000AF4FBF4F64F488E79CEEAFEFBFEF8093ED
:1067F000BD049093BE04A093BF04B093C004209145
:10680000BD043091BE044091BF045091C00457FFB5
:1068100004C021503F4F4F4F5F4F232F342F452F40
:10682000552747FD5A958091190490911A04820FBB
:10683000931F90931A048093190411C081E08093F0
:10684000CC040DC01092CC040AC01092CA0410925D
:10685000C90484EF91E09093890380938803109199
:106860008F07212F33278091C9049091CA042817DC
:10687000390724F43093CA042093C9044091AC042E
:106880005091AD046091AE047091AF04413084E04A
:10689000580780E0680780E0780774F080918E04E4
:1068A00090918F042091C9043091CA04820F931FE4
:1068B00090938F0480938E0440505C4F6F4F7F4FB6
:1068C00074F480918E0490918F042091C9043091CA
:1068D000CA04821B930B90938F0480938E0481E0F3
:1068E00090E09093CA048093C9041092C10410925E
:1068F000C2041092C3041092C4048091D3049091F6
:10690000D404A091D504B091D6048A199B09AC098E
:10691000BD09815E914BAF4FBF4F8F539C49A04043
:10692000B04008F000C1C090B004D090B104E09035
:10693000B204F090B304F1E0CF16F0E1DF06F0E02E
:10694000EF06F0E0FF060CF46CC08091CD048823C4
:1069500009F463C0D701C601F7FE07C0882799274D
:10696000DC018C199D09AE09BF09B7FF04C0815035
:10697000904FAF4FBF4F2CE0B595A7959795879552
:106980002A95D1F701969093CA048093C904D70140
:10699000C601F7FE03C00796A11DB11D03E0B59522
:1069A000A795979587950A95D1F78093C104909301
:1069B000C204A093C304B093C40489589341A04077
:1069C000B04064F088E893E1A0E0B0E08093C104B7
:1069D0009093C204A093C304B093C4042091C10453
:1069E0003091C2044091C3045091C40457FF04C0C5
:1069F00021503F4F4F4F5F4F232F342F452F5527A7
:106A000047FD5A9580911B0490911C04820F931F9F
:106A100090931C0480931B0406C081E08093CD04F6
:106A200002C01092CD0420E0C21620EFD2062FEF54
:106A3000E2062FEFF2060CF073C08091CE0488239B
:106A400009F46AC0D701C601F7FE07C08827992755
:106A5000DC018C199D09AE09BF099C01AD01B7FF8E
:106A600004C02150304F4F4F5F4FECE05595479594
:106A700037952795EA95D1F78091C9049091CA047A
:106A8000820F931F9093CA048093C904D701C60153
:106A9000F7FE03C00796A11DB11D73E0B595A7953C
:106AA000979587957A95D1F78093C1049093C20406
:106AB000A093C304B093C40488579C4EAF4FBF4FFC
:106AC00064F488E79CEEAFEFBFEF8093C10490932E
:106AD000C204A093C304B093C4042091C1043091B4
:106AE000C2044091C3045091C40457FF04C0215014
:106AF0003F4F4F4F5F4F232F342F452F552747FDD3
:106B00005A9580911B0490911C04820F931F9093BF
:106B10001C0480931B0411C081E08093CE040DC03F
:106B20001092CE040AC01092CA041092C90484EFD5
:106B300091E09093890380938803212F33278091DC
:106B4000C9049091CA042817390724F43093CA0461
:106B50002093C9044091B0045091B1046091B204F3
:106B60007091B304413084E0580780E0680780E00A
:106B7000780774F080918C0490918D042091C90461
:106B80003091CA04820F931F90938D0480938C04DC
:106B900040505C4F6F4F7F4FCCF480918C049091AC
:106BA0008D042091C9043091CA04821B930B9093E9
:106BB0008D0480938C040AC010921C0410921B0454
:106BC00010921A0410921904109235048091C8078B
:106BD0009091C907A091CA07B091CB0720E030E09F
:106BE00040E050E0BC01CD010E946142882341F4A5
:106BF00010921C0410921B0410921A041092190493
:106C00008091BE079091BF07A091C007B091C107C6
:106C10008093CF049093D004A093D104B093D20476
:106C20008091C4079091C507A091C607B091C7078E
:106C30008093D3049093D404A093D504B093D60446
:106C4000109266041092670410926804109269040E
:106C5000109262041092630410926404109265040E
:106C600010925E0410925F0410926004109261040E
:106C70001092BE071092BF071092C0071092C10772
:106C80001092C4071092C5071092C6071092C7074A
:106C90001092B6071092B7071092B8071092B90772
:106CA0001092AE071092AF071092B0071092B10782
:106CB0001092D4031092D303A0902404B090250422
:106CC000C501B7FE04C0882799278A199B094097F8
:106CD000ACF08091690784FD11C081E08093BC0411
:106CE0008091DD079091DE0790933B0480933A04F6
:106CF0008AEF90E09093890380938803D090720785
:106D0000ED2CFF2400271127B501882777FD8095FA
:106D1000982F9501B7FE04C0222733272A193B0973
:106D2000442737FD4095542F0E9419439B01AC0125
:106D3000C801B7010E94194397FF04C061507E4FFC
:106D40008F4F9F4F59E095958795779567955A9501
:106D5000D1F79B018D2D99278A9DD0018B9DB00D78
:106D60009A9DB00D1124CD01B7FD03969595879599
:106D700095958795280F391F442737FD4095542F47
:106D80002093A0043093A1044093A2045093A30441
:106D90008091460490914704A0914804B091490421
:106DA000821B930BA40BB50B80934604909347046E
:106DB000A0934804B09349048155934CA040B0403F
:106DC00064F080E593ECA0E0B0E0809346049093FB
:106DD0004704A0934804B0934904809146049091DD
:106DE0004704A0914804B0914904805B9C43AF4F95
:106DF000BF4F64F480EB9CE3AFEFBFEF809346049A
:106E000090934704A0934804B093490480913C04B4
:106E100090913D04892B09F465C18091690783FF36
:106E200061C18091760490917704A0917804B0912B
:106E30007904B7FF04C081509E4FAF4FBF4F29E088
:106E4000B595A795979587952A95D1F74C0197FF0A
:106E500004C0909481949108939480916E049091D1
:106E60006F04A0917004B0917104B7FF04C0815009
:106E70009E4FAF4FBF4F09E0B595A7959795879562
:106E80000A95D1F7BC0197FF03C0709561957F4FBC
:106E9000861697060CF44B01B40197FE02C0695F99
:106EA0007F4F3B0113E0759467941A95E1F70894BE
:106EB000611C711C09E18016910434F58091BC04B9
:106EC000882311F18091880390918903892BE1F443
:106ED00088EC90E09093CA038093C9038091DD070A
:106EE0009091DE07A091DF07B091E007BC01CD01D2
:106EF0002EE036E040E050E00E948D4330933B04AA
:106F000020933A041092BC0480913C0490913D047B
:106F1000845E9D4F7C010027F7FC0095102FA09008
:106F2000DD07B090DE07C090DF07D090E007C60114
:106F3000B5012EE036E040E050E00E948D43E21AB9
:106F4000F30A040B150BC801B70128E631E040E055
:106F500050E00E948D43DC01CB01FC01E45BF0407A
:106F6000CF01B3E0880F991FBA95E1F7B3010E94F2
:106F700058439B01442737FD4095542F2A0D3B1D54
:106F80004C1D5D1D2093DD073093DE074093DF0726
:106F90005093E00710917703612F7727869EC001F9
:106FA000879E900D969E900D112497FDCF964C01D3
:106FB000A6E095948794AA95E1F7681979094B01A1
:106FC000161617060CF088C08091880390918903EB
:106FD000009709F07FC080913304909134048E0FA4
:106FE0009F1F9093340480933304E0900104F09049
:106FF00002048091FF0390910004E80EF91EF7FE51
:1070000004C087E090E0E80EF91E63E0F594E79491
:107010006A95E1F7A0E4B0E0EA0EFB1ECA01B901EF
:107020002EE036E040E050E00E948D43DA01C901D5
:1070300020913A0430913B04442737FD4095542F6A
:10704000821B930BA40BB50B845E9D4FAF4FBF4FBC
:10705000BC01CD0128E631E040E050E00E948D43C4
:10706000DC01CB01845B9040889DF001899DF00D8F
:10707000989DF00D1124CF01B7010E94584383E081
:10708000189F400111248616970614F4B40108C015
:107090008827992788199909681779070CF4BC0182
:1070A0009B01442737FD4095542F809146049091D1
:1070B0004704A0914804B0914904820F931FA41F74
:1070C000B51F8093460490934704A0934804B0935F
:1070D000490408C0019702C08AEF90E090938903A9
:1070E000809388038091BB0481508093BB048F3FC1
:1070F00009F0B8C088E18093BB0480917507E82E41
:10710000FF24002711278091760490917704A091A5
:107110007804B0917904BC01CD01A80197010E94C7
:107120008D433093DA062093D90680916E049091B6
:107130006F04A0917004B0917104BC01CD01A8014D
:1071400097010E948D433093DC062093DB068091EB
:10715000D1079091D2079093DE068093DD0680914F
:10716000E1079091E2079093E0068093DF0680911B
:10717000D4079091D5079093E2068093E106809121
:107180001F04909120049093E4068093E30680917D
:107190003E0490913F04A0914004B0914104B7FF98
:1071A00004C081509E4FAF4FBF4F39E0B595A795B2
:1071B000979587953A95D1F79093E6068093E506E3
:1071C00080913C0490913D049093EA068093E906F7
:1071D00080911003909111039093EC068093EB063D
:1071E0008091DD079091DE07A091DF07B091E00765
:1071F000BC01CD012EE036E040E050E00E948D431E
:107200003093F0062093EF0680912A0499279093FB
:10721000EE068093ED068091BA079091BB0790939C
:10722000FA068093F9068091320699279093000719
:107230008093FF068091C6039091C7039093020745
:10724000809301078091ED049091EE0490931607CE
:10725000809315078091EB049091EC0490931807AC
:107260008093170780911804A090D807B090D90791
:10727000C090DA07D090DB078823A9F08091B3078C
:107280009091B407AA2797FDA095BA2FBC01CD0114
:107290000E945742DC01CB01A6019501BC01CD0142
:1072A0000E94D1423AC08091760490917704A091D7
:1072B0007804B0917904BC01CD010E9457427B0152
:1072C0008C018091C8079091C907A091CA07B0911D
:1072D000CB079C01AD01C801B7010E94D1427B01DF
:1072E0008C018091B3079091B407AA2797FDA095D0
:1072F000BA2FBC01CD010E945742DC01CB01A6018F
:107300009501BC01CD010E94D142DC01CB019C0161
:10731000AD01C801B7010E94B241DC01CB01BC0143
:10732000CD010E943A42DC01CB019093B4078093D7
:10733000B30780911704A090D807B090D907C090E8
:10734000DA07D090DB078823A9F08091A9079091F4
:10735000AA07AA2797FDA095BA2FBC01CD010E94CC
:107360005742DC01CB01A6019501BC01CD010E9471
:10737000D1423AC080916E0490916F04A091700444
:10738000B0917104BC01CD010E9457427B018C0178
:107390008091C8079091C907A091CA07B091CB0707
:1073A0009C01AD01C801B7010E94D1427B018C0153
:1073B0008091A9079091AA07AA2797FDA095BA2FB7
:1073C000BC01CD010E945742DC01CB01A601950111
:1073D000BC01CD010E94D142DC01CB019C01AD0179
:1073E000C801B7010E94B241DC01CB01BC01CD0153
:1073F0000E943A42DC01CB019093AA078093A9072F
:107400008091D4079091D507AA2797FDA095BA2F10
:10741000BC01CD010E9457427B018C018091D807AD
:107420009091D907A091DA07B091DB079C01AD01DB
:10743000BC01CD010E94B241DC01CB019C01AD0138
:10744000C801B7010E94D1427B018C0180915A048E
:1074500090915B04A0915C04B0915D04BC01CD01EE
:107460000E945742DC01CB014090C8075090C907E9
:107470006090CA077090CB07A3019201BC01CD01B7
:107480000E94D142DC01CB0120E030E040E05FE32C
:10749000BC01CD010E94D142DC01CB019C01AD01B8
:1074A000C801B7010E94B241DC01CB01BC01CD0192
:1074B0000E943A42DC01CB019093D5078093D40718
:1074C0008091B3079091B4079093040780930307CA
:1074D0008091A9079091AA079093060780930507CA
:1074E0008091B3079091B4078150904434F080E0CC
:1074F00090E49093B4078093B3078091B307909181
:10750000B4078050904C34F480E090EC9093B40732
:107510008093B3078091A9079091AA078150904466
:1075200034F080E090E49093AA078093A9078091BB
:10753000A9079091AA078050904C34F480E090EC19
:107540009093AA078093A9078091D4079091D507BB
:107550008150904434F080E090E49093D50780937C
:10756000D4078091D4079091D5078050904C34F483
:1075700080E090EC9093D5078093D40789819A811D
:10758000880F991F880F991F9A83898380916907B3
:10759000992780FFF0C020917A0381FF0EC022332B
:1075A00010F580911F0490912004449790931E043D
:1075B00080931D041092360419C080916E0390913F
:1075C0006F03820F911D20916E073327829FD00198
:1075D000839FB00D929FB00D1124CD0144979093DD
:1075E0001E0480931D0481E080933604BB81BB237D
:1075F00021F010921E0410921D0400911F0410919E
:10760000200420911D0430911E04201731070CF036
:10761000B2C080913604882309F4ADC0021B130B5D
:10762000809179039927089FF001099FF00D189F19
:10763000F00D1124CF01F7FD03968C0115950795E8
:1076400015950795E980FA80E01AF10A8701809183
:10765000D5039091D60397FD019695958795081BC4
:10766000190BC0903E04D0903F04E0904004F0908D
:107670004104F7FE08C02FE730E040E050E0C20EC2
:10768000D31EE41EF51EA7E0F594E794D794C794A3
:10769000AA95D1F780917803282F332744275527BF
:1076A000C701B6010E94194397FF04C0615E7F4F76
:1076B0008F4F9F4FF5E09595879577956795FA954C
:1076C000D1F731E0693173071CF068E171E006C061
:1076D0004EEF683E740714F468EE7EEF061B170B3E
:1076E0008091B9049091BA049C01E4E0220F331F09
:1076F000EA95E1F7281B390B200F311F37FF02C035
:10770000215F3F4F74E0359527957A95E1F73093E7
:10771000BA042093B90480916A07482F5527440F73
:10772000551F440F551F2417350794F489819A81FA
:107730008417950724F05093BA044093B904A981A3
:10774000BA81A417B50724F4B093BA04A093B9047E
:107750008091B9049091BA04E981FA81E817F90798
:1077600024F4F093BA04E093B904E090B904F090E3
:10777000BA04FA82E9823090D307832D9927880FC3
:10778000991F880F991F8055904009811A81801791
:10779000910714F49A83898329813A813093E8060A
:1077A0002093E7068091A0049091A104A091A204E7
:1077B000B091A30442E0880F991FAA1FBB1F4A95EE
:1077C000D1F78090D4079090D507881A990A213A6A
:1077D00031058CF0C90137FD01969595879588157F
:1077E00099050CF44C01909581959F4F8816990648
:1077F00094F44C0110C031E5831691041CF010E59F
:10780000812E912C40EB84164FEF940624F4B0EBBC
:107810008B2EBFEF9B2E232D3327220F331F220FDA
:10782000331FC901A981BA818A1B9B0B8815990551
:107830000CF44C01E981FA81E21BF30B8E169F06D2
:107840000CF44F018091B3079091B407E0902804A5
:10785000F0902904FD8AEC8A8E199F099093BD0748
:107860008093BC0720E030E040E050E0C301B2016B
:107870000E946142209198043091990440919A04A9
:1078800050919B04882309F448C0CA01B9010E94A1
:1078900057425B016C018091760490917704A0912E
:1078A0007804B0917904BC01CD010E945742DC01FB
:1078B000CB01A3019201BC01CD010E94D1427B0109
:1078C0008C012C893D89C901AA2797FDA095BA2F63
:1078D000BC01CD010E945742DC01CB019C01AD01EE
:1078E000C801B7010E94B141DC01CB019C01AD018F
:1078F000C601B5010E94B241DC01CB01BC01CD0142
:107900000E943A42DC01CB01809398049093990441
:10791000A0939A04B0939B0414C08091BC079091EB
:10792000BD07AA2797FDA095BA2F280F391F4A1F18
:107930005B1F209398043093990440939A045093CA
:107940009B048091980490919904A0919A04B0911D
:107950009B0481509A4FA040B04064F080E09AEFC1
:10796000A0E0B0E08093980490939904A0939A04C7
:10797000B0939B048091980490919904A0919A04EB
:10798000B0919B0480509640AF4FBF4F64F480E0AD
:1079900096E0AFEFBFEF8093980490939904A09383
:1079A0009A04B0939B048091BC079091BD07AA27CD
:1079B00097FDA095BA2FBC01CD010E9457427B01D3
:1079C0008C018091980490919904A0919A04B091AF
:1079D0009B04BC01CD010E945742DC01CB012091E8
:1079E0007C0330917D0340917E0350917F03288B6F
:1079F000398B4A8B5B8B9C01AD01688979898A89B7
:107A00009B890E94D142DC01CB019C01AD01C801E0
:107A1000B7010E94B241DC01CB01BC01CD010E9443
:107A20003A42DC01CB018C0120907003622D772754
:107A300088279927940197FE04C022273327281905
:107A4000390937FF02C02F5F3F4F35952795498190
:107A50005A81240F351F442737FD4095542F0E942B
:107A6000194397FF04C0615C7F4F8F4F9F4FE6E043
:107A70009595879577956795EA95D1F79B0160175E
:107A800071070CF48B01309521953F4F02171307B6
:107A90000CF4890129813A81200F311F280D391DED
:107AA000C90137FD03969C01359527953595279596
:107AB00037FF03C020E030E006C0832D99278217EE
:107AC00093070CF49C013090B507832D9927281754
:107AD00039070CF49C012093AB0729813A81201BC4
:107AE000310B280D391DC90137FD03969C013595D1
:107AF00027953595279537FF03C020E030E007C074
:107B00008091D3079927821793070CF49C01832D4A
:107B10009927281739070CF49C012093B20780910C
:107B2000A9079091AA07A0912604B0912704BD8BC4
:107B3000AC8B8A1B9B0B9093A8078093A70720E030
:107B400030E040E050E0C301B2010E946142209168
:107B50009C0430919D0440919E0450919F04882381
:107B600009F448C0CA01B9010E9457425B016C0187
:107B700080916E0490916F04A0917004B091710493
:107B8000BC01CD010E945742DC01CB01A30192014F
:107B9000BC01CD010E94D1427B018C01EC89FD89A1
:107BA000CF01AA2797FDA095BA2FBC01CD010E9455
:107BB0005742DC01CB019C01AD01C801B7010E9415
:107BC000B141DC01CB019C01AD01C601B5010E94B0
:107BD000B241DC01CB01BC01CD010E943A42DC0183
:107BE000CB0180939C0490939D04A0939E04B0933A
:107BF0009F0414C08091A7079091A807AA2797FD1A
:107C0000A095BA2F280F391F4A1F5B1F20939C0491
:107C100030939D0440939E0450939F0480919C0454
:107C200090919D04A0919E04B0919F0481589E4321
:107C3000A040B04064F080E89EE3A0E0B0E0809314
:107C40009C0490939D04A0939E04B0939F04809104
:107C50009C0490919D04A0919E04B0919F04805833
:107C6000914CAF4FBF4F64F480E891ECAFEFBFEFA2
:107C700080939C0490939D04A0939E04B0939F04D2
:107C80008091A7079091A807AA2797FDA095BA2FE2
:107C9000BC01CD010E9457427B018C0180919C0464
:107CA00090919D04A0919E04B0919F04BC01CD01D0
:107CB0000E945742DC01CB019C01AD0168897989A2
:107CC0008A899B890E94D142DC01CB019C01AD01D4
:107CD000C801B7010E94B241DC01CB01BC01CD015A
:107CE0000E943A42DC01CB018C01622D7727882764
:107CF0009927940197FE04C02227332728193909B0
:107D000037FF02C02F5F3F4F3595279549815A8134
:107D1000240F351F442737FD4095542F0E941943E7
:107D200097FF04C0615C7F4F8F4F9F4F26E0959572
:107D30008795779567952A95D1F79B01601771070D
:107D40000CF48B01309521953F4F021713070CF46B
:107D5000890129813A81200F311F28193909C90168
:107D600037FD03969C01359527953595279537FF67
:107D700003C020E030E007C08091D3079927821725
:107D800093070CF49C01832D9927281739070CF4CD
:107D90009C012093CE0729813A81201B310B2819A1
:107DA0003909C90137FD03969C013595279535950D
:107DB000279537FF03C020E030E007C08091D3074C
:107DC0009927821793070CF49C01832D9927281774
:107DD00039070CF49C012093CC0765960FB6F894F4
:107DE000DEBF0FBECDBFDF91CF911F910F91FF90EE
:107DF000EF90DF90CF90BF90AF909F908F907F904B
:107E00006F905F904F903F902F9008958091E30482
:107E10009091E404A091E504B091E6048093DB0422
:107E20009093DC04A093DD04B093DE048091DF0422
:107E30009091E004A091E104B091E2048093D70412
:107E40009093D804A093D904B093DA0408951092C3
:107E5000EE041092ED041092EC041092EB040895DD
:107E600084B1806A84B93D9A82E58CBD1DBC459A77
:107E700081E08093E3078AEA8093E70783E88093B1
:107E8000E8078AE08093E9071092EB071092EA076F
:107E90001092ED071092EC07109209080895F894DB
:107EA0008091760490917704A0917804B091790440
:107EB000BC01CD012CE630E040E050E00E948D4353
:107EC0003093EB072093EA0780916E0490916F0442
:107ED000A0917004B0917104BC01CD012CE630E09A
:107EE00040E050E00E948D433093ED072093EC0773
:107EF0008091DD079091DE07A091DF07B091E00748
:107F0000BC01CD012EE036E040E050E00E948D4300
:107F10003093F3072093F207E0918004F0918104FD
:107F20008091C2079091C307BF010E9458432CE083
:107F300030E0629FA001639F500D729F500D11248D
:107F40005093EF074093EE078091D6079091D707A3
:107F5000BF010E945843629FA001639F500D729F12
:107F6000500D11245093F1074093F00710928104B3
:107F7000109280041092C3071092C2071092D70784
:107F80001092D6078091E90799278A30910561F010
:107F90008A3091050CF4A7C08B30910511F182173E
:107FA000930709F497C09FC0809112048093FA0749
:107FB000809111048093FB07809110048093FC074B
:107FC00080910F048093FD0780910E048093FE073B
:107FD00080910D048093FF0780910C04809300082A
:107FE00082C080916307E82FFF27EE0FFF1FEB5C35
:107FF000F84F0190F081E02DE038F1051CF0EFE73B
:10800000F0E006C05FEFE138F50714F4E1E8FFEFB8
:10801000E093FA0780916407E82FFF27EE0FFF1F18
:10802000EB5CF84F0190F081E02DE038F1051CF099
:10803000EFE7F0E006C06FEFE138F60714F4E1E88F
:10804000FFEFE093FB0780916207E82FFF27EE0F19
:10805000FF1FEB5CF84F0190F081E02DE038F10557
:108060001CF0EFE7F0E006C08FEFE138F80714F4FA
:10807000E1E8FFEFE093FC0780916107E82FFF271D
:10808000EE0FFF1FEB5CF84F0190F081E02DE03820
:10809000F1051CF0EFE7F0E006C02FEFE138F20742
:1080A00014F4E1E8FFEFE093FD0780913104809341
:1080B000FE0780912F048093FF0780912D04809309
:1080C000000880912B048093010880912A048093FA
:1080D000020809C080913206863018F010923206EC
:1080E00085E08093FA07789480910908882309F441
:1080F00056C040910B0850910C08CA0181509E4F08
:108100008F5F9340B0F420910D0830910E08C901A3
:1081100081509E4F8F5F934060F48091690785FF87
:1081200008C05093EE044093ED043093EC04209388
:10813000EB04809111089091120821E08936920792
:1081400024F490933D0480933C0480913C049091EE
:108150003D0420913A0430913B04821B930B845ED2
:108160009D4F68E671E00E945843845B9040909375
:1081700039048093380480911508282F3327809183
:10818000C9039091CA038217930788F4809132063D
:10819000882369F43093CA032093C9030895109289
:1081A000EE041092ED041092EC041092EB0408958A
:1081B0008091E307882309F43BC0459887EE97E058
:1081C0009093E5078093E4079091EF04E92FFF2750
:1081D000EB55FC4F9F5F9093EF0480818093E907FC
:1081E000953010F01092EF041092E3070E944F3F79
:1081F00081E08093E607000000000000000000001E
:10820000000000000000000000000000000000006E
:10821000000000000000000000000000000000005E
:108220000000000000008091E707809306088EBDE3
:1082300008953091E307332309F085C00DB407FE9C
:1082400082C084E08093C803459A2EB58091F104E2
:1082500099278130910589F0823091051CF4892B92
:1082600021F03EC00297B9F03BC03093080820933C
:10827000F2042138A9F581E008C0253549F4809140
:10828000F204820F8093F20482E08093F10428C00C
:108290003093F10425C080910808E82FFF27ED5D99
:1082A000F74F20838F5F809308089091F204893103
:1082B000A0F0291769F4AAE0B8E0E3E2F8E089E168
:1082C00001900D928150E1F781E08093090802C08E
:1082D000309309081092F10403C0920F9093F204B6
:1082E0002091E607203208F028C0459800000000E1
:1082F000000000000000000000000000000000007E
:10830000000000000000000000000000000000006D
:10831000000000000000000000000000E091E40701
:10832000F091E507E20FF11D80818EBD8091060876
:108330009081890F8093060803C081E08093E30752
:108340002F5F2093E6070895FC014150504030F024
:1083500001900616D1F73197CF0108958827992704
:1083600008955058192EEFD001D0D2C0BA17620725
:10837000730784079507B1F188F40EF410940B2E5F
:10838000BA2FA02D062E622F202D072E732F302DF1
:10839000082E842F402D092E952F502DFF27552371
:1083A000B9F0591B49F0573E98F0469537952795F7
:1083B000A795F0405395C9F776F0BA0F621F731F67
:1083C000841F30F4879577956795B795F04093951E
:1083D00017FA0F2E0895BF1BBB27BA0B620B730B46
:1083E000840BF6CFDEF6DBC0AED001D091C05523B2
:1083F00059F0992369F09F575F57951B33F442F466
:10840000903811F4915805C09BC091589F3F09F4D2
:10841000C6C0BB27112462177307840730F4660FA8
:10842000771F881FBB1F915098F311D00F920FD068
:108430000F920DD0A0E82617370748071B0609F052
:10844000A048BA2F602D7F918F9100240895A0E855
:108450000024621773078407B10528F0621B730BB1
:10846000840BB1090A2A660F771F881FBB1FA695C8
:1084700081F7089597FB73D09F3738F0FEE9F91B19
:10848000982F872F762F6B2F05C086C096958795DE
:1084900077956795F150D0F73EF49095809570955B
:1084A00061957F4F8F4F9F4F0895E89403C097FBCE
:1084B0000EF4F3DFB62F672F782F892F9EE9002463
:1084C00027C00ED05EF004C00BD026F001C008D04B
:1084D00019F020F48FEF089580E0089581E0089569
:1084E00097FB092E052600F8689430D0E89407FC25
:1084F00007C0621773078407950721F008F40094FA
:108500000794989408959A95BB0F661F771F881F4C
:1085100011249923A1F08823B2F79F3F59F0BB0F94
:1085200048F421F4002011F460FF04C06F5F7F4F16
:108530008F4F9F4F881F9795879597F908952CC067
:108540009FEF80EC0895052E092607FA440F551F6A
:108550005F3F79F0AA27A51708F051E04795880FEB
:10856000991F9F3F31F0BB27B91708F091E087951D
:1085700008959F919F911124E3CF97FB880F991F36
:108580009F3F31F0BB27B91708F091E08795089518
:108590009F919F911124D4CF662777278827992709
:1085A0000895D1DF01D0B4CF992339F0552329F0B4
:1085B0009F575F57950F13F49AF1F1CF91589F3F52
:1085C000E1F3629FA12D0F92BB27639FA00DB11D08
:1085D000EE27729FA00DB11DEE1FAF93AA27649FD7
:1085E000B00DE11D739FB00DE11DAA1F6627829F8C
:1085F000B00DE11DA61F5527749FE00DA11D551F4D
:10860000839FE00DA11D561F849FA00D511D852F36
:108610007A2F6E2F1F900F9088231AF4939539F4B8
:108620008FCF000C111CBB1F661F771F881F0128EE
:108630000895629FD001739FF001829FE00DF11DAC
:10864000649FE00DF11D929FF00D839FF00D749FCC
:10865000F00D659FF00D9927729FB00DE11DF91F78
:10866000639FB00DE11DF91FBD01CF0111240895D5
:10867000991B79E004C0991F961708F0961B881F74
:108680007A95C9F780950895AA1BBB1B51E107C0D5
:10869000AA1FBB1FA617B70710F0A61BB70B881F92
:1086A000991F5A95A9F780959095BC01CD01089521
:1086B00097FB092E07260AD077FD04D0E5DF06D008
:1086C00000201AF4709561957F4F0895F6F7909504
:1086D00081959F4F0895A1E21A2EAA1BBB1BFD0195
:1086E0000DC0AA1FBB1FEE1FFF1FA217B307E40791
:1086F000F50720F0A21BB30BE40BF50B661F771FE9
:10870000881F991F1A9469F76095709580959095C8
:108710009B01AC01BD01CF01089597FB092E0526F1
:108720000ED057FD04D0D7DF0AD0001C38F4509586
:108730004095309521953F4F4F4F5F4F0895F6F785
:1087400090958095709561957F4F8F4F9F4F0895BD
:10875000F999FECFB2BDA1BDF89A119600B4089563
:10876000F999FECFB2BDA1BD00BC11960FB6F89429
:08877000FA9AF99A0FBE089570
:10877800010A01496E74656772616C4E69636B200A
:10878800202020496E74656772616C526F6C6C2092
:108798002020204163634E69636B20202020202025
:1087A800202020416363526F6C6C20202020202001
:1087B8002020204779726F47696572202020202089
:1087C800202020486F6568656E57657274202020E8
:1087D8002020204163635A202020202020202020B0
:1087E80020202047617320202020202020202020C6
:1087F8002020204B6F6D7061737356616C75652016
:108808002020205370616E6E756E67202020202016
:10881800202020456D7066616E6720202020202072
:1088280020202045727361747A6B6F6D7061737369
:108838002020204D6F746F725F566F726E65202016
:108848002020204D6F746F725F48696E74656E20CA
:108858002020204D6F746F725F4C696E6B732020FF
:108868002020204D6F746F725F52656368747320A7
:108878002020204163635F5A2020202020202020D0
:1088880020202044697374616E63652020202020B5
:108898002020204F73644261722020202020202055
:1088A8002020204D4B334D61672043616C53746128
:1088B800746520536572766F2020202020202020A8
:1088C8002020204E69636B2020202020202020209B
:1088D800202020526F6C6C20202020202020202077
:1088E8002020202020202020202020202020202080
:1088F8002020202020202020202020202020202070
:10890800202020202020202020202020202020205F
:10891800202020202020202020202020202020204F
:10892800202020202020202020202020202020203F
:10893800202020202020202020202020202020202F
:10894800202020202020202020202020202020201F
:108958002020204750535F4E69636B202020202041
:108968002020204750535F526F6C6C20202020201D
:1089780020202064FF01FFFF010AFF03007D0000A3
:10898800640048616C6C6F2057656C7400000000CF
:1089980000000000000000000000000000000000CF
:1089A80000000000000000000000000000000000BF
:1089B80000000000000000000000000000000000AF
:1089C800000000000000000000000000000000009F
:1089D80000000102030405060708090A0B01ECFF61
:1089E8006446640A029696403A10FB3017B7D138AD
:1089F80090D0030090D00300F401640053706F72AC
:108A08007400004E6F726D616C0000426567696E9C
:0A8A18006E657200000A0B0A0B0CD9
:100000000C9451020C946E020C946E020C946E02CD
:100010000C946E020C946E020C946E020C946E02A0
:100020000C946E020C94A90C0C946E020C946E024B
:100030000C9404170C946E020C946E020C94D0165F
:100040000C946E020C946E020C94D40B0C946E0201
:100050000C944A040C946E020C9414040C946E02DA
:100060000C947E0D0C946E020C9418160C946E0277
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D436F6E74726F1F
:100090006C3A20004F4B0A0D000A0D43616C6962F7
:1000A000726174696E672061697220707265737322
:1000B0007572652073656E736F722E2E000A0D5374
:1000C0007570706F727420666F72204D4B334D41A6
:1000D0004720436F6D70617373000A0D41434320E5
:1000E0006E6F742063616C69627261746564210073
:1000F0000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D3D93
:100100003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1F
:10011000000A0D466C69676874436F6E74726F6C89
:100120000A0D48617264776172653A25642E256410
:100130000A0D536F6674776172653A5625642E25F1
:1001400064256320002E0048693A25346920204345
:10015000663A253469200054683A253469202059CC
:10016000613A253469200050693A253469202052CB
:100170006F3A253469200045787465726E436F6E5E
:1001800074726F6C20200052616E67653A25336986
:100190002D25336900506F736974696F6E3A20259D
:1001A000336900536574706F696E7420202533695C
:1001B00000536572766F202000506F343A2025334B
:1001C0006920506F383A2025336900506F333A2048
:1001D00025336920506F373A2025336900506F323C
:1001E0003A2025336920506F363A20253369005074
:1001F0006F313A2025336920506F353A2025336915
:10020000004F6666436F757273653A202535690045
:1002100048656164696E673A20202025356900438E
:100220006F757273653A2020202025356900436F71
:100230006D70617373202020202020200052432DF8
:100240004C6576656C3A2025356900566F6C746193
:1002500067653A202025356900486569676874201C
:1002600025346920282533692900526F6C6C2020C1
:100270002025346920282533692900506974636872
:100280002020253469202825336929004143432053
:100290002D2053656E736F720059617720202025E1
:1002A000346920282533692900526F6C6C20202581
:1002B0003469202825336929005069746368202532
:1002C00034692028253369290059617720202025A9
:1002D000346920282533692900526F6C6C20202551
:1002E0003469202825336929005069746368202502
:1002F0003469202825336929004779726F202D2021
:1003000053656E736F720050333A25346920205064
:10031000343A253469200050313A25346920205080
:10032000323A253469200047733A25346920205930
:10033000613A253469200050693A253469202052F9
:100340006F3A253469200043373A25346920204329
:10035000383A253469200043353A25346920204352
:10036000363A253469200043333A25346920204346
:10037000343A253469200043313A2534692020433A
:10038000323A253469200048656164696E673A2015
:10039000202025356900526F6C6C3A2020202020E7
:1003A000202535690050697463683A202020202098
:1003B0002535690041747469747564650048656920
:1003C00067687420436F6E74726F6C004E6F20000C
:1003D0004F6666736574202020203A2535690041F8
:1003E00069722050726573732E3A25356900536522
:1003F0007420506F696E743A20253569004865692C
:100400006768743A20202020253569002863292058
:10041000486F6C676572204275737300536574741E
:10042000696E673A202564200048573A5625642EA5
:1004300025642053573A25642E25642563002B201C
:100440004D696B726F4B6F70746572202B005B256A
:10045000695D005B25695D000A0D5573696E672053
:10046000506172616D6574657220536574202564F6
:10047000000A0D496E69742E20454550524F4D3A81
:100480002047656E65726174696E672044656661B8
:10049000756C742D506172616D657465722E2E2EAF
:1004A000000011241FBECFEFD0E1DEBFCDBF14E0AE
:1004B000A0E0B1E0EEEFF0E802C005900D92A43BA1
:1004C000B107D9F718E0A4EBB4E001C01D92A73141
:1004D000B107E1F70E9470020C947E400C9400007A
:1004E000CF93DF93F89414B815B8189B02C08BE033
:1004F00001C08AE08093000184B1836084B92091B7
:1005000000012A3011F4289A01C02898299884B74C
:10051000877F84BF80916000886180936000109223
:10052000600080ED97E09093D0048093CF04109208
:1005300068071092670710926F0510926E0510926F
:100540006D0510926C0510926B0510926A052A30A9
:1005500011F4289801C0289A0E9468150E948A0BFD
:100560000E94860C0E94E5050E949C160E94610D67
:100570000E94C1150E942E3B78941092690685E472
:1005800080936A0687E080936B0620910001822F9A
:100590006AE00E94AF3F492F50E0822F0E94AF3F98
:1005A00090E02BE630E03F932F9325E430E03F933B
:1005B0002F931F921F925F934F939F938F9381E18D
:1005C00091E09F938F931F920E94E60880EF90E046
:1005D0009F938F931F920E94E608299A0E94773A70
:1005E00084E00E9477382DB73EB7205F3F4F0FB6AB
:1005F000F8943EBF0FBE2DBF8050944050F08AED5E
:1006000090E09F938F931F920E94E6080F900F90A7
:100610000F9084EF91E00E94BF0BEC01CE010E948D
:10062000C80B8823D9F38DEB90E09F938F931F9293
:100630000E94E6088091D1070F900F900F9080FFE5
:1006400020C089E990E09F938F931F920E94E60853
:1006500088EE93E00E94BF0BEC010E945D100F90AA
:100660000F900F90CE010E94C80B8823D9F384E924
:1006700090E09F938F931F920E94E6080F900F9037
:100680000F900E94FC20809100018A3011F428987C
:1006900001C0289A80ED97E09093D0048093CF0416
:1006A00085E58093730688E890E09F938F931F926F
:1006B0000E94E6088091D1070F900F900F9082FF63
:1006C00003C08CE790E002C084E790E09F938F9393
:1006D0001F920E94E6080F900F900F9080E790E025
:1006E0009F938F931F920E94E6080E949D1088E8B6
:1006F00093E190936D0380936C030F900F900F9094
:100700008091CC048823E1F31092CC040E94A622AD
:100710000E94B520209100012A3011F4289801C0D0
:10072000289A80910301882321F08150809303014E
:1007300012C01092C0041092C10410927D06109253
:100740007B0510927A0510927D0510927C0510921F
:100750007F0510927E0580916C0390916D03892B2B
:1007600001F585E090E090936D0380936C030E9407
:10077000E81580910403909105038F5F9F4FF9F472
:10078000809156058823D9F080E197E29093D004B8
:100790008093CF0480E890E0909305038093040356
:1007A0000EC080916C0390916D03019790936D033F
:1007B00080936C032A3011F4289801C0289A809104
:1007C000CC04882321F080915605882311F40E94DF
:1007D00054060E945007CE010E94C80B882309F4DA
:1007E0008FCF20910803309109038091E10790E0B9
:1007F000281739079CF480910403909105038F5FBB
:100800009F4F61F480E797E19093D0048093CF04E9
:1008100080E093E0909305038093040384E190E0EB
:100820000E94BF0BEC016CCF1F920F920FB60F927C
:1008300011248F939F93EF93FF938091020188235C
:10084000E1F48091C8049091C90401969093C90481
:100850008093C804FC01E054F94FE081ED3019F0B9
:100860008639910539F41092C9041092C80481E0C8
:1008700080930201E093C60004C01092C904109254
:10088000C804FF91EF919F918F910F900FBE0F9031
:100890001F9018951F920F920FB60F9211242F934D
:1008A0003F934F935F936F937F938F939F93AF93F8
:1008B000BF93CF93DF93EF93FF937091C600809126
:1008C000BA04882309F06DC06091C504662371F4F1
:1008D000733279F47093CF0581E08093C50483E28D
:1008E00090E09093C7048093C6045BC0663908F01B
:1008F00054C0A62FB0E02091C6043091C7047D30CB
:1009000069F0A153BA4F7C936F5F6093C504270FC2
:10091000311D3093C7042093C60443C0FD01E35347
:10092000FA4F9081ED01C253DA4F8881A901491B2A
:100930005109481B51095F705093C7044093C60486
:100940002081CA0136E0969587953A95E1F7835C58
:100950008217F1F49881842F8F73835C8917C1F417
:1009600081E08093BA046093BB04A153BA4F7C9397
:100970008091D105823571F488E190E02CE00FB6CA
:10098000F894A895809360000FBE2093600002C089
:100990001092BA041092C50404C01092C5041092BB
:1009A000BA04FF91EF91DF91CF91BF91AF919F91E9
:1009B0008F917F916F915F914F913F912F910F9008
:1009C0000FBE0F901F901895DC0120E030E040E052
:1009D00050E008C0FA01E054F94F8081280F311D22
:1009E0004F5F5F4F4A175B07A9F73F70C90146E0A9
:1009F000969587954A95E1F7835CFD01E054F94FA0
:100A0000808311962F73235CFD01E054F94F2083FE
:100A1000AF53B94F8DE08C93109202018091C006C4
:100A20008093C60008951F93CF93DF93EA01722F3E
:100A300093E29093C0066093C1068093C206A3E040
:100A4000B0E060E04FC0FE01E60FF11D90816F5FE6
:100A5000715019F410E040E00FC0FE01E60FF11DE7
:100A600040816F5F715011F410E006C0FE01E60F87
:100A7000F11D10816F5F7150892F86958695835C7B
:100A8000FD01E054F94F808350E09A0184E03695EF
:100A900027958A95E1F7892F90E083709070F4E0B4
:100AA000880F991FFA95E1F7282B235CFD01EF537E
:100AB000F94F2083812F82958695869583704F709C
:100AC0005070440F551F440F551F842B835CFD014C
:100AD000EE53F94F80831F73135CFD01ED53F94F03
:100AE00010831496772309F0AECFCD010E94E40461
:100AF000DF91CF911F9108951F93CF93DF93EC0166
:100B000070E0A22FB0E0129748C0E42FF0E0E1536C
:100B1000FA4F30814F5FE42FF0E0E153FA4F5081FC
:100B20004F5FE42FF0E0E153FA4F10814F5FE42F65
:100B3000F0E0E153FA4F20814F5F842F90E0A81737
:100B4000B90774F15D53FE01E70FF11D852F829502
:100B50008F703D53330F330F382B3083613001F1E9
:100B6000912F9D537F5FFE01E70FF11D715052954C
:100B7000507F892F86958695582B508363506F3F01
:100B800079F07E5FFE01E70FF11D9295990F990FA5
:100B9000907C2D53922B90837F5F662309F0B5CF15
:100BA000DF91CF911F9108951F93182F8A3019F468
:100BB0008DE00E94D4058091C00085FFFCCF10938A
:100BC000C60080E090E01F9108951F931FB7F8942E
:100BD0008091C1008F778093C1008091C1008F7B8D
:100BE0008093C100589A5098599A519A1092C50012
:100BF0008AE28093C4008091C00082608093C0002C
:100C000088E18093C1008091C2008F778093C200F9
:100C10008091C2008F7B8093C2008091C2008F7D43
:100C20008093C2008091C2008F7E8093C200809129
:100C3000C200877F8093C2008091C1008B7F809328
:100C4000C1008091C20084608093C2008091C20084
:100C500082608093C20002C08091C6008091C00073
:100C600087FDFACF8091C10080688093C100809198
:100C7000C10080648093C1001092BA0481E0809327
:100C8000020188EC90E00E94BF0B9093680680936D
:100C900067068CED90E00E94BF0B909366068093F0
:100CA00065061FBF1F91089580910201882309F4F2
:100CB000F6C08091B504882371F0809102018823E9
:100CC00051F06091C4042BE043E756E087E40E94B2
:100CD00013051092B50480916506909166060E94F6
:100CE000C80B882309F44BC080910201882309F4C2
:100CF00046C0609118057091190580911A05909170
:100D00001B052CE630E040E050E00E9404403093A8
:100D1000100820930F0860912005709121058091A3
:100D20002205909123052CE630E040E050E00E943F
:100D30000440309312082093110880918B03809314
:100D4000130880918C038093140880914E05809342
:100D500015086091C40428E04FE058E087E70E943E
:100D6000130580914E05853010F010924E0583E6F4
:100D700090E00E94BF0B9093660680936506809179
:100D80006706909168060E94C80B882321F4809121
:100D9000B7048823B1F080910201882391F060911B
:100DA000C40422E44EE756E084E40E941305109246
:100DB000B7048AEF90E00E94BF0B9093680680937F
:100DC0006706609101016F3F89F0462F50E094E083
:100DD000440F551F9A95E1F74C5F5E4F605D20E12F
:100DE00081E40E9413058FEF8093010190915607D3
:100DF0009923A1F080910201882381F083E28093FE
:100E0000C0069093C1068DE08093C2061092020145
:100E1000109256078091C0068093C6008091B60458
:100E2000882359F180910201882339F10E94A6108C
:100E30001092B6043091B904932F9F5F9093B90438
:100E4000943021F08091B804882359F02EE143E6D4
:100E500057E060E084E30E9413058FEF8093B904AC
:100E60000CC044E1949FA0011124465E5C4F24E134
:100E700060E0832F8F5C0E9413058091B404882367
:100E800071F080910201882351F06091C4042AE03E
:100E900049E656E086E50E9413051092B4040895D1
:100EA0001F93CF93DF93CDB7DEB724970FB6F89497
:100EB000DEBF0FBECDBF8091BA04882309F423C1E1
:100EC0008091D105883609F486C0893690F482363F
:100ED00009F453C0833630F48B34F1F0813609F0D5
:100EE00010C13FC0833609F45CC0873609F009C1E0
:100EF000A7C0813738F48C3608F0D0C08B3609F0A3
:100F000000C18DC0843709F481C0863709F494C0CC
:100F1000813709F0F6C098C02091BB0443E062E03D
:100F2000CE0101960E947C0589819A8190936F037E
:100F300080936E0380916E0390916F0320917003F4
:100F400030917103845E9D4F821B930B68E671E0C4
:100F50000E94CF3F845B904090934D0580934C0559
:100F6000D0C02091BB0443E062E0CE0103960E9412
:100F70007C058B81809301012AC02091BB0443E052
:100F80006BE083E796E00E947C058091F2049091EB
:100F90007506892B8093F20480917C068093560716
:100FA000B0C02091BB0443E06BE083E796E00E9471
:100FB0007C058091F20490917506892B8093F20450
:100FC00080917C068093560781E08093B7048FEF71
:100FD0008093030196C02091BB0443E062E0CE0100
:100FE00003960E947C058091F2049B81892B80935B
:100FF000F2048C818F3F21F481E08093B80402C019
:101000001092B80481E08093B6047BC02091BB04A9
:1010100043E064E08CEB94E00E947C05D8CF209103
:10102000BB0443E064E080EC94E00E947C05809186
:10103000C30480935607CBCF81E08093B40461C092
:1010400081E08093B5045DC02091BB0443E062E081
:10105000CE0103960E947C05809102018823E1F372
:101060008B818F3F71F0863010F085E08B838B8110
:101070000E94A5386091C4048B8126E449EC57E0B6
:1010800009C01091C40482E00E94663826E449EC4D
:1010900057E0612F855B0E94130533C02091BB048C
:1010A00043E066E489EC97E00E947C058091D105DD
:1010B0008B560E9490386091F40770E080E090E0D9
:1010C00024EC39E040E050E00E94903F60937403CC
:1010D0007093750380937603909377036091F5077F
:1010E00070E080E090E00E94903F609378037093FE
:1010F000790380937A0390937B030E94683A0E945D
:1011000061221092BA0424960FB6F894DEBF0FBE87
:10111000CDBFDF91CF911F910895982F80915707F0
:10112000813069F48091F104E82FF0E0E65EFC4F35
:1011300090838F5F8093F10421E030E005C0892F18
:101140000E94D405282F30E0C90108951F93182F5D
:1011500004C080E30E948D0811501116D4F31F9132
:1011600008951F93182F04C080E20E948D0811502B
:101170001116D4F31F9108950F931F93CF93DF930C
:101180008C01EB0108C0F8010F5F1F4FE4918E2F17
:101190000E948D0821972097B1F7DF91CF911F9181
:1011A0000F9108950F931F93CF93DF938C01EB0161
:1011B00006C0F80181918F010E948D082197209728
:1011C000C1F7DF91CF911F910F9108952F923F9218
:1011D0004F925F926F927F928F929F92AF92BF9247
:1011E000CF92DF92EF92FF920F931F93CF93DF93F3
:1011F000CDB7DEB7E5970FB6F894DEBF0FBECDBF13
:101200002B968FAD2B9780935707CE01835B9F4F13
:101210009B838A832D964EAC5FAC2D971EA61FA68E
:1012200018AA19AA9E01225D3F4F3DAB2CAB82014B
:1012300002C00F5F1F4FF801F490FF2019F0F5E294
:10124000FF16B9F7B8016419750919F0C2010E94B7
:10125000BC08FF2009F445C228010894411C511C18
:101260001982AA81BB8133241BAA2FEF2AABF2017A
:101270000894411C511CB490632D70E06170707033
:1012800035E7B31621F08B2D80628837C9F46115DC
:10129000710559F02D913D914D915C9113972EA7B9
:1012A0003FA748AB59AB14960BC08D919C911197F9
:1012B0009C0140E050E02EA73FA748AB59AB1296E7
:1012C00030E2B31621F48981882389F61CC043E2F9
:1012D000B41611F458E055C08AE2B81621F09DE228
:1012E000B91671F408C0FD011296E081EBABE7FF7F
:1012F000BECFE195EBABE0E13E2AFFED3F22B7CF59
:101300002BE2B21611F4B982B2CF3EE2B31699F5D0
:10131000F2010894411C511C84918A3221F0B82EAC
:1013200020E030E01DC0FD0112964081518157FF41
:1013300002C04FEF5FEF4AAB9ACFC90153E0880F6D
:10134000991F5A95E1F7220F331F280F391F2B0DD4
:10135000311D20533040F2010894411C511CB490BF
:101360008B2D80538A3048F3A90137FF02C04FEF1D
:101370005FEF4AAB85CF40E3B41629F434FC77CF56
:1013800050E2352A74CF8B2D81538930D8F420E078
:1013900030E0C90103E0880F991F0A95E1F7220F99
:1013A000331F280F391F2B0D311D20533040F20100
:1013B0000894411C511CB4908B2D80538A3048F303
:1013C0002BAB5ECF88E6B81619F494E0392A4FCFDC
:1013D000ECE6BE1619F4F1E03F2A49CFBB83AA839D
:1013E00023E6B21639F41296BB83AA8312978C9126
:1013F0008E8322C134E4B31639F044E6B41631F0DA
:1014000059E6B516A9F502C081E0382A30FE08C0B9
:101410001496BB83AA835E914E913E912E910AC091
:101420001296BB83AA839E918E919C01442737FD1F
:101430004095542F2EA73FA748AB59AB8EA59FA52B
:10144000A8A9B9A9BB238CF42EA53FA548A959A9E1
:1014500050954095309521953F4F4F4F5F4F2EA7A8
:101460003FA748AB59AB8DE28983BAE02B2E80C0F1
:101470003FE4B31621F04FE6B41631F402C051E058
:10148000352AA8E02A2E73C080E7B81689F4129690
:10149000BB83AA839E918E919C0140E050E02EA7D1
:1014A0003FA748AB59AB30E4332AF8E7BF2E5DC005
:1014B00043E7B416D1F51296BB83AA83DE90CE9093
:1014C000C114D10489F488E28E838EE68F8385E788
:1014D00088878CE689878A8789E28B871C86E6E085
:1014E000CE2ED12CCC0EDD1E5AA957FD14C0452F8F
:1014F000552747FD509560E070E0C6010E94683DA9
:10150000009711F4FAA80EC0F82EFC188AA98F15BE
:101510004CF4F82E07C0F60101900020E9F731974E
:10152000FE2EFC18198240E090C095E5B91621F016
:10153000A5E7BA1631F402C0B1E03B2A7AE0272EC3
:1015400016C0E8E5BE1621F0F8E7BF1609F070C036
:1015500033FE0BC02EA53FA548A959A92115310579
:101560004105510511F030E4332A60E1262E19823D
:101570004AA947FD02C05FED35228EA59FA5A8A907
:10158000B9A90097A105B10549F49AA9992331F4A5
:101590005EE2C52ED12CCC0EDD1E46C06EA47FA40B
:1015A00088A899A84EE2C42ED12CCC0EDD1EE22CC8
:1015B000FF2400E010E06EA57FA588A999A9A801E5
:1015C00097010E94E23F6A3020F430E3A32EA60E7A
:1015D00008C027E5A22EA60EA8E5BA1611F4BFEDA5
:1015E000AB22F601A2926F016EA57FA588A999A9E9
:1015F000A80197010E94E23F2EA73FA748AB59AB35
:101600006E147F048006910618F039014A01D3CF89
:10161000F8E02F1649F433FE07C020E3A21621F0AC
:1016200080E3D6018E936D01FCA8FC184AA90DC079
:10163000BB2009F456C0BE82198296E0C92ED12C77
:10164000CC0EDD1E40E0FF24F394E42EEF18E7FCFF
:10165000EE248981882319F08F2D8F5F06C036FC18
:1016600002C08F2D02C08F2D8E5FA82EAE0C032DD1
:1016700010E080E3882E912C802291228114910425
:1016800021F48BA98A190E94B1088981882329F045
:1016900061E070E0CE01019609C006FF09C080E359
:1016A0008C83BD8262E070E0CE0104960E94D20875
:1016B000B0E28B16910421F48BA98A190E94A60826
:1016C0008E2D0E94A6086F2D772767FD7095C601A5
:1016D0000E94D20804FFABCD8BA98A190E94B108E1
:1016E000A6CDE5960FB6F894DEBF0FBECDBFDF9155
:1016F000CF911F910F91FF90EF90DF90CF90BF900F
:10170000AF909F908F907F906F905F904F903F90A1
:101710002F9008952FB7F894909100019A3019F402
:10172000529A5A9802C03F9A479884B1886184B906
:1017300085B1877E85B99A3019F4529A5A9802C0B9
:101740003F9A479884B58F7A84BD84B5836A84BDF7
:1017500085B5877385BD85B5887F826085BD17BCDB
:1017600088E788BD16BC80916E00897F80936E00EB
:1017700080916E00816080936E002FBF089520914C
:10178000CA043091CB042F5F3F4F820F931F0895FF
:101790002091CA043091CB04821B930B892F992787
:1017A0008695807490E008951F920F920FB60F9265
:1017B00011242F933F934F935F936F937F938F9356
:1017C0009F93AF93BF93EF93FF938091D104815088
:1017D0008093D1048F3FB9F489E08093D104809144
:1017E00006038F5F817080930603882319F481E0DC
:1017F0008093CC048091CA049091CB04019690937D
:10180000CB048093CA048091CF049091D004892B9B
:10181000B1F08091CF049091D00401979093D004BF
:101820008093CF042091CF043091D00480910403A1
:101830009091050382239323892BD1F406C08FEF67
:101840009FEF9093050380930403809100018A30F9
:1018500039F404C05A9A05C0479A03C05A9801C087
:1018600047988091D10783FF08C00E94383B05C08C
:10187000809100018A3081F7EDCFFF91EF91BF9108
:10188000AF919F918F917F916F915F914F913F9118
:101890002F910F900FBE0F901F901895AC012091C3
:1018A000CA043091CB042F5F3F4F05C080917A006E
:1018B000886C80937A008091CA049091CB04B9011E
:1018C000681B790BCB01840F951F80709078892F4E
:1018D00099278695882351F30895AC012091CA0475
:1018E0003091CB042F5F3F4F8091CA049091CB047D
:1018F000B901681B790BCB01840F951F807090781C
:10190000892F99278695882379F308959FB7F894AE
:10191000579A5F9AE0EBF0E080818F788083808136
:1019200083688083E1EBF0E080818673808380812F
:10193000866080838AE08093B3001092B200E0E773
:10194000F0E080818A7F80838081826080839FBF76
:1019500008951F920F920FB60F921124FF920F93CA
:101960001F932F933F934F935F936F937F938F9327
:101970009F93AF93BF93EF93FF93809107038150A1
:10198000809307038F3F09F082C08091B00080935D
:10199000B0008091B00080688093B0008091930384
:1019A00090E09093D3048093D2048091FE07F0904E
:1019B000EB0780FF23C00091D2041091D304609103
:1019C00018057091190580911A0590911B0520E862
:1019D00030E040E050E00E940440CA01B9012F2DE0
:1019E00030E040E050E00E94903F20E032E040E0F4
:1019F00050E00E940440020F131F22C00091D20445
:101A00001091D304609118057091190580911A0501
:101A100090911B0520E830E040E050E00E94044037
:101A2000CA01B9012F2D30E040E050E00E94903F04
:101A300020E032E040E050E00E940440021B130B23
:101A40001093D3040093D2042091D2043091D30494
:101A50008091EC0790E02817390754F02091D204C8
:101A60003091D3048091ED0790E08217930724F41E
:101A70009093D3048093D2048091D2049091D304A4
:101A80008093B3008091EE078093070306C0809196
:101A9000B0008F738093B0005F98FF91EF91BF917A
:101AA000AF919F918F917F916F915F914F913F91F6
:101AB0002F911F910F91FF900F900FBE0F901F90CD
:101AC00018959FB7F89411B812B88FEF80937E00E5
:101AD000ECE7F0E080818F7180838081807E80835D
:101AE000AAE7B0E087E28C93EBE7F0E08081887FA3
:101AF00080838C91886C8C939FBF08951F920F9266
:101B00000FB60F921124EF92FF920F931F932F9312
:101B10003F934F935F936F937F938F939F93AF9375
:101B2000BF93CF93DF93EF93FF9380917A008773F6
:101B300080937A008091EF048F5F8093EF0481504F
:101B4000853009F47EC0863090F4823009F440C0BC
:101B5000833030F48823F1F0813009F082C22FC045
:101B6000833009F441C0843009F07BC25AC0883008
:101B700009F4B2C0893038F4863009F473C0873074
:101B800009F06FC28CC0893009F4C3C08A3009F0F3
:101B900068C2DBC180917800909179009093EE0447
:101BA0008093ED0481E08093F0048091E4049091AF
:101BB000E50401969093E5048093E40456C2809175
:101BC0007800909179009093EC048093EB0482C0AC
:101BD00080917800909179009093EA048093E904D1
:101BE00084E08093F00441C24091080350910903BE
:101BF00080917800909179009A01220F331F240F71
:101C0000351F63E070E00E94BB3F260F371F3695FB
:101C1000279536952795309309032093080386E08E
:101C2000E0CF8091120590911305209178003091BA
:101C30007900821B930B9093DD048093DC0487E092
:101C4000D0CF80917800909179002091100530914B
:101C50001105821B930B9093DF048093DE04109296
:101C6000F00403C2809100012091ED043091EE0454
:101C70008A3049F48091780090917900820F931F07
:101C80009695879506C08091780090917900820F93
:101C9000931F9093DB048093DA0481E0A2CF8091BC
:101CA00000012091EB043091EC048A3049F48091DA
:101CB000780090917900820F931F9695879506C0C2
:101CC0008091780090917900820F931F9093D904AE
:101CD0008093D80482E085CF809100012091E904AF
:101CE0003091EA048A3049F480917800909179002B
:101CF000820F931F9695879506C0809178009091EA
:101D00007900820F931F9093D7048093D60485E0C7
:101D100068CF6091780070917900E0901405F090A0
:101D200015050091160510911705882777FD8095F8
:101D3000982F0E94753EA80197010E94753D0E9450
:101D4000423E7093E1046093E004E091E004F0917E
:101D5000E1048091DE049091DF04C091DC04D09115
:101D6000DD0497FF03C0909581959F4F64E070E07C
:101D70000E94CF3F9B01CE01D7FF03C09095819574
:101D80009F4F64E070E00E94CF3F260F371FE20FA5
:101D9000F31FF093E104E093E0048091E00490915C
:101DA000E10402970CF43EC0609114057091150592
:101DB000809116059091170520E030E84BE354E43C
:101DC0000E94B03E88230CF078C060911405709199
:101DD000150580911605909117052AE037ED43EA25
:101DE0005CE30E94763D6093140570931505809323
:101DF0001605909317058091580590915905845FB9
:101E0000914008F05AC060911405709115058091B9
:101E10001605909117052DEC3CEC4CEC5DE30E940F
:101E2000763D43C08091E0049091E1048F5F9F4F25
:101E30000CF043C060911405709115058091160552
:101E40009091170520E030E849E054E40E94B43E48
:101E500018169CF560911405709115058091160572
:101E6000909117052AE037ED43EA5CE30E94753D47
:101E700060931405709315058093160590931705CC
:101E80008091580590915905845F9140B0F460911C
:101E900014057091150580911605909117052DEC8C
:101EA0003CEC4CEC5DE30E94753D6093140570932F
:101EB00015058093160590931705809178009091F1
:101EC00079009093D5048093D404209148053091F3
:101ED000490540914A0550914B058091E00490914D
:101EE000E104AA2797FDA095BA2F820F931FA41F84
:101EF000B51F8093480590934905A0934A05B09378
:101F00004B05E0904805F090490500914A05109175
:101F10004B05609148057091490580914A05909163
:101F20004B0520E034E040E050E00E940440E21A1B
:101F3000F30A040B150BE0924805F0924905009353
:101F40004A0510934B0583E04CCEE0917800F09168
:101F500079008091E6049091E704E80FF91FF0936F
:101F6000E704E093E6048091E8048F5F8093E8043F
:101F7000853008F476C08091780090917900909334
:101F80000F0380930E034091E2045091E3042091EB
:101F90005807309159072E1B3F0B80918005909177
:101FA0008105281B390B8091820390E0BC01269F9C
:101FB000C001279F900D369F900D11249A01A3E038
:101FC000220F331FAA95E1F7241B350B820F931FB5
:101FD00068E070E00E94CF3F7093E3046093E204F6
:101FE000E0900A03F0900B0300910C0310910D0395
:101FF000BF01882777FD8095982FA8019701220FB0
:10200000331F441F551F2E0D3F1D401F511F620FD0
:10201000731F841F951F24E030E040E050E00E94D1
:10202000044020930A0330930B0340930C03509316
:102030000D03209158073091590780910A03909120
:102040000B03A0910C03B0910D03281B390B3093A7
:102050008105209380051092E8041092E704109205
:10206000E6041092F0041092EF0480917C00807ED0
:102070009091F004892B80937C008091EF04882359
:1020800029F080917A00886C80937A00FF91EF911B
:10209000DF91CF91BF91AF919F918F917F916F9180
:1020A0005F914F913F912F911F910F91FF90EF9072
:1020B0000F900FBE0F901F9018951F93CF93DF9333
:1020C00083E00E946638182F853108F01A5017BD3A
:1020D00084E690E00E944E0C80910E0390910F03D5
:1020E00082559340C0F410E016C017BD82E390E023
:1020F0000E944E0CDF93CF931F920E94E6088091BE
:102100000E0390910F030F900F900F9084589340FF
:1021100030F01F5F02C0C5E4D1E01A3F30F3612FF9
:1021200083E00E946F3810935A078CE291E00E947E
:102130004E0CDF91CF911F910895EAE1F3E080E228
:10214000819383E0EA36F807D1F708951F938091D1
:10215000F204282F30E0C90181709070682F882325
:10216000A9F08091F304882311F0815002C080917E
:102170006A038093F304EAE1F3E080E2819383E071
:10218000EA36F807D1F78FEF8093B904A9014270BE
:10219000507021FF17C09091F30480916A03981743
:1021A00019F41092F30403C09F5F9093F304EAE1E3
:1021B000F3E080E2819393E0EA36F907D1F78FEFFD
:1021C0008093B904662321F0452B11F01092F3049B
:1021D0008091F304282F30E08A3040F481E180932D
:1021E000F1043F932F9383E594E007C080E180934F
:1021F000F1043F932F938EE494E09F938F9381E0BB
:102200008F930E94E6080F900F900F900F900F9001
:102210001091F304153009F4FBC1163090F412301C
:1022200009F4D0C0133030F4112309F1113009F052
:1022300046C465C0133009F41BC1143009F03FC413
:102240006BC1183009F411C3193038F4163009F491
:1022500099C2173009F033C4E3C21A3009F49FC39E
:102260001A3008F440C31B3009F029C4D6C31092B9
:10227000F1048EE394E09F938F9311E01F930E94EB
:10228000E60884E18093F10420910001822F6AE046
:102290000E94AF3F492F50E0822F0E94AF3F90E055
:1022A0002BE630E03F932F9325E430E03F932F93CC
:1022B0001F921F925F934F939F938F9389E294E0B5
:1022C0009F938F931F930E94E60888E28093F10406
:1022D0000E94683A90E09F938F938CE194E09F93E3
:1022E0008F931F930E94E6088CE38093F1048CE0A7
:1022F00094E09F938F931F930E94E608DCC3809124
:10230000D10780FF47C01092F10480918005909121
:1023100081059F938F938DEF93E09F938F931F93EE
:102320000E94E60884E18093F104809182059091F7
:1023300083059F938F938EEE93E09F938F931F93CC
:102340000E94E60888E28093F10480910E03909148
:102350000F039F938F938FED93E09F938F931F9322
:102360000E94E6088CE38093F10480915A0790E084
:102370009F938F9380ED93E09F938F931F930E9481
:10238000E6088DB79EB744960FB6F8949EBF0FBE71
:102390008DBF9AC384E18093F1048CEC93E09F930A
:1023A0008F931F930E94E60888E28093F1048DEBDF
:1023B00093E09F938F931F930E94E6088DB79EB77B
:1023C0000696E2CF1092F10484EB93E09F938F93F3
:1023D00011E01F930E94E60884E18093F10460916C
:1023E00018057091190580911A0590911B0520E040
:1023F00034E040E050E00E9404405F934F933F93ED
:102400002F9385EA93E09F938F931F930E94E60892
:1024100088E28093F10460912005709121058091FC
:1024200022059091230520E034E040E050E00E9436
:1024300004405F934F933F932F9386E993E09F93DC
:102440008F931F930E94E6088CE38093F1048091A0
:102450006E0390916F039F938F9387E893E09F9310
:102460008F931F930E94E6088DB79EB746968CCF38
:102470001092F10480916707909168072091650799
:10248000309166079F938F933F932F9387E793E055
:102490009F938F9311E01F930E94E60884E180933D
:1024A000F10480916B0790916C072091690730913E
:1024B0006A079F938F933F932F9387E693E09F93B1
:1024C0008F931F930E94E60888E28093F104809125
:1024D0006F079091700720916D0730916E079F9361
:1024E0008F933F932F9387E593E09F938F931F9351
:1024F0000E94E6088CE38093F10480917307909129
:10250000740720917107309172079F938F933F93C7
:102510002F9387E493E03AC21092F104E091CA0746
:10252000F0E0EE0FFF1FED59F84F20813181E0916F
:10253000C907F0E0EE0FFF1FED59F84F8081918140
:102540003F932F939F938F9387E393E09F938F9372
:1025500011E01F930E94E60884E18093F104E0916A
:10256000CC07F0E0EE0FFF1FED59F84F20813181CD
:10257000E091CB07F0E0EE0FFF1FED59F84F80819F
:1025800091813F932F939F938F9387E293E09F9343
:102590008F931F930E94E60888E28093F104E091F4
:1025A000CE07F0E0EE0FFF1FED59F84F208131818B
:1025B000E091CD07F0E0EE0FFF1FED59F84F80815D
:1025C00091813F932F939F938F9387E193E09F9304
:1025D0008F931F930E94E6088CE38093F104E091AF
:1025E000D007F0E0EE0FFF1FED59F84F2081318149
:1025F000E091CF07F0E0EE0FFF1FED59F84F80811B
:1026000091813F932F939F938F9387E093E0BEC177
:102610001092F10489EF92E09F938F9311E01F9342
:102620000E94E6080F900F900F90809100018A3071
:1026300009F04AC084E18093F1044091060550916D
:1026400007058091D6049091D7042091060530911A
:102650000705821B930B5F934F939F938F9389EE94
:1026600092E09F938F931F930E94E60888E28093E5
:10267000F10440910805509109058091D80490918A
:10268000D9042091080530910905821B930B5F93B3
:102690004F939F938F9389ED92E09F938F931F9316
:1026A0000E94E6088CE38093F10480910A059091E2
:1026B0000B052091B5073091B6079F938F933F93F9
:1026C0002F9389EC92E055C084E18093F1048091CE
:1026D00006059091070562E070E00E94CF3F80916F
:1026E000D6049091D7042091060530910705821BEE
:1026F000930B7F936F939F938F9389EB92E09F93BC
:102700008F931F930E94E60888E28093F1048091E2
:1027100008059091090562E070E00E94CF3F80912A
:10272000D8049091D9042091080530910905821BA5
:10273000930B7F936F939F938F9389EA92E09F937C
:102740008F931F930E94E6088CE38093F10480919D
:102750000A0590910B0562E070E00E94CF3F8091E6
:10276000B5079091B6077F936F939F938F9389E9F5
:1027700092E09F938F931F930E94E6088DB79EB7B8
:10278000459602CE1092F1048CE892E09F938F93CD
:1027900011E01F930E94E60884E18093F104809188
:1027A0001005909111052091DE043091DF049F9374
:1027B0008F933F932F938BE792E09F938F931F9379
:1027C0000E94E60888E28093F104809112059091BE
:1027D00013052091DC043091DD049F938F933F9388
:1027E0002F938AE692E09F938F931F930E94E608AF
:1027F0008CE38093F104609114057091150580912C
:102800001605909117050E94423E2091AA0730912B
:10281000AB077F936F933F932F9389E592E046C177
:1028200084E18093F10480910803909109039F93C0
:102830008F938BE492E09F938F9311E01F930E94FC
:10284000E60888E28093F1048091FF0490910005EE
:102850009F938F938DE392E09F938F931F930E949A
:10286000E6088DB79EB70A968FCD1092F1048EE2DE
:1028700092E09F938F9311E01F930E94E60884E1FA
:102880008093F10480917003909171039F938F93D3
:102890008FE192E09F938F931F930E94E60888E256
:1028A0008093F10480916E0390916F039F938F93B7
:1028B00080E192E09F938F931F930E94E6088CE340
:1028C0008093F10480914C0590914D059F938F93D7
:1028D00081E092E09F938F931F930E94E6088DB74B
:1028E0009EB7429651CD1092F1048091620590916D
:1028F000630520915A0530915B059F938F933F9319
:102900002F938FEE91E09F938F9311E01F930E947E
:10291000E60884E18093F104809164059091650557
:1029200020915C0530915D059F938F933F932F938A
:102930008DED91E09F938F931F930E94E60888E2AC
:102940008093F104809166059091670520915E0562
:1029500030915F059F938F933F932F938BEC91E082
:102960009F938F931F930E94E6088CE38093F1045A
:10297000809168059091690520916005309161050D
:102980009F938F933F932F9389EB91E09F938F9326
:102990001F930E94E6088DB79EB74C96F5CC109217
:1029A000F10481EB91E09F938F9311E01F930E94BC
:1029B000E60884E18093F1048091930390E09F9373
:1029C0008F9383EA91E09F938F931F930E94E60871
:1029D00088E28093F1048091D2049091D3049F9374
:1029E0008F9385E991E09F938F931F930E94E60850
:1029F0008CE38093F1042091ED0730E08091EC07A7
:102A000090E03F932F939F938F9387E891E09F935C
:102A10008F931F930E94E608B4CC1092F10487E7CD
:102A200091E09F938F9311E01F930E94E60884E149
:102A30008093F10420917706332727FD309580910C
:102A40007606992787FD90953F932F939F938F93B9
:102A500087E691E09F938F931F930E94E60888E298
:102A60008093F10420917806332727FD30958091DB
:102A7000790690E03F932F939F938F9387E591E0A2
:102A80009F938F931F930E94E6088CE38093F10439
:102A900020917D0630E080917A06992787FD9095F8
:102AA0003F932F939F938F9387E491E09F938F930E
:102AB0001F930E94E6088DB79EB7489665CC1150CB
:102AC00010936A031092F3041092F2041F91089578
:102AD00087B18C6087B94298439808954091F40477
:102AE0005091F5044431510500F14C3D5105E8F495
:102AF0002091FA043091FB04C901880F991F8417B3
:102B0000950710F4429A01C042982F5F3F4F3093CF
:102B1000FB042093FA04215030402417350730F08D
:102B20001092FB041092FA0401C0429A4091F604FC
:102B30005091F7044431510510F4439808954C3DE9
:102B40005105E8F42091F8043091F904C901880F87
:102B5000991F8417950710F4439A01C043982F5F7B
:102B60003F4F3093F9042093F8042150304024174C
:102B7000350730F01092F9041092F8040895439844
:102B800008959FB7F8943998389A88B1836088B9C6
:102B9000E9EBF0E080818C7F80838AE28093B8004B
:102BA0009FBF089585EA8093BC00089584E98093CF
:102BB000BC0008958093BB0085E88093BC00089515
:102BC00085EC8093BC00089585E88093BC0008954F
:102BD000EF92FF920F931F938CEBE82EF12C84E978
:102BE000F70180831092FC040BEB10E0F801808168
:102BF0008093FD041092FD0480E8F7018083109219
:102C0000BD001092BA00F80110821092B900109223
:102C1000B8000E94C11585EAF7018083F80110828F
:102C200085E8F70180831F910F91FF90EF90089541
:102C30001F920F920FB60F9211248F939F93EF93D1
:102C4000FF938091FC048F5F8093FC04815083305C
:102C5000D1F1843028F4813081F0823060F508C0F1
:102C60008530C1F18530A0F1863009F04FC03EC0FB
:102C70008091FD04880F8E5A12C08091FD048F5FF1
:102C80008093FD048150813069F0813030F08230D2
:102C900061F0833009F047C00BC08091A107809399
:102CA000BB0020C08091B707FACF8091AC07F7CF67
:102CB0008091C807F4CF8091FD04843010F4109205
:102CC000FC0485EA10C08091FE04880F8D5AE7CF7E
:102CD00085EC09C0E091FE04F0E08091BB00E55A6C
:102CE000F84F808385E88093BC001DC08091FE046E
:102CF000E82FF0E09091BB00E15AF84F90838F5F8E
:102D00008093FE04843010F01092FE0484E98093D6
:102D1000BC001092FC048AE090E090936D038093D5
:102D20006C031092FD04FF91EF919F918F910F9092
:102D30000FBE0F901F9018959FB7F89456985E9A03
:102D40008AB180638AB98BB18F7C8BB98091000185
:102D50008A3011F4539A5B98809180008C70809334
:102D6000800080918100837E80938100809181002A
:102D7000836C80938100809182008F7380938200A6
:102D800080916F00897F80936F0080916F008162D6
:102D900080936F00109200051092FF049FBF08956A
:102DA0001F920F920FB60F9211242F933F935F93B0
:102DB0006F937F938F939F93AF93BF938091010500
:102DC000882391F42091FF04309100058091FF0445
:102DD0009091000568E070E00E94CF3F261B370B02
:102DE000309300052093FF0410920105BF91AF912D
:102DF0009F918F917F916F915F913F912F910F9054
:102E00000FBE0F901F9018951F920F920FB60F9242
:102E100011240F931F932F933F934F935F936F93BF
:102E20007F938F939F93AF93BF93CF93DF93EF9352
:102E3000FF93209186003091870080910205909148
:102E40000305281B390B8091860090918700909391
:102E5000030580930205C9018D5494400091040537
:102E600010910505835F9A4188F4043011053CF008
:102E700010926B03809101058F5F8093010581E0C3
:102E800090E0909305058093040598C00E301105DD
:102E90000CF094C0C9018B5F9040845B914008F0B6
:102EA00072C0E901C25DD140F801EE0FFF1FED597C
:102EB000F84F808191819E01281B390BC90137FF92
:102EC00003C0909581959F4F069784F48091FF04ED
:102ED00090910005883C91054CF48091FF049091FD
:102EE00000050A96909300058093FF04F801EE0F09
:102EF000FF1FED59F84F20813181C901880F991FBB
:102F0000820F931F8C0F9D1F64E070E00E94CF3FE3
:102F10009B01CE010196861797071CF42150304083
:102F200006C021976C177D0714F42F5F3F4F8091E7
:102F3000FF0490910005E801CC0FDD1F833C910553
:102F4000BCF0FE01ED59F84F80819181A901481B29
:102F5000590BCA0163E070E00E94CF3FCB01880F9C
:102F6000991F860F971FCF57D84F9983888304C026
:102F7000CF57D84F19821882F801EE0FFF1FED5975
:102F8000F84F31832083F8013196F0930505E093E3
:102F90000405E530F10511F45D9A06C05D98E63050
:102FA000F10511F45C9A01C05C98809100018A30AF
:102FB00029F4379711F45B9A01C05B988091FF0464
:102FC00090910005892B49F08091FF0490910005B4
:102FD0000197909300058093FF04FF91EF91DF919B
:102FE000CF91BF91AF919F918F917F916F915F91A1
:102FF0004F913F912F911F910F910F900FBE0F9006
:103000001F9018952F923F924F925F926F927F92EE
:103010008F929F92AF92BF92CF92DF92EF92FF92E8
:103020000F931F93CF93DF93CDB7DEB722970FB6E1
:10303000F894DEBF0FBECDBF80910A0590910B05BD
:103040002091DA043091DB04821B930B9093B60736
:103050008093B5078091D8049091D90420910805F8
:1030600030910905821B930B9093B2078093B107AF
:103070008091D6049091D7042091060530910705E0
:10308000821B930B9093B4078093B307E090B8072B
:10309000F090B9076091DE047091DF04882777FD16
:1030A0008095982F2CE030E040E050E00E94903F67
:1030B0000027F7FC0095102FE60EF71E081F191FBA
:1030C000C801B70122E030E040E050E00E94044037
:1030D0003093B9072093B807E090C207F090C30778
:1030E0006091DC047091DD04882777FD8095982F2E
:1030F0002CE030E040E050E00E94903F0027F7FCD9
:103100000095102FE60EF71E081F191FC801B70102
:1031100022E030E040E050E00E9404403093C307DA
:103120002093C2072091AA073091AB076091E00479
:103130007091E104882777FD8095982F442737FD0B
:103140004095542F620F731F841F951F22E030E0BB
:1031500040E050E00E9404403093AB072093AA0760
:1031600040914005509141056091420570914305A1
:103170002091DE043091DF04C901880F991F820F6E
:10318000931F880F991F880F991FAA2797FDA09555
:10319000BA2F840F951FA61FB71F809340059093E9
:1031A0004105A0934205B0934305409144055091D9
:1031B000450560914605709147052091DC043091EA
:1031C000DD04C901880F991F820F931F880F991F73
:1031D000880F991FAA2797FDA095BA2F840F951FD6
:1031E000A61FB71F8093440590934505A0934605FD
:1031F000B09347052091DE043091DF0480915005A3
:1032000090915105820F931F909351058093500523
:103210002091DC043091DD0480915205909153059A
:10322000820F931F9093530580935205809154050C
:1032300090915505019690935505809354052091E2
:103240003C0530913D0540913E0550913F058091F0
:10325000B5079091B607AA2797FDA095BA2F820FC0
:10326000931FA41FB51F80933C0590933D05A09329
:103270003E05B0933F058091B5079091B6079C013C
:10328000442737FD4095542F8091BA079091BB0792
:10329000A091BC07B091BD07280F391F4A1F5B1FC3
:1032A0002093BA073093BB074093BC075093BD07E8
:1032B000203B83E8380788E0480780E0580764F03F
:1032C000205B3348484050402093BA073093BB07F7
:1032D0004093BC075093BD078091BA079091BB07FC
:1032E000A091BC07B091BD07B7FF0CC080559C47AB
:1032F000A74FBF4F8093BA079093BB07A093BC071B
:10330000B093BD07909188059A83992309F08AC0EC
:1033100080918905882309F085C08091D10786FFB7
:1033200081C06091B5077091B60720912C0530914E
:103330002D0540912E0550912F05E0909503FF2417
:1033400000E010E0882777FD8095982F0E94903F3D
:1033500020E038E040E050E00E940440CA01B9019A
:10336000A80197010E94903F20E030E140E050E04A
:103370000E94044059016A012093C7053093C80593
:103380004093C9055093CA056091B5077091B6077F
:10339000209134053091350540913605509137051F
:1033A000882777FD8095982F0E94903F20E038E095
:1033B00040E050E00E940440CA01B901A801970111
:1033C0000E94903F20E030E140E050E00E94044045
:1033D0002093C3053093C4054093C5055093C6059B
:1033E000D601C501D7FE07C0B095A09590958195EF
:1033F0009F4FAF4FBF4F81389105A105B10574F4C0
:1034000057FF07C050954095309521953F4F4F4F3E
:103410005F4F2138310541055105A4F081E08093CB
:103420004F0510C01092C3051092C4051092C50537
:103430001092C6051092C7051092C8051092C905D2
:103440001092CA058091B1079091B2072090C705EC
:103450003090C8054090C9055090CA05820D931D53
:103460009093B2078093B1070091B1071091B20712
:10347000A090C305B090C405C090C505D090C60506
:1034800080919603682E772488249924C401B3017F
:10349000A60195010E94903F20E032E040E050E01C
:1034A0000E940440020F131F1093B2070093B1074C
:1034B000209138053091390540913A0550913B05EE
:1034C0008091B1079091B207AA2797FDA095BA2FD6
:1034D000820F931FA41FB51F809338059093390561
:1034E000A0933A05B0933B054091340550913505C2
:1034F00060913605709137058091B1079091B207C0
:103500002091840530918505821B930BAA2797FD96
:10351000A095BA2F840F951FA61FB71F809334055F
:1035200090933505A0933605B09337058091340507
:1035300090913505A0913605B0913705E09078035C
:10354000F090790300917A0310917B03E816F90655
:103550000A071B0704F580E197E2A0E0B0E08E19AE
:103560009F09A00BB10B8093340590933505A09370
:103570003605B09337058091340590913505A091BB
:103580003605B09137058093380590933905A0939F
:103590003A05B0933B0520913405309135054091B3
:1035A00036055091370588279927DC018E199F0928
:1035B000A00BB10B281739074A075B0704F580EF0A
:1035C00098EDAFEFBFEFE80EF91E0A1F1B1FE09248
:1035D0003405F09235050093360510933705809138
:1035E000340590913505A0913605B091370580934B
:1035F000380590933905A0933A05B0933B05809127
:10360000D8049091D9040F9734F488E19CEF9093FB
:10361000B2078093B1078091D8049091D90407979D
:1036200034F480E398EF9093B2078093B1079091C0
:10363000000199839A30A9F48091D8049091D9041B
:10364000835F934034F088EE93E09093B2078093C9
:10365000B1078091D8049091D9048A5F9340DCF03F
:1036600014C08091D8049091D904855E974034F0BD
:1036700088EE93E09093B2078093B1078091D804CD
:103680009091D904835F974034F080ED97E0909358
:10369000B2078093B1078091B3079091B4078A195C
:1036A0009B099093B4078093B3070091B3071091DF
:1036B000B407C401B301A20191010E94903F20E030
:1036C00032E040E050E00E940440021B130B1093D4
:1036D000B4070093B3072091300530913105409134
:1036E0003205509133058091B3079091B407AA2712
:1036F00097FDA095BA2F820F931FA41FB51F80932B
:10370000300590933105A0933205B0933305409175
:103710002C0550912D0560912E0570912F058091FB
:10372000B3079091B4072091860530918705821BDD
:10373000930BAA2797FDA095BA2F840F951FA61F5C
:10374000B71F80932C0590932D05A0932E05B09361
:103750002F0580912C0590912D05A0912E05B091FB
:103760002F05E0907403F09075030091760310919B
:103770007703E816F9060A071B0704F588EA91E6BD
:10378000A0E0B0E08E199F09A00BB10B80932C052F
:1037900090932D05A0932E05B0932F0580912C05B5
:1037A00090912D05A0912E05B0912F0580933005A5
:1037B00090933105A0933205B093330520912C05E9
:1037C00030912D0540912E0550912F05882799277E
:1037D000DC018E199F09A00BB10B281739074A0786
:1037E0005B0704F588E59EE9AFEFBFEFE80EF91E31
:1037F0000A1F1B1FE0922C05F0922D0500932E0549
:1038000010932F0580912C0590912D05A0912E05E8
:10381000B0912F058093300590933105A093320528
:10382000B09333058091D6049091D7040F9734F468
:1038300088E19CEF9093B4078093B3078091D604FE
:103840009091D704079734F480E398EF9093B407EE
:103850008093B30799819A30A9F48091D60490910E
:10386000D704835F934034F088EE93E09093B407DD
:103870008093B3078091D6049091D7048A5F9340D8
:10388000DCF014C08091D6049091D704855E9740F7
:1038900034F088EE93E09093B4078093B30780915F
:1038A000D6049091D704835F974034F080ED97E081
:1038B0009093B4078093B30780917A00886C8093CB
:1038C0007A0080913C0590913D05A0913E05B09114
:1038D0003F058093280590932905A0932A05B0936E
:1038E0002B0580912C0590912D05A0912E05B0916E
:1038F0002F058093180590931905A0931A05B0938E
:103900001B058091340590913505A0913605B09145
:1039100037058093200590932105A0932205B0934D
:1039200023058091300590913105A0913205B09129
:10393000330580931C0590931D05A0931E05B0933D
:103940001F058091380590913905A0913A05B091F5
:103950003B058093240590932505A0932605B093FD
:1039600027058091D10787FF63C02A81222309F0B0
:103970005FC080918905882309F05AC08091B30700
:103980009091B407893C91055CF02091B307309188
:10399000B4078091B3079091B4072052334011C00F
:1039A0008091B3079091B40788539F4FA4F420915E
:1039B000B3073091B4078091B3079091B407205EAC
:1039C0003C4F880F991F880F991F280F391F30937C
:1039D000B4072093B3078091B1079091B207893C57
:1039E00091055CF02091B1073091B2078091B10749
:1039F0009091B2072052334011C08091B10790914D
:103A0000B20788539F4FA4F42091B1073091B207B9
:103A10008091B1079091B207205E3C4F880F991FAB
:103A2000880F991F280F391F3093B2072093B107D1
:103A300022960FB6F894DEBF0FBECDBFDF91CF91B7
:103A40001F910F91FF90EF90DF90CF90BF90AF90BC
:103A50009F908F907F906F905F904F903F902F90AE
:103A600008950F931F930AE710E0F8018081877390
:103A700080838091D6049091D7049093B40780936B
:103A8000B3078091D8049091D9049093B2078093A2
:103A9000B1078091DA049091DB049093B60780938C
:103AA000B5076091DE047091DF04882777FD80956B
:103AB000982F2CE030E040E050E00E94903F70935F
:103AC000B9076093B8076091DC047091DD04882722
:103AD00077FD8095982F0E94903F7093C307609365
:103AE000C2078091E0049091E1049093AB0780932A
:103AF000AA07F8018081886C80836091F40770E0E8
:103B000080E090E024EC39E040E050E00E94903FFB
:103B10006093740370937503809376039093770397
:103B20006091F50770E080E090E00E94903F609324
:103B300078037093790380937A0390937B031F91AA
:103B40000F9108958091FF0490910005813A9105AD
:103B50000CF40AC38091D4078B3F98F08B3F19F483
:103B600080915A050EC08C3F19F480915C0509C004
:103B70008D3F19F480915E0504C08E3F21F4809141
:103B800060058093830380918303882319F4109246
:103B9000830304C08F3F11F4809383038091D30784
:103BA0008B3F98F08B3F19F480915A050EC08C3FE3
:103BB00019F480915C0509C08D3F19F480915E0570
:103BC00004C08E3F21F48091600580938203809130
:103BD0008203882319F41092820305C0843618F0FA
:103BE00084E6809382038091D5078B3F98F08B3FCA
:103BF00019F480915A050EC08C3F19F480915C0530
:103C000009C08D3F19F480915E0504C08E3F21F4F8
:103C1000809160058093840380918403882319F444
:103C20001092840305C0843618F084E680938403E0
:103C30008091D7078B3F98F08B3F19F480915A05FC
:103C40000EC08C3F19F480915C0509C08D3F19F4BA
:103C500080915E0504C08E3F21F4809160058093C1
:103C6000850380918503882319F41092850304C08D
:103C70008F3F11F4809385038091DE078B3F98F08E
:103C80008B3F19F480915A050EC08C3F19F4809136
:103C90005C0509C08D3F19F480915E0504C08E3F1C
:103CA00021F48091600580938603809186038823A8
:103CB00019F41092860304C08F3F11F48093860399
:103CC0008091DF078B3F98F08B3F19F480915A0564
:103CD0000EC08C3F19F480915C0509C08D3F19F42A
:103CE00080915E0504C08E3F21F480916005809331
:103CF0008703809187038B3010F48AE002C08F3FE6
:103D000011F4809387038091E0078B3F98F08B3FFD
:103D100019F480915A050EC08C3F19F480915C050E
:103D200009C08D3F19F480915E0504C08E3F21F4D7
:103D3000809160058093880380918803882319F41B
:103D40001092880304C08F3F11F480938803809100
:103D5000E5078B3F98F08B3F19F480915A050EC010
:103D60008C3F19F480915C0509C08D3F19F4809156
:103D70005E0504C08E3F21F48091600580938A0324
:103D800080918A03882319F410928A0304C08F3F1C
:103D900011F480938A038091E6078B3F98F08B3F64
:103DA00019F480915A050EC08C3F19F480915C057E
:103DB00009C08D3F19F480915E0504C08E3F21F447
:103DC0008091600580938B0380918B03882319F485
:103DD00010928B0304C08F3F11F480938B0380916A
:103DE000E7078B3F98F08B3F19F480915A050EC07E
:103DF0008C3F19F480915C0509C08D3F19F48091C6
:103E00005E0504C08E3F21F48091600580938C0391
:103E100080918C03882319F410928C0304C08F3F87
:103E200011F480938C038091E8078B3F98F08B3FCF
:103E300019F480915A050EC08C3F19F480915C05ED
:103E400009C08D3F19F480915E0504C08E3F21F4B6
:103E50008091600580938D0380918D03882319F4F0
:103E600010928D0304C08F3F11F480938D038091D5
:103E7000E9078B3F98F08B3F19F480915A050EC0EB
:103E80008C3F19F480915C0509C08D3F19F4809135
:103E90005E0504C08E3F21F48091600580938E03FF
:103EA00080918E03882319F410928E0304C08F3FF3
:103EB00011F480938E038091F9078B3F98F08B3F2C
:103EC00019F480915A050EC08C3F19F480915C055D
:103ED00009C08D3F19F480915E0504C08E3F21F426
:103EE0008091600580938F0380918F03882319F45C
:103EF00010928F0304C08F3F11F480938F03809141
:103F0000FA078B3F98F08B3F19F480915A050EC049
:103F10008C3F19F480915C0509C08D3F19F48091A4
:103F20005E0504C08E3F21F480916005809390036C
:103F300080919003882319F41092900304C08F3F5E
:103F400011F4809390038091FB078B3F98F08B3F97
:103F500019F480915A050EC08C3F19F480915C05CC
:103F600009C08D3F19F480915E0504C08E3F21F495
:103F7000809160058093910380919103882319F4C7
:103F80001092910304C08F3F11F4809391038091AC
:103F9000FC078B3F98F08B3F19F480915A050EC0B7
:103FA0008C3F19F480915C0509C08D3F19F4809114
:103FB0005E0504C08E3F21F48091600580939203DA
:103FC00080919203882319F41092920304C08F3FCA
:103FD00011F4809392038091EA078B3F98F08B3F16
:103FE00019F480915A050EC08C3F19F480915C053C
:103FF00009C08D3F19F480915E0504C08E3F21F405
:10400000809160058093930380919303882319F432
:104010001092930304C08F3F11F480939303809117
:10402000EF078B3F98F08B3F19F480915A050EC033
:104030008C3F19F480915C0509C08D3F19F4809183
:104040005E0504C08E3F21F4809160058093940347
:1040500080919403882319F41092940304C08F3F35
:1040600011F4809394038091F2078B3F98F08B3F7B
:1040700019F480915A050EC08C3F19F480915C05AB
:1040800009C08D3F19F480915E0504C08E3F21F474
:10409000809160058093950380919503882319F49E
:1040A0001092950304C08F3F11F480939503809183
:1040B000F3078B3F98F08B3F19F480915A050EC09F
:1040C0008C3F19F480915C0509C08D3F19F48091F3
:1040D0005E0504C08E3F21F48091600580939603B5
:1040E00080919603882319F41092960304C08F3FA1
:1040F00011F4809396038091F8078B3F98F08B3FE3
:1041000019F480915A050EC08C3F19F480915C051A
:1041100009C08D3F19F480915E0504C08E3F21F4E3
:10412000809160058093970380919703882319F409
:104130001092970304C08F3F11F48093970360910E
:104140008A0370E080E090E00E94C83B27E137EBF3
:1041500041ED58E30E942D3F60937E0370937F03EF
:10416000809380039093810308958091560588235E
:1041700001F51092B7071092A1071092AC071092A8
:10418000C8078091BC04882311F08093A107809117
:10419000BD04882311F08093B7078091BE04882363
:1041A00011F08093C8078091BF04882311F0809399
:1041B000AC078091A10790E09093990680939806B0
:1041C0008091B70790E090939B0680939A06809128
:1041D000C80790E090939D0680939C068091AC0761
:1041E00090E090939F0680939E061092FC0410929C
:1041F000FD040E94D2150895109211051092100529
:10420000109213051092120580E090E0A0E0B0E05B
:104210008093140590931505A0931605B093170588
:1042200010920705109206051092090510920805D4
:1042300010920B0510920A051092950310929603A6
:104240000E94311D84E690E00E944E0C0E94311DB8
:104250008091D10780FF10C080910E0390910F03D1
:10426000875B934038F480910E0390910F038E5E2C
:10427000924010F40E945D108091D6049091D70472
:1042800090930705809306058091D8049091D904F6
:1042900090930905809308058091DA049091DB04DE
:1042A00090930B0580930A0580910805909109056C
:1042B00090930D0580930C0580910605909107055C
:1042C00090930F0580930E0584E00E94773880500C
:1042D000944058F18091C2079091C30797FF03C0A3
:1042E000909581959F4F6CE070E00E94CF3F709356
:1042F0001305609312058091B8079091B90797FF55
:1043000003C0909581959F4F6CE070E00E94CF3F75
:1043100070931105609310056091D4047091D504D9
:10432000882777FD8095982F17C084E00E94773802
:10433000909311058093100586E00E947738909342
:1043400013058093120588E00E947738AA2797FD0D
:10435000A095BA2FBC01CD010E94753E6093140553
:1043600070931505809316059093170510922C05F0
:1043700010922D0510922E0510922F0510923005E7
:1043800010923105109232051092330510923405C7
:1043900010923505109236051092370510923805A7
:1043A0001092390510923A0510923B0510923C0587
:1043B00010923D0510923E0510923F051092B407F1
:1043C0001092B3071092B2071092B1071092B6077D
:1043D0001092B50780910A0390910B03A0910C03F2
:1043E000B0910D0390935907809358071092E304FE
:1043F0001092E204109248051092490510924A0565
:1044000010924B0580916E0390916F03909371030E
:104410008093700382E390E09093D0048093CF0464
:104420006091F40770E080E090E024EC39E040E037
:1044300050E00E94903F6856754C8F4F9F4F60939D
:104440007403709375038093760390937703609160
:10445000F50770E080E090E00E94903F6856754C50
:104460008F4F9F4F609378037093790380937A0303
:1044700090937B0310927D0310927C03109273053E
:1044800010927205109275051092740560916E037A
:1044900070916F03882777FD8095982F2EE036E086
:1044A00040E050E00E94903F6093BA077093BB07D2
:1044B0008093BC079093BD071092BF071092BE0770
:1044C00008951F93182F0EC080915605882361F41C
:1044D00084E690E09093D0048093CF048AEF90E03C
:1044E0000E946D0C115080F71F9108958091C907AB
:1044F000E82FF0E0EE0FFF1FED59F84F808191811A
:104500008D5E9F4F14F010929803808191818A5B99
:104510009F4FDCF4809198038823B9F481E0809365
:10452000980380914E058F5F80934E0580914E05D4
:10453000853028F480914E050E946122089588EE0E
:1045400093E09093D0048093CF0408952F923F92EC
:104550004F925F926F927F928F929F92AF92BF9293
:10456000CF92DF92EF92FF920F931F93CF93DF933F
:10457000CDB7DEB7A2970FB6F894DEBF0FBECDBFA2
:104580000E940218299A209170053091710580913E
:10459000DB07482F50E0465F5F4F58874F83421735
:1045A000530714F438872F838091FF0490910005FE
:1045B000883791050CF071C080910301882399F42C
:1045C00080910403909105038F5F9F4F61F488E908
:1045D0009AE39093D0048093CF0480E09CE0909382
:1045E0000503809304038091AD059091AE0500977B
:1045F00031F001979093AE058093AD0504C0109201
:10460000560510925705809100018A3011F4289ABE
:1046100001C028988091580590915905895E934072
:1046200008F403C48091E207A82FB0E0B887AF83F5
:1046300081E080935705E091C9072E2F30E0220FCB
:10464000331FF901EF57F84F11821082A091CA076A
:10465000B0E0AA0FBB1FFD01EF57F84F1182108287
:10466000E091CC074E2F50E0440F551FCA018F57E1
:10467000984FFC01118210822D59384FF901118297
:104680001082AD59B84F11961C921E924D59584F39
:10469000DA0111961C921E92CDC38091FF04909175
:1046A00000058D3891050CF4C5C310925705809113
:1046B000E30722E3829FC00111249093AE0580930B
:1046C000AD05EF81F885B9976CF080915805909110
:1046D0005905FFEF8F3F9F0729F0019690935905E9
:1046E0008093580580915805909159058F3F910509
:1046F00009F0E8F41092BF051092C0051092C105B0
:104700001092C2051092BB051092BC051092BD0517
:104710001092BE0510926F0510926E058A3F9105AA
:1047200031F481E090E09093A5058093A405209159
:104730005A0530915B058091CD07E82FF0E0EE0F30
:10474000FF1FED59F84F8081918182599F4F2817A3
:1047500039071CF42F5F3F4F0CC080819181825933
:104760009F4F821793074CF42115310531F02150EA
:10477000304030935B0520935A0520915C053091C1
:104780005D058091CE07E82FF0E0EE0FFF1FED5999
:10479000F84F8081918182599F4F281739071CF467
:1047A0002F5F3F4F0CC08081918182599F4F8217AC
:1047B00093074CF42115310531F0215030403093EE
:1047C0005D0520935C0520915E0530915F05809129
:1047D000CF07E82FF0E0EE0FFF1FED59F84F808173
:1047E000918182599F4F281739071CF42F5F3F4F43
:1047F0000CC08081918182599F4F821793074CF49E
:104800002115310531F02150304030935F05209360
:104810005E0520916005309161058091D007E82FF9
:10482000F0E0EE0FFF1FED59F84F80819181825922
:104830009F4F281739071CF42F5F3F4F0CC0808112
:10484000918182599F4F821793074CF421153105AE
:1048500031F0215030403093610520936005209164
:1048600062053091630580917507909176078259B2
:104870009F4F281739071CF42F5F3F4F0EC08091C0
:1048800075079091760782599F4F821793074CF4D2
:104890002115310531F021503040309363052093CC
:1048A00062052091640530916505809177079091AC
:1048B000780782599F4F281739071CF42F5F3F4F05
:1048C0000EC0809177079091780782599F4F821789
:1048D00093074CF42115310531F0215030403093CD
:1048E00065052093640520916605309167058091E8
:1048F000790790917A0782599F4F281739071CF43E
:104900002F5F3F4F0EC08091790790917A078259AF
:104910009F4F821793074CF42115310531F0215038
:1049200030403093670520936605209168053091EB
:10493000690580917B0790917C0782599F4F2817CA
:1049400039071CF42F5F3F4F0EC080917B07909179
:104950007C0782599F4F821793074CF4211531052C
:1049600031F02150304030936905209368058091E3
:104970005A0590915B0597FF05C010925B05109258
:104980005A050AC08F3F910539F034F08FEF90E05F
:1049900090935B0580935A0580915C0590915D052D
:1049A00097FF05C010925D0510925C050AC08F3F0D
:1049B000910539F034F08FEF90E090935D0580938E
:1049C0005C0580915E0590915F0597FF05C0109290
:1049D0005F0510925E050AC08F3F910539F034F0F3
:1049E0008FEF90E090935F0580935E058091600566
:1049F0009091610597FF05C01092610510926005C6
:104A00000AC08F3F910539F034F08FEF90E090931A
:104A1000610580936005809162059091630597FF21
:104A200005C010926305109262050AC08F3F910580
:104A300039F034F08FEF90E0909363058093620536
:104A4000809164059091650597FF05C010926505FA
:104A5000109264050AC08F3F910539F034F08FEF52
:104A600090E0909365058093640580916605909130
:104A7000670597FF05C010926705109266050AC08A
:104A80008F3F910539F034F08FEF90E090936705F8
:104A900080936605809168059091690597FF05C030
:104AA00010926905109268050AC08F3F910539F090
:104AB00034F08FEF90E09093690580936805E09162
:104AC000CB07F0E0EE0FFF1FED59F84F8081918189
:104AD000813591050CF40EC180915605882309F0AB
:104AE00009C18091CC07E82FF0E0EE0FFF1FED59D0
:104AF000F84F808191818C3491050CF4BFC0809176
:104B0000AC058F5F8093AC05893C08F4F3C010922C
:104B1000AC05299810925905109258058091C90743
:104B2000282F30E0D901AA0FBB1FAD59B84F8D9186
:104B30009C911197873491059CF48091CA07E82FC6
:104B4000F0E0EE0FFF1FED59F84F8081918197FF44
:104B500003C0909581959F4F873491050CF46BC0ED
:104B60008091CA07682F70E0DB01AA0FBB1FAD5907
:104B7000B84F8D919C911197873491053CF0F901C4
:104B8000EE0FFF1FED59F84F808191818D919C911F
:104B90008734910564F0F901EE0FFF1FED59F84FCE
:104BA000808191818734910514F042E001C041E099
:104BB000FB01EE0FFF1FED59F84F80819181863484
:104BC00091055CF4F901EE0FFF1FED59F84F80815C
:104BD0009181873491050CF043E0FB01EE0FFF1F3C
:104BE000ED59F84F808191818A5B9F4F5CF4F90108
:104BF000EE0FFF1FED59F84F8081918187349105A9
:104C00000CF044E0660F771F6D59784FDB018D91F2
:104C10009C918A5B9F4F5CF4220F331F2D59384FB4
:104C2000F90180819181863491050CF445E0842F4F
:104C30000E9487381CC08091D10783FF18C08081F3
:104C4000918197FF03C0909581959F4F44977CF485
:104C50008D919C918A5B9F4F54F481E080934E0527
:104C600088EE93E09093D0048093CF0443C00E94D9
:104C7000683A0E94A5380E94FC2035C0808191814D
:104C8000855B9F4FACF58091AC058F5F8093AC0541
:104C9000893C80F11092AC0529986FEF7FEF84E09A
:104CA0000E947F3810925905109258050E94FC20EE
:104CB000609110057091110584E00E947F38609129
:104CC00012057091130586E00E947F3860911405EB
:104CD0007091150580911605909117050E94473E29
:104CE00088E00E947F380E94683A0E94612202C0D8
:104CF0001092AC05E091CB07F0E0EE0FFF1FED59ED
:104D0000F84F808191818B5A9F4F0CF093C0809116
:104D1000CC07482F50E0FA01EE0FFF1FED59F84F76
:104D200080819181855B9F4F0CF065C08091AB05C0
:104D30008F5F8093AB05893C08F45FC088EC80935B
:104D4000AB0581E090E0909359058093580581E090
:104D5000809356051092B7051092B8051092B905C8
:104D60001092BA0510923C0510923D0510923E0536
:104D700010923F0510922C0510922D0510922E05D1
:104D800010922F05109234051092350510923605B9
:104D9000109237058091180590911905A0911A0578
:104DA000B0911B058093300590933105A093320597
:104DB000B09333058091200590912105A0912205A3
:104DC000B09123058093380590933905A0933A0557
:104DD000B0933B051092BF051092C0051092C1051B
:104DE0001092C2051092BB051092BC051092BD0531
:104DF0001092BE0502C01092AB05440F551F4D59CD
:104E0000584FDA018D919C918C3491058CF08091F2
:104E1000AA058F5F8093AA05893C60F088EC809397
:104E2000AA0510925905109258051092560502C015
:104E30001092AA0580916B03815080936B0380913F
:104E40006B038F3F29F080915705882309F477C3BE
:104E50000E94A21DE0916A05F0916B05FAA3E9A3F7
:104E60008091C907E82EFF24D701AA0FBB1FCD01EF
:104E70008D59984FFC018081918198A38F8F8091EB
:104E8000D807682E7724AF57B84F0D90BC91A02D4E
:104E9000BE8FAD8F8091D907A82EBB2420917205BB
:104EA000309173053C8F2B8F20906C0530906D05F1
:104EB0008091CA07082F10E0C801880F991FDC01F4
:104EC000AD59B84F0D90BC91A02DBA8FA98F8F57B7
:104ED000984FDC018D919C91988F8F8BE091740598
:104EE000F0917505FE8BED8BE091CC07AE2FB0E015
:104EF000AA0FBB1FAD59B84F0D90BC91A02DBC8B14
:104F0000AB8BE091CB07F0E0EE0FFF1FED59F84FB0
:104F1000C080D18028E730E0C20ED31ED092710548
:104F2000C09270056091870370E080E090E00E947D
:104F3000C83B20E030E040E251E40E94763D20E0B2
:104F400030E040E85CE30E942D3F6F87788B898BCF
:104F50009A8B6093C4077093C5078093C60790939C
:104F6000C7076091880370E080E090E00E94C83B32
:104F700020E030EE4BE256E40E94DA3D6093AD074C
:104F80007093AE078093AF079093B0072091C10450
:104F9000222331F08AE090E09093D0048093CF04F4
:104FA000E22F22FF09C080919203482F50E0440F66
:104FB000551F440F551F10C023FD03C040E050E0B3
:104FC0000BC08091920390E0880F991F880F991F62
:104FD00044275527481B590B20917A0530917B05B2
:104FE000C901B3E0880F991FBA95E1F7821B930BB3
:104FF000840F951F68E070E00E94CF3F2B017093F3
:105000007B0560937A05E4FF09C080919203482FE5
:1050100050E0440F551F440F551F10C0E5FD03C05D
:1050200040E050E00BC08091920390E0880F991F00
:10503000880F991F44275527481B590B80917C05E1
:1050400090917D059C01E3E0220F331FEA95E1F783
:10505000281B390BCA01820F931F68E070E00E9481
:10506000CF3F4B0170937D0560937C058091C00418
:10507000282F83FF03C082E390E004C082FF07C0B3
:105080008EEC9FEF90937F0580937E0504C0109275
:105090007F0510927E0521FF09C080917C039091CD
:1050A0007D03019690937D0380937C0324FF09C0C8
:1050B00080917C0390917D03019790937D03809371
:1050C0007C034F8D58A1469DC001479D900D569D74
:1050D000900D112429A13AA1220F331F69A17AA1B1
:1050E000260F371FED8DFE8DEA9DD001EB9DB00D93
:1050F000FA9DB00D11244B8D5C8DA41BB50BBAA38A
:10510000A9A3820F931F64E070E00E94CF3F89A1A2
:105110009AA1860F971F9AA389A3C20162E070E04B
:105120000E94CF3FA9A1BAA1A60FB71FBAA3A9A3F6
:10513000B0936B05A0936A05E98DFA8DE69DC001D9
:10514000E79D900DF69D900D11249101220F331FC4
:10515000220D331D4F89588DB501469F5001479F41
:10516000B00C569FB00C1124AD89BE89AA1ABB0A97
:10517000820F931F64E070E00E94CF3FA60EB71E1F
:10518000C40162E070E00E94CF3FA60EB71EB0924D
:105190006D05A0926C0520917E0530917F05220F50
:1051A000331F220F331FEB89FC892E1B3F0B3093DB
:1051B0006F0520936E0580917D0680FF56C080911B
:1051C0009203813808F451C080917606992787FDB3
:1051D0009095AC01469DC001479D900D569D900D48
:1051E000112469A17AA1680F791F70936B056093F0
:1051F0006A0580917706992787FD9095DC01A69D29
:10520000C001A79D900DB69D900D1124A80EB91E4A
:10521000B0926D05A0926C0580917806992787FD64
:105220009095280F391F30936F0520936E052091BC
:10523000D60730E080917A06992787FD9095FC018A
:105240002E9FC0012F9F900D3E9F900D1124909393
:105250007D0380937C038091790690E08C159D05F9
:1052600024F490937105809370058091700590915E
:10527000710597FF04C0109271051092700580911E
:10528000D10782FF0CC080E090E0A0E0B0E0809306
:10529000AD079093AE07A093AF07B093B00720E09F
:1052A00030E040E050E06F85788989899A890E94D2
:1052B000B03E882364F480E090E0A0E0B0E080930A
:1052C000C4079093C507A093C607B093C70720E013
:1052D00030E040E050E06091AD077091AE07809102
:1052E000AF079091B0070E94B03E882364F480E03D
:1052F00090E0A0E0B0E08093AD079093AE07A0935C
:10530000AF07B093B007E0916A05F0916B0520916B
:10531000760530917705CF0164E070E00E94CF3FC1
:1053200077FF03C0709561957F4F261737077CF490
:10533000CF01F7FF03C0909581959F4F64E070E027
:105340000E94CF3F709377056093760506C0215089
:1053500030403093770520937605E0916C05F0910D
:105360006D052091780530917905CF0164E070E0FA
:105370000E94CF3F77FF03C0709561957F4F26173E
:1053800037077CF4CF01F7FF03C0909581959F4FBD
:1053900064E070E00E94CF3F7093790560937805D8
:1053A00006C0215030403093790520937805F801EC
:1053B000EE0FFF1FED59F84F208131818091F007EA
:1053C000482F50E04217530744F48091FD0782FFB5
:1053D00004C081E080938A0515C080918A058823E6
:1053E00089F0F801EE0FFF1FED59F84F2081318150
:1053F0008091F107BA01681B71092617370714F469
:1054000010928A05F801EE0FFF1FED59F84F8081C9
:10541000918166277727641B750B8617970744F4DD
:105420008091FD0783FF04C081E080938B0515C048
:1054300080918B05882389F0000F111F0D59184F9B
:10544000D8012D913C918091F10790E0841B950B40
:105450008217930714F410928B05F701EE0FFF1FCC
:10546000ED59F84F808191814817590744F4809194
:10547000FD0780FF04C081E080938D0515C08091F9
:105480008D05882389F0F701EE0FFF1FED59F84FC6
:10549000208131818091F107FA01E81BF1092E1773
:1054A0003F0714F410928D05F701EE0FFF1FED5921
:1054B000F84F808191818617970744F48091FD070A
:1054C00081FF04C081E080938C0517C080918C051A
:1054D000882399F0EE0CFF1C23E637E0E20EF31E62
:1054E000D7012D913C918091F10790E0841B950BA1
:1054F0008217930714F410928C0580918A058823F3
:1055000021F480918B05882321F081E08093890527
:1055100002C01092890580918D05882321F4809125
:105520008C05882351F081E08093880510928905CD
:1055300010928A0510928B0502C010928805809106
:105540008905882311F40C94433884E690E0909305
:10555000D0048093CF048091EF0790E0EF81F8852D
:105560008E179F0714F498878F838091910390E0A2
:105570009093F5048093F4048091920390E09093CB
:10558000F7048093F6040E946E15809157058823D6
:1055900081F110926F0510926E0510926B051092BA
:1055A0006A0510926D0510926C0580E090E0A8EC01
:1055B000BFE38093C4079093C507A093C607B09339
:1055C000C7078BE09CEBA2E3BCE38093AD0790930D
:1055D000AE07A093AF07B093B00710928905109261
:1055E0008805109277051092760510927905109231
:1055F00078052091A6073091A7074091A807509100
:10560000A9078091180590911905A0911A05B091EC
:105610001B05820F931FA41FB51F8093A6079093AD
:10562000A707A093A807B093A9072091A2073091DC
:10563000A3074091A4075091A50780912005909160
:105640002105A0912205B0912305820F931FA41F6D
:10565000B51F8093A2079093A307A093A407B093CC
:10566000A50750908805552029F480918905882345
:1056700009F44FC01092E5041092E4041092400522
:105680001092410510924205109243051092440574
:105690001092450510924605109247051092A607F4
:1056A0001092A7071092A8071092A9071092A207BC
:1056B0001092A3071092A4071092A50780912C05C1
:1056C00090912D05A0912E05B0912F058093300566
:1056D00090933105A0933205B09333058091340542
:1056E00090913505A0913605B09137058093380526
:1056F00090933905A0933A05B0933B051092870526
:10570000109286051092850510928405552009F0A7
:10571000F5C080918905882309F0F0C060911805D3
:105720007091190580911A0590911B05A090DD07D5
:10573000BB24CC24DD24E090B807F090B907A60183
:1057400095010E9404400027F7FC0095102F2E19A8
:105750003F09400B510BCA01B90120E130E040E0A4
:1057600050E00E94044039014A0160912005709187
:1057700021058091220590912305E090C207F090C9
:10578000C307A60195010E9404400027F7FC00957D
:10579000102F2E193F09400B510BCA01B90120E10E
:1057A00030E040E050E00E94044079018A0180919D
:1057B000760590917705819734F4809178059091E2
:1057C00079058197A4F0C401B30123E030E040E003
:1057D00050E00E94044039014A01C801B70123E0AA
:1057E00030E040E050E00E94044079018A01E091FD
:1057F000CC07F0E0EE0FFF1FED59F84F0190F0815C
:10580000E02DF7FF03C0F095E195FF4F7A97A4F0E4
:10581000C401B30123E030E040E050E00E940440C6
:1058200039014A01C801B70123E030E040E050E00F
:105830000E94044079018A01F1E26F16710481042B
:10584000910434F070E2672E712C812C912C11C0E0
:1058500020EE62162FEF72062FEF82062FEF9206D0
:1058600044F460EE662E6FEF762E6FEF862E6FEFAC
:10587000962E31E2E316F1040105110534F050E2F1
:10588000E52EF12C012D112D11C040EEE4164FEF45
:10589000F4064FEF04074FEF140744F440EEE42EF4
:1058A0004FEFF42E4FEF042F4FEF142F80912C0564
:1058B00090912D05A0912E05B0912F05861997097D
:1058C000A809B90980932C0590932D05A0932E0566
:1058D000B0932F058091340590913505A091360540
:1058E000B09137058E199F09A00BB10B8093340539
:1058F00090933505A0933605B09337058091E40465
:105900009091E5048F3F910509F008F445C45520B6
:1059100009F0DCC380918905882309F0D7C3809101
:105920004F05882309F0D2C36091A6077091A7079D
:105930008091A8079091A90720E031E040E050E075
:105940000E9404402093A6073093A7074093A8071E
:105950005093A9076091A2077091A3078091A407B3
:105960009091A50720E031E040E050E00E94044023
:105970002093A2073093A3074093A4075093A50751
:10598000E090DD07FF2400E010E020914005309119
:1059900041054091420550914305C801B7010E945D
:1059A000903F20E031E040E050E00E94044020932E
:1059B00040053093410540934205509343052091A3
:1059C0004405309145054091460550914705C80171
:1059D000B7010E94903F20E031E040E050E00E949B
:1059E0000440209344053093450540934605509369
:1059F00047056091A6077091A7078091A80790912D
:105A0000A9072091400530914105409142055091F0
:105A10004305E090F607FF2400E010E0621B730BE3
:105A2000840B950BA80197010E940440CA01B9019B
:105A300020E031E040E050E00E94044069013093F2
:105A40008705209386056091A2077091A307809136
:105A5000A4079091A50720914405309145054091F8
:105A6000460550914705621B730B840B950BA801EB
:105A700097010E940440CA01B90120E031E040E0F2
:105A800050E00E94044089013093850520938405ED
:105A900080917605909177058197BCF48091780587
:105AA0009091790581978CF4E091CC07F0E0EE0FAE
:105AB000FF1FED59F84F0190F081E02DF7FF03C073
:105AC000F095E195FF4F7A9794F0C60162E070E09F
:105AD0000E94CF3F7093870560938605C80162E0FE
:105AE00070E00E94CF3F7093850560938405E0903D
:105AF0001C05F0901D0500911E0510911F05809159
:105B0000180590911905A0911A05B0911B05E81A86
:105B1000F90A0A0B1B0BE092B305F092B40500934F
:105B2000B5051093B6058091300590913105A0918F
:105B30003205B09133058E199F09A00BB10B8093EC
:105B4000300590933105A0933205B09333056090F2
:105B5000240570902505809026059090270580915A
:105B6000200590912105A0912205B0912305681A86
:105B7000790A8A0A9B0A6092AF057092B0058092FA
:105B8000B1059092B2058091380590913905A091A8
:105B90003A05B0913B0586199709A809B909809380
:105BA000380590933905A0933A05B0933B052091B1
:105BB000BE073091BF07213831054CF080910A05AE
:105BC00090910B05019690930B0580930A05205840
:105BD0003F4F4CF480910A0590910B0501979093EB
:105BE0000B0580930A051092BF071092BE0781E053
:105BF00090E090939B0580939A051092A0051092D7
:105C0000A1051092A2051092A3058091A60790917C
:105C1000A707A091A807B091A907209192053091FC
:105C200093054091940550919505281B390B4A0B1B
:105C30005B0B57FF07C050954095309521953F4F1E
:105C40004F4F5F4F20523E44404050400CF0C1C087
:105C500071E0E71670E1F70670E0070770E01707DC
:105C60000CF452C080919905882309F449C0D801E9
:105C7000C7012CE0B595A795979587952A95D1F7FB
:105C8000019690939B0580939A05D801C701F3E094
:105C9000B595A79597958795FA95D1F78093A00527
:105CA0009093A105A093A205B093A30589589341B1
:105CB000A040B04064F088E893E1A0E0B0E08093B9
:105CC000A0059093A105A093A205B093A3056091B0
:105CD000A0057091A1058091A2059091A30520E0F7
:105CE00031E040E050E00E940440809186059091B0
:105CF0008705820F931F909387058093860566C062
:105D000081E08093990562C010929905F0E0EF164A
:105D1000F0EFFF06FFEF0F07FFEF1F070CF056C075
:105D200080919805882309F44DC088279927DC01C4
:105D30008E199F09A00BB10BECE0B595A79597952F
:105D40008795EA95D1F7019690939B0580939A05E4
:105D5000C801B70128E030E040E050E00E94044074
:105D60002093A0053093A1054093A2055093A3056D
:105D700028573C4E4F4F5F4F64F488E79CEEAFEFDF
:105D8000BFEF8093A0059093A105A093A205B093C7
:105D9000A3056091A0057091A1058091A205909145
:105DA000A30520E031E040E050E00E9404408091F3
:105DB000860590918705820F931F909387058093A6
:105DC000860511C081E0809398050DC0109298055A
:105DD0000AC010929B0510929A0584EF91E090936F
:105DE0007303809372038091F707C82EDD2480919E
:105DF0009A0590919B05C816D90624F4D0929B056C
:105E0000C0929A0571E0E71674E0F70670E00707A4
:105E100070E0170774F080910605909107052091B6
:105E20009A0530919B05820F931F909307058093ED
:105E3000060580E0E8168CEFF8068FEF08078FEF75
:105E4000180774F4809106059091070520919A0532
:105E500030919B05821B930B909307058093060559
:105E600081E090E090939B0580939A0510929C05A9
:105E700010929D0510929E0510929F058091A20799
:105E80009091A307A091A407B091A50720918E053A
:105E900030918F054091900550919105281B390B49
:105EA0004A0B5B0B57FF07C05095409530952195E5
:105EB0003F4F4F4F5F4F20523E44404050400CF008
:105EC000C1C0A1E06A16A0E17A06A0E08A06A0E0BF
:105ED0009A060CF452C080919705882309F449C0B2
:105EE000D401C3017CE0B595A795979587957A95E0
:105EF000D1F7019690939B0580939A05D401C30135
:105F000063E0B595A795979587956A95D1F78093A6
:105F10009C0590939D05A0939E05B0939F0589587D
:105F20009341A040B04064F088E893E1A0E0B0E085
:105F300080939C0590939D05A0939E05B0939F052B
:105F400060919C0570919D0580919E0590919F05A3
:105F500020E031E040E050E00E9404408091840560
:105F600090918505820F931F9093850580938405FA
:105F700066C081E08093970562C010929705F0E0BB
:105F80006F16F0EF7F06FFEF8F06FFEF9F060CF016
:105F900056C080919605882309F44DC0882799271B
:105FA000DC0186199709A809B9095CE0B595A795A0
:105FB000979587955A95D1F7019690939B05809375
:105FC0009A05C401B30128E030E040E050E00E94AF
:105FD000044020939C0530939D0540939E0550936B
:105FE0009F0528573C4E4F4F5F4F64F488E79CEE67
:105FF000AFEFBFEF80939C0590939D05A0939E0506
:10600000B0939F0560919C0570919D0580919E05C0
:1060100090919F0520E031E040E050E00E94044074
:106020008091840590918505820F931F909385053B
:106030008093840511C081E0809396050DC0109275
:1060400096050AC010929B0510929A0584EF91E084
:10605000909373038093720380919A0590919B05AE
:10606000C816D90624F4D0929B05C0929A0571E017
:10607000671674E0770670E0870670E0970674F0A4
:10608000809108059091090520919A0530919B0512
:10609000820F931F909309058093080580E068168E
:1060A0008CEF78068FEF88068FEF9806CCF48091FE
:1060B00008059091090520919A0530919B05821B56
:1060C000930B90930905809308050AC010928505EB
:1060D00010928405109287051092860510924F0544
:1060E00020E030E040E050E06091AD077091AE07F5
:1060F0008091AF079091B0070E94B03E882341F491
:1061000010928505109284051092870510928605DD
:106110008091A6079091A707A091A807B091A90721
:106120008093920590939305A0939405B093950561
:106130008091A2079091A307A091A407B091A50711
:1061400080938E0590938F05A0939005B093910551
:10615000109240051092410510924205109243059D
:10616000109244051092450510924605109247057D
:106170001092A6071092A7071092A8071092A907DD
:106180001092A2071092A3071092A4071092A507DD
:106190001092E5041092E404C0906E05D0906F0553
:1061A0008601D7FE04C0002711270C191D090031F4
:1061B0001105C4F08091D10784FD14C081E090E006
:1061C0009093A5058093A4058091BA079091BB0791
:1061D00090937103809370038AEF90E09093730320
:1061E00080937203E090DA07B601882777FD8095E7
:1061F000982F2E2D30E040E050E00E94903F980113
:10620000442737FD4095542F0E94903F20E032E014
:1062100040E050E00E94044089019A01FF24EC9C78
:10622000C001ED9C900DFC9C900D112464E070E089
:106230000E94CF3F600F711F882777FD8095982FB0
:106240006093B7057093B8058093B9059093BA052C
:1062500020913C0530913D0540913E0550913F0510
:10626000261B370B480B590B20933C0530933D05FB
:1062700040933E0550933F0580913C0590913D052C
:10628000A0913E05B0913F058155934CA040B04090
:1062900064F080E593ECA0E0B0E080933C0590933F
:1062A0003D05A0933E05B0933F0580913C0590913C
:1062B0003D05A0913E05B0913F05805B9C43AF4FEB
:1062C000BF4F64F480EB9CE3AFEFBFEF80933C05DE
:1062D00090933D05A0933E05B0933F058091D10773
:1062E00083FF5AC180914E05882339F0809156056D
:1062F000882319F40E9476224FC16091180570918D
:10630000190580911A0590911B0520E032E040E0CC
:1063100050E00E940440890137FF03C010950195A9
:106320001F4F609120057091210580912205909169
:10633000230520E032E040E050E00E940440690183
:1063400037FF04C0D094C194D108D394C016D106AD
:106350000CF4680129E1C216D10444F58091A4052A
:106360009091A505892B11F180917203909173038F
:10637000892BE1F488EC90E09093D0048093CF04D3
:106380006091BA077091BB078091BC079091BD07DF
:106390002EE036E040E050E00E940440309371036C
:1063A000209370031092A5051092A40580916E03AE
:1063B00090916F0397FF03C020E030E029C0E09088
:1063C0006E03F0906F034CE152E0E40EF51E0027DF
:1063D000F7FC0095102F6091BA077091BB07809170
:1063E000BC079091BD072EE036E040E050E00E94EF
:1063F0000440E21AF30A040B150BC801B70128E6A2
:1064000031E040E050E00E9404409B01245B3040BA
:10641000C60168E070E00E94CF3F6F5F7F4FC90107
:1064200043E0880F991F4A95E1F70E94CF3F3B0157
:10643000882477FC8094982C8091BA079091BB07B0
:10644000A091BC07B091BD07680E791E8A1E9B1EE5
:106450006092BA077092BB078092BC079092BD070A
:1064600080918603A82EBB24CA9CC001CB9C900DB2
:10647000DA9C900D112460E470E00E94CF3F25016A
:10648000461A570A141415040CF080C08091720348
:1064900090917303009711F001977AC08091BE0725
:1064A0009091BF07820F931F9093BF078093BE0701
:1064B0008091780590917905209176053091770546
:1064C000820F931F68E070E00E94CF3F6B0160E491
:1064D00070E0C60ED71E8091700390917103AA27B9
:1064E00097FDA095BA2F0CE1E02E02E0F02E012DD1
:1064F000112DE81AF90A0A0B1B0BC401B3012EE097
:1065000036E040E050E00E940440E20EF31E041F1B
:10651000151FC801B70128E631E040E050E00E94B5
:106520000440645B7040649DC001659D900D749D46
:10653000900D1124B6010E94CF3FC501880F991F0D
:106540008A0D9B1D8617970734F0909581959F4F74
:10655000681779070CF4BC0120913C0530913D058A
:1065600040913E0550913F05CB01AA2797FDA0958C
:10657000BA2F820F931FA41FB51F80933C059093E1
:106580003D05A0933E05B0933F0506C08AEF90E01D
:1065900090937303809372038091A605815080933A
:1065A000A6058F3F09F0A4C088E18093A6056091FD
:1065B00018057091190580911A0590911B05E090BE
:1065C000DD07FF2400E010E0A80197010E940440CD
:1065D00030938106209380066091200570912105FB
:1065E0008091220590912305A80197010E94044003
:1065F00030938306209382068091B8079091B90763
:1066000090938506809384068091C2079091C3077A
:1066100090938706809386068091B5079091B60780
:1066200090938906809388068091800590918105DA
:1066300090938B0680938A06609148057091490576
:1066400080914A0590914B0520E032E040E050E017
:106650000E94044030938D0620938C0680916E0337
:1066600090916F0390939106809390068091080318
:106670009091090390939306809392068091FF0472
:106680009091000590939506809394066091BA07C7
:106690007091BB078091BC079091BD072EE036E05A
:1066A00040E050E00E940440309397062093960605
:1066B0008091AA079091AB079093A1068093A006C2
:1066C0008091D2049091D3049093A9068093A80658
:1066D00080917205909173059093BD068093BC06DE
:1066E00080917405909175059093BF068093BE06C6
:1066F000809188058823A9F06091B3077091B40751
:10670000882777FD8095982F0E94753E2091C407B9
:106710003091C5074091C6075091C7070E942D3F91
:1067200032C0609118057091190580911A059091F9
:106730001B05E090B307F090B4070E94753E2091CE
:10674000AD073091AE074091AF075091B0070E945E
:106750002D3F5B016C010027F7FC0095102FC8014D
:10676000B7010E94753E2091C4073091C507409142
:10677000C6075091C7070E942D3F9B01AC01C6017F
:10678000B5010E94763D0E94423E7093B40760932B
:10679000B307809189058823A9F06091B1077091B2
:1067A000B207882777FD8095982F0E94753E20912B
:1067B000C4073091C5074091C6075091C7070E9492
:1067C0002D3F32C0609120057091210580912205F6
:1067D00090912305E090B107F090B2070E94753EBA
:1067E0002091AD073091AE074091AF075091B007AF
:1067F0000E942D3F5B016C010027F7FC0095102FD4
:10680000C801B7010E94753E2091C4073091C507A9
:106810004091C6075091C7070E942D3F9B01AC01D4
:10682000C601B5010E94763D0E94423E7093B207B8
:106830006093B1076091B5077091B607A0902805E5
:10684000B0902905C0902A05D0902B058091AD0706
:106850009091AE07A091AF07B091B00789839A835A
:10686000AB83BC83882777FD8095982F0E94753E67
:106870007B018C016091C4077091C5078091C607A8
:106880009091C7079B01AC010E94763D9B01AC0132
:10689000C801B7010E942D3F7B018C01C601B501E3
:1068A0000E94753E29813A814B815C810E942D3F77
:1068B00020E030E040E05FE30E942D3F9B01AC010F
:1068C000C801B7010E94763D0E94423E7093B60710
:1068D0006093B5078091B3079091B4079093AB068E
:1068E0008093AA068091B1079091B2079093AD066C
:1068F0008093AC068091B3079091B4078150904487
:1069000034F080E090E49093B4078093B3078091D3
:10691000B3079091B4078050904C34F480E090EC31
:106920009093B4078093B3078091B1079091B20719
:106930008150904434F080E090E49093B2078093CB
:10694000B1078091B1079091B2078050904C34F418
:1069500080E090EC9093B2078093B1078091B507E7
:106960009091B6078150904434F080E090E4909389
:10697000B6078093B5078091B5079091B607805010
:10698000904C34F480E090EC9093B6078093B50778
:10699000AF80B884AA0CBB1CAA0CBB1C8091D10789
:1069A000282F80FFC7C080915705882309F0C2C0F7
:1069B0008091830321FF0EC0823310F58091800502
:1069C000909181054497909383058093820510925E
:1069D000A90519C020917C0330917D03280F311D3A
:1069E0008091D60790E0AC01249FC001259F900DB7
:1069F000349F900D112444979093830580938205D2
:106A000081E08093A9052091800530918105409116
:106A1000820550918305421753070CF08BC080917B
:106A2000A905882309F486C08091840390E0241B83
:106A3000350BBC01629FC001639F900D729F900D4A
:106A4000112464E070E00E94CF3F4B01C090E2044B
:106A5000D090E304609148057091490580914A0502
:106A600090914B05E0908503FF2400E010E020E8C2
:106A700030E040E050E00E940440C801B7010E94AD
:106A8000903F20E230E040E050E00E9404407EEF82
:106A9000283E370714F428EE3EEF8091A705909129
:106AA000A805FC01A4E0EE0FFF1FAA95E1F7E81B83
:106AB000F90BC60162E070E00E94CF3FE61BF70BC6
:106AC00081E02931380714F028E131E0E21BF30BB3
:106AD000C501881999098E0F9F1F60E170E00E941F
:106AE000CF3F7093A8056093A7058091D20790E0EF
:106AF000880F991F880F991F6817790764F4A816E3
:106B0000B9062CF09093A8058093A70504C0B09215
:106B1000A805A092A7058091A7059091A805A816A1
:106B2000B90624F4B092A805A092A705A090A705E5
:106B3000B090A8058091DC07282E33248101000F36
:106B4000111F000F111FC8018055904045018A1583
:106B50009B050CF44C0190928F0680928E0620913A
:106B6000B5073091B6078091B7059091B805A0910F
:106B7000B905B091BA0542E0880F991FAA1FBB1F43
:106B80004A95D1F7281B390B91EA89169104ACF08C
:106B9000F401F595E7952E173F070CF4F901C401B0
:106BA00062E070E00E94CF3F709561957F4FCF010A
:106BB000E617F7076CF4CB010BC0C901205B3F4F10
:106BC00014F480EB9FEF8135910514F080E590E09F
:106BD000980128193909281739070CF4C9019401BB
:106BE000201B310B2C01821793070CF42901809193
:106BF000B3079091B40760906A0570906B05861991
:106C000097099093C1078093C00720E030E040E0EF
:106C100050E069817A818B819C810E94B03E8823FB
:106C2000F1F1E0901805F090190500911A05109106
:106C30001B056091BF057091C0058091C1059091C1
:106C4000C2050E94753E5B016C01C801B7010E943C
:106C5000753E29813A814B815C810E942D3F7B01E9
:106C60008C01B301882777FD8095982F0E94753E8F
:106C70009B01AC01C801B7010E94753D9B01AC01AD
:106C8000C601B5010E94763D0E94423E6093BF0559
:106C90007093C0058093C1059093C2051CC02091DC
:106CA000C0073091C107442737FD4095542F80918C
:106CB000BF059091C005A091C105B091C205820F9A
:106CC000931FA41FB51F8093BF059093C005A09389
:106CD000C105B093C2058091BF059091C005A091F8
:106CE000C105B091C20581509A4FA040B04064F0F8
:106CF00080E09AEFA0E0B0E08093BF059093C005DC
:106D0000A093C105B093C2058091BF059091C005C5
:106D1000A091C105B091C20580509640AF4FBF4FC2
:106D200064F480E096E0AFEFBFEF8093BF059093EF
:106D3000C005A093C105B093C2056091C0077091D2
:106D4000C10720917E0330917F03409180035091D1
:106D500081032B873C874D875E87882777FD809549
:106D6000982F0E94753E7B018C016091BF05709148
:106D7000C0058091C1059091C2050E94753E9B019E
:106D8000AC016B857C858D859E850E942D3F9B0186
:106D9000AC01C801B7010E94763D0E94423E7B01D2
:106DA0008C016B01C20157FE04C088279927841902
:106DB000950962E070E00E94CF3F680D791D882739
:106DC00077FD8095982F2091970330E040E050E0C8
:106DD0000E94903F20E430E040E050E00E940440F8
:106DE0003E832D83C216D3060CF497016D817E81FC
:106DF000709561957F4F7A876987261737070CF45E
:106E00009B01F201E80DF91DCF01820F931F64E091
:106E100070E00E94CF3F77FF03C060E070E004C0E5
:106E2000261637060CF4B1018091DB07A82FB0E0DD
:106E3000BAA3A9A36A177B070CF4BD016093A1074D
:106E4000CF01821B930B64E070E00E94CF3F77FF7D
:106E500003C060E070E004C0261637060CF4B101F0
:106E6000E9A1FAA16E177F070CF4BF016093B70781
:106E70008091B1079091B20760906C0570906D059C
:106E8000861997099093A00780939F0720E030E030
:106E900040E050E069817A818B819C810E94B03E04
:106EA0008823F1F1E0902005F09021050091220562
:106EB000109123056091BB057091BC058091BD05C3
:106EC0009091BE050E94753E5B016C01C801B7013F
:106ED0000E94753E29813A814B815C810E942D3F41
:106EE0007B018C01B301882777FD8095982F0E9444
:106EF000753E9B01AC01C801B7010E94753D9B0125
:106F0000AC01C601B5010E94763D0E94423E6093ED
:106F1000BB057093BC058093BD059093BE051CC056
:106F200020919F073091A007442737FD4095542FAB
:106F30008091BB059091BC05A091BD05B091BE05A7
:106F4000820F931FA41FB51F8093BB059093BC05B0
:106F5000A093BD05B093BE058091BB059091BC0583
:106F6000A091BD05B091BE0581589E43A040B040A0
:106F700064F080E89EE3A0E0B0E08093BB059093CE
:106F8000BC05A093BD05B093BE058091BB05909153
:106F9000BC05A091BD05B091BE058058914CAF4F86
:106FA000BF4F64F480E891ECAFEFBFEF8093BB0577
:106FB0009093BC05A093BD05B093BE0560919F075B
:106FC0007091A007882777FD8095982F0E94753EC5
:106FD0007B018C016091BB057091BC058091BD0562
:106FE0009091BE050E94753E9B01AC016B857C852E
:106FF0008D859E850E942D3F9B01AC01C801B70184
:107000000E94763D0E94423E2D813E8162177307A9
:107010000CF49B0149855A85241735070CF49A0115
:10702000C40184199509820F931F64E070E00E94E7
:10703000CF3F77FF03C060E070E004C0261637063C
:107040000CF4B10189A19AA1681779070CF4BC016D
:107050006093C807821A930AC4018419950964E0F1
:1070600070E00E94CF3F77FF03C060E070E004C093
:10707000261637060CF4B101A9A1BAA16A177B073D
:1070800054F4BD0108C080918805882311F00C9448
:10709000AB2A0C94B52A6093AC07A2960FB6F8946D
:1070A000DEBF0FBECDBFDF91CF911F910F91FF903B
:1070B000EF90DF90CF90BF90AF909F908F907F9098
:1070C0006F905F904F903F902F900895A0E0B0E0B8
:1070D000A80FB11D0E945640802D90E00895A0E0B9
:1070E000B0E0A80FB11D062E0E9468400895A0E0F0
:1070F000B0E0A80FB11D0E946340CF010895A0E049
:10710000B0E0A80FB11D0B010E94744008958630B5
:1071100008F085E0A2E0B0E0082E0E9468400895E3
:10712000982F863008F095E086E4989FD0011124CE
:10713000AC59BF4FE9ECF7E0182E0E947940A2E06D
:10714000B0E0092E0E9468400895982F863008F01C
:1071500095E086E4989FD0011124AC59BF4FE9EC2B
:10716000F7E0182E0E945E40089581E08093C907E1
:1071700082E08093CA0743E04093CB0764E06093CA
:10718000CC0755E05093CD0736E03093CE0787E02B
:107190008093CF0728E02093D00788EE8093D10713
:1071A0009EE19093D2078BEF8093D4078AE080937F
:1071B000D5079093D3079093D7074093D607209392
:1071C000D80740E14093D9073093DA072093DB07D3
:1071D00086EE8093DC079093DD0780E88093DE07DE
:1071E00034E63093DF0788E78093E0078EE58093ED
:1071F000E10783E28093E20784E18093E307109242
:10720000E4074093E5078DEF8093E6073093E707A7
:107210009AE59093E8079093E9079093F907909384
:10722000FA071092FB071092FC073093EA0788E2F6
:107230008093EB071092FE0722E32093EC0786E988
:107240008093ED075093EE072093EF079093F0079C
:107250002093F1071092FD079093F2075093F307E4
:107260003093F4073093F50780E28093F60760933C
:10727000F7072093F807A3E0B8E0E9E9F3E089E035
:1072800001900D928150E1F7089581E08093C90744
:1072900082E08093CA0743E04093CB0764E06093A9
:1072A000CC0755E05093CD0736E03093CE0787E00A
:1072B0008093CF0728E02093D00788E68093D107FA
:1072C0009EE19093D2078BEF8093D4078AE080935E
:1072D000D5079093D3079093D7074093D6078CE0B8
:1072E0008093D80780E18093D9073093DA07209301
:1072F000DB0786EE8093DC079093DD0780E88093C0
:10730000DE0780E58093DF0788E78093E0078EE55E
:107310008093E10783E28093E2079093E307109262
:10732000E40740E24093E5078DEF8093E60734E6FB
:107330003093E7072AE52093E8072093E907209395
:10734000F9072093FA071092FB071092FC0730937D
:10735000EA0788E28093EB071092FE0792E390938E
:10736000EC0786E98093ED075093EE079093EF07C3
:107370002093F0079093F1071092FD072093F207F6
:107380005093F3073093F4073093F5074093F607D3
:107390006093F7078BE48093F807A3E0B8E0E3EA93
:1073A000F3E087E001900D928150E1F7089581E0CC
:1073B0008093C90782E08093CA0783E08093CB075C
:1073C00054E05093CC0735E03093CD0786E08093AE
:1073D000CE0787E08093CF0728E02093D00788E688
:1073E0008093D1079EE19093D2078BEF8093D407CF
:1073F0008AE08093D5079093D3079093D707509353
:10740000D6078FE08093D8079093D9078CE08093BC
:10741000DA072093DB0786EE8093DC079093DD0785
:1074200080E88093DE0780E58093DF0746E940939C
:10743000E0078EE58093E10783E28093E207909373
:10744000E3071092E40780E28093E5078DEF8093D5
:10745000E60724E62093E7079AE59093E8079093E0
:10746000E9079093F9079093FA071092FB0710929F
:10747000FC072093EA0788E28093EB071092FE074F
:1074800082E38093EC074093ED073093EE078093FF
:10749000EF079093F0078093F1071092FD07909308
:1074A000F2073093F3072093F4072093F50780E168
:1074B0008093F6075093F7072093F807A3E0B8E00E
:1074C000EBEAF3E086E001900D928150E1F7089538
:1074D00022E030E0D9010E945640802D863028F00D
:1074E00082E0D901082E0E94684090E008950F9331
:1074F0001F93CF93DF93A1E0B0E00E945640802D10
:10750000863469F181E794E09F938F931F920E94E4
:10751000E6080E94D739C0E0D0E00F900F900F909E
:107520000C2FC23039F0C33019F40E94B53804C0B2
:10753000C43010F00E944539802F0E949038219667
:10754000C630D10569F7A2E0B0E083E0082E0E94C2
:107550006840A1E0B0E086E4082E0E94684002E0A6
:1075600010E0D8010E945640802D0E94A538D80115
:107570000E945640802D90E09F938F9388E594E081
:107580009F938F931F920E94E6080F900F900F9089
:107590000F900F90DF91CF911F910F910895CF938E
:1075A000DF93DC01EC01EA81FB8121918E81815026
:1075B00019F48981E81BF109ED01FB83EA838E83CD
:1075C0009FB7F8948C9181508C939FBF822F90E04D
:1075D000DF91CF910895FC011082758364837383DA
:1075E00062834183478346830895CF93DF93DC0111
:1075F0009C91ED018981981718F080E090E016C009
:10760000ED01EC81FD8161938F81815019F48981B5
:10761000E81BF109ED018F83FD83EC839FB7F8949C
:107620008C918F5F8C939FBF81E090E0DF91CF9131
:107630000895FC0180818823E9F3CF010E94CF3AAD
:1076400090E00895FC018081882319F48FEF9FEF6B
:107650000895CF010E94CF3A90E008953C98449A53
:107660001092B2031092150881E0809316080895D5
:107670006091CD057091CE05349B18C0CB01019669
:107680009093CE058093CD058159914008F45FC059
:107690008091B203882319F081508093B2038FEF59
:1076A0009FEF90936F0380936E034DC0CB010197C2
:1076B00089569140B8F56A30710528F410926F032D
:1076C00010926E0315C06A50704080E090E029E18E
:1076D00034E040E050E00E94903F2AE09695879584
:1076E000779567952A95D1F770936F0360936E0332
:1076F00080916E0390916F0320917003309171031C
:10770000845E9D4F821B930B68E671E00E94CF3F21
:10771000845B904090934D0580934C058CE0809362
:10772000B20311C08091B203882319F08150809375
:10773000B2038FEF9FEF90936F0380936E031092CD
:107740004D0510924C051092CE051092CD058091FA
:10775000B2038823E1F48091CB059091CC050E947F
:10776000C80B8823A1F08091CF049091D004892B7D
:1077700031F484E690E09093D0048093CF0484E6C3
:1077800090E00E94BF0B9093CC058093CB050895A9
:10779000A8E0B0E0EEECFBE30C9429407B018C0107
:1077A000611571058105910519F482E089835AC03C
:1077B00083E089838EE1C82ED12CDC82CB82ED82DE
:1077C000FE820F831887C801B7010E943B3CBC01B1
:1077D0006150704077FF33C0EE27FF27E61BF70BA1
:1077E00020E030E040E050E081E090E0A0E0B0E058
:1077F0000E2E04C0880F991FAA1FBB1F0A94D2F730
:107800000197A109B1098E219F21A023B1230097DF
:10781000A105B10521F021E030E040E050E004C0D6
:1078200016950795F794E794EA95D2F72E293F2904
:10783000402B512B2D833E834F8358870FC06115FA
:10784000710581F0062E04C0EE0CFF1C001F111FF5
:107850000A94D2F7ED82FE820F831887C61AD70AE0
:10786000DC82CB821A82CE0101960E94883CE8E03D
:1078700028960C944540EF92FF920F931F939B0123
:10788000AC01203080E0380781E0480780E05807ED
:1078900080F42F3F31054105510509F020F4EE2415
:1078A000FF24870119C068E0E62EF12C012D112D6F
:1078B00013C0203080E0380780E0480781E0580797
:1078C00030F490E1E92EF12C012D112D05C088E155
:1078D000E82EF12C012D112D80E290E0A0E0B0E027
:1078E0008E199F09A00BB10B04C05695479537958B
:1078F0002795EA94D2F7F901ED54FC4F2081821BC1
:107900009109A109B1091F910F91FF90EF9008957E
:107910009F92AF92BF92CF92DF92EF92FF920F931E
:107920001F93EE24FF248701FC01248135814681C9
:10793000578191808081823010F44061A2C08430F0
:1079400009F49BC0823029F420E030E040E050E0B0
:1079500005C0211531054105510519F4E0E0F0E0BD
:1079600092C0828193816FEF823896070CF05AC0E3
:1079700062E87FEF681B790B6A3171052CF020E01B
:1079800030E040E050E02AC0AA24BB24650181E039
:1079900090E0A0E0B0E0062E04C0880F991FAA1F57
:1079A000BB1F0A94D2F70197A109B109822393233F
:1079B000A423B5230097A105B10529F071E0A72EF6
:1079C000B12CC12CD12C04C05695479537952795DD
:1079D0006A95D2F72A293B294C295D29DA01C90188
:1079E0008F779070A070B07080349105A105B105BB
:1079F00039F427FF09C0205C3F4F4F4F5F4F04C051
:107A0000215C3F4F4F4F5F4F80E090E0203060E0BF
:107A1000360760E0460760E4560710F081E090E02A
:107A2000FC0123C08038910544F5FC01E158FF4F6B
:107A3000DA01C9018F779070A070B0708034910521
:107A4000A105B10539F427FF09C0205C3F4F4F4F16
:107A50005F4F04C0215C3F4F4F4F5F4F57FF05C042
:107A60005695479537952795319687E056954795D2
:107A7000379527958A95D1F706C020E030E040E0A1
:107A800050E0EFEFF0E0E22EF32E942F9F77802F5F
:107A90008078892B9E2F9795992797958F77082F18
:107AA000092B9E2F9695812F8078892B9794992466
:107AB00097948F77182F1929C801B7011F910F913B
:107AC000FF90EF90DF90CF90BF90AF909F90089580
:107AD000FC014150504030F001900616D1F731972B
:107AE000CF0108958827992708955058BB27AA27C2
:107AF0000ED079C16AD130F06FD120F031F49F3FC0
:107B000011F41EF45FC10EF4E095E7FB55C1E92FB7
:107B10007BD180F3BA17620773078407950718F0C3
:107B200071F49EF593C10EF4E0950B2EBA2FA02DA3
:107B30000B01B90190010C01CA01A0011124FF271A
:107B4000591B99F0593F50F4503E68F11A16F04015
:107B5000A22F232F342F4427585FF3CF4695379514
:107B60002795A795F0405395C9F77EF41F16BA0BD9
:107B7000620B730B840BBAF09150A1F0FF0FBB1F87
:107B8000661F771F881FC2F70EC0BA0F621F731FD0
:107B9000841F48F4879577956795B795F7959E3F2D
:107BA00008F0B3CF9395880F08F09927EE0F9795BB
:107BB000879508950CD017C10FD140F006D130F051
:107BC00021F45F3F19F0F8C0511141C1FBC01CD135
:107BD00098F39923C9F35523B1F3951B550BBB2794
:107BE000AA2762177307840738F09F5F5F4F220F41
:107BF000331F441FAA1FA9F333D00E2E3AF0E0E83A
:107C000030D091505040E695001CCAF729D0FE2F85
:107C100027D0660F771F881FBB1F26173707480717
:107C2000AB07B0E809F0BB0B802DBF01FF279358CD
:107C30005F4F2AF09E3F510568F0BEC008C15F3F0C
:107C4000ECF3983EDCF3869577956795B795F795B5
:107C50009F5FC9F7880F911D9695879597F90895AD
:107C6000E1E0660F771F881FBB1F62177307840749
:107C7000BA0720F0621B730B840BBA0BEE1F88F758
:107C8000E095089504D06894B111E1C00895C4D07E
:107C900088F09F5790F0B92F9927B751A0F0D1F0F5
:107CA000660F771F881F991F1AF0BA95C9F712C07F
:107CB000B13081F0CBD0B1E00895C8C0672F782FE4
:107CC0008827B85F39F0B93FCCF3869577956795EB
:107CD000B395D9F73EF490958095709561957F4F57
:107CE0008F4F9F4F0895E89409C097FB3EF49095FD
:107CF0008095709561957F4F8F4F9F4F9923A9F085
:107D0000F92F96E9BB279395F69587957795679513
:107D1000B795F111F8CFFAF4BB0F11F460FF1BC057
:107D20006F5F7F4F8F4F9F4F16C0882311F096E9EA
:107D300011C0772321F09EE8872F762F05C0662398
:107D400071F096E8862F70E060E02AF09A95660F51
:107D5000771F881FDAF7880F9695879597F908950A
:107D600007D008F481E0089503D008F48FEF089558
:107D7000990F0008550FAA0BE0E8FEEF161617063C
:107D8000E807F907C0F012161306E407F50798F0A4
:107D9000621B730B840B950B39F40A2661F0232BBD
:107DA000242B252B21F408950A2609F4A140A69539
:107DB0008FEF811D811D089597F99F6780E870E01E
:107DC00060E008959FEF80EC089500240A94161651
:107DD000170618060906089500240A9412161306B9
:107DE000140605060895092E0394000C11F4882347
:107DF00052F0BB0F40F4BF2B11F460FF04C06F5F63
:107E00007F4F8F4F9F4F089557FD9058440F551F38
:107E100059F05F3F71F04795880F97FB991F61F00C
:107E20009F3F79F087950895121613061406551F83
:107E3000F2CF4695F1DF08C0161617061806991FEF
:107E4000F1CF86957105610508940895E894BB27E4
:107E500066277727CB0197F908950BD0C4CFB5DFFC
:107E600028F0BADF18F0952309F0A6CFABCF112484
:107E7000EECFCADFA0F3959FD1F3950F50E0551FC9
:107E8000629FF001729FBB27F00DB11D639FAA276F
:107E9000F00DB11DAA1F649F6627B00DA11D661FBE
:107EA000829F2227B00DA11D621F739FB00DA11DDF
:107EB000621F839FA00D611D221F749F3327A00D99
:107EC000611D231F849F600D211D822F762F6A2F35
:107ED00011249F5750408AF0E1F088234AF0EE0FBA
:107EE000FF1FBB1F661F771F881F91505040A9F7C7
:107EF0009E3F510570F060CFAACF5F3FECF3983EF4
:107F0000DCF3869577956795B795F795E7959F5F2D
:107F1000C1F7FE2B880F911D9695879597F90895C7
:107F2000629FD001739FF001829FE00DF11D649F5D
:107F3000E00DF11D929FF00D839FF00D749FF00DE9
:107F4000659FF00D9927729FB00DE11DF91F639F8A
:107F5000B00DE11DF91FBD01CF0111240895991B3A
:107F600079E004C0991F961708F0961B881F7A9530
:107F7000C9F780950895AA1BBB1B51E107C0AA1F32
:107F8000BB1FA617B70710F0A61BB70B881F991FBA
:107F90005A95A9F780959095BC01CD01089597FB5E
:107FA000092E07260AD077FD04D0E5DF06D0002091
:107FB0001AF4709561957F4F0895F6F79095819525
:107FC0009F4F0895A1E21A2EAA1BBB1BFD010DC0F5
:107FD000AA1FBB1FEE1FFF1FA217B307E407F50779
:107FE00020F0A21BB30BE40BF50B661F771F881F55
:107FF000991F1A9469F760957095809590959B01EB
:10800000AC01BD01CF01089597FB092E05260ED0C6
:1080100057FD04D0D7DF0AD0001C38F450954095A6
:10802000309521953F4F4F4F5F4F0895F6F790954C
:108030008095709561957F4F8F4F9F4F08952F9238
:108040003F924F925F926F927F928F929F92AF92E8
:10805000BF92CF92DF92EF92FF920F931F93CF9335
:10806000DF93CDB7DEB7CA1BDB0B0FB6F894DEBFCC
:108070000FBECDBF09942A88398848885F846E84F2
:108080007D848C849B84AA84B984C884DF80EE803C
:10809000FD800C811B81AA81B981CE0FD11D0FB645
:1080A000F894DEBF0FBECDBFED010895F999FECF64
:1080B000B2BDA1BDF89A119600B40895F7DF019200
:1080C0001A94E1F70895F2DFE02DF0DFF02D089526
:1080D000F999FECFB2BDA1BD00BC11960FB6F894C0
:1080E000FA9AF99A0FBE0895F3DF012CF1DF1124FB
:0E80F00008950190EDDF1A94E1F70895FFCF97
:1080FE000AFF0164496E74656772616C506974633E
:10810E0068202020496E74656772616C526F6C6CCA
:10811E002020202041636350697463682020202052
:10812E0020202020416363526F6C6C202020202081
:10813E00202020204779726F59617720202020203F
:10814E002020202052656164696E67486569676802
:10815E00742020204163635A2020202020202020DC
:10816E002020202054687275737420202020202037
:10817E0020202020436F6D706173734865616469C0
:10818E006E672020566F6C7461676520202020205A
:10819E00202020205265636569766572204C6576D5
:1081AE00656C20205961774779726F486561646903
:1081BE006E6720204D6F746F725F46726F6E742003
:1081CE00202020204D6F746F725F526561722020E7
:1081DE00202020204D6F746F725F52696768742083
:1081EE00202020204D6F746F725F4C6566742020C6
:1081FE00202020204163635F5A2020202020202051
:10820E0020202020535049204572726F722020206A
:10821E0020202020535049204F6B2020202020204A
:10822E002020202020202020202020202020202040
:10823E0020202020536572766F20202020202020C1
:10824E0020202020506974636820202020202020C8
:10825E0020202020526F6C6C2020202020202020F7
:10826E002020202020202020202020202020202000
:10827E0020202020202020202020202020202020F0
:10828E0020202020202020202020202020202020E0
:10829E0020202020202020202020202020202020D0
:1082AE0020202020202020202020202020202020C0
:1082BE0020202020202020202020202020202020B0
:1082CE0020202020202020202020202020202020A0
:1082DE00202020204750535F50697463682020206F
:1082EE00202020204750535F526F6C6C202020209E
:1082FE0020202020FFFF010A6400007D0000FF0304
:10830E000102030405060708090A48656C6C6F2014
:10831E00576F726C64000000000000000000000047
:10832E00000000000000000000000000000000003F
:10833E00000000000000000000000000000000002F
:10834E00000000000000000000000000000000001F
:10835E00000000000000000000000B016400FFFFA1
:10836E00FFFFF40190D0030090D00300ECFF17B78D
:10837E00D13830FB103A409696020A0000000000F9
:10838E00000000644600006401426567696E6E6518
:10839E007200004E6F726D616C000053706F7274DC
:1083AE0000000C000102020303030304040404048E
:1083BE000404040505050505050505050505050562
:1083CE000505050606060606060606060606060642
:1083DE00060606060606060606060606060606062F
:1083EE000606060707070707070707070707070712
:1083FE0007070707070707070707070707070707FF
:10840E0007070707070707070707070707070707EE
:10841E0007070707070707070707070707070707DE
:10842E0007070708080808080808080808080808C1
:10843E0008080808080808080808080808080808AE
:10844E00080808080808080808080808080808089E
:10845E00080808080808080808080808080808088E
:10846E00080808080808080808080808080808087E
:10847E00080808080808080808080808080808086E
:10848E00080808080808080808080808080808085E
:10849E00080808080808080808080808080808084E
:0484AE0008080800B2
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644p_KILLAGREG_V0_69k.hex
0,0 → 1,2588
:100000000C94F9030C9416040C9416040C94160426
:100010000C9416040C9416040C9416040C941604F8
:100020000C9416040C94EE0D0C9416040C94160407
:100030000C94E3190C9416040C9416040C94AF1948
:100040000C9416040C9416040C94190D0C94D43EC4
:100050000C942F090C9416040C94D3050C941604DC
:100060000C94C30E0C9416040C94F7180C941604FC
:100070000C94A93E0C9416040C9416040A0A0D0064
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0000A0D537570706F727420666F722047501E
:1000B0005320617420326E642055415254000A0D61
:1000C000537570706F727420666F722047505320A2
:1000D0006174203173742055415254000A0D5375D8
:1000E00070706F727420666F72204D6963726F4D0D
:1000F00061673320436F6D70617373004F4B0A0D5E
:10010000000A0D43616C6962726174696E672061F7
:1001100069722070726573737572652073656E7392
:100120006F722E2E000A0D414343206E6F742063C0
:10013000616C6962726174656421000A0D3D3D3D28
:100140003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DDF
:100150003D3D3D3D3D3D3D3D3D3D3D000A0D466C37
:1001600069676874436F6E74726F6C0A0D486172D0
:1001700064776172653A25642E25640A0D536F66B3
:1001800074776172653A5625642E256425632000D4
:100190002E005A5F52616E67653A2020253469004F
:1001A000595F52616E67653A202025346900585FB7
:1001B00052616E67653A2020253469004D4D332029
:1001C00052616E6765005A5F4F66667365743A20C8
:1001D0002025336900595F4F66667365743A2020A5
:1001E00025336900585F4F66667365743A20202591
:1001F0003369004D4D33204F666673657400416C62
:10020000743A2025642E252E3364206D004C6174D1
:100210003A2025642E252E3364252E336420646510
:1002200067004C6F6E3A2025642E252E3364252EF0
:1002300033642064656700536174733A2025642039
:100240004669783A203F3F00536174733A20256431
:10025000204669783A20334400536174733A20256C
:1002600064204669783A20324400536174733A201E
:100270002564204669783A204E6F004E6F20475023
:10028000532064617461210048693A253469202053
:1002900043663A253469200054683A2534692020A1
:1002A00059613A253469200050693A253469202083
:1002B000526F3A253469200045787465726E436F39
:1002C0006E74726F6C20200052616E67653A253340
:1002D000692D25336900506F736974696F6E3A2018
:1002E00025336900536574706F696E74202025335F
:1002F0006900536572766F202000506F343A2025D4
:10030000336920506F383A2025336900506F333AF3
:100310002025336920506F373A2025336900506F0C
:10032000323A2025336920506F363A202533690050
:10033000506F313A2025336920506F353A202533EC
:1003400069004F6666436F757273653A202535699B
:100350000048656164696E673A2020202535690090
:10036000436F757273653A2020202025356900435C
:100370006F6D706173732020202020202000524375
:100380002D4C6576656C3A2025356900566F6C7486
:100390006167653A2020253569004865696768749A
:1003A0002025346920282533692900526F6C6C2080
:1003B0002020253469202825336929005069746379
:1003C00068202025346920282533692900414343CA
:1003D000202D2053656E736F7200596177202020A5
:1003E00025346920282533692900526F6C6C202040
:1003F00025346920282533692900506974636820F1
:100400002534692028253369290059617720202067
:1004100025346920282533692900526F6C6C20200F
:1004200025346920282533692900506974636820C0
:10043000253469202825336929004779726F202DDA
:100440002053656E736F720050333A253469202053
:1004500050343A253469200050313A25346920203F
:1004600050323A253469200047733A2534692020F8
:1004700059613A253469200050693A2534692020B1
:10048000526F3A253469200043373A2534692020D9
:1004900043383A253469200043353A253469202011
:1004A00043363A253469200043333A253469202005
:1004B00043343A253469200043313A2534692020F9
:1004C00043323A253469200048656164696E673AB1
:1004D00020202025356900526F6C6C3A20202020A6
:1004E00020202535690050697463683A2020202057
:1004F0002025356900417474697475646500486528
:100500006967687420436F6E74726F6C004E6F2061
:10051000004F6666736574202020203A25356900F7
:100520004169722050726573732E3A253569005304
:10053000657420506F696E743A20253569004865EE
:10054000696768743A2020202025356900286329CE
:1005500020486F6C67657220427573730053657431
:1005600074696E673A202564200048573A5625641E
:100570002E25642053573A25642E25642563002BCD
:10058000204D696B726F4B6F70746572202B005B2E
:1005900025695D005B25695D000A0D5573696E670D
:1005A00020506172616D65746572205365742025F9
:1005B00064000A0D496E69742E20454550524F4D16
:1005C0003A2047656E65726174696E67204465669E
:1005D00061756C742D506172616D657465722E2E3B
:1005E0002E0000008F001E01AD013B02CA0258031D
:1005F000E603740402058F051B06A7063307BE0732
:100600004808D2085B09E3096B0AF20A780BFD0B74
:10061000810C040D860D070E870E060F840F001047
:100620007B10F5106E11E5115B12CF124213B3135C
:1006300023149214FE146A15D3153B16A116051740
:100640006717C81727188318DE1837198E19E3198A
:10065000361A871AD61A231B6E1BB61BFD1B411CAC
:10066000831CC31C001D3C1D751DAB1DE01D121E0F
:10067000421E6F1E9A1EC31EE91E0D1F2E1F4D1F08
:10068000691F841F9B1FB01FC31FD31FE11FEC1FD7
:10069000F51FFB1FFF1F00200001020304040506D5
:1006A0000708090A0B0B0C0D0E0F10111112131471
:1006B000151516171818191A1B1B1C1D1D1E1F1F98
:1006C00020212122232324242525262727282829E1
:1006D000292A2A2B2B2C2C2D2D2D2E2E2F2F30304E
:1006E00030313132323233333334343435353536D8
:1006F000363637373737383838393939393A3A3A78
:100700003A3B3B3B3B3C3C3C3C3C3D3D3D3D3E3E27
:100710003E3E3E3F3F3F3F3F3F40404040404041E4
:1007200041414141414242424242424243434343AA
:100730004343434444444444444444454545454577
:10074000454545454646464646464646464747474A
:100750004747474747474747484848484848484821
:1007600048484849494949494949494949494949FC
:10077000494A4A4A4A4A4A4A4A4A4A4A4A4A4A4BD9
:100780004B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4BB9
:100790004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C99
:1007A0004C4C4C4D4D4D4D4D4D4D4D4D4D4D4D4D7C
:1007B0004D4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E62
:1007C0004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E49
:1007D0004E4E4E4F4F4F4F4F4F4F4F4F4F4F4F4F2C
:1007E0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F19
:1007F0004F4F11241FBECFEFD0E1DEBFCDBF14E0BD
:10080000A0E0B1E0E6EEFDE902C005900D92A63B46
:10081000B107D9F719E0A6EBB4E001C01D92A63AE2
:10082000B107E1F70E9418040C94F24E0C940000FA
:10083000CF93DF93F89414B815B8189B02C08BE0DF
:1008400001C08AE08093000184B1836084B9209163
:1008500000012A3011F4289A01C02898299884B7F9
:10086000877F84BF809160008861809360001092D0
:10087000600080ED97E09093D2048093D1041092B1
:100880004E0810924D08109271051092700510924A
:100890006F0510926E0510926D0510926C052A304E
:1008A00011F4289801C0289A0E9447180E94CF0C82
:1008B0000E94CB0D0E940F07809100018B3011F434
:1008C0000E944C3E0E947B190E94A60E0E94A01816
:1008D0000E948842789410924F0785E480935007D5
:1008E00087E08093510720910001822F6AE00E94E7
:1008F000234E492F50E0822F0E94234E90E02BE69A
:1009000030E03F932F9325E430E03F932F931F92E5
:100910001F925F934F939F938F938CE591E09F93EA
:100920008F931F920E942B0A8BE391E09F938F93EA
:100930001F920E942B0A299A0E94953D84E00E94F2
:10094000953B2DB73EB7205F3F4F0FB6F8943EBFA3
:100950000FBE2DBF8050944050F085E291E09F93F0
:100960008F931F920E942B0A0F900F900F9084EF8D
:1009700091E00E94040DEC01CE010E940D0D882330
:10098000D9F38091B70880FF20C081E091E09F9368
:100990008F931F920E942B0A88EE93E00E94040D11
:1009A000EC010E94A2110F900F900F90CE010E94B7
:1009B0000D0D8823D9F38CEF90E09F938F931F92B6
:1009C0000E942B0A0F900F900F908CED90E09F9358
:1009D0008F931F920E942B0A0F900F900F9080917F
:1009E00000018A3019F48EEB90E002C080EA90E0BA
:1009F0009F938F931F920E942B0A0F900F900F903E
:100A00000E94DB23809100018A3011F4289801C0F4
:100A1000289A80ED97E09093D2048093D10485E5E5
:100A20008093590784E990E09F938F931F920E94CF
:100A30002B0A8091B7080F900F900F9082FF03C090
:100A400088E890E002C080E890E09F938F931F9227
:100A50000E942B0A0F900F900F908CE790E09F93CD
:100A60008F931F920E942B0A0E94E21188E893E163
:100A700090936D0380936C030F900F900F90809173
:100A8000CE048823E1F31092CE040E9485250E94B3
:100A90009423209100012A3011F4289801C0289A4B
:100AA00080910301882321F081508093030112C0BB
:100AB0001092C2041092C3041092630710927D0535
:100AC00010927C0510927F0510927E051092810590
:100AD0001092800580916C0390916D03892B01F534
:100AE00085E090E090936D0380936C030E94C7189B
:100AF00080910403909105038F5F9F4FF9F48091DB
:100B000058058823D9F080E197E29093D20480932E
:100B1000D10480E890E090930503809304030EC015
:100B200080916C0390916D03019790936D03809376
:100B30006C032A3011F4289801C0289A8091CE04C1
:100B4000882321F080915805882311F40E947607AC
:100B50000E941E08CE010E940D0D882309F48FCF3C
:100B600020910803309109038091C70890E028176D
:100B700039079CF480910403909105038F5F9F4F88
:100B800061F480E797E19093D2048093D10480E0F0
:100B900093E0909305038093040384E190E00E9426
:100BA000040DEC016CCF1F920F920FB60F9211241F
:100BB0008F939F93EF93FF93809102018823E1F439
:100BC0008091CA049091CB0401969093CB048093BA
:100BD000CA04FC01EA55F84FE081ED3019F086397E
:100BE000910539F41092CB041092CA0481E08093ED
:100BF0000201E093C60004C01092CB041092CA0414
:100C0000FF91EF919F918F910F900FBE0F901F90CA
:100C10001895DC0120E030E040E050E008C0FA0127
:100C2000EA55F84F8081280F311D4F5F5F4F4A17FB
:100C30005B07A9F73F70C90136E0969587953A950D
:100C4000E1F7835CFD01EA55F84F808311962F731D
:100C5000235CFD01EA55F84F2083A955B84F8DE07C
:100C60008C93109202018091A6078093C60008958C
:100C70001F93CF93DF93EA01722F93E29093A6071D
:100C80006093A7078093A807A3E0B0E060E04FC09F
:100C9000FE01E60FF11D90816F5F715019F410E0B5
:100CA00040E00FC0FE01E60FF11D40816F5F715003
:100CB00011F410E006C0FE01E60FF11D10816F5F18
:100CC0007150892F86958695835CFD01EA55F84F12
:100CD000808350E09A0184E0369527958A95E1F764
:100CE000892F90E083709070F4E0880F991FFA9537
:100CF000E1F7282B235CFD01E955F84F2083812F74
:100D000082958695869583704F705070440F551F5D
:100D1000440F551F842B835CFD01E855F84F8083F9
:100D20001F73135CFD01E755F84F1083149677236A
:100D300009F0AECFCD010E940906DF91CF911F913E
:100D400008950F931F93CF93DF93EC01062F70E06C
:100D5000A22FB0E012974AC0E42FF0E0E954F94F17
:100D600030814F5FE42FF0E0E954F94F50814F5F3D
:100D7000E42FF0E0E954F94F10814F5FE42FF0E0E9
:100D8000E954F94F20814F5F842F90E0A817B907ED
:100D900084F1701771F15D53FE01E70FF11D852F8E
:100DA00082958F703D53330F330F382B3083613072
:100DB00001F1912F9D537F5FFE01E70FF11D7150EF
:100DC0005295507F892F86958695582B5083635076
:100DD0006F3F79F07E5FFE01E70FF11D9295990F4D
:100DE000990F907C2D53922B90837F5F662309F09F
:100DF000B3CFDF91CF911F910F9108951F93182FBB
:100E00008A3019F48DE00E94FE068091C00085FFB3
:100E1000FCCF1093C60080E090E01F9108951F93CF
:100E20001FB7F8948091C1008F778093C1008091A3
:100E3000C1008F7B8093C100589A5098599A519A5B
:100E40001092C5008AE28093C4008091C000826045
:100E50008093C00088E18093C1008091C2008F77A9
:100E60008093C2008091C2008F7B8093C2008091EA
:100E7000C2008F7D8093C2008091C2008F7E8093DC
:100E8000C2008091C200877F8093C2008091C10020
:100E90008B7F8093C1008091C20084608093C200E8
:100EA0008091C20082608093C20002C08091C6001F
:100EB0008091C00087FDFACF8091C1008068809347
:100EC000C1008091C10080648093C1001092BC0475
:100ED00081E08093020188EC90E00E94040D9093E1
:100EE0004E0780934D071FBF1F9108958091020107
:100EF000882309F4A2C08091B704882371F08091FF
:100F00000201882351F06091C6042BE049E557E0C7
:100F100087E40E9438061092B70480914D079091A3
:100F20004E070E940D0D882321F48091B904882377
:100F3000B1F080910201882391F06091C60422E40F
:100F400044E657E084E40E9438061092B9048AEF20
:100F500090E00E94040D90934E0780934D0760919E
:100F600001016F3F89F0462F50E094E0440F551F78
:100F70009A95E1F74C5F5E4F605D20E181E40E944D
:100F800038068FEF8093010190913C089923A1F0DE
:100F900080910201882381F083E28093A6079093D9
:100FA000A7078DE08093A8071092020110923C08D9
:100FB0008091A6078093C6008091B804882359F1D8
:100FC00080910201882339F10E94EB111092B8043C
:100FD0003091BB04932F9F5F9093BB04943021F01A
:100FE0008091BA04882359F02EE149E458E060E08A
:100FF00084E30E9438068FEF8093BB040CC044E169
:10100000949FA0011124465E5C4F24E160E0832F91
:101010008F5C0E9438068091B604882371F080911D
:101020000201882351F06091C6042AE04FE457E0A2
:1010300086E50E9438061092B60408951F93CF9358
:10104000DF93CDB7DEB722970FB6F894DEBF0FBEA1
:10105000CDBF8091BC04882309F4F7C08091B90604
:101060008B3609F47EC08C3688F48336E1F1843601
:1010700030F48136C1F0823609F0E5C020C08736F1
:1010800009F480C0883609F0DEC047C0813709F412
:101090007DC0813708F4A4C0843709F459C086376D
:1010A00009F0D1C06BC02091BD0443E062E0CE01E5
:1010B00001960E94A1068981809301012AC0209196
:1010C000BD0443E06BE089E597E00E94A1068091B2
:1010D000F40490915B07892B8093F404809162075C
:1010E00080933C08B0C02091BD0443E06BE089E5EB
:1010F00097E00E94A1068091F40490915B07892BF0
:101100008093F4048091620780933C0881E080938F
:10111000B9048FEF8093030196C02091BD0443E092
:1011200062E0CE0101960E94A1068091F4049981AB
:10113000892B8093F4048A818F3F21F481E080938E
:10114000BA0402C01092BA0481E08093B8047BC054
:101150002091BD0443E064E08EEB94E00E94A10680
:10116000D8CF2091BD0443E064E082EC94E00E947B
:10117000A1068091C50480933C08CBCF81E0809389
:10118000B60461C081E08093B7045DC02091BD04C6
:1011900043E062E0CE0101960E94A1068091020127
:1011A0008823E1F389818F3F71F0863010F085E06C
:1011B000898389810E94C33B6091C604898126E4AA
:1011C0004FEA58E009C01091C60482E00E94843BB7
:1011D00026E44FEA58E0612F855B0E94380633C051
:1011E0002091BD0443E066E48FEA98E00E94A106E6
:1011F0008091B9068B560E94AE3B6091DA0870E090
:1012000080E090E024EC39E040E050E00E94044EA1
:1012100060937403709375038093760390937703C0
:101220006091DB0870E080E090E00E94044E6093E3
:1012300078037093790380937A0390937B030E94E1
:10124000863D0E9440251092BC0422960FB6F89469
:10125000DEBF0FBECDBFDF91CF911F9108951F92CA
:101260000F920FB60F9211241F932F933F934F931A
:101270005F936F937F938F939F93AF93BF93CF931E
:10128000DF93EF93FF931091C600809100018A30A5
:1012900019F4812F0E9452498091BC04882309F0DF
:1012A0006DC06091C704662371F4133279F4109312
:1012B000B70681E08093C70483E290E09093C9046D
:1012C0008093C8045BC0663908F054C0A62FB0E014
:1012D0002091C8043091C9041D3069F0A954B94F58
:1012E0001C936F5F6093C704210F311D3093C904B5
:1012F0002093C80443C0FD01EB54F94F9081ED01E8
:10130000CA54D94F8881A901491B5109481B510969
:101310005F705093C9044093C8042081CA0136E02D
:10132000969587953A95E1F7835C8217F1F4988159
:10133000842F8F73835C8917C1F481E08093BC0490
:101340006093BD04A954B94F1C938091B9068235AE
:1013500071F488E190E02CE00FB6F894A8958093A2
:1013600060000FBE2093600002C01092BC04109277
:10137000C70404C01092C7041092BC04FF91EF91FF
:10138000DF91CF91BF91AF919F918F917F916F919D
:101390005F914F913F912F911F910F900FBE0F9032
:1013A0001F901895982F80913D08813069F48091A5
:1013B000F304E82FF0E0E65EFC4F90838F5F8093AC
:1013C000F30421E030E005C0892F0E94FE06282F9B
:1013D00030E0C90108951F93182F04C080E30E94D4
:1013E000D20911501116D4F31F9108951F93182F8D
:1013F00004C080E20E94D20911501116D4F31F914B
:1014000008950F931F93CF93DF938C01EB0108C0D6
:10141000F8010F5F1F4FE4918E2F0E94D209219790
:101420002097B1F7DF91CF911F910F9108950F93FE
:101430001F93CF93DF938C01EB0106C0F8018191DC
:101440008F010E94D20921972097C1F7DF91CF9198
:101450001F910F9108952F923F924F925F926F923A
:101460007F928F929F92AF92BF92CF92DF92EF9234
:10147000FF920F931F93CF93DF93CDB7DEB7E5971E
:101480000FB6F894DEBF0FBECDBF2B968FAD2B9756
:1014900080933D08CE01835B9F4F9B838A832D966B
:1014A0004EAC5FAC2D971EA61FA618AA19AA9E01C6
:1014B000225D3F4F3DAB2CAB820102C00F5F1F4F3F
:1014C000F801F490FF2019F0F5E2FF16B9F7B80122
:1014D0006419750919F0C2010E94010AFF2009F47C
:1014E00045C228010894411C511C1982AA81BB8164
:1014F00033241BAA2FEF2AABF2010894411C511C84
:10150000B490632D70E06170707035E7B31621F010
:101510008B2D80628837C9F46115710559F02D91C2
:101520003D914D915C9113972EA73FA748AB59ABC6
:1015300014960BC08D919C9111979C0140E050E056
:101540002EA73FA748AB59AB129630E2B31621F451
:101550008981882389F61CC043E2B41611F458E04F
:1015600055C08AE2B81621F09DE2B91671F408C0A0
:10157000FD011296E081EBABE7FFBECFE195EBAB4F
:10158000E0E13E2AFFED3F22B7CF2BE2B21611F485
:10159000B982B2CF3EE2B31699F5F2010894411C2C
:1015A000511C84918A3221F0B82E20E030E01DC019
:1015B000FD0112964081518157FF02C04FEF5FEF4E
:1015C0004AAB9ACFC90153E0880F991F5A95E1F7AA
:1015D000220F331F280F391F2B0D311D2053304090
:1015E000F2010894411C511CB4908B2D80538A3019
:1015F00048F3A90137FF02C04FEF5FEF4AAB85CF39
:1016000040E3B41629F434FC77CF50E2352A74CF86
:101610008B2D81538930D8F420E030E0C90103E0FC
:10162000880F991F0A95E1F7220F331F280F391FE2
:101630002B0D311D20533040F2010894411C511CE8
:10164000B4908B2D80538A3048F32BAB5ECF88E665
:10165000B81619F494E0392A4FCFECE6BE1619F407
:10166000F1E03F2A49CFBB83AA8323E6B21639F4BF
:101670001296BB83AA8312978C918E8322C134E485
:10168000B31639F044E6B41631F059E6B516A9F5AB
:1016900002C081E0382A30FE08C01496BB83AA83BA
:1016A0005E914E913E912E910AC01296BB83AA8301
:1016B0009E918E919C01442737FD4095542F2EA773
:1016C0003FA748AB59AB8EA59FA5A8A9B9A9BB2335
:1016D0008CF42EA53FA548A959A950954095309561
:1016E00021953F4F4F4F5F4F2EA73FA748AB59ABB8
:1016F0008DE28983BAE02B2E80C03FE4B31621F03F
:101700004FE6B41631F402C051E0352AA8E02A2E83
:1017100073C080E7B81689F41296BB83AA839E91A2
:101720008E919C0140E050E02EA73FA748AB59ABFB
:1017300030E4332AF8E7BF2E5DC043E7B416D1F595
:101740001296BB83AA83DE90CE90C114D10489F493
:1017500088E28E838EE68F8385E788878CE689878B
:101760008A8789E28B871C86E6E0CE2ED12CCC0EB0
:10177000DD1E5AA957FD14C0452F552747FD50952A
:1017800060E070E0C6010E94DC4B009711F4FAA8FB
:101790000EC0F82EFC188AA98F154CF4F82E07C03D
:1017A000F60101900020E9F73197FE2EFC1819820E
:1017B00040E090C095E5B91621F0A5E7BA1631F4DE
:1017C00002C0B1E03B2A7AE0272E16C0E8E5BE163B
:1017D00021F0F8E7BF1609F070C033FE0BC02EA54C
:1017E0003FA548A959A9211531054105510511F019
:1017F00030E4332A60E1262E19824AA947FD02C04F
:101800005FED35228EA59FA5A8A9B9A90097A105CE
:10181000B10549F49AA9992331F45EE2C52ED12C81
:10182000CC0EDD1E46C06EA47FA488A899A84EE207
:10183000C42ED12CCC0EDD1EE22CFF2400E010E0E3
:101840006EA57FA588A999A9A80197010E94564E67
:101850006A3020F430E3A32EA60E08C027E5A22E9E
:10186000A60EA8E5BA1611F4BFEDAB22F601A292BE
:101870006F016EA57FA588A999A9A80197010E946B
:10188000564E2EA73FA748AB59AB6E147F04800677
:10189000910618F039014A01D3CFF8E02F1649F428
:1018A00033FE07C020E3A21621F080E3D6018E9319
:1018B0006D01FCA8FC184AA90DC0BB2009F456C054
:1018C000BE82198296E0C92ED12CCC0EDD1E40E0DE
:1018D000FF24F394E42EEF18E7FCEE24898188239B
:1018E00019F08F2D8F5F06C036FC02C08F2D02C00D
:1018F0008F2D8E5FA82EAE0C032D10E080E3882E76
:10190000912C802291228114910421F48BA98A19AF
:101910000E94F6098981882329F061E070E0CE01F8
:10192000019609C006FF09C080E38C83BD8262E096
:1019300070E0CE0104960E94170AB0E28B16910463
:1019400021F48BA98A190E94EB098E2D0E94EB09C4
:101950006F2D772767FD7095C6010E94170A04FF57
:10196000ABCD8BA98A190E94F609A6CDE5960FB6D4
:10197000F894DEBF0FBECDBFDF91CF911F910F91C5
:10198000FF90EF90DF90CF90BF90AF909F908F909F
:101990007F906F905F904F903F902F9008952FB75A
:1019A000F894909100019A3019F4529A5A9802C012
:1019B0003F9A479884B1886184B985B1877E85B99B
:1019C0009A3019F4529A5A9802C03F9A479884B5AF
:1019D0008F7A84BD84B5836A84BD85B5877385BDE0
:1019E00085B5887F826085BD17BC88E788BD16BC39
:1019F00080916E00897F80936E0080916E0081607F
:101A000080936E002FBF08952091CC043091CD04B7
:101A10002F5F3F4F820F931F08952091CC04309188
:101A2000CD04821B930B892F99278695807490E0B3
:101A300008951F920F920FB60F9211242F933F9388
:101A40004F935F936F937F938F939F93AF93BF93C6
:101A5000EF93FF938091D30481508093D3048F3F01
:101A6000B9F489E08093D304809106038F5F81707D
:101A700080930603882319F481E08093CE0480913B
:101A8000CC049091CD0401969093CD048093CC0426
:101A90008091D1049091D204892BB1F08091D1042E
:101AA0009091D20401979093D2048093D104209115
:101AB000D1043091D20480910403909105038223D4
:101AC0009323892BD1F406C08FEF9FEF90930503EA
:101AD00080930403809100018A3039F404C05A9A3B
:101AE00005C0479A03C05A9801C047988091B7082B
:101AF00083FF08C00E944D4205C0809100018A30DA
:101B000081F7EDCFFF91EF91BF91AF919F918F91B1
:101B10007F916F915F914F913F912F910F900FBEE9
:101B20000F901F901895AC012091CC043091CD04FA
:101B30002F5F3F4F05C080917A00886C80937A00B8
:101B40008091CC049091CD04B901681B790BCB0135
:101B5000840F951F80709078892F99278695882308
:101B600051F30895AC012091CC043091CD042F5F46
:101B70003F4F8091CC049091CD04B901681B790B43
:101B8000CB01840F951F80709078892F99278695B7
:101B9000882379F308959FB7F894579A5F9AE0EBFA
:101BA000F0E080818F788083808183688083E1EB9F
:101BB000F0E08081867380838081866080838AE004
:101BC0008093B3001092B200E0E7F0E080818A7F5A
:101BD00080838081826080839FBF08951F920F92CF
:101BE0000FB60F921124FF920F931F932F933F93E1
:101BF0004F935F936F937F938F939F93AF93BF9315
:101C0000EF93FF93809107038150809307038F3FE9
:101C100009F082C08091B0008093B0008091B00044
:101C200080688093B0008091930390E09093D504F6
:101C30008093D4048091E408F090D10880FF23C001
:101C40000091D4041091D50460911A0570911B0580
:101C500080911C0590911D0520E830E040E050E0A7
:101C60000E94784ECA01B9012F2D30E040E050E0CB
:101C70000E94044E20E032E040E050E00E94784EA6
:101C8000020F131F22C00091D4041091D50460915B
:101C90001A0570911B0580911C0590911D0520E887
:101CA00030E040E050E00E94784ECA01B9012F2D8B
:101CB00030E040E050E00E94044E20E032E040E09E
:101CC00050E00E94784E021B130B1093D504009332
:101CD000D4042091D4043091D5048091D20890E0AE
:101CE0002817390754F02091D4043091D5048091FD
:101CF000D30890E08217930724F49093D50480933F
:101D0000D4048091D4049091D5048093B300809141
:101D1000D4088093070306C08091B0008F7380932E
:101D2000B0005F98FF91EF91BF91AF919F918F911C
:101D30007F916F915F914F913F912F911F910F91E3
:101D4000FF900F900FBE0F901F9018959FB7F894BB
:101D500011B812B88FEF80937E00ECE7F0E080813D
:101D60008F7180838081807E8083AAE7B0E087E2E4
:101D70008C93EBE7F0E08081887F80838C91886C86
:101D80008C939FBF08951F920F920FB60F9211244C
:101D9000EF92FF920F931F932F933F934F935F9375
:101DA0006F937F938F939F93AF93BF93CF93DF9363
:101DB000EF93FF9380917A00877380937A008091EC
:101DC000F1048F5F8093F1048150853009F47EC067
:101DD000863090F4823009F440C0833030F4882398
:101DE000F1F0813009F082C22FC0833009F441C084
:101DF000843009F07BC25AC0883009F4B2C08930FF
:101E000038F4863009F473C0873009F06FC28CC093
:101E1000893009F4C3C08A3009F068C2DBC18091FF
:101E20007800909179009093F0048093EF0481E022
:101E30008093F2048091E6049091E70401969093D8
:101E4000E7048093E60456C280917800909179006F
:101E50009093EE048093ED0482C08091780090917D
:101E600079009093EC048093EB0484E08093F20477
:101E700041C24091080350910903809178009091EC
:101E800079009A01220F331F240F351F63E070E0A1
:101E90000E942F4E260F371F36952795369527958A
:101EA000309309032093080386E0E0CF8091140566
:101EB000909115052091780030917900821B930B49
:101EC0009093DF048093DE0487E0D0CF8091780088
:101ED000909179002091120530911305821B930B8C
:101EE0009093E1048093E0041092F20403C2809185
:101EF00000012091EF043091F0048A3049F4809180
:101F0000780090917900820F931F9695879506C06F
:101F10008091780090917900820F931F9093DD0457
:101F20008093DC0481E0A2CF809100012091ED0438
:101F30003091EE048A3049F48091780090917900D4
:101F4000820F931F9695879506C080917800909197
:101F50007900820F931F9093DB048093DA0482E070
:101F600085CF809100012091EB043091EC048A3000
:101F700049F48091780090917900820F931F969593
:101F8000879506C08091780090917900820F931F09
:101F90009093D9048093D80485E068CF609178004D
:101FA00070917900E0901605F090170500911805E2
:101FB00010911905882777FD8095982F0E94E94C8C
:101FC000A80197010E94E94B0E94B64C7093E3046C
:101FD0006093E204E091E204F091E3048091E00474
:101FE0009091E104C091DE04D091DF0497FF03C01B
:101FF000909581959F4F64E070E00E94434E9B0155
:10200000CE01D7FF03C0909581959F4F64E070E0AB
:102010000E94434E260F371FE20FF31FF093E30495
:10202000E093E2048091E2049091E30402970CF4BF
:102030003EC060911605709117058091180590912A
:10204000190520E030E84BE354E40E94244D882336
:102050000CF078C0609116057091170580911805F5
:10206000909119052AE037ED43EA5CE30E94EA4BC0
:1020700060931605709317058093180590931905C2
:1020800080915A0590915B05845F914008F05AC099
:1020900060911605709117058091180590911905AA
:1020A0002DEC3CEC4CEC5DE30E94EA4B43C080918C
:1020B000E2049091E3048F5F9F4F0CF043C0609166
:1020C000160570911705809118059091190520E06B
:1020D00030E849E054E40E94284D18169CF56091C0
:1020E00016057091170580911805909119052AE041
:1020F00037ED43EA5CE30E94E94B60931605709369
:102100001705809318059093190580915A059091B1
:102110005B05845F9140B0F46091160570911705DE
:1021200080911805909119052DEC3CEC4CEC5DE389
:102130000E94E94B6093160570931705809318056C
:102140009093190580917800909179009093D7042D
:102150008093D60420914A0530914B0540914C055F
:1021600050914D058091E2049091E304AA2797FDD8
:10217000A095BA2F820F931FA41FB51F80934A0505
:1021800090934B05A0934C05B0934D05E0904A0504
:10219000F0904B0500914C0510914D0560914A055A
:1021A00070914B0580914C0590914D0520E034E0F5
:1021B00040E050E00E94784EE21AF30A040B150B3F
:1021C000E0924A05F0924B0500934C0510934D05A3
:1021D00083E04CCEE0917800F09179008091E804A2
:1021E0009091E904E80FF91FF093E904E093E80403
:1021F0008091EA048F5F8093EA04853008F476C00A
:10220000809178009091790090930F0380930E0352
:102210004091E4045091E50420913E0830913F083C
:102220002E1B3F0B8091820590918305281B390B53
:102230008091820390E0BC01269FC001279F900DF2
:10224000369F900D11249A01A3E0220F331FAA9507
:10225000E1F7241B350B820F931F68E070E00E94AA
:10226000434E7093E5046093E404E0900A03F09019
:102270000B0300910C0310910D03BF01882777FD1C
:102280008095982FA8019701220F331F441F551FD7
:102290002E0D3F1D401F511F620F731F841F951F7E
:1022A00024E030E040E050E00E94784E20930A03A2
:1022B00030930B0340930C0350930D0320913E0881
:1022C00030913F0880910A0390910B03A0910C0379
:1022D000B0910D03281B390B3093830520938205A1
:1022E0001092EA041092E9041092E8041092F204A9
:1022F0001092F10480917C00807E9091F204892BF1
:1023000080937C008091F104882329F080917A00E9
:10231000886C80937A00FF91EF91DF91CF91BF910C
:10232000AF919F918F917F916F915F914F913F916D
:102330002F911F910F91FF90EF900F900FBE0F9074
:102340001F9018951F93CF93DF9383E00E94843BE7
:10235000182F853108F01A5017BD84E690E00E94CE
:10236000930D80910E0390910F0382559340C0F41A
:1023700010E016C017BD82E390E00E94930DDF933A
:10238000CF931F920E942B0A80910E0390910F030E
:102390000F900F900F908458934030F01F5F02C051
:1023A000C0E9D1E01A3F30F3612F83E00E948D3BFA
:1023B000109340088CE291E00E94930DDF91CF9141
:1023C0001F910895EAE1F3E080E2819383E0EA3629
:1023D000F807D1F708959F92AF92BF92CF92DF9204
:1023E000EF92FF920F931F93CF93DF938091F404AA
:1023F000282F30E0C90181709070682F8823A9F0E0
:102400008091F504882311F0815002C080916A0305
:102410008093F504EAE1F3E080E2819383E0EA3619
:10242000F807D1F78FEF8093BB04A9014270507079
:1024300021FF17C09091F50480916A03981719F451
:102440001092F50403C09F5F9093F504EAE1F3E076
:1024500080E2819393E0EA36F907D1F78FEF80931A
:10246000BB04662321F0452B11F01092F5048091F6
:10247000F504282F30E08A3040F481E18093F304A2
:102480003F932F9384E995E007C080E18093F304A4
:102490003F932F938FE895E09F938F9381E08F93E5
:1024A0000E942B0A0F900F900F900F900F90109199
:1024B000F504173009F40CC3183098F4133009F4FC
:1024C00027C1143038F4113009F469C0123008F013
:1024D000C9C01DC0153009F4F3C1163008F0AAC2F6
:1024E0006BC11B3009F4E1C31C3038F4193009F416
:1024F0004AC31A3008F09BC310C31D3009F43DC510
:102500001D3008F424C41E3009F0AEC56FC510920A
:10251000F3048FE795E09F938F9311E01F930E9440
:102520002B0A84E18093F30420910001822F6AE05A
:102530000E94234E492F50E0822F0E94234E90E0AC
:102540002BE630E03F932F9325E430E03F932F9329
:102550001F921F925F934F939F938F938AE695E00C
:102560009F938F931F930E942B0A88E28093F3041A
:102570000E94863D90E09F938F938DE595E09F9319
:102580008F931F930E942B0A8CE38093F3048DE4B6
:1025900095E09F938F931F930E942B0AD4C3809141
:1025A000B70880FF47C01092F30480918205909194
:1025B00083059F938F938EE395E09F938F931F9353
:1025C0000E942B0A84E18093F3048091840590910A
:1025D00085059F938F938FE295E09F938F931F9331
:1025E0000E942B0A88E28093F30480910E0390915D
:1025F0000F039F938F9380E295E09F938F931F9398
:102600000E942B0A8CE38093F3048091400890E0B1
:102610009F938F9381E195E09F938F931F930E94E7
:102620002B0A8DB79EB744960FB6F8949EBF0FBE87
:102630008DBF1FC584E18093F3048DE095E09F93E7
:102640008F931F930E942B0A88E28093F3048EEFEE
:1026500094E09F938F931F930E942B0A8DB79EB790
:102660000696E2CF1092F30485EF94E09F938F9348
:1026700011E01F930E942B0A84E18093F304609180
:102680001A0570911B0580911C0590911D0520E095
:1026900034E040E050E00E94784E5F934F933F93C8
:1026A0002F9386EE94E09F938F931F930E942B0AA3
:1026B00088E28093F3046091220570912305809154
:1026C00024059091250520E034E040E050E00E9490
:1026D000784E5F934F933F932F9387ED94E09F93B2
:1026E0008F931F930E942B0A8CE38093F3048091B5
:1026F0006E0390916F039F938F9388EC94E09F9368
:102700008F931F930E942B0A8DB79EB746968CCF4E
:102710001092F30480914D0890914E0820914B083F
:1027200030914C089F938F933F932F9388EB94E0C5
:102730009F938F9311E01F930E942B0A84E1809353
:10274000F304809151089091520820914F083091E4
:1027500050089F938F933F932F9388EA94E09F9321
:102760008F931F930E942B0A88E28093F304809139
:1027700055089091560820915308309154089F9322
:102780008F933F932F9388E994E09F938F931F93A8
:102790000E942B0A8CE38093F30480915908909156
:1027A0005A0820915708309158089F938F933F9370
:1027B0002F9388E894E07BC01092F304E091B00876
:1027C000F0E0EE0FFF1FE75BF74F20813181E091D2
:1027D000AF08F0E0EE0FFF1FE75BF74F80819181BC
:1027E0003F932F939F938F9388E794E09F938F93CA
:1027F00011E01F930E942B0A84E18093F304E0917F
:10280000B208F0E0EE0FFF1FE75BF74F2081318148
:10281000E091B108F0E0EE0FFF1FE75BF74F80811A
:1028200091813F932F939F938F9388E694E09F939A
:102830008F931F930E942B0A88E28093F304E09108
:10284000B408F0E0EE0FFF1FE75BF74F2081318106
:10285000E091B308F0E0EE0FFF1FE75BF74F8081D8
:1028600091813F932F939F938F9388E594E09F935B
:102870008F931F930E942B0A8CE38093F304E091C3
:10288000B608F0E0EE0FFF1FE75BF74F20813181C4
:10289000E091B508F0E0EE0FFF1FE75BF74F808196
:1028A00091813F932F939F938F9388E494E09F931C
:1028B0008F931F930E942B0A8DB79EB74C96B4CE70
:1028C0001092F3048AE394E09F938F9311E01F9397
:1028D0000E942B0A0F900F900F90809100018A3078
:1028E00009F04AC084E18093F304409108055091B7
:1028F00009058091D8049091D90420910805309160
:102900000905821B930B5F934F939F938F938AE2EA
:1029100094E09F938F931F930E942B0A88E28093E9
:10292000F30440910A0550910B058091DA049091CF
:10293000DB0420910A0530910B05821B930B5F93FA
:102940004F939F938F938AE194E09F938F931F936C
:102950000E942B0A8CE38093F30480910C059091E4
:102960000D0520919B0830919C089F938F933F9376
:102970002F938AE094E055C084E18093F304809122
:1029800008059091090562E070E00E94434E809135
:10299000D8049091D9042091080530910905821B33
:1029A000930B7F936F939F938F938AEF93E09F9303
:1029B0008F931F930E942B0A88E28093F3048091E7
:1029C0000A0590910B0562E070E00E94434E8091F1
:1029D000DA049091DB0420910A0530910B05821BEB
:1029E000930B7F936F939F938F938AEE93E09F93C4
:1029F0008F931F930E942B0A8CE38093F3048091A2
:102A00000C0590910D0562E070E00E94434E8091AC
:102A10009B0890919C087F936F939F938F938AED6F
:102A200093E09F938F931F930E942B0A8DB79EB7BD
:102A30004596FACD1092F3048DEC93E09F938F931B
:102A400011E01F930E942B0A84E18093F30480918C
:102A50001205909113052091E0043091E1049F93B9
:102A60008F933F932F938CEB93E09F938F931F93C0
:102A70000E942B0A88E28093F304809114059091C0
:102A800015052091DE043091DF049F938F933F93CF
:102A90002F938BEA93E09F938F931F930E942B0AAF
:102AA0008CE38093F3046091160570911705809173
:102AB0001805909119050E94B64C2091900830910C
:102AC00091087F936F933F932F938AE993E036C1E8
:102AD00084E18093F30480910803909109039F930C
:102AE0008F938CE893E09F938F9311E01F930E9444
:102AF0002B0A88E28093F3048091010590910205EE
:102B00009F938F938EE793E09F938F931F930E94E1
:102B10002B0A8DB79EB70A9687CD1092F3048FE6E5
:102B200093E09F938F9311E01F930E942B0A84E1FF
:102B30008093F30480917003909171039F938F931E
:102B400080E693E09F938F931F930E942B0A88E265
:102B50008093F30480916E0390916F039F938F9302
:102B600081E593E09F938F931F930E942B0A8CE340
:102B70008093F30480914E0590914F059F938F931E
:102B800082E493E068C21092F3048091640590910E
:102B9000650520915C0530915D059F938F933F9370
:102BA0002F9380E393E09F938F9311E01F930E94F4
:102BB0002B0A84E18093F304809166059091670568
:102BC00020915E0530915F059F938F933F932F93E4
:102BD0008EE193E09F938F931F930E942B0A88E2CC
:102BE0008093F304809168059091690520916005B8
:102BF000309161059F938F933F932F938CE093E0E7
:102C00009F938F931F930E942B0A8CE38093F3046E
:102C100080916A0590916B05209162053091630562
:102C20009F938F933F932F938AEF92E040CE109221
:102C3000F30482EF92E09F938F9311E01F930E9421
:102C40002B0A84E18093F3048091930390E09F9397
:102C50008F9384EE92E09F938F931F930E942B0A91
:102C600088E28093F3048091D4049091D5049F93DB
:102C70008F9386ED92E09F938F931F930E942B0A70
:102C80008CE38093F3042091D30830E08091D20844
:102C900090E03F932F939F938F9388EC92E09F93C4
:102CA0008F931F930E942B0ABCCC1092F30488EBE5
:102CB00092E09F938F9311E01F930E942B0A84E16F
:102CC0008093F30420915D07332727FD3095809191
:102CD0005C07992787FD90953F932F939F938F9340
:102CE00088EA92E09F938F931F930E942B0A88E2B9
:102CF0008093F30420915E07332727FD3095809160
:102D00005F0790E03F932F939F938F9388E992E022
:102D10009F938F931F930E942B0A8CE38093F3045D
:102D20002091630730E080916007992787FD909597
:102D30003F932F939F938F9388E892E09F938F9375
:102D40001F930E942B0A8DB79EB748966DCC809139
:102D50007C06882371F41092F3048BE792E09F9332
:102D60008F9381E08F930E942B0A0F900F900F900A
:102D700080C120917E06223071F02330B1F0809125
:102D80007D062223E1F41092F30490E09F938F9349
:102D90008AE692E01BC01092F30480917D0690E0D9
:102DA0009F938F9389E592E011C01092F304809174
:102DB0007D0690E09F938F9388E492E007C0109285
:102DC000F30490E09F938F9387E392E09F938F9318
:102DD00081E08F930E942B0A0F900F900F900F901D
:102DE0000F90E0907F06F090800600918106109190
:102DF0008206C801B70120E836E948E950E00E94A0
:102E0000784E59016A01C801B70120E836E948E95E
:102E100050E00E94784E7B018C0120E137E240E0D7
:102E200050E00E94784EE90137FF03C0D095C1956C
:102E3000DF4FC801B70120E137E240E050E00E94D7
:102E4000784E2AE030E040E050E00E94784EB90130
:102E500037FF03C0709561957F4F84E18093F30441
:102E60007F936F93DF93CF93BF92AF9282E292E012
:102E70009F938F93992493949F920E942B0AE090A2
:102E80008306F09084060091850610918606C8019D
:102E9000B70120E836E948E950E00E94784E590130
:102EA0006A01C801B70120E836E948E950E00E940C
:102EB000784E7B018C0120E137E240E050E00E9437
:102EC000784EE90137FF03C0D095C195DF4FC801A7
:102ED000B70120E137E240E050E00E94784E2AE05E
:102EE00030E040E050E00E94784EB90137FF03C067
:102EF000709561957F4F88E28093F3047F936F9381
:102F0000DF93CF93BF92AF928DE092E09F938F9328
:102F10009F920E942B0AE0908706F090880600910D
:102F2000890610918A06C801B70128EE33E040E017
:102F300050E00E94784E59016A01C801B70128EE9D
:102F400033E040E050E00E94784E9B0177FF03C0E1
:102F5000309521953F4F8CE38093F3043F932F935B
:102F6000BF92AF928EEF91E09F938F939F920E94BA
:102F70002B0A8DB79EB7499657CB1092F30483EF77
:102F800091E09F938F9311E01F930E942B0A84E19D
:102F90008093F30480919309992787FD90959F93DF
:102FA0008F9384EE91E09F938F931F930E942B0A3F
:102FB00088E28093F30480919409992787FD909586
:102FC0009F938F9385ED91E09F938F931F930E9422
:102FD0002B0A8CE38093F30480919509992787FD50
:102FE00090959F938F9386EC91E035C01092F304F7
:102FF0008CEB91E09F938F9311E01F930E942B0A1B
:1030000084E18093F30480919609909197099F93AE
:103010008F938EEA91E09F938F931F930E942B0AC8
:1030200088E28093F30480919809909199099F9385
:103030008F9380EA91E09F938F931F930E942B0AB6
:103040008CE38093F30480919A0990919B099F935C
:103050008F9382E991E09F938F931F930E942B0A95
:103060008DB79EB74296E0CA115010936A03109232
:10307000F5041092F404DF91CF911F910F91FF900E
:10308000EF90DF90CF90BF90AF909F90089587B161
:103090008C6087B94298439808954091F604509106
:1030A000F7044431510500F14C3D5105E8F42091FD
:1030B000FC043091FD04C901880F991F84179507FE
:1030C00010F4429A01C042982F5F3F4F3093FD04A5
:1030D0002093FC04215030402417350730F0109223
:1030E000FD041092FC0401C0429A4091F8045091F2
:1030F000F9044431510510F4439808954C3D5105AD
:10310000E8F42091FA043091FB04C901880F991F5B
:103110008417950710F4439A01C043982F5F3F4FDF
:103120003093FB042093FA042150304024173507D4
:1031300030F01092FB041092FA0408954398089519
:103140009FB7F8943998389A88B1836088B9E9EBC9
:10315000F0E080818C7F80838AE28093B8009FBFFB
:10316000089585EA8093BC00089584E98093BC00AB
:1031700008958093BB0085E88093BC00089585EC9A
:103180008093BC00089585E88093BC000895EF9279
:10319000FF920F931F938CEBE82EF12C84E9F7013B
:1031A00080831092FE040BEB10E0F8018081809385
:1031B000FF041092FF0480E8F70180831092BD00A5
:1031C0001092BA00F80110821092B9001092B80063
:1031D0000E94A01885EAF7018083F801108285E833
:1031E000F70180831F910F91FF90EF9008951F9238
:1031F0000F920FB60F9211248F939F93EF93FF932B
:103200008091FE048F5F8093FE0481508330D1F162
:10321000843028F4813081F0823060F508C0853038
:10322000C1F18530A0F1863009F04FC03EC08091D9
:10323000FF04880F8E5A12C08091FF048F5F809325
:10324000FF048150813069F0813030F0823061F0CC
:10325000833009F047C00BC0809187088093BB0082
:1032600020C080919D08FACF80919208F7CF80917D
:10327000AE08F4CF8091FF04843010F41092FE0465
:1032800085EA10C080910005880F8D5AE7CF85EC44
:1032900009C0E0910005F0E08091BB00EF5BF74FC3
:1032A000808385E88093BC001DC080910005E82FD5
:1032B000F0E09091BB00EB5BF74F90838F5F8093C2
:1032C0000005843010F01092000584E98093BC0062
:1032D0001092FE048AE090E090936D0380936C035B
:1032E0001092FF04FF91EF919F918F910F900FBE6D
:1032F0000F901F9018959FB7F89456985E9A8AB1D0
:1033000080638AB98BB18F7C8BB9809100018A3040
:1033100011F4539A5B98809180008C7080938000A8
:1033200080918100837E8093810080918100836CF5
:1033300080938100809182008F73809382008091BE
:103340006F00897F80936F0080916F00816280930E
:103350006F0010920205109201059FBF08951F9201
:103360000F920FB60F9211242F933F935F936F9399
:103370007F938F939F93AF93BF938091030588238F
:1033800091F4209101053091020580910105909101
:10339000020568E070E00E94434E261B370B309315
:1033A00002052093010510920305BF91AF919F91F3
:1033B0008F917F916F915F913F912F910F900FBEF1
:1033C0000F901F9018951F920F920FB60F92112415
:1033D0000F931F932F933F934F935F936F937F931D
:1033E0008F939F93AF93BF93CF93DF93EF93FF930D
:1033F0002091860030918700809104059091050509
:10340000281B390B809186009091870090930505C9
:1034100080930405C9018D549440009106051091D4
:103420000705835F9A4188F4043011053CF010923F
:103430006B03809103058F5F8093030581E090E02B
:10344000909307058093060598C00E3011050CF087
:1034500094C0C9018B5F9040845B914008F072C0BA
:10346000E901C25DD140F801EE0FFF1FE75BF74FA6
:10347000808191819E01281B390BC90137FF03C050
:10348000909581959F4F069784F4809101059091C6
:103490000205883C91054CF480910105909102054C
:1034A0000A969093020580930105F801EE0FFF1F25
:1034B000E75BF74F20813181C901880F991F820F87
:1034C000931F8C0F9D1F64E070E00E94434E9B0190
:1034D000CE010196861797071CF42150304006C094
:1034E00021976C177D0714F42F5F3F4F80910105E2
:1034F00090910205E801CC0FDD1F833C9105BCF0E3
:10350000FE01E75BF74F80819181A901481B590BB0
:10351000CA0163E070E00E94434ECB01880F991FFF
:10352000860F971FC959D74F9983888304C0C959FB
:10353000D74F19821882F801EE0FFF1FE75BF74F94
:1035400031832083F8013196F0930705E093060557
:10355000E530F10511F45D9A06C05D98E630F1059D
:1035600011F45C9A01C05C98809100018A3029F4C2
:10357000379711F45B9A01C05B9880910105909197
:103580000205892B49F08091010590910205019770
:103590009093020580930105FF91EF91DF91CF9108
:1035A000BF91AF919F918F917F916F915F914F915B
:1035B0003F912F911F910F910F900FBE0F901F9071
:1035C00018952F923F924F925F926F927F928F92B7
:1035D0009F92AF92BF92CF92DF92EF92FF920F93A2
:1035E0001F93CF93DF93CDB7DEB722970FB6F89432
:1035F000DEBF0FBECDBF80910C0590910D052091CF
:10360000DC043091DD04821B930B90939C08809323
:103610009B088091DA049091DB0420910A05309197
:103620000B05821B930B90939808809397088091C9
:10363000D8049091D9042091080530910905821B86
:10364000930B90939A0880939908E0909E08F090CD
:103650009F086091E0047091E104882777FD8095D0
:10366000982F2CE030E040E050E00E94044E00270C
:10367000F7FC0095102FE60EF71E081F191FC80152
:10368000B70122E030E040E050E00E94784E3093F5
:103690009F0820939E08E090A808F090A9086091E8
:1036A000DE047091DF04882777FD8095982F2CE049
:1036B00030E040E050E00E94044E0027F7FC009507
:1036C000102FE60EF71E081F191FC801B70122E0D0
:1036D00030E040E050E00E94784E3093A9082093FB
:1036E000A80820919008309191086091E2047091AF
:1036F000E304882777FD8095982F442737FD409570
:10370000542F620F731F841F951F22E030E040E0AA
:1037100050E00E94784E3093910820939008409199
:1037200042055091430560914405709145052091F3
:10373000E0043091E104C901880F991F820F931FA3
:10374000880F991F880F991FAA2797FDA095BA2F58
:10375000840F951FA61FB71F8093420590934305C2
:10376000A0934405B0934505409146055091470507
:1037700060914805709149052091DE043091DF0485
:10378000C901880F991F820F931F880F991F880FF7
:10379000991FAA2797FDA095BA2F840F951FA61FE2
:1037A000B71F8093460590934705A0934805B093B3
:1037B00049052091E0043091E104809152059091F7
:1037C0005305820F931F90935305809352052091C8
:1037D000DE043091DF048091540590915505820FED
:1037E000931F9093550580935405809156059091B1
:1037F00057050196909357058093560520913E05F5
:1038000030913F05409140055091410580919B08C2
:1038100090919C08AA2797FDA095BA2F820F931F1D
:10382000A41FB51F80933E0590933F05A0934005CC
:10383000B093410580919B0890919C089C0144277E
:1038400037FD4095542F8091A0089091A108A09138
:10385000A208B091A308280F391F4A1F5B1F2093AD
:10386000A0083093A1084093A2085093A308203BDE
:1038700083E8380788E0480780E0580764F0205B59
:103880003348484050402093A0083093A10840930B
:10389000A2085093A3088091A0089091A108A0913C
:1038A000A208B091A308B7FF0CC080559C47A74F52
:1038B000BF4F8093A0089093A108A093A208B09353
:1038C000A30890918A059A83992309F08AC0809170
:1038D0008B05882309F085C08091B70886FF81C0D9
:1038E00060919B0870919C0820912E0530912F05C6
:1038F0004091300550913105E0909503FF2400E0A0
:1039000010E0882777FD8095982F0E94044E20E0D4
:1039100038E040E050E00E94784ECA01B901A801A9
:1039200097010E94044E20E030E140E050E00E9408
:10393000784E59016A012093CA053093CB05409314
:10394000CC055093CD0560919B0870919C08209107
:103950003605309137054091380550913905882753
:1039600077FD8095982F0E94044E20E038E040E0DB
:1039700050E00E94784ECA01B901A80197010E9447
:10398000044E20E030E140E050E00E94784E209369
:10399000C6053093C7054093C8055093C905D601A5
:1039A000C501D7FE07C0B095A095909581959F4F12
:1039B000AF4FBF4F81389105A105B10574F457FF92
:1039C00007C050954095309521953F4F4F4F5F4F21
:1039D0002138310541055105A4F081E0809351055E
:1039E00010C01092C6051092C7051092C80510921B
:1039F000C9051092CA051092CB051092CC05109201
:103A0000CD0580919708909198082090CA05309034
:103A1000CB054090CC055090CD05820D931D909321
:103A20009808809397080091970810919808A090A3
:103A3000C605B090C705C090C805D090C905809153
:103A40009603682E772488249924C401B301A60123
:103A500095010E94044E20E032E040E050E00E94D8
:103A6000784E020F131F1093980800939708209127
:103A70003A0530913B0540913C0550913D058091C0
:103A8000970890919808AA2797FDA095BA2F820FC2
:103A9000931FA41FB51F80933A0590933B05A093F5
:103AA0003C05B0933D054091360550913705609136
:103AB0003805709139058091970890919808209168
:103AC000860530918705821B930BAA2797FDA09549
:103AD000BA2F840F951FA61FB71F809336059093AA
:103AE0003705A0933805B09339058091360590913C
:103AF0003705A0913805B0913905E0907803F09032
:103B0000790300917A0310917B03E816F9060A07FE
:103B10001B0704F580E197E2A0E0B0E08E199F0951
:103B2000A00BB10B8093360590933705A093380511
:103B3000B09339058091360590913705A0913805ED
:103B4000B091390580933A0590933B05A0933C05CD
:103B5000B0933D05209136053091370540913805E9
:103B60005091390588279927DC018E199F09A00BF0
:103B7000B10B281739074A075B0704F580EF98ED6A
:103B8000AFEFBFEFE80EF91E0A1F1B1FE0923605CC
:103B9000F09237050093380510933905809136056A
:103BA00090913705A0913805B091390580933A0579
:103BB00090933B05A0933C05B0933D058091DA04BA
:103BC0009091DB040F9734F488E19CEF9093980870
:103BD000809397088091DA049091DB04079734F47E
:103BE00080E398EF90939808809397089091000154
:103BF00099839A30A9F48091DA049091DB04835F71
:103C0000934034F088EE93E090939808809397085F
:103C10008091DA049091DB048A5F9340DCF014C059
:103C20008091DA049091DB04855E974034F088EE51
:103C300093E090939808809397088091DA0490918C
:103C4000DB04835F974034F080ED97E09093980811
:103C5000809397088091990890919A088A199B09F6
:103C600090939A08809399080091990810919A0866
:103C7000C401B301A20191010E94044E20E032E090
:103C800040E050E00E94784E021B130B10939A08FC
:103C90000093990820913205309133054091340505
:103CA000509135058091990890919A08AA2797FD1F
:103CB000A095BA2F820F931FA41FB51F80933205C2
:103CC00090933305A0933405B093350540912E05AC
:103CD00050912F05609130057091310580919908C0
:103CE00090919A082091880530918905821B930B49
:103CF000AA2797FDA095BA2F840F951FA61FB71F5F
:103D000080932E0590932F05A0933005B093310535
:103D100080912E0590912F05A0913005B09131052D
:103D2000E0907403F090750300917603109177038F
:103D3000E816F9060A071B0704F588EA91E6A0E0F1
:103D4000B0E08E199F09A00BB10B80932E059093C4
:103D50002F05A0933005B093310580912E059091E9
:103D60002F05A0913005B0913105809332059093D5
:103D70003305A0933405B093350520912E0530917D
:103D80002F05409130055091310588279927DC0196
:103D90008E199F09A00BB10B281739074A075B073B
:103DA00004F588E59EE9AFEFBFEFE80EF91E0A1FA4
:103DB0001B1FE0922E05F0922F0500933005109303
:103DC000310580912E0590912F05A0913005B0917D
:103DD00031058093320590933305A0933405B09359
:103DE00035058091D8049091D9040F9734F488E177
:103DF0009CEF90939A08809399088091D8049091B1
:103E0000D904079734F480E398EF90939A0880934D
:103E1000990899819A30A9F48091D8049091D90495
:103E2000835F934034F088EE93E090939A088093F8
:103E300099088091D8049091D9048A5F9340DCF06E
:103E400014C08091D8049091D904855E974034F0D5
:103E500088EE93E090939A08809399088091D80413
:103E60009091D904835F974034F080ED97E0909370
:103E70009A088093990880917A00886C80937A00E0
:103E800080913E0590913F05A0914005B09141057C
:103E900080932A0590932B05A0932C05B0932D05B4
:103EA00080912E0590912F05A0913005B09131059C
:103EB00080931A0590931B05A0931C05B0931D05D4
:103EC0008091360590913705A0913805B09139055C
:103ED0008093220590932305A0932405B093250594
:103EE0008091320590913305A0913405B09135054C
:103EF00080931E0590931F05A0932005B093210584
:103F000080913A0590913B05A0913C05B0913D050B
:103F10008093260590932705A0932805B093290543
:103F20008091B70887FF63C02A81222309F05FC010
:103F300080918B05882309F05AC08091990890914F
:103F40009A08893C91055CF02091990830919A0873
:103F50008091990890919A082052334011C0809125
:103F6000990890919A0888539F4FA4F4209199083A
:103F700030919A088091990890919A08205E3C4F60
:103F8000880F991F880F991F280F391F30939A089F
:103F9000209399088091970890919808893C910501
:103FA0005CF0209197083091980880919708909143
:103FB00098082052334011C080919708909198083A
:103FC00088539F4FA4F420919708309198088091CE
:103FD000970890919808205E3C4F880F991F880F92
:103FE000991F280F391F309398082093970822961D
:103FF0000FB6F894DEBF0FBECDBFDF91CF911F91FA
:104000000F91FF90EF90DF90CF90BF90AF909F9077
:104010008F907F906F905F904F903F902F9008957A
:104020000F931F930AE710E0F80180818773808364
:104030008091D8049091D90490939A08809399081C
:104040008091DA049091DB0490939808809397080C
:104050008091DC049091DD0490939C0880939B08F0
:104060006091E0047091E104882777FD8095982F96
:104070002CE030E040E050E00E94044E70939F0836
:1040800060939E086091DE047091DF04882777FDBD
:104090008095982F0E94044E7093A9086093A808F9
:1040A0008091E2049091E3049093910880939008AA
:1040B000F8018081886C80836091DA0870E080E08C
:1040C00090E024EC39E040E050E00E94044E609320
:1040D00074037093750380937603909377036091D4
:1040E000DB0870E080E090E00E94044E609378036B
:1040F0007093790380937A0390937B031F910F91C0
:1041000008958091010590910205813A91050CF482
:104110000AC38091BA088B3F98F08B3F19F48091C5
:104120005C050EC08C3F19F480915E0509C08D3F7F
:1041300019F48091600504C08E3F21F480916205DE
:104140008093830380918303882319F4109283035F
:1041500004C08F3F11F4809383038091B9088B3F93
:1041600098F08B3F19F480915C050EC08C3F19F4D8
:1041700080915E0509C08D3F19F48091600504C0EF
:104180008E3F21F4809162058093820380918203A7
:10419000882319F41092820305C0843618F084E64F
:1041A000809382038091BB088B3F98F08B3F19F47A
:1041B00080915C050EC08C3F19F480915E0509C0AA
:1041C0008D3F19F48091600504C08E3F21F48091E9
:1041D00062058093840380918403882319F41092EC
:1041E000840305C0843618F084E6809384038091AC
:1041F000BD088B3F98F08B3F19F480915C050EC091
:104200008C3F19F480915E0509C08D3F19F48091AF
:10421000600504C08E3F21F4809162058093850380
:1042200080918503882319F41092850304C08F3F81
:1042300011F4809385038091C4088B3F98F08B3FE5
:1042400019F480915C050EC08C3F19F480915E05D5
:1042500009C08D3F19F48091600504C08E3F21F4A0
:10426000809162058093860380918603882319F4E8
:104270001092860304C08F3F11F4809386038091CF
:10428000C5088B3F98F08B3F19F480915C050EC0F8
:104290008C3F19F480915E0509C08D3F19F480911F
:1042A000600504C08E3F21F48091620580938703EE
:1042B000809187038B3010F48AE002C08F3F11F4A5
:1042C000809387038091C6088B3F98F08B3F19F449
:1042D00080915C050EC08C3F19F480915E0509C089
:1042E0008D3F19F48091600504C08E3F21F48091C8
:1042F00062058093880380918803882319F41092C3
:10430000880304C08F3F11F4809388038091CB0809
:104310008B3F98F08B3F19F480915C050EC08C3F69
:1043200019F480915E0509C08D3F19F480916005F4
:1043300004C08E3F21F48091620580938A038091AE
:104340008A03882319F410928A0304C08F3F11F462
:1043500080938A038091CC088B3F98F08B3F19F4AF
:1043600080915C050EC08C3F19F480915E0509C0F8
:104370008D3F19F48091600504C08E3F21F4809137
:10438000620580938B0380918B03882319F410922C
:104390008B0304C08F3F11F480938B038091CD0871
:1043A0008B3F98F08B3F19F480915C050EC08C3FD9
:1043B00019F480915E0509C08D3F19F48091600564
:1043C00004C08E3F21F48091620580938C0380911C
:1043D0008C03882319F410928C0304C08F3F11F4CE
:1043E00080938C038091CE088B3F98F08B3F19F41B
:1043F00080915C050EC08C3F19F480915E0509C068
:104400008D3F19F48091600504C08E3F21F48091A6
:10441000620580938D0380918D03882319F4109297
:104420008D0304C08F3F11F480938D038091CF08DA
:104430008B3F98F08B3F19F480915C050EC08C3F48
:1044400019F480915E0509C08D3F19F480916005D3
:1044500004C08E3F21F48091620580938E03809189
:104460008E03882319F410928E0304C08F3F11F439
:1044700080938E038091DF088B3F98F08B3F19F477
:1044800080915C050EC08C3F19F480915E0509C0D7
:104490008D3F19F48091600504C08E3F21F4809116
:1044A000620580938F0380918F03882319F4109203
:1044B0008F0304C08F3F11F480938F038091E00835
:1044C0008B3F98F08B3F19F480915C050EC08C3FB8
:1044D00019F480915E0509C08D3F19F48091600543
:1044E00004C08E3F21F480916205809390038091F7
:1044F0009003882319F41092900304C08F3F11F4A5
:10450000809390038091E1088B3F98F08B3F19F4E2
:1045100080915C050EC08C3F19F480915E0509C046
:104520008D3F19F48091600504C08E3F21F4809185
:1045300062058093910380919103882319F410926E
:10454000910304C08F3F11F4809391038091E2089E
:104550008B3F98F08B3F19F480915C050EC08C3F27
:1045600019F480915E0509C08D3F19F480916005B2
:1045700004C08E3F21F48091620580939203809164
:104580009203882319F41092920304C08F3F11F410
:10459000809392038091D0088B3F98F08B3F19F461
:1045A00080915C050EC08C3F19F480915E0509C0B6
:1045B0008D3F19F48091600504C08E3F21F48091F5
:1045C00062058093930380919303882319F41092DA
:1045D000930304C08F3F11F4809393038091D50817
:1045E0008B3F98F08B3F19F480915C050EC08C3F97
:1045F00019F480915E0509C08D3F19F48091600522
:1046000004C08E3F21F480916205809394038091D1
:104610009403882319F41092940304C08F3F11F47B
:10462000809394038091D8088B3F98F08B3F19F4C6
:1046300080915C050EC08C3F19F480915E0509C025
:104640008D3F19F48091600504C08E3F21F4809164
:1046500062058093950380919503882319F4109245
:10466000950304C08F3F11F4809395038091D9087E
:104670008B3F98F08B3F19F480915C050EC08C3F06
:1046800019F480915E0509C08D3F19F48091600591
:1046900004C08E3F21F4809162058093960380913F
:1046A0009603882319F41092960304C08F3F11F4E7
:1046B000809396038091DE088B3F98F08B3F19F42E
:1046C00080915C050EC08C3F19F480915E0509C095
:1046D0008D3F19F48091600504C08E3F21F48091D4
:1046E00062058093970380919703882319F41092B1
:1046F000970304C08F3F11F48093970360918A035E
:1047000070E080E090E00E943C4A27E137EB41ED09
:1047100058E30E94A14D60937E0370937F038093C2
:10472000800390938103089580915805882301F5B3
:1047300010929D0810928708109292081092AE086D
:104740008091BE04882311F0809387088091BF0474
:10475000882311F080939D088091C004882311F074
:104760008093AE088091C104882311F08093920851
:104770008091870890E090937F0780937E078091D7
:104780009D0890E090938107809380078091AE0808
:1047900090E090938307809382078091920890E045
:1047A00090938507809384071092FE041092FF0473
:1047B0000E94B118089510921305109212051092DC
:1047C00015051092140580E090E0A0E0B0E0809321
:1047D000160590931705A0931805B093190510922C
:1047E00009051092080510920B0510920A05109207
:1047F0000D0510920C0510929503109296030E94DD
:10480000102084E690E00E94930D0E941020809179
:10481000B70880FF10C080910E0390910F03875B53
:10482000934038F480910E0390910F038E5E924076
:1048300010F40E94A2118091D8049091D904909311
:104840000905809308058091DA049091DB04909328
:104850000B0580930A058091DC049091DD04909310
:104860000D0580930C0580910A0590910B0590939E
:104870000F0580930E05809108059091090590938E
:1048800011058093100584E00E94953B8050944070
:1048900058F18091A8089091A90897FF03C09095BE
:1048A00081959F4F6CE070E00E94434E7093150518
:1048B0006093140580919E0890919F0897FF03C014
:1048C000909581959F4F6CE070E00E94434E7093ED
:1048D0001305609312056091D6047091D704882760
:1048E00077FD8095982F17C084E00E94953B9093A8
:1048F00013058093120586E00E94953B9093150561
:104900008093140588E00E94953BAA2797FDA09507
:10491000BA2FBC01CD010E94E94C6093160570933B
:104920001705809318059093190510922E05109283
:104930002F05109230051092310510923205109219
:1049400033051092340510923505109236051092F9
:104950003705109238051092390510923A051092D9
:104960003B0510923C0510923D0510923E051092B9
:104970003F05109240051092410510929A0810923E
:104980009908109298081092970810929C0810921B
:104990009B0880910A0390910B03A0910C03B091A6
:1049A0000D0390933F0880933E081092E504109207
:1049B000E40410924A0510924B0510924C05109297
:1049C0004D0580916E0390916F03909371038093D6
:1049D000700382E390E09093D2048093D1046091BD
:1049E000DA0870E080E090E024EC39E040E050E04C
:1049F0000E94044E6856754C8F4F9F4F609374030E
:104A00007093750380937603909377036091DB082E
:104A100070E080E090E00E94044E6856754C8F4F25
:104A20009F4F609378037093790380937A039093F8
:104A30007B0310927D0310927C03109275051092F7
:104A40007405109277051092760560916E0370914F
:104A50006F03882777FD8095982F2EE036E040E0A1
:104A600050E00E94044E6093A0087093A1088093C8
:104A7000A2089093A3081092A5081092A408089584
:104A80001F93182F0EC080915805882361F484E687
:104A900090E09093D2048093D1048AEF90E00E943A
:104AA000B20D115080F71F9108958091AF08E82F43
:104AB000F0E0EE0FFF1FE75BF74F808191818D5E85
:104AC0009F4F14F010929803808191818A5B9F4FD1
:104AD000DCF4809198038823B9F481E080939803F3
:104AE000809150058F5F80935005809150058530EF
:104AF00028F4809150050E944025089588EE93E0A7
:104B00009093D2048093D10408952F923F924F92B4
:104B10005F926F927F928F929F92AF92BF92CF924D
:104B2000DF92EF92FF920F931F93CF93DF93CDB756
:104B3000DEB7A2970FB6F894DEBF0FBECDBF0E94BE
:104B4000E11A299A20917205309173058091C1086C
:104B5000482F50E0465F5F4F58874F8342175307F7
:104B600014F438872F8380910105909102058837CE
:104B700091050CF073C080910301882399F4809112
:104B80000403909105038F5F9F4F61F488E99AE3D6
:104B90009093D2048093D10480E09CE0909305032D
:104BA000809304038091B0059091B105009731F096
:104BB00001979093B1058093B00504C010925805F9
:104BC00010925905809100018A3011F4289A01C091
:104BD000289880915A0590915B05895E9340D8F1A1
:104BE0008091C808A82FB0E0B887AF8381E0809398
:104BF0005905E091AF082E2F30E0220F331FF90145
:104C0000E959F74F11821082A091B008B0E0AA0FC5
:104C1000BB1FFD01E959F74F11821082E091B208E4
:104C20004E2F50E0440F551FCA018959974FFC0180
:104C300011821082275B374FF90111821082A75B26
:104C4000B74F11961C921E92475B574FDA0111968F
:104C50001C921E92DCC310925805D9C380910105A5
:104C6000909102058D3891050CF4D1C3109259052D
:104C70008091C90822E3829FC00111249093B1055D
:104C80008093B005EF81F885B9976CF080915A0553
:104C900090915B05FFEF8F3F9F0729F0019690935E
:104CA0005B0580935A0580915A0590915B058F3F73
:104CB000910509F0E8F41092C2051092C305109214
:104CC000C4051092C5051092BE051092BF05109242
:104CD000C0051092C10510927105109270058A3FAF
:104CE000910531F481E090E09093A8058093A705A9
:104CF00020915C0530915D058091B308E82FF0E0CC
:104D0000EE0FFF1FE75BF74F8081918182599F4F24
:104D1000281739071CF42F5F3F4F0CC08081918109
:104D200082599F4F821793074CF42115310531F0BA
:104D30002150304030935D0520935C0520915E0545
:104D400030915F058091B408E82FF0E0EE0FFF1F6F
:104D5000E75BF74F8081918182599F4F2817390770
:104D60001CF42F5F3F4F0CC08081918182599F4F6F
:104D7000821793074CF42115310531F02150304052
:104D800030935F0520935E052091600530916105A9
:104D90008091B508E82FF0E0EE0FFF1FE75BF74FBB
:104DA0008081918182599F4F281739071CF42F5F0A
:104DB0003F4F0CC08081918182599F4F821793078A
:104DC0004CF42115310531F021503040309361050C
:104DD0002093600520916205309163058091B608AB
:104DE000E82FF0E0EE0FFF1FE75BF74F8081918126
:104DF00082599F4F281739071CF42F5F3F4F0CC073
:104E00008081918182599F4F821793074CF421151D
:104E1000310531F021503040309363052093620515
:104E2000209164053091650580915B0890915C0844
:104E300082599F4F281739071CF42F5F3F4F0EC030
:104E400080915B0890915C0882599F4F821793076D
:104E50004CF42115310531F0215030403093650577
:104E600020936405209166053091670580915D0867
:104E700090915E0882599F4F281739071CF42F5FC5
:104E80003F4F0EC080915D0890915E0882599F4F00
:104E9000821793074CF42115310531F02150304031
:104EA0003093670520936605209168053091690568
:104EB00080915F089091600882599F4F28173907A9
:104EC0001CF42F5F3F4F0EC080915F0890916008E7
:104ED00082599F4F821793074CF42115310531F009
:104EE00021503040309369052093680520916A0570
:104EF00030916B05809161089091620882599F4FB3
:104F0000281739071CF42F5F3F4F0EC080916108AE
:104F10009091620882599F4F821793074CF4211594
:104F2000310531F02150304030936B0520936A05F4
:104F300080915C0590915D0597FF05C010925D051D
:104F400010925C050AC08F3F910539F034F08FEF65
:104F500090E090935D0580935C0580915E05909153
:104F60005F0597FF05C010925F0510925E050AC0AD
:104F70008F3F910539F034F08FEF90E090935F050B
:104F800080935E05809160059091610597FF05C053
:104F900010926105109260050AC08F3F910539F0AB
:104FA00034F08FEF90E090936105809360058091DD
:104FB00062059091630597FF05C0109263051092FA
:104FC00062050AC08F3F910539F034F08FEF90E011
:104FD00090936305809362058091640590916505C7
:104FE00097FF05C010926505109264050AC08F3FB7
:104FF000910539F034F08FEF90E090936505809340
:105000006405809166059091670597FF05C0109231
:105010006705109266050AC08F3F910539F034F09C
:105020008FEF90E090936705809366058091680507
:105030009091690597FF05C0109269051092680567
:105040000AC08F3F910539F034F08FEF90E09093D4
:1050500069058093680580916A0590916B0597FFBB
:1050600005C010926B0510926A050AC08F3F91052A
:1050700039F034F08FEF90E090936B0580936A05E0
:10508000E091B108F0E0EE0FFF1FE75BF74F808182
:105090009181813591050CF40EC1809158058823CA
:1050A00009F009C18091B208E82FF0E0EE0FFF1F70
:1050B000E75BF74F808191818C3491050CF4BFC080
:1050C0008091AF058F5F8093AF05893C08F4F3C0F2
:1050D0001092AF05299810925B0510925A058091A5
:1050E000AF08282F30E0D901AA0FBB1FA75BB74F2D
:1050F0008D919C911197873491059CF48091B00813
:10510000E82FF0E0EE0FFF1FE75BF74F8081918102
:1051100097FF03C0909581959F4F873491050CF4BC
:105120006BC08091B008682F70E0DB01AA0FBB1F35
:10513000A75BB74F8D919C911197873491053CF0F7
:10514000F901EE0FFF1FE75BF74F808191818D9191
:105150009C918734910564F0F901EE0FFF1FE75B26
:10516000F74F808191818734910514F042E001C0AE
:1051700041E0FB01EE0FFF1FE75BF74F808191815C
:10518000863491055CF4F901EE0FFF1FE75BF74FE2
:1051900080819181873491050CF043E0FB01EE0F93
:1051A000FF1FE75BF74F808191818A5B9F4F5CF423
:1051B000F901EE0FFF1FE75BF74F80819181873484
:1051C00091050CF044E0660F771F675B774FDB01BA
:1051D0008D919C918A5B9F4F5CF4220F331F275B5C
:1051E000374FF90180819181863491050CF445E0B7
:1051F000842F0E94A53B1CC08091B70883FF18C074
:105200008081918197FF03C0909581959F4F44972E
:105210007CF48D919C918A5B9F4F54F481E0809344
:10522000500588EE93E09093D2048093D10443C05C
:105230000E94863D0E94C33B0E94DB2335C08081D3
:105240009181855B9F4FACF58091AF058F5F809317
:10525000AF05893C80F11092AF0529986FEF7FEF81
:1052600084E00E949D3B10925B0510925A050E94BB
:10527000DB23609112057091130584E00E949D3B31
:10528000609114057091150586E00E949D3B609128
:1052900016057091170580911805909119050E94C7
:1052A000BB4C88E00E949D3B0E94863D0E944025A9
:1052B00002C01092AF05E091B108F0E0EE0FFF1FC1
:1052C000E75BF74F808191818B5A9F4F0CF09FC015
:1052D000E091B208F0E0EE0FFF1FE75BF74F80812F
:1052E0009181855B9F4F0CF06BC08091AE058F5F05
:1052F0008093AE05893C08F465C088EC8093AE05C8
:1053000081E090E090935B0580935A0581E0809363
:1053100058051092BA051092BB051092BC05109268
:10532000BD0510923E0510923F0510924005109267
:10533000410510922E0510922F0510923005109203
:1053400031051092360510923705109238051092EB
:10535000390580911A0590911B05A0911C05B0910B
:105360001D058093320590933305A0933405B093C7
:1053700035058091220590912305A0912405B091D7
:10538000250580933A0590933B05A0933C05B09387
:105390003D051092C2051092C3051092C4051092EB
:1053A000C5051092BE051092BF051092C00510925F
:1053B000C1058091B70885FF05C00E94254402C041
:1053C0001092AE05E091B208F0E0EE0FFF1FE75B30
:1053D000F74F808191818C349105BCF08091AD05AF
:1053E0008F5F8093AD05893C90F088EC8093AD058C
:1053F00010925B0510925A05109258058091B708DB
:1054000085FF05C00E94AB4402C01092AD0580919B
:105410006B03815080936B0380916B038F3F29F066
:1054200080915905882309F477C30E9481206091F7
:105430006C0570916D057AA369A38091AF08E82E81
:10544000FF24D701AA0FBB1FCD01875B974FFC013B
:105450008081918198A38F8F8091BE08682E7724D8
:10546000A959B74F0D90BC91A02DBE8FAD8F8091E3
:10547000BF08A82EBB2420917405309175053C8F80
:105480002B8F20906E0530906F058091B008082F0B
:1054900010E0C801880F991FDC01A75BB74F0D9082
:1054A000BC91A02DBA8FA98F8959974FDC018D919E
:1054B0009C91988F8F8BE0917605F0917705FE8B0C
:1054C000ED8BE091B208AE2FB0E0AA0FBB1FA75B37
:1054D000B74F0D90BC91A02DBC8BAB8BE091B10868
:1054E000F0E0EE0FFF1FE75BF74FC080D18028E7A9
:1054F00030E0C20ED31ED0927305C0927205609147
:10550000870370E080E090E00E943C4A20E030E0B9
:1055100040E251E40E94EA4B20E030E040E85CE3E6
:105520000E94A14D6F87788B898B9A8B6093AA0814
:105530007093AB088093AC089093AD08609188039A
:1055400070E080E090E00E943C4A20E030EE4BE2C8
:1055500056E40E944E4C6093930870939408809395
:105560009508909396082091C304222331F08AE095
:1055700090E09093D2048093D104E22F22FF09C0DF
:1055800080919203482F50E0440F551F440F551F40
:1055900010C023FD03C040E050E00BC08091920397
:1055A00090E0880F991F880F991F44275527481BA3
:1055B000590B20917C0530917D05C901B3E0880F1E
:1055C000991FBA95E1F7821B930B840F951F68E032
:1055D00070E00E94434E2B0170937D0560937C0523
:1055E000E4FF09C080919203482F50E0440F551FFB
:1055F000440F551F10C0E5FD03C040E050E00BC054
:105600008091920390E0880F991F880F991F44277B
:105610005527481B590B80917E0590917F059C0171
:10562000E3E0220F331FEA95E1F7281B390BCA018B
:10563000820F931F68E070E00E94434E4B0170930D
:105640007F0560937E058091C204282F83FF03C0ED
:1056500082E390E004C082FF07C08EEC9FEF90933E
:1056600081058093800504C0109281051092800509
:1056700021FF09C080917C0390917D030196909356
:105680007D0380937C0324FF09C080917C0390916B
:105690007D03019790937D0380937C034F8D58A1E8
:1056A000469DC001479D900D569D900D112429A146
:1056B0003AA1220F331F69A17AA1260F371FED8D62
:1056C000FE8DEA9DD001EB9DB00DFA9DB00D112429
:1056D0004B8D5C8DA41BB50BBAA3A9A3820F931F9E
:1056E00064E070E00E94434E89A19AA1860F971F43
:1056F0009AA389A3C20162E070E00E94434EA9A16F
:10570000BAA1A60FB71FBAA3A9A3B0936D05A09322
:105710006C05E98DFA8DE69DC001E79D900DF69D23
:10572000900D11249101220F331F220D331D4F893B
:10573000588DB501469F5001479FB00C569FB00C45
:105740001124AD89BE89AA1ABB0A820F931F64E097
:1057500070E00E94434EA60EB71EC40162E070E0E6
:105760000E94434EA60EB71EB0926F05A0926E0522
:105770002091800530918105220F331F220F331FA6
:10578000EB89FC892E1B3F0B30937105209370052C
:105790008091630780FF56C080919203813808F49E
:1057A00051C080915C07992787FD9095AC01469D7B
:1057B000C001479D900D569D900D112469A17AA1BD
:1057C000680F791F70936D0560936C0580915D077C
:1057D000992787FD9095DC01A69DC001A79D900D9E
:1057E000B69D900D1124A80EB91EB0926F05A0921F
:1057F0006E0580915E07992787FD9095280F391FC8
:1058000030937105209370052091BC0830E08091A1
:105810006007992787FD9095FC012E9FC0012F9F5F
:10582000900D3E9F900D112490937D0380937C03F7
:1058300080915F0790E08C159D0524F4909373058B
:1058400080937205809172059091730597FF04C053
:1058500010927305109272058091B70882FF0CC0F8
:1058600080E090E0A0E0B0E08093930890939408EB
:10587000A0939508B093960820E030E040E050E017
:105880006F85788989899A890E94244D882364F4D8
:1058900080E090E0A0E0B0E08093AA089093AB088D
:1058A000A093AC08B093AD0820E030E040E050E0B9
:1058B0006091930870919408809195089091960852
:1058C0000E94244D882364F480E090E0A0E0B0E0E2
:1058D0008093930890939408A0939508B0939608AA
:1058E000E0916C05F0916D05209178053091790576
:1058F000CF0164E070E00E94434E77FF03C07095D3
:1059000061957F4F261737077CF4CF01F7FF03C05F
:10591000909581959F4F64E070E00E94434E709394
:1059200079056093780506C02150304030937905A1
:1059300020937805E0916E05F0916F0520917A052E
:1059400030917B05CF0164E070E00E94434E77FF09
:1059500003C0709561957F4F261737077CF4CF0100
:10596000F7FF03C0909581959F4F64E070E00E941F
:10597000434E70937B0560937A0506C021503040FA
:1059800030937B0520937A05F801EE0FFF1FE75B4C
:10599000F74F208131818091D608482F50E042177F
:1059A000530744F48091E30882FF04C081E08093B0
:1059B0008C0515C080918C05882389F0F801EE0FC5
:1059C000FF1FE75BF74F208131818091D708BA0133
:1059D000681B71092617370714F410928C05F8011B
:1059E000EE0FFF1FE75BF74F8081918166277727D6
:1059F000641B750B8617970744F48091E30883FFB7
:105A000004C081E080938D0515C080918D058823A9
:105A100089F0000F111F075B174FD8012D913C91A2
:105A20008091D70890E0841B950B8217930714F49C
:105A300010928D05F701EE0FFF1FE75BF74F808196
:105A400091814817590744F48091E30880FF04C00E
:105A500081E080938F0515C080918F05882389F0A0
:105A6000F701EE0FFF1FE75BF74F20813181809137
:105A7000D708FA01E81BF1092E173F0714F410921A
:105A80008F05F701EE0FFF1FE75BF74F80819181D4
:105A90008617970744F48091E30881FF04C081E0F2
:105AA00080938E0517C080918E05882399F0EE0CA7
:105AB000FF1C29E438E0E20EF31ED7012D913C9142
:105AC0008091D70890E0841B950B8217930714F4FC
:105AD00010928E0580918C05882321F480918D058C
:105AE000882321F081E080938B0502C010928B0502
:105AF00080918F05882321F480918E05882351F0B1
:105B000081E080938A0510928B0510928C0510928B
:105B10008D0502C010928A0580918B05882311F4AF
:105B20000C94613B84E690E09093D2048093D1047E
:105B30008091D50890E0EF81F8858E179F0714F4C7
:105B400098878F838091910390E09093F7048093DE
:105B5000F6048091920390E09093F9048093F80406
:105B60000E944D1880915905882381F1109271058A
:105B70001092700510926D0510926C0510926F05D1
:105B800010926E0580E090E0A8ECBFE38093AA0835
:105B90009093AB08A093AC08B093AD088BE09CEB5E
:105BA000A2E3BCE38093930890939408A093950894
:105BB000B093960810928B0510928A051092790581
:105BC0001092780510927B0510927A0520918C082E
:105BD00030918D0840918E0850918F0880911A0560
:105BE00090911B05A0911C05B0911D05820F931F7C
:105BF000A41FB51F80938C0890938D08A0938E08E6
:105C0000B0938F08209188083091890840918A08C4
:105C100050918B088091220590912305A091240535
:105C2000B0912505820F931FA41FB51F809388088C
:105C300090938908A0938A08B0938B0850908A05A6
:105C4000552029F480918B05882309F44FC01092C8
:105C5000E7041092E6041092420510924305109258
:105C60004405109245051092460510924705109282
:105C700048051092490510928C0810928D081092D8
:105C80008E0810928F08109288081092890810923E
:105C90008A0810928B0880912E0590912F05A09173
:105CA0003005B09131058093320590933305A09370
:105CB0003405B09335058091360590913705A09154
:105CC0003805B091390580933A0590933B05A09330
:105CD0003C05B0933D0510928905109288051092FD
:105CE000870510928605552009F0F5C080918B0537
:105CF000882309F0F0C060911A0570911B0580910E
:105D00001C0590911D05A090C308BB24CC24DD2464
:105D1000E0909E08F0909F08A60195010E94784EA1
:105D20000027F7FC0095102F2E193F09400B510B4F
:105D3000CA01B90120E130E040E050E00E94784E15
:105D400039014A0160912205709123058091240553
:105D500090912505E090A808F090A908A60195016A
:105D60000E94784E0027F7FC0095102F2E193F094E
:105D7000400B510BCA01B90120E130E040E050E096
:105D80000E94784E79018A01809178059091790579
:105D9000819734F480917A0590917B058197A4F0E6
:105DA000C401B30123E030E040E050E00E94784EAF
:105DB00039014A01C801B70123E030E040E050E07A
:105DC0000E94784E79018A01E091B208F0E0EE0F6E
:105DD000FF1FE75BF74F0190F081E02DF7FF03C055
:105DE000F095E195FF4F7A97A4F0C401B30123E049
:105DF00030E040E050E00E94784E39014A01C8018D
:105E0000B70123E030E040E050E00E94784E790195
:105E10008A01F1E26F1671048104910434F070E29A
:105E2000672E712C812C912C11C020EE62162FEF61
:105E300072062FEF82062FEF920644F460EE662E74
:105E40006FEF762E6FEF862E6FEF962E31E2E31610
:105E5000F1040105110534F050E2E52EF12C012D7D
:105E6000112D11C040EEE4164FEFF4064FEF04077A
:105E70004FEF140744F440EEE42E4FEFF42E4FEFB3
:105E8000042F4FEF142F80912E0590912F05A09194
:105E90003005B091310586199709A809B909809391
:105EA0002E0590932F05A0933005B0933105809176
:105EB000360590913705A0913805B09139058E19B6
:105EC0009F09A00BB10B8093360590933705A093E3
:105ED0003805B09339058091E6049091E7048F3F2F
:105EE000910509F008F445C4552009F0DCC3809100
:105EF0008B05882309F0D7C380915105882309F0C9
:105F0000D2C360918C0870918D0880918E08909119
:105F10008F0820E031E040E050E00E94784E20936E
:105F20008C0830938D0840938E0850938F086091B1
:105F300088087091890880918A0890918B0820E0E8
:105F400031E040E050E00E94784E20938808309382
:105F5000890840938A0850938B08E090C308FF2477
:105F600000E010E020914205309143054091440546
:105F700050914505C801B7010E94044E20E031E070
:105F800040E050E00E94784E209342053093430554
:105F900040934405509345052091460530914705AF
:105FA0004091480550914905C801B7010E94044E2F
:105FB00020E031E040E050E00E94784E209346051A
:105FC00030934705409348055093490560918C08EC
:105FD00070918D0880918E0890918F0820914205D4
:105FE000309143054091440550914505E090DC080F
:105FF000FF2400E010E0621B730B840B950BA801DB
:1060000097010E94784ECA01B90120E031E040E0DA
:1060100050E00E94784E69013093890520938805ED
:10602000609188087091890880918A0890918B0806
:10603000209146053091470540914805509149050A
:10604000621B730B840B950BA80197010E94784E7D
:10605000CA01B90120E031E040E050E00E94784EF2
:10606000890130938705209386058091780590916A
:1060700079058197BCF480917A0590917B05819791
:106080008CF4E091B208F0E0EE0FFF1FE75BF74FF2
:106090000190F081E02DF7FF03C0F095E195FF4FEF
:1060A0007A9794F0C60162E070E00E94434E7093CC
:1060B000890560938805C80162E070E00E94434E44
:1060C0007093870560938605E0901E05F0901F058C
:1060D000009120051091210580911A0590911B05D2
:1060E000A0911C05B0911D05E81AF90A0A0B1B0BBB
:1060F000E092B605F092B7050093B8051093B90584
:106100008091320590913305A0913405B091350509
:106110008E199F09A00BB10B809332059093330524
:10612000A0933405B093350560902605709027053F
:106130008090280590902905809122059091230553
:10614000A0912405B0912505681A790A8A0A9B0A4C
:106150006092B2057092B3058092B4059092B50535
:1061600080913A0590913B05A0913C05B0913D0589
:1061700086199709A809B90980933A0590933B05B8
:10618000A0933C05B0933D052091A4083091A5084B
:10619000213831054CF080910C0590910D05019648
:1061A00090930D0580930C0520583F4F4CF480913F
:1061B0000C0590910D05019790930D0580930C05AA
:1061C0001092A5081092A40881E090E090939E059B
:1061D00080939D051092A3051092A4051092A50529
:1061E0001092A60580918C0890918D08A0918E0840
:1061F000B0918F08209195053091960540919705B3
:1062000050919805281B390B4A0B5B0B57FF07C0B1
:1062100050954095309521953F4F4F4F5F4F2052FD
:106220003E44404050400CF0C1C071E0E71670E1C0
:10623000F70670E0070770E017070CF452C0809172
:106240009C05882309F449C0D801C7012CE0B59505
:10625000A795979587952A95D1F7019690939E05D6
:1062600080939D05D801C701F3E0B595A795979553
:106270008795FA95D1F78093A3059093A405A093F1
:10628000A505B093A60589589341A040B04064F09D
:1062900088E893E1A0E0B0E08093A3059093A40583
:1062A000A093A505B093A6056091A3057091A405E0
:1062B0008091A5059091A60520E031E040E050E0F6
:1062C0000E94784E8091880590918905820F931FD6
:1062D000909389058093880566C081E080939C0532
:1062E00062C010929C05F0E0EF16F0EFFF06FFEFA2
:1062F0000F07FFEF1F070CF056C080919B05882306
:1063000009F44DC088279927DC018E199F09A00B3D
:10631000B10BECE0B595A79597958795EA95D1F7E0
:10632000019690939E0580939D05C801B70128E0D2
:1063300030E040E050E00E94784E2093A305309377
:10634000A4054093A5055093A60528573C4E4F4FF2
:106350005F4F64F488E79CEEAFEFBFEF8093A30537
:106360009093A405A093A505B093A6056091A305FD
:106370007091A4058091A5059091A60520E031E0DB
:1063800040E050E00E94784E809188059091890508
:10639000820F931F909389058093880511C081E037
:1063A00080939B050DC010929B050AC010929E051C
:1063B00010929D0584EF91E0909373038093720394
:1063C0008091DD08C82EDD2480919D0590919E0569
:1063D000C816D90624F4D0929E05C0929D0571E09E
:1063E000E71674E0F70670E0070770E0170774F02F
:1063F000809108059091090520919D0530919E0599
:10640000820F931F909309058093080580E0E8169A
:106410008CEFF8068FEF08078FEF180774F4809160
:1064200008059091090520919D0530919E05821BDC
:10643000930B909309058093080581E090E0909379
:106440009E0580939D0510929F051092A0051092C5
:10645000A1051092A2058091880890918908A091C9
:106460008A08B0918B082091910530919205409156
:10647000930550919405281B390B4A0B5B0B57FF72
:1064800007C050954095309521953F4F4F4F5F4F36
:1064900020523E44404050400CF0C1C0A1E06A167A
:1064A000A0E17A06A0E08A06A0E09A060CF452C0A9
:1064B00080919A05882309F449C0D401C3017CE086
:1064C000B595A795979587957A95D1F7019690936D
:1064D0009E0580939D05D401C30163E0B595A79502
:1064E000979587956A95D1F780939F059093A0051E
:1064F000A093A105B093A20589589341A040B04054
:1065000064F088E893E1A0E0B0E080939F05909369
:10651000A005A093A105B093A20560919F0570917D
:10652000A0058091A1059091A20520E031E040E016
:1065300050E00E94784E8091860590918705820FE9
:10654000931F909387058093860566C081E08093B2
:106550009A0562C010929A05F0E06F16F0EF7F0680
:10656000FFEF8F06FFEF9F060CF056C08091990554
:10657000882309F44DC088279927DC0186199709DB
:10658000A809B9095CE0B595A795979587955A959F
:10659000D1F7019690939E0580939D05C401B301A8
:1065A00028E030E040E050E00E94784E20939F05C4
:1065B0003093A0054093A1055093A20528573C4E67
:1065C0004F4F5F4F64F488E79CEEAFEFBFEF8093CF
:1065D0009F059093A005A093A105B093A20560919B
:1065E0009F057091A0058091A1059091A20520E0E2
:1065F00031E040E050E00E94784E80918605909115
:106600008705820F931F909387058093860511C09D
:1066100081E0809399050DC0109299050AC01092EF
:106620009E0510929D0584EF91E0909373038093F3
:10663000720380919D0590919E05C816D90624F499
:10664000D0929E05C0929D0571E0671674E07706B2
:1066500070E0870670E0970674F080910A059091CB
:106660000B0520919D0530919E05820F931F9093FD
:106670000B0580930A0580E068168CEF78068FEF93
:1066800088068FEF9806CCF480910A0590910B054F
:1066900020919D0530919E05821B930B90930B05D5
:1066A00080930A050AC01092870510928605109201
:1066B0008905109288051092510520E030E040E0F5
:1066C00050E06091930870919408809195089091A2
:1066D00096080E94244D882341F410928705109259
:1066E0008605109289051092880580918C089091FA
:1066F0008D08A0918E08B0918F0880939505909396
:106700009605A0939705B09398058091880890917D
:106710008908A0918A08B0918B0880939105909385
:106720009205A0939305B0939405109242051092A0
:1067300043051092440510924505109246051092AB
:106740004705109248051092490510928C08109246
:106750008D0810928E0810928F081092880810925F
:10676000890810928A0810928B081092E704109200
:10677000E604C0907005D09071058601D7FE04C074
:10678000002711270C191D0900311105C4F0809153
:10679000B70884FD14C081E090E09093A805809331
:1067A000A7058091A0089091A10890937103809310
:1067B00070038AEF90E09093730380937203E090EC
:1067C000C008B601882777FD8095982F2E2D30E0E0
:1067D00040E050E00E94044E9801442737FD409568
:1067E000542F0E94044E20E032E040E050E00E942E
:1067F000784E89019A01FF24EC9CC001ED9C900D1C
:10680000FC9C900D112464E070E00E94434E600FE8
:10681000711F882777FD8095982F6093BA05709334
:10682000BB058093BC059093BD0520913E0530913A
:106830003F054091400550914105261B370B480B01
:10684000590B20933E0530933F05409340055093EC
:10685000410580913E0590913F05A0914005B09182
:1068600041058155934CA040B04064F080E593EC25
:10687000A0E0B0E080933E0590933F05A0934005D3
:10688000B093410580913E0590913F05A091400550
:10689000B0914105805B9C43AF4FBF4F64F480EBE8
:1068A0009CE3AFEFBFEF80933E0590933F05A0932D
:1068B0004005B09341058091B70883FF68C180917E
:1068C0005005882349F080915805882329F40E94B7
:1068D00055250E9429415BC180919005815080938C
:1068E00090058F3F29F481E3809390050E94593FE2
:1068F00060911A0570911B0580911C0590911D05F2
:1069000020E032E040E050E00E94784E890137FFFD
:1069100003C0109501951F4F6091220570912305CA
:10692000809124059091250520E032E040E050E080
:106930000E94784E690137FF04C0D094C194D108F9
:10694000D394C016D1060CF4680129E1C216D10413
:1069500044F58091A7059091A805892B11F18091AC
:10696000720390917303892BE1F488EC90E090938B
:10697000D2048093D1046091A0087091A108809105
:10698000A2089091A3082EE036E040E050E00E947B
:10699000784E30937103209370031092A8051092E3
:1069A000A70580916E0390916F0397FF03C020E0CD
:1069B00030E029C0E0906E03F0906F034CE152E0AC
:1069C000E40EF51E0027F7FC0095102F6091A0083B
:1069D0007091A1088091A2089091A3082EE036E062
:1069E00040E050E00E94784EE21AF30A040B150BC7
:1069F000C801B70128E631E040E050E00E94784E3F
:106A00009B01245B3040C60168E070E00E94434E69
:106A10006F5F7F4FC90143E0880F991F4A95E1F7E7
:106A20000E94434E3B01882477FC8094982C8091EF
:106A3000A0089091A108A091A208B091A308680EA7
:106A4000791E8A1E9B1E6092A0087092A1088092F7
:106A5000A2089092A30880918603A82EBB24CA9C0A
:106A6000C001CB9C900DDA9C900D112460E470E085
:106A70000E94434E2501461A570A141415040CF0BF
:106A800080C08091720390917303009711F0019779
:106A90007AC08091A4089091A508820F931F9093CB
:106AA000A5088093A40880917A0590917B05209198
:106AB000780530917905820F931F68E070E00E949D
:106AC000434E6B0160E470E0C60ED71E80917003E8
:106AD00090917103AA2797FDA095BA2F0CE1E02EA3
:106AE00002E0F02E012D112DE81AF90A0A0B1B0BFA
:106AF000C401B3012EE036E040E050E00E94784E41
:106B0000E20EF31E041F151FC801B70128E631E08D
:106B100040E050E00E94784E645B7040649DC0018C
:106B2000659D900D749D900D1124B6010E94434EF9
:106B3000C501880F991F8A0D9B1D8617970734F092
:106B4000909581959F4F681779070CF4BC012091AF
:106B50003E0530913F054091400550914105CB01E4
:106B6000AA2797FDA095BA2F820F931FA41FB51FC8
:106B700080933E0590933F05A0934005B093410557
:106B800006C08AEF90E09093730380937203809124
:106B9000B70885FF17C080918C038093DD05809135
:106BA0008F038093DC05809190038093DE058091B4
:106BB0005905882311F086EE02C0809160050E947D
:106BC000994708C0109275051092740510927705C8
:106BD000109276058091A90581508093A9058F3F79
:106BE00009F0A4C088E18093A90560911A0570910D
:106BF0001B0580911C0590911D05E090C308FF24A2
:106C000000E010E0A80197010E94784E30936707DA
:106C100020936607609122057091230580912405D9
:106C200090912505A80197010E94784E309369073D
:106C30002093680780919E0890919F0890936B071E
:106C400080936A078091A8089091A90890936D0796
:106C500080936C0780919B0890919C0890936F079C
:106C600080936E07809182059091830590937107C0
:106C70008093700760914A0570914B0580914C0597
:106C800090914D0520E032E040E050E00E94784EC7
:106C9000309373072093720780916E0390916F0376
:106CA000909377078093760780910803909109036A
:106CB0009093790780937807809101059091020560
:106CC00090937B0780937A076091A0087091A10848
:106CD0008091A2089091A3082EE036E040E050E0B9
:106CE0000E94784E30937D0720937C078091900816
:106CF0009091910890938707809386078091D404A0
:106D00009091D50490938F0780938E07809174059E
:106D1000909175059093A3078093A20780917605C3
:106D2000909177059093A5078093A40780918A0599
:106D30008823A9F06091990870919A08882777FDB7
:106D40008095982F0E94E94C2091AA083091AB08B9
:106D50004091AC085091AD080E94A14D32C06091A5
:106D60001A0570911B0580911C0590911D05E090FE
:106D70009908F0909A080E94E94C2091930830916C
:106D8000940840919508509196080E94A14D5B018E
:106D90006C010027F7FC0095102FC801B7010E9475
:106DA000E94C2091AA083091AB084091AC08509171
:106DB000AD080E94A14D9B01AC01C601B5010E9426
:106DC000EA4B0E94B64C70939A08609399088091A0
:106DD0008B058823A9F060919708709198088827FF
:106DE00077FD8095982F0E94E94C2091AA08309158
:106DF000AB084091AC085091AD080E94A14D32C043
:106E000060912205709123058091240590912505BC
:106E1000E0909708F09098080E94E94C2091930820
:106E20003091940840919508509196080E94A14D88
:106E30005B016C010027F7FC0095102FC801B7011A
:106E40000E94E94C2091AA083091AB084091AC080F
:106E50005091AD080E94A14D9B01AC01C601B50146
:106E60000E94EA4B0E94B64C709398086093970872
:106E700060919B0870919C08A0902A05B0902B050A
:106E8000C0902C05D0902D05809193089091940886
:106E9000A0919508B091960889839A83AB83BC83AF
:106EA000882777FD8095982F0E94E94C7B018C0103
:106EB0006091AA087091AB088091AC089091AD08E0
:106EC0009B01AC010E94EA4B9B01AC01C801B701D8
:106ED0000E94A14D7B018C01C601B5010E94E94CC5
:106EE00029813A814B815C810E94A14D20E030E0F4
:106EF00040E05FE30E94A14D9B01AC01C801B701D6
:106F00000E94EA4B0E94B64C70939C0860939B08C9
:106F10008091990890919A08909391078093900797
:106F20008091970890919808909393078093920787
:106F30008091990890919A088150904434F080E0B3
:106F400090E490939A088093990880919908909181
:106F50009A088050904C34F480E090EC90939A081A
:106F60008093990880919708909198088150904457
:106F700034F080E090E49093980880939708809193
:106F80009708909198088050904C34F480E090ECF1
:106F9000909398088093970880919B0890919C0803
:106FA0008150904434F080E090E490939C0880936A
:106FB0009B0880919B0890919C088050904C34F4E1
:106FC00080E090EC90939C0880939B08AF80B884FD
:106FD000AA0CBB1CAA0CBB1C8091B708282F80FFF1
:106FE000C7C080915905882309F0C2C080918303EE
:106FF00021FF0EC0823310F58091820590918305A8
:10700000449790938505809384051092AC0519C030
:1070100020917C0330917D03280F311D8091BC08A5
:1070200090E0AC01249FC001259F900D349F900DEE
:1070300011244497909385058093840581E0809383
:10704000AC052091820530918305409184055091D3
:107050008505421753070CF08BC08091AC0588233F
:1070600009F486C08091840390E0241B350BBC0199
:10707000629FC001639F900D729F900D112464E088
:1070800070E00E94434E4B01C090E404D090E504B0
:1070900060914A0570914B0580914C0590914D058A
:1070A000E0908503FF2400E010E020E830E040E0BD
:1070B00050E00E94784EC801B7010E94044E20E2C1
:1070C00030E040E050E00E94784E7EEF283E3707E7
:1070D00014F428EE3EEF8091AA059091AB05FC01D7
:1070E000A4E0EE0FFF1FAA95E1F7E81BF90BC6011C
:1070F00062E070E00E94434EE61BF70B81E029310D
:10710000380714F028E131E0E21BF30BC5018819C0
:1071100099098E0F9F1F60E170E00E94434E7093AB
:10712000AB056093AA058091B80890E0880F991F7D
:10713000880F991F6817790764F4A816B9062CF010
:107140009093AB058093AA0504C0B092AB05A092C2
:10715000AA058091AA059091AB05A816B90624F45A
:10716000B092AB05A092AA05A090AA05B090AB057D
:107170008091C208282E33248101000F111F000FB7
:10718000111FC8018055904045018A159B050CF4DC
:107190004C01909275078092740720919B08309162
:1071A0009C088091BA059091BB05A091BC05B09157
:1071B000BD0542E0880F991FAA1FBB1F4A95D1F752
:1071C000281B390B91EA89169104ACF0F401F5956E
:1071D000E7952E173F070CF4F901C40162E070E057
:1071E0000E94434E709561957F4FCF01E617F707D8
:1071F0006CF4CB010BC0C901205B3F4F14F480EB52
:107200009FEF8135910514F080E590E098012819F1
:107210003909281739070CF4C9019401201B310BD7
:107220002C01821793070CF4290180919908909101
:107230009A0860906C0570906D0586199709909377
:10724000A7088093A60820E030E040E050E0698184
:107250007A818B819C810E94244D8823F1F1E090FA
:107260001A05F0901B0500911C0510911D056091F9
:10727000C2057091C3058091C4059091C5050E9417
:10728000E94C5B016C01C801B7010E94E94C2981FE
:107290003A814B815C810E94A14D7B018C01B3013D
:1072A000882777FD8095982F0E94E94C9B01AC01BF
:1072B000C801B7010E94E94B9B01AC01C601B501B1
:1072C0000E94EA4B0E94B64C6093C2057093C305BE
:1072D0008093C4059093C5051CC02091A6083091E9
:1072E000A708442737FD4095542F8091C2059091FF
:1072F000C305A091C405B091C505820F931FA41FBB
:10730000B51F8093C2059093C305A093C405B093A5
:10731000C5058091C2059091C305A091C405B091A7
:10732000C50581509A4FA040B04064F080E09AEFCC
:10733000A0E0B0E08093C2059093C305A093C4057C
:10734000B093C5058091C2059091C305A091C40575
:10735000B091C50580509640AF4FBF4F64F480E0B8
:1073600096E0AFEFBFEF8093C2059093C305A09363
:10737000C405B093C5056091A6087091A708209137
:107380007E0330917F0340918003509181032B87CE
:107390003C874D875E87882777FD8095982F0E94D0
:1073A000E94C7B018C016091C2057091C30580910D
:1073B000C4059091C5050E94E94C9B01AC016B8509
:1073C0007C858D859E850E94A14D9B01AC01C801E5
:1073D000B7010E94EA4B0E94B64C7B018C016B0105
:1073E000C20157FE04C0882799278419950962E0D5
:1073F00070E00E94434E680D791D882777FD8095C7
:10740000982F2091970330E040E050E00E94044E16
:1074100020E430E040E050E00E94784E3E832D832F
:10742000C216D3060CF497016D817E81709561952B
:107430007F4F7A876987261737070CF49B01F20183
:10744000E80DF91DCF01820F931F64E070E00E94E8
:10745000434E77FF03C060E070E004C02616370695
:107460000CF4B1018091C108A82FB0E0BAA3A9A380
:107470006A177B070CF4BD0160938708CF01821B5C
:10748000930B64E070E00E94434E77FF03C060E01E
:1074900070E004C0261637060CF4B101E9A1FAA188
:1074A0006E177F070CF4BF0160939D0880919708C9
:1074B0009091980860906E0570906F0586199709F5
:1074C000909386088093850820E030E040E050E00B
:1074D00069817A818B819C810E94244D8823F1F1FE
:1074E000E0902205F09023050091240510912505D8
:1074F0006091BE057091BF058091C0059091C10556
:107500000E94E94C5B016C01C801B7010E94E94C83
:1075100029813A814B815C810E94A14D7B018C01C4
:10752000B301882777FD8095982F0E94E94C9B0135
:10753000AC01C801B7010E94E94B9B01AC01C60137
:10754000B5010E94EA4B0E94B64C6093BE05709351
:10755000BF058093C0059093C1051CC0209185088C
:1075600030918608442737FD4095542F8091BE0501
:107570009091BF05A091C005B091C105820F931FE6
:10758000A41FB51F8093BE059093BF05A093C005AF
:10759000B093C1058091BE059091BF05A091C00533
:1075A000B091C10581589E43A040B04064F080E88E
:1075B0009EE3A0E0B0E08093BE059093BF05A0934A
:1075C000C005B093C1058091BE059091BF05A09103
:1075D000C005B091C1058058914CAF4FBF4F64F4C6
:1075E00080E891ECAFEFBFEF8093BE059093BF05AD
:1075F000A093C005B093C10560918508709186087D
:10760000882777FD8095982F0E94E94C7B018C019B
:107610006091BE057091BF058091C0059091C10534
:107620000E94E94C9B01AC016B857C858D859E8514
:107630000E94A14D9B01AC01C801B7010E94EA4B19
:107640000E94B64C2D813E81621773070CF49B019A
:1076500049855A85241735070CF49A01C401841909
:107660009509820F931F64E070E00E94434E77FFFC
:1076700003C060E070E004C0261637060CF4B101C8
:1076800089A19AA1681779070CF4BC016093AE0830
:10769000821A930AC4018419950964E070E00E947B
:1076A000434E77FF03C060E070E004C02616370643
:1076B0000CF4B101A9A1BAA16A177B0754F4BD016A
:1076C00008C080918A05882311F00C94982D0C94A1
:1076D000A22D60939208A2960FB6F894DEBF0FBE5B
:1076E000CDBFDF91CF911F910F91FF90EF90DF9071
:1076F000CF90BF90AF909F908F907F906F905F9052
:107700004F903F902F900895A0E0B0E0A80FB11DDA
:107710000E94CA4E802D90E00895A0E0B0E0A80F2E
:10772000B11D062E0E94DC4E0895A0E0B0E0A80F27
:10773000B11D0E94D74ECF010895A0E0B0E0A80F80
:10774000B11D0B010E94E84E0895863008F085E0D7
:10775000A2E0B0E0082E0E94DC4E0895982F8630FB
:1077600008F095E086E4989FD0011124AC59BF4FF2
:10777000EFEAF8E0182E0E94ED4EA2E0B0E0092EEC
:107780000E94DC4E0895982F863008F095E086E43C
:10779000989FD0011124AC59BF4FEFEAF8E0182EA2
:1077A0000E94D24E089581E08093AF0882E08093DA
:1077B000B00843E04093B10864E06093B20855E03C
:1077C0005093B30836E03093B40887E08093B5084F
:1077D00028E02093B60888EE8093B7089EE1909346
:1077E000B8088BEF8093BA088AE08093BB08909327
:1077F000B9089093BD084093BC082093BE0840E1AF
:107800004093BF083093C0082093C10886EE809350
:10781000C2089093C30880E88093C40834E630938C
:10782000C50888E78093C6088EE58093C70883E281
:107830008093C80884E18093C9081092CA084093D5
:10784000CB088DEF8093CC083093CD089AE59093C8
:10785000CE089093CF089093DF089093E0081092A1
:10786000E1081092E2083093D00888E28093D108B2
:107870001092E40822E32093D20886E98093D3088B
:107880005093D4082093D5089093D6082093D70816
:107890001092E3089093D8085093D9083093DA08EF
:1078A0003093DB0880E28093DC086093DD0820934E
:1078B000DE08A9EEB8E0E9E9F3E089E001900D9275
:1078C0008150E1F7089581E08093AF0882E08093D2
:1078D000B00843E04093B10864E06093B20855E01B
:1078E0005093B30836E03093B40887E08093B5082E
:1078F00028E02093B60888E68093B7089EE190932D
:10790000B8088BEF8093BA088AE08093BB08909305
:10791000B9089093BD084093BC088CE08093BE08E2
:1079200080E18093BF083093C0082093C10886EEA1
:107930008093C2089093C30880E88093C40880E5D0
:107940008093C50888E78093C6088EE58093C708B2
:1079500083E28093C8089093C9081092CA0840E255
:107960004093CB088DEF8093CC0834E63093CD085C
:107970002AE52093CE082093CF082093DF08209398
:10798000E0081092E1081092E2083093D00888E2F3
:107990008093D1081092E40892E39093D20886E98C
:1079A0008093D3085093D4089093D5082093D60899
:1079B0009093D7081092E3082093D8085093D908E1
:1079C0003093DA083093DB084093DC086093DD08DD
:1079D0008BE48093DE08A9EEB8E0E3EAF3E087E009
:1079E00001900D928150E1F7089581E08093AF08F6
:1079F00082E08093B00883E08093B10854E0509314
:107A0000B20835E03093B30886E08093B40887E08D
:107A10008093B50828E02093B60888E68093B708DD
:107A20009EE19093B8088BEF8093BA088AE0809328
:107A3000BB089093B9089093BD085093BC088FE0A1
:107A40008093BE089093BF088CE08093C008209379
:107A5000C10886EE8093C2089093C30880E88093A3
:107A6000C40880E58093C50846E94093C6088EE5C2
:107A70008093C70883E28093C8089093C908109246
:107A8000CA0880E28093CB088DEF8093CC0824E66F
:107A90002093CD089AE59093CE089093CF089093C9
:107AA000DF089093E0081092E1081092E20820931A
:107AB000D00888E28093D1081092E40882E3809392
:107AC000D2084093D3083093D4088093D50890937C
:107AD000D6088093D7081092E3089093D808309383
:107AE000D9082093DA082093DB0880E18093DC0832
:107AF0005093DD082093DE08A9EEB8E0EBEAF3E04E
:107B000086E001900D928150E1F7089522E030E087
:107B1000D9010E94CA4E802D863028F082E0D9011A
:107B2000082E0E94DC4E90E008950F931F93CF9390
:107B3000DF93A1E0B0E00E94CA4E802D863469F147
:107B400082EB95E09F938F931F920E942B0A0E94D5
:107B5000F53CC0E0D0E00F900F900F900C2FC2309A
:107B600039F0C33019F40E94D33B04C0C43010F084
:107B70000E94633C802F0E94AE3B2196C630D10507
:107B800069F7A2E0B0E083E0082E0E94DC4EA1E09D
:107B9000B0E086E4082E0E94DC4E02E010E0D8013E
:107BA0000E94CA4E802D0E94C33BD8010E94CA4E3B
:107BB000802D90E09F938F9389E995E09F938F9319
:107BC0001F920E942B0A0F900F900F900F900F9012
:107BD000DF91CF911F910F910895CF93DF93DC0137
:107BE000EC01EA81FB8121918E81815019F4898118
:107BF000E81BF109ED01FB83EA838E839FB7F894BC
:107C00008C9181508C939FBF822F90E0DF91CF9118
:107C10000895FC01108275836483738362834183BA
:107C2000478346830895CF93DF93DC019C91ED0158
:107C30008981981718F080E090E016C0ED01EC8182
:107C4000FD8161938F81815019F48981E81BF109CD
:107C5000ED018F83FD83EC839FB7F8948C918F5F48
:107C60008C939FBF81E090E0DF91CF910895FC015C
:107C700080818823E9F3CF010E94ED3D90E00895D3
:107C8000FC018081882319F48FEF9FEF0895CF01C5
:107C90000E94ED3D90E008959FB7F8948091C9004F
:107CA0008F778093C9008091C9008F7B8093C90032
:107CB0008091C9008F7D8093C9005A9A52985B9A2F
:107CC000539A1092CD008AE28093CC008091C80034
:107CD00082608093C80088E18093C9008091CA00C7
:107CE0008F778093CA008091CA008F7B8093CA00EF
:107CF0008091CA008F7D8093CA008091CA008F7ED8
:107D00008093CA008091CA00877F8093CA008091C7
:107D1000C9008B7F8093C9008091CA0084608093E2
:107D2000CA008091CA0082608093CA0002C080911C
:107D3000CE008091C80087FDFACF8091C90080688D
:107D40008093C9008091C90080648093C9009FBF5F
:107D500008951F920F920FB60F9211242F933F9305
:107D60004F935F936F937F938F939F93AF93BF9343
:107D7000EF93FF939091CE00809100018B3019F426
:107D8000892F0E945249FF91EF91BF91AF919F912E
:107D90008F917F916F915F914F913F912F910F90B4
:107DA0000FBE0F901F9018951F920F920FB60F9253
:107DB00011242F933F934F938F939F9380919C090E
:107DC000833021F0843009F06AC008C08EB58093FA
:107DD000DB051EBC84E080939C0961C08091DB05BB
:107DE000992787FD9095382F22278EB590E0282B74
:107DF000392BC9018D509E4F875E9340D8F48091F6
:107E00009F09823051F0833071F0813081F43093DA
:107E1000A1092093A00982E00BC03093A30920930D
:107E2000A20983E005C03093A5092093A40981E04D
:107E300080939F09449A10929C092091A009309147
:107E4000A1098091A2099091A30928173907B1F4DB
:107E50002091A0093091A1098091A4099091A509D0
:107E60002817390759F42091A2093091A30980916C
:107E7000A4099091A5092817390741F08091CE05F2
:107E8000843168F48091CE058F5F07C08091CE0564
:107E9000882329F08091CE0581508093CE059F9153
:107EA0008F914F913F912F910F900FBE0F901F9088
:107EB00018952F923F924F925F926F927F928F927E
:107EC0009F92AF92BF92CF92DF92EF92FF920F9369
:107ED0001F93CF93DF93CDB7DEB766970FB6F894B5
:107EE000DEBF0FBECDBF8091CE05882309F465C1EA
:107EF0006091A0097091A10920919309332727FD72
:107F00003095621B730B882777FD8095982FEAE0E8
:107F1000660F771F881F991FEA95D1F72091960960
:107F200030919709442737FD4095542F0E94784E91
:107F300029873A874B875C876091A2097091A309D2
:107F400020919409332727FD3095621B730B8827F6
:107F500077FD8095982F5AE0660F771F881F991F2D
:107F60005A95D1F72091980930919909442737FD06
:107F70004095542F0E94784E2D873E874F87588B0F
:107F80006091A4097091A50920919509332727FDD7
:107F90003095621B730B882777FD8095982F4AE0F8
:107FA000660F771F881F991F4A95D1F720919A096C
:107FB00030919B09442737FD4095542F0E94784EFD
:107FC000298B3A8B4B8B5C8B8091CF0890E0845E41
:107FD0009D4F68E671E00E94434E8C010E94C842AA
:107FE0009C01442737FD4095542F2D833E834F83BA
:107FF0005887C8010E9411439C01442737FD4095D2
:10800000542F29833A834B835C8360911A057091C6
:108010001B0580911C0590911D05E090CE08FF2462
:1080200033E0EE0CFF1C3A95E1F700E010E0A80108
:1080300097010E94784E59016A01C9010E94C84205
:108040003C01C5010E9411435C01609122057091C1
:1080500023058091240590912505A80197010E9490
:10806000784E79018A01C9010E94C8429E8B8D8B8E
:10807000C7010E9411431C0169817A818B819C8117
:1080800029853A854B855C850E94044E7B018C01D5
:108090006D817E818F8198852D853E854F8558899C
:1080A0000E94044EE61AF70A080B190BC801B70123
:1080B00020E030E240E050E00E94784ECC24B7FC53
:1080C000C094DC2CCA01B901A60195010E94044E9E
:1080D0005B016C01882477FC8094982CC401B30167
:1080E00029893A894B895C890E94044EA61AB70AED
:1080F000C80AD90A69817A818B819C812D853E8548
:108100004F8558890E94044E7B018C016D817E81D0
:108110008F81988529853A854B855C850E94044E20
:10812000E60EF71E081F191FC801B70120E030E254
:1081300040E050E00E94784E442437FC4094542C98
:10814000CA01B901A20191010E94044E7B018C0178
:108150004D895E89BA01882777FD8095982F2989F6
:108160003A894B895C890E94044EE60EF71E081F6F
:10817000191FC601B50120E030E240E050E00E9446
:10818000784E59016A01C801B70120E030E240E0B1
:1081900050E00E94784EDA01C901B5010E941943EE
:1081A0009C0197FF05C088279927821B930B13C05A
:1081B00088E691E0821B930B0EC08091D1049091D0
:1081C000D204892B31F484E690E09093D20480931A
:1081D000D1048FEF9FEF90936F0380936E03809194
:1081E0006E0390916F0397FF05C010924F05109298
:1081F0004E0516C080916E0390916F03209170031D
:1082000030917103845E9D4F821B930B68E671E091
:108210000E94434E845B904090934F0580934E059F
:1082200066960FB6F894DEBF0FBECDBFDF91CF913B
:108230001F910F91FF90EF90DF90CF90BF90AF9084
:108240009F908F907F906F905F904F903F902F9076
:108250000895CF92DF92EF92FF920F931F93809138
:108260005005833009F412C1843030F4813059F064
:10827000823009F009C120C0843009F46BC0853018
:1082800009F002C196C020E137E23093DA0520936D
:10829000D90580EF98ED9093D8058093D70530935A
:1082A000D6052093D5059093D4058093D3053093BC
:1082B000D2052093D10578C02091A0093091A10961
:1082C0008091D9059091DA052817390744F48091F7
:1082D000A0099091A1099093DA058093D905209186
:1082E000A0093091A1098091D7059091D8058217F6
:1082F000930744F48091A0099091A1099093D80527
:108300008093D7052091A2093091A3098091D505CA
:108310009091D6052817390744F48091A2099091CD
:10832000A3099093D6058093D5052091A209309199
:10833000A3098091D3059091D405821793070CF07F
:10834000A5C08091A2099091A3099093D405809330
:10835000D3059CC0809100018A3011F4289A01C095
:1083600028982091A4093091A5098091D105909178
:10837000D2052817390744F48091A4099091A509E2
:108380009093D2058093D1052091A4093091A5093D
:108390008091CF059091D005821793070CF076C09D
:1083A0008091A4099091A5099093D0058093CF0561
:1083B0006DC04091D7055091D8058091D905909115
:1083C000DA059A01281B390B3093970920939609F7
:1083D0000091D3051091D405E091D505F091D60513
:1083E00098012E1B3F0B3093990920939809C09058
:1083F000CF05D090D005E090D105F090D205960140
:108400002E193F0930939B0920939A09840F951FD9
:1084100062E070E00E94434E9B0160939309CF019C
:10842000800F911F62E070E00E94434E60939409B8
:10843000C7018C0D9D1D62E070E00E94434E609369
:108440009509622F8AE00E948D3B609194098BE030
:108450000E948D3B609195098CE00E948D3B60915C
:108460009609709197098DE00E949D3B6091980953
:10847000709199098FE00E949D3B60919A097091DB
:108480009B0981E10E949D3B109250051F910F9125
:10849000FF90EF90DF90CF90089590919C099130DC
:1084A00049F0913018F0923091F525C04498459AE2
:1084B00081E01EC0459880919F09823031F0833061
:1084C00031F0813031F481E309C082E307C083E3F6
:1084D00005C090939F0910929C0908958EBD88E075
:1084E00090E00E94040D90939E0980939D0982E084
:1084F00080939C09089580919D0990919E090E9406
:108500000D0D882321F01EBC83E080939C09089503
:108510001F931FB7F89484B1806A84B9269887B1F5
:10852000806387B988B18F7C88B983ED8CBD8DB5A8
:108530008E7F8DBD81E080939F0910929C098AE017
:108540000E94843B809393098BE00E94843B80933C
:1085500094098CE00E94843B809395098DE00E94F1
:10856000953B90939709809396098FE00E94953BE5
:10857000909399098093980981E10E94953B90938B
:108580009B0980939A091092CE051FBF1F910895F1
:1085900097FD02C041E004C0909581959F4F4FEF39
:1085A00068E671E00E94434EFC018B35910554F062
:1085B0008B5590408A35910538F484EB90E08E1B02
:1085C0009F0BFC0181E00FC0CF01855B90408A3595
:1085D000910518F4E45BF04005C088E691E08E1B3D
:1085E0009F0BFC018FEFEE0FFF1FEE51FA4F25910D
:1085F0003491992787FD9095B901689F9001699FF3
:10860000300D789F300D1124842F992787FD909588
:10861000AC01249FC001259F900D349F900D112423
:1086200008952AE530E0281B390BC9010E94C84291
:1086300008951F93CF93DF93EB01672B29F40097E5
:1086400019F480E090E091C097FF02C01FEF01C0D5
:1086500011E0209729F48AE51802C001112485C091
:108660009C01B901882777FD8095982F26E0660F39
:10867000771F881F991F2A95D1F79E01442737FD40
:108680004095542F0E94784EF90137FF03C0F095B2
:10869000E195FF4F31E0EA35F30734F4E856F94F3E
:1086A0008491282F30E047C04CE1E73AF4071CF0F2
:1086B0002AE530E040C059E0ED38F5071CF029E527
:1086C00030E039C085E0EA3BF8071CF028E530E0EF
:1086D00032C024E0E731F2071CF027E530E02BC080
:1086E00033E0EE32F3071CF026E530E024C042E030
:1086F000E939F4071CF025E530E01DC052E0E23313
:10870000F5071CF024E530E016C081E0E73EF807ED
:108710001CF023E530E00FC021E0ED3AF2071CF039
:1087200022E530E008C0EF57F1401CF021E530E0D1
:1087300002C020E530E01C161D066CF4812F99273D
:1087400087FD9095AC01249FC001259F900D349F1B
:10875000900D11240AC011162CF484EB90E0821BBA
:10876000930B03C0C901845B9040DF91CF911F91AF
:1087700008959F92AF92BF92CF92DF92EF92FF92B5
:108780000F931F935B016C016115710581059105C4
:1087900011F17B018C019924C601B501A801970153
:1087A0000E94564E2E0D3F1D401F511F5695479556
:1087B00037952795E21AF30A040B150B82E0E816A9
:1087C000F1040105110558F0939488E2981639F0E8
:1087D00079018A01E1CF20E030E040E050E0CA01B9
:1087E000B9011F910F91FF90EF90DF90CF90BF9054
:1087F000AF909F900895E091AF08F0E0EE0FFF1F5B
:10880000E75BF74F0190F081E02DF7FF03C0F09593
:10881000E195FF4F3F971CF081E090E00895E091D3
:10882000B008F0E0EE0FFF1FE75BF74F808191810A
:1088300020E030E097FF03C0909581959F4F0F9700
:1088400014F021E030E0C901089580917C06815048
:108850008230F0F580917E068330D1F580917F06DD
:1088600090918006A0918106B09182068093EC05DC
:108870009093ED05A093EE05B093EF0580918306EC
:1088800090918406A0918506B09186068093F005AC
:108890009093F105A093F205B093F30580918706BC
:1088A00090918806A0918906B0918A068093F4057C
:1088B0009093F505A093F605B093F70581E08093BA
:1088C000F80588EE93E09093D2048093D104089544
:1088D0001092F805089580917C0681508230C0F591
:1088E00080917E068330A1F580917F06909180066D
:1088F000A0918106B09182068093DF059093E005F8
:10890000A093E105B093E2058091830690918406DF
:10891000A0918506B09186068093E3059093E405C7
:10892000A093E505B093E6058091870690918806AF
:10893000A0918906B0918A068093E7059093E80597
:10894000A093E905B093EA0581E08093EB050895D3
:108950001092EB0508951092F80508951092750590
:1089600010927405109277051092760508952F9253
:108970003F924F925F926F927F928F929F92AF92AF
:10898000BF92CF92DF92EF92FF920F931F93CF93FC
:10899000DF93CDB7DEB760970FB6F894DEBF0FBE9A
:1089A000CDBF8C0180917C06813009F091C280910D
:1089B0007E06833009F08CC280916E0390916F0324
:1089C00097FD86C20115110509F47AC0F801848566
:1089D000882309F475C0823039F48091FB059091A9
:1089E000FC050817190791F1109201061092020672
:1089F00010920306109204061092FD051092FE05D7
:108A00001092FF0510920006F8016481758186813D
:108A1000978120E836E948E950E00E94784EDA0173
:108A2000C9010E941143AA2797FDA095BA2F8093F0
:108A3000B2039093B303A093B403B093B503109320
:108A4000FC050093FB0582E0F801848720918306F2
:108A5000309184064091850650918606F801848104
:108A60009581A681B781281B390B4A0B5B0B29879F
:108A70003A874B875C8760917F0670918006809172
:108A80008106909182062081318142815381621B4F
:108A9000730B840B950B2091B2033091B30340917B
:108AA000B4035091B5030E94044E20E030E240E050
:108AB00050E00E94784E2D833E834F83588718C024
:108AC00010920106109202061092030610920406FC
:108AD0001092FD051092FE051092FF0510920006FF
:108AE00019861A861B861C861D821E821F82188686
:108AF000E090DC05FF2400E010E0A090DD05BB2441
:108B0000CC24DD2469857A858B859C85A801970115
:108B10000E94044E20E038E040E050E00E94784E91
:108B200039014A0120910106309102064091030665
:108B300050910406C601B5010E94044E20E030E2C7
:108B400040E050E00E94784E222433242101221A72
:108B5000330A440A550A26183708480859086D810F
:108B60007E818F819885A80197010E94044E20E0A4
:108B700038E040E050E00E94784E79018A0120916F
:108B8000FD053091FE054091FF0550910006C6019C
:108B9000B5010E94044E20E030E240E050E00E9427
:108BA000784EAA24BB246501A21AB30AC40AD50AC6
:108BB000AE18BF08C00AD10AC601B501A6019501C9
:108BC0000E94044E7B018C01C201B101A2019101FE
:108BD0000E94044EE60EF71E081F191FC801B701B8
:108BE0000E94B9437B018C016A31710581059105B1
:108BF000ECF0C201B10129E130E040E050E00E9418
:108C0000044EA80197010E94784E19012A01C6015D
:108C1000B50129E130E040E050E00E94044EA80197
:108C200097010E94784E59016A0178C069857A855A
:108C30008B859C8520E130E040E050E00E94784E3A
:108C40008091010690910206A0910306B09104065E
:108C5000280F391F4A1F5B1F20930106309302061D
:108C6000409303065093040621308DE7380780E0D7
:108C7000480780E058072CF080E09DE7A0E0B0E0D6
:108C800009C0205033484F4F5F4F64F480E093E8B1
:108C9000AFEFBFEF8093010690930206A093030607
:108CA000B09304066D817E818F81988520E130E04C
:108CB00040E050E00E94784E8091FD059091FE05C5
:108CC000A091FF05B0910006280F391F4A1F5B1FB6
:108CD0002093FD053093FE054093FF055093000659
:108CE0002130ADE73A07A0E04A07A0E05A072CF090
:108CF00080E09DE7A0E0B0E009C0205033484F4F2E
:108D00005F4F64F480E093E8AFEFBFEF8093FD0521
:108D10009093FE05A093FF05B0930006E090DE055A
:108D2000FF2400E010E020918F06309190064091E2
:108D3000910650919206C801B7010E94044E20E0AE
:108D400032E040E050E00E94784E221A330A440A92
:108D5000550A29823A824B825C8220919306309197
:108D600094064091950650919606C801B7010E945D
:108D7000044E20E032E040E050E00E94784E1501C1
:108D80002601221A330A440A550A80916E039091F3
:108D90006F030E9411435C01CC24B7FCC094DC2C0F
:108DA00080916E0390916F030E94C8423C01882419
:108DB00077FC8094982CC601B501A20191010E9414
:108DC000044E7B018C01C401B30129813A814B819E
:108DD0005C810E94044EE61AF70A080B190BC801C1
:108DE000B70120E030E240E050E00E94784E2D874D
:108DF0003E874F87588BC601B50129813A814B8147
:108E00005C810E94044E7B018C01C401B301A2016C
:108E100091010E94044EE60EF71E081F191FC8019B
:108E2000B70120E030E240E050E00E94784EAA24F2
:108E3000BB246501A21AB30AC40AD50AC601B5014A
:108E4000A60195010E94044E7B018C016D857E85F3
:108E50008F8598899B01AC010E94044EE60EF71E97
:108E6000081F191FC801B7010E94B9437B018C017B
:108E70006E3271058105910504F16D857E858F85C2
:108E800098892DE230E040E050E00E94044EA801B5
:108E900097010E94784E2D873E874F87588BC601D9
:108EA000B5012DE230E040E050E00E94044EA80100
:108EB00097010E94784E59016A012D853E853093B5
:108EC000770520937605B0927505A092740518C0B9
:108ED0001092750510927405109277051092760520
:108EE00010920106109202061092030610920406D8
:108EF0001092FD051092FE051092FF0510920006DB
:108F000060960FB6F894DEBF0FBECDBFDF91CF9154
:108F10001F910F91FF90EF90DF90CF90BF90AF9097
:108F20009F908F907F906F905F904F903F902F9089
:108F30000895863418F41092FA0507C0803A10F4A8
:108F400081E001C082E08093FA0580917C06813047
:108F500079F1813020F0823009F0AFC014C0109256
:108F60007505109274051092770510927605809120
:108F7000FA05882309F4A1C084E690E09093D20416
:108F80008093D10408958091A706882331F08091C1
:108F9000A70681508093A706089510927505109238
:108FA0007405109277051092760510927C0608954C
:108FB0008091A3069091A4069093A1078093A007A7
:108FC00080917E069091FA05833009F055C091306A
:108FD00039F0913008F445C0923009F044C021C006
:108FE0008091EB058823E9F10E94FB43882369F017
:108FF0000E946B44109275051092740510927705CB
:10900000109276051092F90555C08091F9058730C8
:1090100018F58F5F8093F9050E946B4480E090E023
:109020001DC08091F805882349F00E946B440E947E
:10903000FB438823C1F48CEE95E010C082E390E0FE
:109040009093D2048093D1048091EB05882349F05A
:109050000E94FB43882339F48FED95E00E94B744CA
:1090600029C00E946B4410927505109274051092ED
:109070007705109276051EC0109275051092740542
:1090800010927705109276059923A1F080917D06C4
:1090900028EC829FC001112420E436E0281B390B04
:1090A00037FF02C020E030E02E5C3F4F3093D20407
:1090B0002093D10482E080937C060895EF92FF9282
:1090C0000F931F9380913906813059F580910F06D7
:1090D00080937E068091340680937D0680911D06E4
:1090E00090911E06A0911F06B091200680938B06DA
:1090F00090938C06A0938D06B0938E0680912D06DA
:1091000090912E06A0912F06B091300680939F0675
:109110009093A006A093A106B093A20682E080934C
:10912000390680915606813009F059C020913A06DF
:1091300030913B0640913C0650913D068091B3062C
:109140009091B406A091B506B091B60679018A0156
:10915000E81AF90A0A0B1B0BE092A306F092A40688
:109160000093A5061093A6062093B3063093B40689
:109170004093B5065093B60680913E0690913F0607
:10918000A0914006B091410680937F06909380069F
:10919000A0938106B0938206809142069091430687
:1091A000A0914406B091450680938306909384066F
:1091B000A0938506B0938606809146069091470657
:1091C000A0914806B091490680938706909388063F
:1091D000A0938906B0938A0682E080935606809118
:1091E0007B06813009F04AC080915F06909160064D
:1091F000A0916106B09162068093930690939406C5
:10920000A0939506B093960680915B0690915C06BC
:10921000A0915D06B0915E0680938F0690939006B4
:10922000A0939106B0939206809163069091640694
:10923000A0916506B0916606B095A0959095819530
:109240009F4FAF4FBF4F8093970690939806A09380
:109250009906B0939A0680916B0690916C06A09146
:109260006D06B0916E0680939B0690939C06A0932A
:109270009D06B0939E0682E080937B06809139061E
:10928000882359F080915606882339F080917B0617
:10929000882319F081E080937C061F910F91FF9045
:1092A000EF900895482F8091B206843009F461C090
:1092B000853050F48130D1F0813098F08230D9F08F
:1092C000833009F0D6C01CC0863009F487C08630D0
:1092D00008F461C0873009F4A8C0883009F0C9C01B
:1092E000B1C0453B09F0C2C081E0A4C0423609F0DC
:1092F000BDC082E09FC0413009F0B8C083E09AC091
:10930000463061F04231D9F0423009F58AE396E007
:109310009093AD068093AC064D9607C085E096E02D
:109320009093AD068093AC06C5969093AB06809360
:10933000AA0601979093A9068093A8060AC087E51C
:1093400096E09093AD068093AC068596EECF109292
:10935000B2068091B206882309F48DC084E0809320
:10936000B206842F8F5F8093B1068F5F8093B00623
:109370000895842F90E09093AF068093AE0690916D
:10938000B106940F9093B1068091B006890F809337
:10939000B00685E04FC0242F30E0322F2227809185
:1093A000AE069091AF06820F931F9093AF06809305
:1093B000AE069091B106940F9093B1068091B006DD
:1093C000890F8093B006E091A806F091A9068081EC
:1093D000813009F44BC0108286E02CC0E091AC06CD
:1093E000F091AD068091AA069091AB06E817F907B7
:1093F00028F44193F093AD06E093AC069091B1064A
:10940000940F9093B1068091B006890F8093B006B7
:109410008091AE069091AF0601979093AF0680932E
:10942000AE06892B41F587E005C08091B10648174B
:1094300021F488E08093B2060895E091A806F091A7
:10944000A90613C08091B006E091A806F091A90684
:10945000481759F481E0808395B1982795B90E9407
:109460005E488FEF8093A70601C010821092B2066B
:1094700008951092B2060895A8E0B0E0E2E4FAE49C
:109480000C949D4E7B018C01611571058105910540
:1094900019F482E089835AC083E089838EE1C82E63
:1094A000D12CDC82CB82ED82FE820F831887C8012B
:1094B000B7010E94AF4ABC016150704077FF33C0D2
:1094C000EE27FF27E61BF70B20E030E040E050E0FE
:1094D00081E090E0A0E0B0E00E2E04C0880F991F5C
:1094E000AA1FBB1F0A94D2F70197A109B1098E21C7
:1094F0009F21A023B1230097A105B10521F021E010
:1095000030E040E050E004C016950795F794E794EA
:10951000EA95D2F72E293F29402B512B2D833E83EC
:109520004F8358870FC06115710581F0062E04C066
:10953000EE0CFF1C001F111F0A94D2F7ED82FE8271
:109540000F831887C61AD70ADC82CB821A82CE0113
:1095500001960E94FC4AE8E028960C94B94EEF92DE
:10956000FF920F931F939B01AC01203080E03807DE
:1095700081E0480780E0580780F42F3F310541051E
:10958000510509F020F4EE24FF24870119C068E09A
:10959000E62EF12C012D112D13C0203080E038076C
:1095A00080E0480781E0580730F490E1E92EF12C83
:1095B000012D112D05C088E1E82EF12C012D112D72
:1095C00080E290E0A0E0B0E08E199F09A00BB10B03
:1095D00004C05695479537952795EA94D2F7F90137
:1095E000EA54FC4F2081821B9109A109B1091F9106
:1095F0000F91FF90EF9008959F92AF92BF92CF92FC
:10960000DF92EF92FF920F931F93EE24FF248701C6
:10961000FC0124813581468157819180808182308F
:1096200010F44061A2C0843009F49BC0823029F458
:1096300020E030E040E050E005C021153105410553
:10964000510519F4E0E0F0E092C0828193816FEF60
:10965000823896070CF05AC062E87FEF681B790BDE
:109660006A3171052CF020E030E040E050E02AC083
:10967000AA24BB24650181E090E0A0E0B0E0062EC2
:1096800004C0880F991FAA1FBB1F0A94D2F7019725
:10969000A109B10982239323A423B5230097A1052F
:1096A000B10529F071E0A72EB12CC12CD12C04C03A
:1096B00056954795379527956A95D2F72A293B29DC
:1096C0004C295D29DA01C9018F779070A070B070C4
:1096D00080349105A105B10539F427FF09C0205C4C
:1096E0003F4F4F4F5F4F04C0215C3F4F4F4F5F4F85
:1096F00080E090E0203060E0360760E0460760E4FC
:10970000560710F081E090E0FC0123C080389105FD
:1097100044F5FC01E158FF4FDA01C9018F779070E1
:10972000A070B07080349105A105B10539F427FF10
:1097300009C0205C3F4F4F4F5F4F04C0215C3F4F3B
:109740004F4F5F4F57FF05C0569547953795279563
:10975000319687E056954795379527958A95D1F7A5
:1097600006C020E030E040E050E0EFEFF0E0E22E15
:10977000F32E942F9F77802F8078892B9E2F97959B
:10978000992797958F77082F092B9E2F9695812FD4
:109790008078892B9794992497948F77182F19297B
:1097A000C801B7011F910F91FF90EF90DF90CF900C
:1097B000BF90AF909F900895FC014150504030F011
:1097C00001900616D1F73197CF0108958827992780
:1097D00008955058BB27AA270ED079C16AD130F01E
:1097E0006FD120F031F49F3F11F41EF45FC10EF4ED
:1097F000E095E7FB55C1E92F7BD180F3BA176207EB
:1098000073078407950718F071F49EF593C10EF461
:10981000E0950B2EBA2FA02D0B01B90190010C0180
:10982000CA01A0011124FF27591B99F0593F50F498
:10983000503E68F11A16F040A22F232F342F4427F0
:10984000585FF3CF469537952795A795F0405395E8
:10985000C9F77EF41F16BA0B620B730B840BBAF0B8
:109860009150A1F0FF0FBB1F661F771F881FC2F723
:109870000EC0BA0F621F731F841F48F48795779537
:109880006795B795F7959E3F08F0B3CF9395880FEE
:1098900008F09927EE0F9795879508950CD017C17A
:1098A0000FD140F006D130F021F45F3F19F0F8C03D
:1098B000511141C1FBC01CD198F39923C9F3552321
:1098C000B1F3951B550BBB27AA27621773078407B3
:1098D00038F09F5F5F4F220F331F441FAA1FA9F369
:1098E00033D00E2E3AF0E0E830D091505040E6955B
:1098F000001CCAF729D0FE2F27D0660F771F881FBC
:10990000BB1F261737074807AB07B0E809F0BB0BAA
:10991000802DBF01FF2793585F4F2AF09E3F5105CE
:1099200068F0BEC008C15F3FECF3983EDCF386955B
:1099300077956795B795F7959F5FC9F7880F911D44
:109940009695879597F90895E1E0660F771F881F30
:10995000BB1F621773078407BA0720F0621B730BE3
:10996000840BBA0BEE1F88F7E095089504D0689435
:10997000B111E1C00895C4D088F09F5790F0B92F7D
:109980009927B751A0F0D1F0660F771F881F991F54
:109990001AF0BA95C9F712C0B13081F0CBD0B1E05E
:1099A0000895C8C0672F782F8827B85F39F0B93F6E
:1099B000CCF3869577956795B395D9F73EF4909556
:1099C0008095709561957F4F8F4F9F4F0895E894D4
:1099D00009C097FB3EF490958095709561957F4FF7
:1099E0008F4F9F4F9923A9F0F92F96E9BB279395A5
:1099F000F695879577956795B795F111F8CFFAF4B5
:109A0000BB0F11F460FF1BC06F5F7F4F8F4F9F4FE5
:109A100016C0882311F096E911C0772321F09EE843
:109A2000872F762F05C0662371F096E8862F70E0A9
:109A300060E02AF09A95660F771F881FDAF7880F83
:109A40009695879597F9089507D008F481E00895D1
:109A500003D008F48FEF0895990F0008550FAA0B53
:109A6000E0E8FEEF16161706E807F907C0F0121631
:109A70001306E407F50798F0621B730B840B950B34
:109A800039F40A2661F0232B242B252B21F4089589
:109A90000A2609F4A140A6958FEF811D811D089526
:109AA00097F99F6780E870E060E008959FEF80EC91
:109AB000089500240A941616170618060906089534
:109AC00000240A9412161306140605060895092E9A
:109AD0000394000C11F4882352F0BB0F40F4BF2B09
:109AE00011F460FF04C06F5F7F4F8F4F9F4F089549
:109AF00057FD9058440F551F59F05F3F71F047953F
:109B0000880F97FB991F61F09F3F79F08795089523
:109B1000121613061406551FF2CF4695F1DF08C042
:109B2000161617061806991FF1CF8695710561055F
:109B300008940895E894BB2766277727CB0197F907
:109B400008950BD0C4CFB5DF28F0BADF18F0952305
:109B500009F0A6CFABCF1124EECFCADFA0F3959FBB
:109B6000D1F3950F50E0551F629FF001729FBB2704
:109B7000F00DB11D639FAA27F00DB11DAA1F649FB0
:109B80006627B00DA11D661F829F2227B00DA11D63
:109B9000621F739FB00DA11D621F839FA00D611DE9
:109BA000221F749F3327A00D611D231F849F600D0A
:109BB000211D822F762F6A2F11249F5750408AF043
:109BC000E1F088234AF0EE0FFF1FBB1F661F771FCF
:109BD000881F91505040A9F79E3F510570F060CF0B
:109BE000AACF5F3FECF3983EDCF3869577956795B7
:109BF000B795F795E7959F5FC1F7FE2B880F911DED
:109C00009695879597F90895629FD001739FF0010B
:109C1000829FE00DF11D649FE00DF11D929FF00DFC
:109C2000839FF00D749FF00D659FF00D9927729F33
:109C3000B00DE11DF91F639FB00DE11DF91FBD01BE
:109C4000CF0111240895991B79E004C0991F96173C
:109C500008F0961B881F7A95C9F780950895AA1B6E
:109C6000BB1B51E107C0AA1FBB1FA617B70710F007
:109C7000A61BB70B881F991F5A95A9F78095909539
:109C8000BC01CD01089597FB092E07260AD077FD68
:109C900004D0E5DF06D000201AF4709561957F4F5F
:109CA0000895F6F7909581959F4F0895A1E21A2E99
:109CB000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F70
:109CC000A217B307E407F50720F0A21BB30BE40BC0
:109CD000F50B661F771F881F991F1A9469F7609507
:109CE0007095809590959B01AC01BD01CF010895C1
:109CF00097FB092E05260ED057FD04D0D7DF0AD0DA
:109D0000001C38F450954095309521953F4F4F4FAA
:109D10005F4F0895F6F790958095709561957F4F08
:109D20008F4F9F4F08952F923F924F925F926F9265
:109D30007F928F929F92AF92BF92CF92DF92EF92DB
:109D4000FF920F931F93CF93DF93CDB7DEB7CA1B5C
:109D5000DB0B0FB6F894DEBF0FBECDBF09942A8887
:109D6000398848885F846E847D848C849B84AA842F
:109D7000B984C884DF80EE80FD800C811B81AA81BC
:109D8000B981CE0FD11D0FB6F894DEBF0FBECDBF87
:109D9000ED010895F999FECFB2BDA1BDF89A1196D3
:109DA00000B40895F7DF01921A94E1F70895F2DF05
:109DB000E02DF0DFF02D0895F999FECFB2BDA1BDE1
:109DC00000BC11960FB6F894FA9AF99A0FBE08954E
:109DD000F3DF012CF1DF112408950190EDDF1A94D7
:069DE000E1F70895FFCF3A
:109DE6000AFF0164496E74656772616C5069746339
:109DF60068202020496E74656772616C526F6C6CC6
:109E0600202020204163635069746368202020204D
:109E160020202020416363526F6C6C20202020207C
:109E2600202020204779726F59617720202020203A
:109E36002020202052656164696E674865696768FD
:109E4600742020204163635A2020202020202020D7
:109E56002020202054687275737420202020202032
:109E660020202020436F6D706173734865616469BB
:109E76006E672020566F6C74616765202020202055
:109E8600202020205265636569766572204C6576D0
:109E9600656C20205961774779726F4865616469FE
:109EA6006E6720204D6F746F725F46726F6E7420FE
:109EB600202020204D6F746F725F526561722020E2
:109EC600202020204D6F746F725F5269676874207E
:109ED600202020204D6F746F725F4C6566742020C1
:109EE600202020204163635F5A202020202020204C
:109EF60020202020535049204572726F7220202066
:109F060020202020535049204F6B20202020202045
:109F1600202020202020202020202020202020203B
:109F260020202020536572766F20202020202020BC
:109F360020202020506974636820202020202020C3
:109F460020202020526F6C6C2020202020202020F2
:109F560020202020202020202020202020202020FB
:109F660020202020202020202020202020202020EB
:109F760020202020202020202020202020202020DB
:109F860020202020202020202020202020202020CB
:109F960020202020202020202020202020202020BB
:109FA60020202020202020202020202020202020AB
:109FB600202020202020202020202020202020209B
:109FC600202020204750535F50697463682020206A
:109FD600202020204750535F526F6C6C2020202099
:109FE60020202020FFFF010A6400007D0000FF03FF
:109FF6000102030405060708090A48656C6C6F2010
:10A00600576F726C64000000000000000000000042
:10A01600000000000000000000000000000000003A
:10A02600000000000000000000000000000000002A
:10A03600000000000000000000000000000000001A
:10A04600000000000000000000000E016400FFFF99
:10A05600FFFFF40190D0030090D00300ECFF17B788
:10A06600D13830FB103A409696020A0000000000F4
:10A07600000000644600006401426567696E6E6513
:10A086007200004E6F726D616C000053706F7274D7
:10A0960000000100000000010202030303030404A0
:10A0A6000404040404040505050505050505050560
:10A0B6000505050505050606060606060606060640
:10A0C600060606060606060606060606060606062A
:10A0D6000606060606060707070707070707070710
:10A0E60007070707070707070707070707070707FA
:10A0F60007070707070707070707070707070707EA
:10A1060007070707070707070707070707070707D9
:10A1160007070707070708080808080808080808BF
:10A1260008080808080808080808080808080808A9
:10A136000808080808080808080808080808080899
:10A146000808080808080808080808080808080889
:10A156000808080808080808080808080808080879
:10A166000808080808080808080808080808080869
:10A176000808080808080808080808080808080859
:10A186000808080808080808080808080808080849
:06A1960008080808080893
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644p_NAVICTRL_V0_69k.hex
0,0 → 1,2204
:100000000C9448020C9465020C9465020C946502F1
:100010000C9465020C9465020C9465020C946502C4
:100020000C9465020C94130C0C9465020C946502FC
:100030000C946E160C9465020C9465020C943A169E
:100040000C9465020C9465020C94360B0C946502BA
:100050000C9449040C9465020C9413040C946502EE
:100060000C94E80C0C9465020C9482150C946502B7
:100070000C94F53A0C9465020C9465020A0A0D0082
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0004F4B0A0D000A0D43616C696272617469FD
:1000B0006E67206169722070726573737572652056
:1000C00073656E736F722E2E000A0D414343206ECE
:1000D0006F742063616C6962726174656421000AE7
:1000E0000D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D70
:1000F0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D006D
:100100000A0D466C69676874436F6E74726F6C0A8F
:100110000D48617264776172653A25642E25640A20
:100120000D536F6674776172653A5625642E2564A7
:10013000256320002E0048693A2534692020436653
:100140003A253469200054683A25346920205961E1
:100150003A253469200050693A2534692020526FCD
:100160003A253469200045787465726E436F6E7469
:10017000726F6C20200052616E67653A2533692DDD
:1001800025336900506F736974696F6E3A202533A7
:100190006900536574706F696E742020253369009F
:1001A000536572766F202000506F343A20253369F2
:1001B00020506F383A2025336900506F333A20259C
:1001C000336920506F373A2025336900506F323A37
:1001D0002025336920506F363A2025336900506F4F
:1001E000313A2025336920506F353A202533690094
:1001F0004F6666436F757273653A2025356900480E
:10020000656164696E673A20202025356900436F77
:10021000757273653A2020202025356900436F6D83
:1002200070617373202020202020200052432D4C29
:100230006576656C3A2025356900566F6C74616788
:10024000653A20202535690048656967687420256E
:10025000346920282533692900526F6C6C202020D6
:100260002534692028253369290050697463682082
:100270002025346920282533692900414343202D56
:100280002053656E736F72005961772020202534EA
:100290006920282533692900526F6C6C2020253491
:1002A0006920282533692900506974636820253442
:1002B00069202825336929005961772020202534B9
:1002C0006920282533692900526F6C6C2020253461
:1002D0006920282533692900506974636820253412
:1002E00069202825336929004779726F202D205312
:1002F000656E736F720050333A2534692020503494
:100300003A253469200050313A2534692020503292
:100310003A253469200047733A2534692020596111
:100320003A253469200050693A2534692020526FFB
:100330003A253469200043373A2534692020433870
:100340003A253469200043353A2534692020433664
:100350003A253469200043333A2534692020433458
:100360003A253469200043313A253469202043324C
:100370003A253469200048656164696E673A202037
:100380002025356900526F6C6C3A202020202020F7
:100390002535690050697463683A202020202025A3
:1003A00035690041747469747564650048656967EE
:1003B000687420436F6E74726F6C004E6F20004F34
:1003C0006666736574202020203A253569004169EE
:1003D000722050726573732E3A2535690053657427
:1003E00020506F696E743A20253569004865696749
:1003F00068743A2020202025356900286329204888
:100400006F6C67657220427573730053657474690D
:100410006E673A202564200048573A5625642E25F9
:10042000642053573A25642E25642563002B204D04
:10043000696B726F4B6F70746572202B005B25695E
:100440005D005B25695D000A0D5573696E6720507C
:100450006172616D65746572205365742025640056
:100460000A0D496E69742E20454550524F4D3A2071
:1004700047656E65726174696E6720446566617573
:100480006C742D506172616D657465722E2E2E0034
:1004900011241FBECFEFD0E1DEBFCDBF14E0A0E03E
:1004A000B1E0E2EEF5E802C005900D92A83BB1077D
:1004B000D9F719E0A8EBB4E001C01D92A531B1074E
:1004C000E1F70E9467020C94F0420C940000CF9375
:1004D000DF93F89414B815B8189B02C08BE001C0E4
:1004E0008AE08093000184B1836084B92091000187
:1004F0002A3011F4289A01C02898299884B7877F58
:1005000084BF8091600088618093600010926000D9
:1005100080ED97E09093D4048093D30410927107F8
:100520001092700710927405109273051092720564
:10053000109271051092700510926F052A3011F417
:10054000289801C0289A0E94D2140E94010B0E9490
:10055000F00B0E94E405809100018B3011F40E94A1
:10056000983A0E9406160E94CB0C0E942B150E94FE
:100570009D3B78941092720685E48093730687E021
:100580008093740620910001822F6AE00E9421422C
:10059000492F50E0822F0E94214290E02BE630E06C
:1005A0003F932F9325E430E03F932F931F921F92A8
:1005B0005F934F939F938F9380E091E09F938F93EE
:1005C0001F920E945D088FED90E09F938F931F9282
:1005D0000E945D08299A0E94E13984E00E94E13777
:1005E0002DB73EB7205F3F4F0FB6F8943EBF0FBE0A
:1005F0002DBF8050944050F089EC90E09F938F93F2
:100600001F920E945D080F900F900F9084EF91E071
:100610000E94A30BEC01CE010E94AC0B8823D9F3FE
:100620008091DA0780FF20C085EA90E09F938F9346
:100630001F920E945D0888EE93E00E94A30BEC01DC
:100640000E94C70F0F900F900F90CE010E94AC0B2D
:100650008823D9F380EA90E09F938F931F920E94A2
:100660005D080F900F900F900E946620809100010E
:100670008A3011F4289801C0289A80ED97E0909371
:10068000D4048093D30485E580937C0684E990E0CC
:100690009F938F931F920E945D088091DA070F90BD
:1006A0000F900F9082FF03C088E890E002C080E8BE
:1006B00090E09F938F931F920E945D080F900F9080
:1006C0000F908CE790E09F938F931F920E945D089C
:1006D0000E94071088E893E190936D0380936C0368
:1006E0000F900F900F908091D004882309F493C04D
:1006F0001092D0040E9410220E941F20209100011D
:100700002A3011F4289801C0289A80910301882387
:1007100021F081508093030112C01092C404109202
:10072000C504109286061092800510927F051092E3
:1007300082051092810510928405109283058091A4
:100740006C0390916D03892B01F585E090E0909307
:100750006D0380936C030E94521580910403909165
:1007600005038F5F9F4FF9F480915B058823D9F0D3
:1007700080E197E29093D4048093D30480E890E0E2
:1007800090930503809304030EC080916C039091B5
:100790006D03019790936D0380936C032A3011F4DD
:1007A000289801C0289A8091D004882321F0809154
:1007B0005B05882311F40E944B060E94F306CE01CC
:1007C0000E94AC0B882339F1209108033091090372
:1007D0008091EA0790E0281739079CF48091040380
:1007E000909105038F5F9F4F61F480E797E19093AD
:1007F000D4048093D30480E093E090930503809326
:1008000004030E94663D84E08093D50484E190E077
:100810000E94A30BEC018091D504882309F063CFDB
:100820000E94A13D60CF1F920F920FB60F9211242C
:100830008F939F93EF93FF93809102018823E1F4BC
:100840008091CC049091CD0401969093CD04809337
:10085000CC04FC01E753F94FE081ED3019F0863903
:10086000910539F41092CD041092CC0481E080936C
:100870000201E093C60004C01092CD041092CC0493
:10088000FF91EF919F918F910F900FBE0F901F904E
:1008900018951F920F920FB60F9211242F933F932A
:1008A0004F935F936F937F938F939F93AF93BF9378
:1008B000CF93DF93EF93FF937091C6008091BE04B6
:1008C000882309F06DC06091C904662371F4733206
:1008D00079F47093DA0581E08093C90483E290E0B3
:1008E0009093CB048093CA045BC0663908F054C06F
:1008F000A62FB0E02091CA043091CB047D3069F07E
:10090000A652BA4F7C936F5F6093C904270F311DC5
:100910003093CB042093CA0443C0FD01E852FA4F40
:100920009081ED01C752DA4F8881A901491B510915
:10093000481B51095F705093CB044093CA04208137
:10094000CA0136E0969587953A95E1F7835C821760
:10095000F1F49881842F8F73835C8917C1F481E04F
:100960008093BE046093BF04A652BA4F7C938091DB
:10097000DC05823571F488E190E02CE00FB6F89444
:10098000A895809360000FBE2093600002C0109273
:10099000BE041092C90404C01092C9041092BE048F
:1009A000FF91EF91DF91CF91BF91AF919F918F9187
:1009B0007F916F915F914F913F912F910F900FBE5B
:1009C0000F901F901895DC0120E030E040E050E0EF
:1009D00008C0FA01E753F94F8081280F311D4F5F9E
:1009E0005F4F4A175B07A9F73F70C90146E096952C
:1009F00087954A95E1F7835CFD01E753F94F8083C2
:100A000011962F73235CFD01E753F94F2083A65302
:100A1000B94F8DE08C93109202018091C9068093AA
:100A2000C60008951F93CF93DF93EA01722F93E2DC
:100A30009093C9066093CA068093CB0660E0A3E05A
:100A4000B0E04FC0FE01E60FF11D90816F5F715065
:100A500019F410E040E00FC0FE01E60FF11D4081E7
:100A60006F5F715011F410E006C0FE01E60FF11D3A
:100A700010816F5F7150892F86958695835CFD018B
:100A8000E753F94F808350E09A0184E0369527952B
:100A90008A95E1F7892F90E083709070F4E0880FD9
:100AA000991FFA95E1F7282B235CFD01E653F94FD6
:100AB0002083812F82958695869583704F70507024
:100AC000440F551F440F551F842B835CFD01E553D4
:100AD000F94F80831F73135CFD01E453F94F1083BA
:100AE0001496772309F0AECFCD010E94E304DF9185
:100AF000CF911F9108951F93CF93DF93EC0170E086
:100B0000A22FB0E0129748C0E42FF0E0E652FA4F6F
:100B100030814F5FE42FF0E0E652FA4F50814F5F93
:100B2000E42FF0E0E652FA4F10814F5FE42FF0E03F
:100B3000E652FA4F20814F5F842F90E0A817B90743
:100B400074F15D53FE01E70FF11D852F82958F70C3
:100B50003D53330F330F382B3083613001F1912F28
:100B60009D537F5FFE01E70FF11D71505295507F3D
:100B7000892F86958695582B508363506F3F79F067
:100B80007E5FFE01E70FF11D9295990F990F907C02
:100B90002D53922B90837F5F662309F0B5CFDF91B1
:100BA000CF911F9108951F93182F8A3019F48DE06B
:100BB0000E94D3058091C00085FFFCCF1093C60032
:100BC00080E090E01F9108951F931FB7F8948091E3
:100BD000C1008F778093C1008091C1008F7B80938B
:100BE000C100589A5098599A519A1092C5008AE2B9
:100BF0008093C4008091C00082608093C00088E12F
:100C00008093C1008091C2008F778093C200809151
:100C1000C2008F7B8093C2008091C2008F7D809341
:100C2000C2008091C2008F7E8093C2008091C2007A
:100C3000877F8093C2008091C1008B7F8093C10029
:100C40008091C20084608093C2008091C200826063
:100C50008093C20002C08091C6008091C00087FDD1
:100C6000FACF8091C10080688093C1008091C1005B
:100C700080648093C1001092BE0481E080930201E1
:100C800088EC90E00E94A30B90937106809370060D
:100C90001FBF1F91089580910201882309F4A2C00B
:100CA0008091B904882371F080910201882351F06A
:100CB0006091C8042BE04CE756E087E40E941205DF
:100CC0001092B90480917006909171060E94AC0B4D
:100CD000882321F48091BB048823B1F08091020124
:100CE000882391F06091C80422E447E856E084E448
:100CF0000E9412051092BB048AEF90E00E94A30BA1
:100D00009093710680937006609101016F3F89F0A6
:100D1000462F50E094E0440F551F9A95E1F74C5F41
:100D20005E4F605D20E181E40E9412058FEF8093A9
:100D3000010190915F079923A1F08091020188231E
:100D400081F083E28093C9069093CA068DE0809378
:100D5000CB061092020110925F078091C906809322
:100D6000C6008091BA04882359F18091020188233A
:100D700039F10E9410101092BA043091BD04932FE3
:100D80009F5F9093BD04943021F08091BC04882330
:100D900059F02EE14CE657E060E084E30E94120532
:100DA0008FEF8093BD040CC044E1949FA0011124F7
:100DB000465E5C4F24E160E0832F8F5C0E94120549
:100DC0008091B804882371F080910201882351F04A
:100DD0006091C8042AE042E756E086E50E941205C9
:100DE0001092B80408951F93CF93DF93CDB7DEB769
:100DF00022970FB6F894DEBF0FBECDBF8091BE0420
:100E0000882309F4F7C08091DC058B3609F47EC095
:100E10008C3688F48336E1F1843630F48136C1F0C3
:100E2000823609F0E5C020C0873609F480C08836D4
:100E300009F0DEC047C0813709F47DC0813708F46E
:100E4000A4C0843709F459C0863709F0D1C06BC0FB
:100E50002091BF0443E062E0CE0101960E947B0531
:100E60008981809301012AC02091BF0443E06BE097
:100E70008CE796E00E947B058091F70490917E06B6
:100E8000892B8093F7048091850680935F07B0C01B
:100E90002091BF0443E06BE08CE796E00E947B0565
:100EA0008091F70490917E06892B8093F7048091BE
:100EB000850680935F0781E08093BB048FEF80936A
:100EC000030196C02091BF0443E062E0CE01019689
:100ED0000E947B058091F7049981892B8093F70408
:100EE0008A818F3F21F481E08093BC0402C010927C
:100EF000BC0481E08093BA047BC02091BF0443E02E
:100F000064E080EC94E00E947B05D8CF2091BF0480
:100F100043E064E084EC94E00E947B058091C70488
:100F200080935F07CBCF81E08093B80461C081E0FC
:100F30008093B9045DC02091BF0443E062E0CE011C
:100F400001960E947B05809102018823E1F389814B
:100F50008F3F71F0863010F085E0898389810E948F
:100F60000F386091C804898126E442ED57E009C03A
:100F70001091C80482E00E94D03726E442ED57E089
:100F8000612F855B0E94120533C02091BF0443E0AE
:100F900066E482ED97E00E947B058091DC058B562C
:100FA0000E94FA376091FD0770E080E090E024EC49
:100FB00039E040E050E00E94024260937403709375
:100FC000750380937603909377036091FE0770E03A
:100FD00080E090E00E94024260937803709379036E
:100FE00080937A0390937B030E94D2390E94CB2195
:100FF0001092BE0422960FB6F894DEBF0FBECDBF8E
:10100000DF91CF911F910895982F809160078130D3
:1010100069F48091F604E82FF0E0E65EFC4F9083DF
:101020008F5F8093F60421E030E005C0892F0E9495
:10103000D305282F30E0C90108951F93182F04C04D
:1010400080E30E94040811501116D4F31F910895F3
:101050001F93182F04C080E20E940408115011163B
:10106000D4F31F9108950F931F93CF93DF938C01B7
:10107000EB0108C0F8010F5F1F4FE4918E2F0E9413
:10108000040821972097B1F7DF91CF911F910F911D
:1010900008950F931F93CF93DF938C01EB0106C04C
:1010A000F80181918F010E94040821972097C1F7D0
:1010B000DF91CF911F910F9108952F923F924F9200
:1010C0005F926F927F928F929F92AF92BF92CF92D8
:1010D000DF92EF92FF920F931F93CF93DF93CDB7E1
:1010E000DEB7E5970FB6F894DEBF0FBECDBF2B96E7
:1010F0008FAD2B9780936007CE01835B9F4F9B83BF
:101100008A832D964EAC5FAC2D971EA61FA618AAFB
:1011100019AA9E01225D3F4F3DAB2CAB820102C05C
:101120000F5F1F4FF801F490FF2019F0F5E2FF1652
:10113000B9F7B8016419750919F0C2010E943308A2
:10114000FF2009F445C228010894411C511C198252
:10115000AA81BB8133241BAA2FEF2AABF20108948A
:10116000411C511CB490632D70E06170707035E7C4
:10117000B31621F08B2D80628837C9F46115710593
:1011800059F02D913D914D915C9113972EA73FA75A
:1011900048AB59AB14960BC08D919C9111979C0153
:1011A00040E050E02EA73FA748AB59AB129630E283
:1011B000B31621F48981882389F61CC043E2B41652
:1011C00011F458E055C08AE2B81621F09DE2B91634
:1011D00071F408C0FD011296E081EBABE7FFBECFD2
:1011E000E195EBABE0E13E2AFFED3F22B7CF2BE2EA
:1011F000B21611F4B982B2CF3EE2B31699F5F201FC
:101200000894411C511C84918A3221F0B82E20E0B0
:1012100030E01DC0FD0112964081518157FF02C090
:101220004FEF5FEF4AAB9ACFC90153E0880F991F88
:101230005A95E1F7220F331F280F391F2B0D311D4F
:1012400020533040F2010894411C511CB4908B2D66
:1012500080538A3048F3A90137FF02C04FEF5FEF98
:101260004AAB85CF40E3B41629F434FC77CF50E283
:10127000352A74CF8B2D81538930D8F420E030E0AB
:10128000C90103E0880F991F0A95E1F7220F331F68
:10129000280F391F2B0D311D20533040F2010894C7
:1012A000411C511CB4908B2D80538A3048F32BABDA
:1012B0005ECF88E6B81619F494E0392A4FCFECE6F1
:1012C000BE1619F4F1E03F2A49CFBB83AA8323E677
:1012D000B21639F41296BB83AA8312978C918E832F
:1012E00022C134E4B31639F044E6B41631F059E6BD
:1012F000B516A9F502C081E0382A30FE08C0149660
:10130000BB83AA835E914E913E912E910AC01296A4
:10131000BB83AA839E918E919C01442737FD409503
:10132000542F2EA73FA748AB59AB8EA59FA5A8A9C0
:10133000B9A9BB238CF42EA53FA548A959A950955E
:101340004095309521953F4F4F4F5F4F2EA73FA7B8
:1013500048AB59AB8DE28983BAE02B2E80C03FE4C5
:10136000B31621F04FE6B41631F402C051E0352A2D
:10137000A8E02A2E73C080E7B81689F41296BB83C2
:10138000AA839E918E919C0140E050E02EA73FA73A
:1013900048AB59AB30E4332AF8E7BF2E5DC043E7D2
:1013A000B416D1F51296BB83AA83DE90CE90C114F9
:1013B000D10489F488E28E838EE68F8385E788875F
:1013C0008CE689878A8789E28B871C86E6E0CE2EA9
:1013D000D12CCC0EDD1E5AA957FD14C0452F552720
:1013E00047FD509560E070E0C6010E94DA3F00972B
:1013F00011F4FAA80EC0F82EFC188AA98F154CF427
:10140000F82E07C0F60101900020E9F73197FE2E73
:10141000FC18198240E090C095E5B91621F0A5E7C7
:10142000BA1631F402C0B1E03B2A7AE0272E16C08A
:10143000E8E5BE1621F0F8E7BF1609F070C033FEEC
:101440000BC02EA53FA548A959A921153105410575
:10145000510511F030E4332A60E1262E19824AA9A1
:1014600047FD02C05FED35228EA59FA5A8A9B9A9A9
:101470000097A105B10549F49AA9992331F45EE2D8
:10148000C52ED12CCC0EDD1E46C06EA47FA488A82C
:1014900099A84EE2C42ED12CCC0EDD1EE22CFF24E6
:1014A00000E010E06EA57FA588A999A9A801970181
:1014B0000E9454426A3020F430E3A32EA60E08C0E6
:1014C00027E5A22EA60EA8E5BA1611F4BFEDAB22B1
:1014D000F601A2926F016EA57FA588A999A9A8011E
:1014E00097010E9454422EA73FA748AB59AB6E14F8
:1014F0007F048006910618F039014A01D3CFF8E045
:101500002F1649F433FE07C020E3A21621F080E332
:10151000D6018E936D01FCA8FC184AA90DC0BB2012
:1015200009F456C0BE82198296E0C92ED12CCC0E89
:10153000DD1E40E0FF24F394E42EEF18E7FCEE24D8
:101540008981882319F08F2D8F5F06C036FC02C079
:101550008F2D02C08F2D8E5FA82EAE0C032D10E0B4
:1015600080E3882E912C802291228114910421F411
:101570008BA98A190E9428088981882329F061E0B3
:1015800070E0CE01019609C006FF09C080E38C839C
:10159000BD8262E070E0CE0104960E944908B0E28C
:1015A0008B16910421F48BA98A190E941D088E2D97
:1015B0000E941D086F2D772767FD7095C6010E9458
:1015C000490804FFABCD8BA98A190E942808A6CD33
:1015D000E5960FB6F894DEBF0FBECDBFDF91CF9179
:1015E0001F910F91FF90EF90DF90CF90BF90AF9041
:1015F0009F908F907F906F905F904F903F902F9033
:1016000008952FB7F894909100019A3019F4529AE6
:101610005A9802C03F9A479884B1886184B985B1CD
:10162000877E85B99A3019F4529A5A9802C03F9A27
:10163000479884B58F7A84BD84B5836A84BD85B5A7
:10164000877385BD85B5887F826085BD17BC88E7B7
:1016500088BD16BC80916E00897F80936E0080915A
:101660006E00816080936E002FBF08951F920F92CD
:101670000FB60F9211242F933F938F939F938091D6
:10168000D504882329F08091D50481508093D50416
:101690008091D60481508093D6048F3FB9F489E0BD
:1016A0008093D604809106038F5F81708093060338
:1016B000882319F481E08093D0048091CE04909126
:1016C000CF0401969093CF048093CE048091D304ED
:1016D0009091D404892BB1F08091D3049091D404DB
:1016E00001979093D4048093D3042091D304309134
:1016F000D404809104039091050382239323892BC2
:10170000A1F406C08FEF9FEF90930503809304032D
:10171000809100018A3039F404C05A9A0BC0479A6C
:1017200009C05A9807C0479805C0809100018A30C7
:10173000B1F7F3CF9F918F913F912F910F900FBEF3
:101740000F901F9018952091CE043091CF042F5FF9
:101750003F4F820F931F08952091CE043091CF0404
:10176000821B930B892F99278695807490E00895AA
:10177000AC012091CE043091CF042F5F3F4F05C0C4
:1017800080917A00886C80937A008091CE04909149
:10179000CF04B901681B790BCB01840F951F8070B2
:1017A0009078892F99278695882351F30895AC0165
:1017B0002091CE043091CF042F5F3F4F8091CE0413
:1017C0009091CF04B901681B790BCB01840F951F51
:1017D00080709078892F99278695882379F30895CA
:1017E0009FB7F894579A5F9AE0EBF0E080818F788A
:1017F0008083808183688083E1EBF0E08081867361
:1018000080838081866080838AE08093B300109219
:10181000B200E0E7F0E080818A7F8083808182608F
:1018200080839FBF08951F920F920FB60F921124CD
:10183000FF920F931F932F933F934F935F936F9359
:101840007F938F939F93AF93BF93EF93FF93809179
:1018500007038150809307038F3F09F082C0809176
:10186000B0008093B0008091B00080688093B00099
:101870008091930390E09093D8048093D704809153
:101880000708F090F40780FF23C00091D70410915F
:10189000D80460911D0570911E0580911F059091DF
:1018A000200520E830E040E050E00E947642CA0186
:1018B000B9012F2D30E040E050E00E94024220E0CC
:1018C00032E040E050E00E947642020F131F22C037
:1018D0000091D7041091D80460911D0570911E05E8
:1018E00080911F059091200520E830E040E050E015
:1018F0000E947642CA01B9012F2D30E040E050E04D
:101900000E94024220E032E040E050E00E94764235
:10191000021B130B1093D8040093D7042091D70413
:101920003091D8048091F50790E02817390754F0DA
:101930002091D7043091D8048091F60790E0821767
:10194000930724F49093D8048093D7048091D7040C
:101950009091D8048093B3008091F7078093070398
:1019600006C08091B0008F738093B0005F98FF91A4
:10197000EF91BF91AF919F918F917F916F915F9107
:101980004F913F912F911F910F91FF900F900FBE9C
:101990000F901F9018959FB7F89411B812B88FEF59
:1019A00080937E00ECE7F0E080818F7180838081FE
:1019B000807E8083AAE7B0E087E28C93EBE7F0E0DB
:1019C0008081887F80838C91886C8C939FBF0895E1
:1019D0001F920F920FB60F921124EF92FF920F9366
:1019E0001F932F933F934F935F936F937F938F93A7
:1019F0009F93AF93BF93CF93DF93EF93FF93809128
:101A00007A00877380937A008091F4048F5F8093CB
:101A1000F4048150853009F47EC0863090F4823021
:101A200009F440C0833030F48823F1F0813009F0AC
:101A300082C22FC0833009F441C0843009F07BC2D8
:101A40005AC0883009F4B2C0893038F4863009F4BD
:101A500073C0873009F06FC28CC0893009F4C3C0ED
:101A60008A3009F068C2DBC18091780090917900DA
:101A70009093F3048093F20481E08093F5048091C5
:101A8000E9049091EA0401969093EA048093E904B2
:101A900056C280917800909179009093F1048093E0
:101AA000F00482C080917800909179009093EF04C7
:101AB0008093EE0484E08093F50441C240910803D2
:101AC0005091090380917800909179009A01220F3A
:101AD000331F240F351F63E070E00E942D42260F54
:101AE000371F369527953695279530930903209310
:101AF000080386E0E0CF80911705909118052091AA
:101B0000780030917900821B930B9093E2048093CC
:101B1000E10487E0D0CF8091780090917900209106
:101B2000150530911605821B930B9093E404809366
:101B3000E3041092F50403C2809100012091F204A5
:101B40003091F3048A3049F48091780090917900C3
:101B5000820F931F9695879506C08091780090918B
:101B60007900820F931F9093E0048093DF0481E05B
:101B7000A2CF809100012091F0043091F1048A30CD
:101B800049F48091780090917900820F931F969587
:101B9000879506C08091780090917900820F931FFD
:101BA0009093DE048093DD0482E085CF8091000174
:101BB0002091EE043091EF048A3049F4809178004E
:101BC00090917900820F931F9695879506C080911A
:101BD000780090917900820F931F9093DC0480939A
:101BE000DB0485E068CF6091780070917900E09027
:101BF0001905F0901A0500911B0510911C05882706
:101C000077FD8095982F0E94E740A80197010E94D8
:101C1000E73F0E94B4407093E6046093E504E091CE
:101C2000E504F091E6048091E3049091E404C0910E
:101C3000E104D091E20497FF03C0909581959F4FF6
:101C400064E070E00E9441429B01CE01D7FF03C0D7
:101C5000909581959F4F64E070E00E944142260F6D
:101C6000371FE20FF31FF093E604E093E504809141
:101C7000E5049091E60402970CF43EC060911905CA
:101C800070911A0580911B0590911C0520E030E8A9
:101C90004BE354E40E94224188230CF078C0609109
:101CA000190570911A0580911B0590911C052AE079
:101CB00037ED43EA5CE30E94E83F609319057093B7
:101CC0001A0580931B0590931C0580915D059091EA
:101CD0005E05845F914008F05AC0609119057091CB
:101CE0001A0580911B0590911C052DEC3CEC4CECE9
:101CF0005DE30E94E83F43C08091E5049091E604D3
:101D00008F5F9F4F0CF043C06091190570911A05C9
:101D100080911B0590911C0520E030E849E054E4D7
:101D20000E94264118169CF56091190570911A05BC
:101D300080911B0590911C052AE037ED43EA5CE396
:101D40000E94E73F6093190570931A0580931B0565
:101D500090931C0580915D0590915E05845F914094
:101D6000B0F46091190570911A0580911B0590914E
:101D70001C052DEC3CEC4CEC5DE30E94E73F6093CE
:101D8000190570931A0580931B0590931C0580918B
:101D90007800909179009093DA048093D90420918F
:101DA0004D0530914E0540914F0550915005809161
:101DB000E5049091E604AA2797FDA095BA2F820F1B
:101DC000931FA41FB51F80934D0590934E05A093BC
:101DD0004F05B0935005E0904D05F0904E050091F1
:101DE0004F051091500560914D0570914E05809101
:101DF0004F059091500520E034E040E050E00E9413
:101E00007642E21AF30A040B150BE0924D05F092AC
:101E10004E0500934F051093500583E04CCEE091A2
:101E20007800F09179008091EB049091EC04E80F38
:101E3000F91FF093EC04E093EB048091ED048F5FC5
:101E40008093ED04853008F476C0809178009091FD
:101E5000790090930F0380930E034091E704509113
:101E6000E80420916107309162072E1B3F0B80919F
:101E7000850590918605281B390B8091820390E09F
:101E8000BC01269FC001279F900D369F900D112405
:101E90009A01A3E0220F331FAA95E1F7241B350B0B
:101EA000820F931F68E070E00E9441427093E80443
:101EB0006093E704E0900A03F0900B0300910C0399
:101EC00010910D03BF01882777FD8095982FA801F9
:101ED0009701220F331F441F551F2E0D3F1D401F1A
:101EE000511F620F731F841F951F24E030E040E0F4
:101EF00050E00E94764220930A0330930B034093F4
:101F00000C0350930D03209161073091620780917B
:101F10000A0390910B03A0910C03B0910D03281BB1
:101F2000390B30938605209385051092ED041092AD
:101F3000EC041092EB041092F5041092F4048091DA
:101F40007C00807E9091F504892B80937C008091A9
:101F5000F404882329F080917A00886C80937A00B9
:101F6000FF91EF91DF91CF91BF91AF919F918F91B1
:101F70007F916F915F914F913F912F911F910F91A1
:101F8000FF90EF900F900FBE0F901F9018951F932A
:101F9000CF93DF9383E00E94D037182F853108F06C
:101FA0001A5017BD84E690E00E94B80B80910E0392
:101FB00090910F0382559340C0F410E016C017BDF6
:101FC00082E390E00E94B80BDF93CF931F920E94B0
:101FD0005D0880910E0390910F030F900F900F906A
:101FE0008458934030F01F5F02C0C4E3D1E01A3F31
:101FF00030F3612F83E00E94D937109363078CE29E
:1020000091E00E94B80BDF91CF911F910895EAE112
:10201000F3E080E2819383E0EA36F807D1F7089590
:102020001F938091F704282F30E0C90181709070D0
:10203000682F8823A9F08091F804882311F081503B
:1020400002C080916A038093F804EAE1F3E080E241
:10205000819383E0EA36F807D1F78FEF8093BD04D0
:10206000A9014270507021FF17C09091F80480912F
:102070006A03981719F41092F80403C09F5F9093B5
:10208000F804EAE1F3E080E2819393E0EA36F907AD
:10209000D1F78FEF8093BD04662321F0452B11F01B
:1020A0001092F8048091F804282F30E08A3040F430
:1020B00081E18093F6043F932F9382E494E007C07C
:1020C00080E18093F6043F932F938DE394E09F93F8
:1020D0008F9381E08F930E945D080F900F900F9077
:1020E0000F900F901091F804153009F4FBC11630D1
:1020F00090F4123009F4D0C0133030F4112309F1F8
:10210000113009F046C465C0133009F41BC1143006
:1021100009F03FC46BC1183009F411C3193038F409
:10212000163009F499C2173009F033C4E3C21A30EB
:1021300009F49FC31A3008F440C31B3009F029C4C6
:10214000D6C31092F6048DE294E09F938F9311E032
:102150001F930E945D0884E18093F60420910001A2
:10216000822F6AE00E942142492F50E0822F0E9474
:10217000214290E02BE630E03F932F9325E430E0BE
:102180003F932F931F921F925F934F939F938F9331
:1021900088E194E09F938F931F930E945D0888E2EB
:1021A0008093F6040E94D23990E09F938F938BE046
:1021B00094E09F938F931F930E945D088CE380931C
:1021C000F6048BEF93E09F938F931F930E945D081B
:1021D000DCC38091DA0780FF47C01092F60480913B
:1021E0008505909186059F938F938CEE93E09F9346
:1021F0008F931F930E945D0884E18093F604809181
:102200008705909188059F938F938DED93E09F9321
:102210008F931F930E945D0888E28093F60480915B
:102220000E0390910F039F938F938EEC93E09F93F7
:102230008F931F930E945D088CE38093F604809136
:10224000630790E09F938F938FEB93E09F938F931F
:102250001F930E945D088DB79EB744960FB6F89401
:102260009EBF0FBE8DBF9AC384E18093F6048BEBB3
:1022700093E09F938F931F930E945D0888E2809361
:10228000F6048CEA93E09F938F931F930E945D085E
:102290008DB79EB70696E2CF1092F60483EA93E0DC
:1022A0009F938F9311E01F930E945D0884E18093B8
:1022B000F60460911D0570911E0580911F05909197
:1022C000200520E034E040E050E00E9476425F9339
:1022D0004F933F932F9384E993E09F938F931F93A2
:1022E0000E945D0888E28093F60460912505709154
:1022F0002605809127059091280520E034E040E0F4
:1023000050E00E9476425F934F933F932F9385E86E
:1023100093E09F938F931F930E945D088CE38093BB
:10232000F60480916E0390916F039F938F9386E7DD
:1023300093E09F938F931F930E945D088DB79EB784
:1023400046968CCF1092F604809170079091710799
:1023500020916E0730916F079F938F933F932F9338
:1023600086E693E09F938F9311E01F930E945D0890
:1023700084E18093F6048091740790917507209111
:102380007207309173079F938F933F932F9386E546
:1023900093E09F938F931F930E945D0888E2809340
:1023A000F604809178079091790720917607309113
:1023B00077079F938F933F932F9386E493E09F93A8
:1023C0008F931F930E945D088CE38093F6048091A5
:1023D0007C0790917D0720917A0730917B079F932E
:1023E0008F933F932F9386E393E03AC21092F604C3
:1023F000E091D307F0E0EE0FFF1FE459F84F208182
:102400003181E091D207F0E0EE0FFF1FE459F84F61
:10241000808191813F932F939F938F9386E293E0E6
:102420009F938F9311E01F930E945D0884E1809336
:10243000F604E091D507F0E0EE0FFF1FE459F84FE6
:1024400020813181E091D407F0E0EE0FFF1FE459C5
:10245000F84F808191813F932F939F938F9386E1D3
:1024600093E09F938F931F930E945D0888E280936F
:10247000F604E091D707F0E0EE0FFF1FE459F84FA4
:1024800020813181E091D607F0E0EE0FFF1FE45983
:10249000F84F808191813F932F939F938F9386E094
:1024A00093E09F938F931F930E945D088CE380932A
:1024B000F604E091D907F0E0EE0FFF1FE459F84F62
:1024C00020813181E091D807F0E0EE0FFF1FE45941
:1024D000F84F808191813F932F939F938F9386EF45
:1024E00092E0BEC11092F60488EE92E09F938F9323
:1024F00011E01F930E945D080F900F900F90809144
:1025000000018A3009F04AC084E18093F6044091CA
:102510000B0550910C058091DB049091DC04209117
:102520000B0530910C05821B930B5F934F939F9388
:102530008F9388ED92E09F938F931F930E945D0885
:1025400088E28093F60440910D0550910E0580912C
:10255000DD049091DE0420910D0530910E05821B63
:10256000930B5F934F939F938F9388EC92E09F938D
:102570008F931F930E945D088CE38093F6048091F3
:102580000F05909110052091BE073091BF079F93D2
:102590008F933F932F9388EB92E055C084E1809313
:1025A000F60480910B0590910C0562E070E00E94AA
:1025B00041428091DB049091DC0420910B05309125
:1025C0000C05821B930B7F936F939F938F9388EAE5
:1025D00092E09F938F931F930E945D0888E28093FF
:1025E000F60480910D0590910E0562E070E00E9466
:1025F00041428091DD049091DE0420910D053091DF
:102600000E05821B930B7F936F939F938F9388E9A3
:1026100092E09F938F931F930E945D088CE38093B9
:10262000F60480910F059091100562E070E00E9421
:1026300041428091BE079091BF077F936F939F9314
:102640008F9388E892E09F938F931F930E945D0879
:102650008DB79EB7459602CE1092F6048BE792E0B6
:102660009F938F9311E01F930E945D0884E18093F4
:10267000F60480911505909116052091E3043091A0
:10268000E4049F938F933F932F938AE692E09F9366
:102690008F931F930E945D0888E28093F6048091D7
:1026A0001705909118052091E1043091E2049F9361
:1026B0008F933F932F9389E592E09F938F931F937E
:1026C0000E945D088CE38093F60460911905709177
:1026D0001A0580911B0590911C050E94B440209121
:1026E000B3073091B4077F936F933F932F9388E4A0
:1026F00092E046C184E18093F604809108039091B2
:1027000009039F938F938AE392E09F938F9311E045
:102710001F930E945D0888E28093F604809104056F
:10272000909105059F938F938CE292E09F938F93F6
:102730001F930E945D088DB79EB70A968FCD1092A9
:10274000F6048DE192E09F938F9311E01F930E9416
:102750005D0884E18093F604809170039091710389
:102760009F938F938EE092E09F938F931F930E948D
:102770005D0888E28093F60480916E0390916F0368
:102780009F938F938FEF91E09F938F931F930E945E
:102790005D088CE38093F604809151059091520579
:1027A0009F938F9380EF91E09F938F931F930E944D
:1027B0005D088DB79EB7429651CD1092F604809178
:1027C00067059091680520915F05309160059F93A2
:1027D0008F933F932F938EED91E09F938F9311E012
:1027E0001F930E945D0884E18093F604809169053F
:1027F00090916A0520916105309162059F938F93B6
:102800003F932F938CEC91E09F938F931F930E94A3
:102810005D0888E28093F60480916B0590916C05C9
:1028200020916305309164059F938F933F932F937D
:102830008AEB91E09F938F931F930E945D088CE336
:102840008093F60480916D0590916E052091650549
:10285000309166059F938F933F932F9388EA91E081
:102860009F938F931F930E945D088DB79EB74C96E0
:10287000F5CC1092F60480EA91E09F938F9311E0DB
:102880001F930E945D0884E18093F6048091930376
:1028900090E09F938F9382E991E09F938F931F9392
:1028A0000E945D0888E28093F6048091D70490919D
:1028B000D8049F938F9384E891E09F938F931F9305
:1028C0000E945D088CE38093F6042091F60730E0C7
:1028D0008091F50790E03F932F939F938F9386E726
:1028E00091E09F938F931F930E945D08B4CC109248
:1028F000F60486E691E09F938F9311E01F930E9468
:102900005D0884E18093F60420918006332727FD3B
:10291000309580917F06992787FD90953F932F935F
:102920009F938F9386E591E09F938F931F930E94CF
:102930005D0888E28093F60420918106332727FD05
:1029400030958091820690E03F932F939F938F93D1
:1029500086E491E09F938F931F930E945D088CE320
:102960008093F6042091860630E0809183069927B3
:1029700087FD90953F932F939F938F9386E391E0EC
:102980009F938F931F930E945D088DB79EB74896C3
:1029900065CC115010936A031092F8041092F7045A
:1029A0001F91089587B18C6087B942984398089524
:1029B0004091F9045091FA044431510500F14C3D25
:1029C0005105E8F42091FF0430910005C901880FFA
:1029D000991F8417950710F4429A01C042982F5FFF
:1029E0003F4F309300052093FF04215030402417BF
:1029F000350730F0109200051092FF0401C0429A92
:102A00004091FB045091FC044431510510F443986B
:102A100008954C3D5105E8F42091FD043091FE04E9
:102A2000C901880F991F8417950710F4439A01C0B4
:102A300043982F5F3F4F3093FE042093FD042150B5
:102A400030402417350730F01092FE041092FD0438
:102A50000895439808959FB7F8943998389A88B1A3
:102A6000836088B9E9EBF0E080818C7F80838AE223
:102A70008093B8009FBF089585EA8093BC000895B5
:102A800084E98093BC0008958093BB0085E880931F
:102A9000BC00089585EC8093BC00089585E8809380
:102AA000BC000895EF92FF920F931F938CEBE82EDA
:102AB000F12C84E9F7018083109201050BEB10E003
:102AC000F8018081809302051092020580E8F701E9
:102AD00080831092BD001092BA00F801108210920B
:102AE000B9001092B8000E942B1585EAF701808387
:102AF000F801108285E8F70180831F910F91FF9004
:102B0000EF9008951F920F920FB60F9211248F939A
:102B10009F93EF93FF93809101058F5F8093010551
:102B200081508330D1F1843028F4813081F08230BB
:102B300060F508C08530C1F18530A0F1863009F01C
:102B40004FC03EC080910205880F8E5A12C08091FE
:102B500002058F5F809302058150813069F08130DA
:102B600030F0823061F0833009F047C00BC08091B3
:102B7000AA078093BB0020C08091C007FACF809144
:102B8000B507F7CF8091D107F4CF8091020584304B
:102B900010F41092010585EA10C080910305880F9A
:102BA0008D5AE7CF85EC09C0E0910305F0E08091F4
:102BB000BB00EC59F84F808385E88093BC001DC0B2
:102BC00080910305E82FF0E09091BB00E859F84FA1
:102BD00090838F5F80930305843010F0109203057B
:102BE00084E98093BC00109201058AE090E0909304
:102BF0006D0380936C0310920205FF91EF919F91FA
:102C00008F910F900FBE0F901F9018959FB7F8945B
:102C100056985E9A8AB180638AB98BB18F7C8BB9E2
:102C2000809100018A3011F4539A5B988091800062
:102C30008C708093800080918100837E80938100DE
:102C400080918100836C80938100809182008F73DA
:102C50008093820080916F00897F80936F008091C4
:102C60006F00816280936F00109205051092040539
:102C70009FBF08951F920F920FB60F9211242F93AA
:102C80003F935F936F937F938F939F93AF93BF9384
:102C900080910605882391F4209104053091050563
:102CA000809104059091050568E070E00E94414222
:102CB000261B370B3093050520930405109206055B
:102CC000BF91AF919F918F917F916F915F913F9154
:102CD0002F910F900FBE0F901F9018951F920F927B
:102CE0000FB60F9211240F931F932F933F934F937F
:102CF0005F936F937F938F939F93AF93BF93CF9384
:102D0000DF93EF93FF9320918600309187008091AD
:102D1000070590910805281B390B8091860090913A
:102D200087009093080580930705C9018D5494404E
:102D30000091090510910A05835F9A4188F40430D7
:102D400011053CF010926B03809106058F5F809314
:102D5000060581E090E090930A058093090598C0EC
:102D60000E3011050CF094C0C9018B5F9040845B5C
:102D7000914008F072C0E901C25DD140F801EE0F48
:102D8000FF1FE459F84F808191819E01281B390B68
:102D9000C90137FF03C0909581959F4F069784F432
:102DA0008091040590910505883C91054CF4809133
:102DB0000405909105050A969093050580930405F6
:102DC000F801EE0FFF1FE459F84F20813181C9014E
:102DD000880F991F820F931F8C0F9D1F64E070E076
:102DE0000E9441429B01CE010196861797071CF471
:102DF0002150304006C021976C177D0714F42F5FD7
:102E00003F4F8091040590910505E801CC0FDD1F2F
:102E1000833C9105BCF0FE01E459F84F808191811B
:102E2000A901481B590BCA0163E070E00E944142AE
:102E3000CB01880F991F860F971FC657D84F9983CC
:102E4000888304C0C657D84F19821882F801EE0F44
:102E5000FF1FE459F84F31832083F8013196F09336
:102E60000A05E0930905E530F10511F45D9A06C005
:102E70005D98E630F10511F45C9A01C05C98809190
:102E800000018A3029F4379711F45B9A01C05B98EE
:102E90008091040590910505892B49F080910405E6
:102EA0009091050501979093050580930405FF9186
:102EB000EF91DF91CF91BF91AF919F918F917F91D2
:102EC0006F915F914F913F912F911F910F910F90B3
:102ED0000FBE0F901F9018952F923F924F925F92C6
:102EE0006F927F928F929F92AF92BF92CF92DF921A
:102EF000EF92FF920F931F93CF93DF93CDB7DEB77F
:102F000022970FB6F894DEBF0FBECDBF80910F059C
:102F1000909110052091DF043091E004821B930B07
:102F20009093BF078093BE078091DD049091DE04EB
:102F300020910D0530910E05821B930B9093BB07DA
:102F40008093BA078091DB049091DC0420910B05FB
:102F500030910C05821B930B9093BD078093BC07A7
:102F6000E090C107F090C2076091E3047091E4041F
:102F7000882777FD8095982F2CE030E040E050E0E6
:102F80000E9402420027F7FC0095102FE60EF71E64
:102F9000081F191FC801B70122E030E040E050E0EF
:102FA0000E9476423093C2072093C107E090CB077E
:102FB000F090CC076091E1047091E204882777FDDE
:102FC0008095982F2CE030E040E050E00E940242D3
:102FD0000027F7FC0095102FE60EF71E081F191F9B
:102FE000C801B70122E030E040E050E00E947642A4
:102FF0003093CC072093CB072091B3073091B407CF
:103000006091E5047091E604882777FD8095982FFC
:10301000442737FD4095542F620F731F841F951F5F
:1030200022E030E040E050E00E9476423093B40766
:103030002093B3074091450550914605609147059F
:10304000709148052091E3043091E404C901880F90
:10305000991F820F931F880F991F880F991FAA2706
:1030600097FDA095BA2F840F951FA61FB71F8093B9
:10307000450590934605A0934705B09348054091B8
:10308000490550914A0560914B0570914C0520917E
:10309000E1043091E204C901880F991F820F931F48
:1030A000880F991F880F991FAA2797FDA095BA2FFF
:1030B000840F951FA61FB71F8093490590934A055B
:1030C000A0934B05B0934C052091E3043091E404A8
:1030D0008091550590915605820F931F9093560548
:1030E000809355052091E1043091E20480915705C9
:1030F00090915805820F931F909358058093570520
:103100008091590590915A05019690935A058093A4
:103110005905209141053091420540914305509158
:1031200044058091BE079091BF07AA2797FDA095FF
:10313000BA2F820F931FA41FB51F80934105909350
:103140004205A0934305B09344058091BE0790913A
:10315000BF079C01442737FD4095542F8091C3073A
:103160009091C407A091C507B091C607280F391FD9
:103170004A1F5B1F2093C3073093C4074093C507C2
:103180005093C607203B83E8380788E0480780E073
:10319000580764F0205B3348484050402093C307F1
:1031A0003093C4074093C5075093C6078091C30767
:1031B0009091C407A091C507B091C607B7FF0CC096
:1031C00080559C47A74FBF4F8093C3079093C40778
:1031D000A093C507B093C60790918D059A83992354
:1031E00009F08AC080918E05882309F085C08091FE
:1031F000DA0786FF81C06091BE077091BF072091FA
:103200003105309132054091330550913405E090FD
:103210009503FF2400E010E0882777FD8095982F24
:103220000E94024220E038E040E050E00E947642F6
:10323000CA01B901A80197010E94024220E030E1D1
:1032400040E050E00E94764259016A012093CC058B
:103250003093CD054093CE055093CF056091BE07C6
:103260007091BF072091390530913A0540913B0597
:1032700050913C05882777FD8095982F0E94024247
:1032800020E038E040E050E00E947642CA01B901F7
:10329000A80197010E94024220E030E140E050E0A6
:1032A0000E9476422093C8053093C9054093CA0511
:1032B0005093CB05D601C501D7FE07C0B095A095A8
:1032C000909581959F4FAF4FBF4F81389105A105D4
:1032D000B10574F457FF07C050954095309521957E
:1032E0003F4F4F4F5F4F2138310541055105A4F045
:1032F00081E08093540510C01092C8051092C90552
:103300001092CA051092CB051092CC051092CD05F3
:103310001092CE051092CF058091BA079091BB070D
:103320002090CC053090CD054090CE055090CF0533
:10333000820D931D9093BB078093BA070091BA0743
:103340001091BB07A090C805B090C905C090CA05F0
:10335000D090CB0580919603682E772488249924F9
:10336000C401B301A60195010E94024220E032E0AF
:1033700040E050E00E947642020F131F1093BB07FB
:103380000093BA0720913D0530913E0540913F05DD
:10339000509140058091BA079091BB07AA2797FDED
:1033A000A095BA2F820F931FA41FB51F80933D05D0
:1033B00090933E05A0933F05B09340054091390599
:1033C00050913A0560913B0570913C058091BA0798
:1033D0009091BB072091890530918A05821B930B40
:1033E000AA2797FDA095BA2F840F951FA61FB71F78
:1033F0008093390590933A05A0933B05B0933C0523
:103400008091390590913A05A0913B05B0913C051A
:10341000E0907803F090790300917A0310917B0398
:10342000E816F9060A071B0704F580E197E2A0E019
:10343000B0E08E199F09A00BB10B809339059093D2
:103440003A05A0933B05B0933C05809139059091D6
:103450003A05A0913B05B0913C0580933D059093C2
:103460003E05A0933F05B09340052091390530916A
:103470003A0540913B0550913C0588279927DC018E
:103480008E199F09A00BB10B281739074A075B0754
:1034900004F580EF98EDAFEFBFEFE80EF91E0A1FBD
:1034A0001B1FE0923905F0923A0500933B051093FB
:1034B0003C058091390590913A05A0913B05B0916A
:1034C0003C0580933D0590933E05A0933F05B09346
:1034D00040058091DD049091DE040F9734F488E17B
:1034E0009CEF9093BB078093BA078091DD04909185
:1034F000DE04079734F480E398EF9093BB07809342
:10350000BA079091000199839A30A9F48091DD0463
:103510009091DE04835F934034F088EE93E09093C3
:10352000BB078093BA078091DD049091DE048A5F27
:103530009340DCF014C08091DD049091DE04855E40
:10354000974034F088EE93E09093BB078093BA07DE
:103550008091DD049091DE04835F974034F080ED2C
:1035600097E09093BB078093BA078091BC07909136
:10357000BD078A199B099093BD078093BC070091F2
:10358000BC071091BD07C401B301A20191010E94C3
:10359000024220E032E040E050E00E947642021B0E
:1035A000130B1093BD070093BC0720913505309194
:1035B000360540913705509138058091BC079091B0
:1035C000BD07AA2797FDA095BA2F820F931FA41FAE
:1035D000B51F8093350590933605A0933705B093BA
:1035E0003805409131055091320560913305709155
:1035F00034058091BC079091BD0720918B053091D7
:103600008C05821B930BAA2797FDA095BA2F840FD8
:10361000951FA61FB71F8093310590933205A09385
:103620003305B09334058091310590913205A09116
:103630003305B0913405E0907403F0907503009168
:10364000760310917703E816F9060A071B0704F5BD
:1036500088EA91E6A0E0B0E08E199F09A00BB10BBB
:103660008093310590933205A0933305B0933405D0
:103670008091310590913205A0913305B0913405C8
:103680008093350590933605A0933705B0933805A0
:103690002091310530913205409133055091340528
:1036A00088279927DC018E199F09A00BB10B2817D9
:1036B00039074A075B0704F588E59EE9AFEFBFEFDE
:1036C000E80EF91E0A1F1B1FE0923105F092320529
:1036D00000933305109334058091310590913205A4
:1036E000A0913305B091340580933505909336054C
:1036F000A0933705B09338058091DB049091DC04EA
:103700000F9734F488E19CEF9093BD078093BC073A
:103710008091DB049091DC04079734F480E398EF08
:103720009093BD078093BC0799819A30A9F480914A
:10373000DB049091DC04835F934034F088EE93E0E7
:103740009093BD078093BC078091DB049091DC04CB
:103750008A5F9340DCF014C08091DB049091DC041C
:10376000855E974034F088EE93E09093BD07809398
:10377000BC078091DB049091DC04835F974034F0B8
:1037800080ED97E09093BD078093BC0780917A000D
:10379000886C80937A008091410590914205A091B8
:1037A0004305B091440580932D0590932E05A09379
:1037B0002F05B09330058091310590913205A0918D
:1037C0003305B091340580931D0590931E05A09399
:1037D0001F05B09320058091390590913A05A0917D
:1037E0003B05B0913C058093250590932605A09359
:1037F0002705B09328058091350590913605A09155
:103800003705B09138058093210590932205A09348
:103810002305B093240580913D0590913E05A0912C
:103820003F05B09140058093290590932A05A09308
:103830002B05B0932C058091DA0787FF63C02A819E
:10384000222309F05FC080918E05882309F05AC0B9
:103850008091BC079091BD07893C91055CF0209157
:10386000BC073091BD078091BC079091BD072052E5
:10387000334011C08091BC079091BD0788539F4F82
:10388000A4F42091BC073091BD078091BC079091B2
:10389000BD07205E3C4F880F991F880F991F280F86
:1038A000391F3093BD072093BC078091BA079091D0
:1038B000BB07893C91055CF02091BA073091BB07AA
:1038C0008091BA079091BB072052334011C080917C
:1038D000BA079091BB0788539F4FA4F42091BA0771
:1038E0003091BB078091BA079091BB07205E3C4F97
:1038F000880F991F880F991F280F391F3093BB0716
:103900002093BA0722960FB6F894DEBF0FBECDBF44
:10391000DF91CF911F910F91FF90EF90DF90CF90AB
:10392000BF90AF909F908F907F906F905F904F90DF
:103930003F902F9008950F931F930AE710E0F8012E
:103940008081877380838091DB049091DC04909365
:10395000BD078093BC078091DD049091DE049093B5
:10396000BB078093BA078091DF049091E0049093A5
:10397000BF078093BE076091E3047091E404882739
:1039800077FD8095982F2CE030E040E050E00E94D9
:1039900002427093C2076093C1076091E104709185
:1039A000E204882777FD8095982F0E940242709349
:1039B000CC076093CB078091E5049091E604909347
:1039C000B4078093B307F8018081886C808360918D
:1039D000FD0770E080E090E024EC39E040E050E04A
:1039E0000E94024260937403709375038093760380
:1039F000909377036091FE0770E080E090E00E9472
:103A00000242609378037093790380937A039093D2
:103A10007B031F910F9108958091040590910505F6
:103A2000813A91050CF40AC38091DD078B3F98F031
:103A30008B3F19F480915F050EC08C3F19F4809183
:103A4000610509C08D3F19F48091630504C08E3F64
:103A500021F48091650580938303809183038823FB
:103A600019F41092830304C08F3F11F480938303F1
:103A70008091DC078B3F98F08B3F19F480915F05B4
:103A80000EC08C3F19F48091610509C08D3F19F477
:103A90008091630504C08E3F21F480916505809379
:103AA000820380918203882319F41092820305C057
:103AB000843618F084E6809382038091DE078B3F82
:103AC00098F08B3F19F480915F050EC08C3F19F47C
:103AD0008091610509C08D3F19F48091630504C090
:103AE0008E3F21F480916505809384038091840347
:103AF000882319F41092840305C0843618F084E6F4
:103B0000809384038091E0078B3F98F08B3F19F4FA
:103B100080915F050EC08C3F19F48091610509C04A
:103B20008D3F19F48091630504C08E3F21F480918C
:103B300065058093850380918503882319F410928D
:103B4000850304C08F3F11F4809385038091E707BC
:103B50008B3F98F08B3F19F480915F050EC08C3F2E
:103B600019F48091610509C08D3F19F480916305B6
:103B700004C08E3F21F48091650580938603809177
:103B80008603882319F41092860304C08F3F11F432
:103B9000809386038091E8078B3F98F08B3F19F460
:103BA00080915F050EC08C3F19F48091610509C0BA
:103BB0008D3F19F48091630504C08E3F21F48091FC
:103BC000650580938703809187038B3010F48AE02A
:103BD00002C08F3F11F4809387038091E9078B3FE8
:103BE00098F08B3F19F480915F050EC08C3F19F45B
:103BF0008091610509C08D3F19F48091630504C06F
:103C00008E3F21F48091650580938803809188031D
:103C1000882319F41092880304C08F3F11F4809315
:103C200088038091EE078B3F98F08B3F19F48091C9
:103C30005F050EC08C3F19F48091610509C08D3F6E
:103C400019F48091630504C08E3F21F480916505CD
:103C500080938A0380918A03882319F410928A033F
:103C600004C08F3F11F480938A038091EF078B3F4C
:103C700098F08B3F19F480915F050EC08C3F19F4CA
:103C80008091610509C08D3F19F48091630504C0DE
:103C90008E3F21F48091650580938B0380918B0387
:103CA000882319F410928B0304C08F3F11F4809382
:103CB0008B038091F0078B3F98F08B3F19F4809134
:103CC0005F050EC08C3F19F48091610509C08D3FDE
:103CD00019F48091630504C08E3F21F4809165053D
:103CE00080938C0380918C03882319F410928C03A9
:103CF00004C08F3F11F480938C038091F1078B3FB8
:103D000098F08B3F19F480915F050EC08C3F19F439
:103D10008091610509C08D3F19F48091630504C04D
:103D20008E3F21F48091650580938D0380918D03F2
:103D3000882319F410928D0304C08F3F11F48093EF
:103D40008D038091F2078B3F98F08B3F19F480919F
:103D50005F050EC08C3F19F48091610509C08D3F4D
:103D600019F48091630504C08E3F21F480916505AC
:103D700080938E0380918E03882319F410928E0312
:103D800004C08F3F11F480938E03809102088B3F13
:103D900098F08B3F19F480915F050EC08C3F19F4A9
:103DA0008091610509C08D3F19F48091630504C0BD
:103DB0008E3F21F48091650580938F0380918F035E
:103DC000882319F410928F0304C08F3F11F480935D
:103DD0008F03809103088B3F98F08B3F19F48091FB
:103DE0005F050EC08C3F19F48091610509C08D3FBD
:103DF00019F48091630504C08E3F21F4809165051C
:103E00008093900380919003882319F4109290037B
:103E100004C08F3F11F480939003809104088B3F7E
:103E200098F08B3F19F480915F050EC08C3F19F418
:103E30008091610509C08D3F19F48091630504C02C
:103E40008E3F21F4809165058093910380919103C9
:103E5000882319F41092910304C08F3F11F48093CA
:103E60009103809105088B3F98F08B3F19F4809166
:103E70005F050EC08C3F19F48091610509C08D3F2C
:103E800019F48091630504C08E3F21F4809165058B
:103E90008093920380919203882319F410929203E5
:103EA00004C08F3F11F4809392038091F3078B3FFE
:103EB00098F08B3F19F480915F050EC08C3F19F488
:103EC0008091610509C08D3F19F48091630504C09C
:103ED0008E3F21F480916505809393038091930335
:103EE000882319F41092930304C08F3F11F4809338
:103EF00093038091F8078B3F98F08B3F19F48091E2
:103F00005F050EC08C3F19F48091610509C08D3F9B
:103F100019F48091630504C08E3F21F480916505FA
:103F20008093940380919403882319F4109294034E
:103F300004C08F3F11F4809394038091FB078B3F63
:103F400098F08B3F19F480915F050EC08C3F19F4F7
:103F50008091610509C08D3F19F48091630504C00B
:103F60008E3F21F4809165058093950380919503A0
:103F7000882319F41092950304C08F3F11F48093A5
:103F800095038091FC078B3F98F08B3F19F480914B
:103F90005F050EC08C3F19F48091610509C08D3F0B
:103FA00019F48091630504C08E3F21F4809165056A
:103FB0008093960380919603882319F410929603B8
:103FC00004C08F3F11F480939603809101088B3FCA
:103FD00098F08B3F19F480915F050EC08C3F19F467
:103FE0008091610509C08D3F19F48091630504C07B
:103FF0008E3F21F48091650580939703809197030C
:10400000882319F41092970304C08F3F11F4809312
:10401000970360918A0370E080E090E00E943A3E4E
:1040200027E137EB41ED58E30E949F4160937E0307
:1040300070937F0380938003909381030895809110
:104040005B05882301F51092C0071092AA07109211
:10405000B5071092D1078091C004882311F0809396
:10406000AA078091C104882311F08093C007809132
:10407000C204882311F08093D1078091C304882360
:1040800011F08093B5078091AA0790E09093A20663
:104090008093A1068091C00790E09093A40680933E
:1040A000A3068091D10790E09093A6068093A50681
:1040B0008091B50790E09093A8068093A706109290
:1040C0000105109202050E943C15089510921605F4
:1040D00010921505109218051092170580E090E0D7
:1040E000A0E0B0E08093190590931A05A0931B05FA
:1040F000B0931C0510920C0510920B0510920E0542
:1041000010920D051092100510920F051092950354
:10411000109296030E949B1C84E690E00E94B80BCC
:104120000E949B1C8091DA0780FF10C080910E03D3
:1041300090910F03875B934038F480910E03909128
:104140000F038E5E924010F40E94C70F8091DB0433
:104150009091DC0490930C0580930B058091DD0415
:104160009091DE0490930E0580930D058091DF04FD
:104170009091E0049093100580930F0580910D05B8
:1041800090910E05909312058093110580910B0577
:1041900090910C05909314058093130584E00E9480
:1041A000E1378050944058F18091CB079091CC0733
:1041B00097FF03C0909581959F4F6CE070E00E943F
:1041C000414270931805609317058091C107909143
:1041D000C20797FF03C0909581959F4F6CE070E0F8
:1041E0000E94414270931605609315056091D904B1
:1041F0007091DA04882777FD8095982F17C084E0A6
:104200000E94E137909316058093150586E00E9481
:10421000E137909318058093170588E00E94E137F5
:10422000AA2797FDA095BA2FBC01CD010E94E740B7
:104230006093190570931A0580931B0590931C05D4
:104240001092310510923205109233051092340508
:1042500010923505109236051092370510923805E8
:104260001092390510923A0510923B0510923C05C8
:1042700010923D0510923E0510923F0510924005A8
:104280001092410510924205109243051092440588
:104290001092BD071092BC071092BB071092BA078C
:1042A0001092BF071092BE0780910A0390910B03F2
:1042B000A0910C03B0910D03909362078093610766
:1042C0001092E8041092E70410924D0510924E05EA
:1042D00010924F051092500580916E0390916F03DC
:1042E000909371038093700382E390E09093D404E1
:1042F0008093D3046091FD0770E080E090E024ECAF
:1043000039E040E050E00E9402426856754C8F4F01
:104310009F4F60937403709375038093760390931B
:1043200077036091FE0770E080E090E00E94024217
:104330006856754C8F4F9F4F609378037093790345
:1043400080937A0390937B0310927D0310927C03F9
:10435000109278051092770510927A0510927905DF
:1043600060916E0370916F03882777FD8095982F79
:104370002EE036E040E050E00E9402426093C30726
:104380007093C4078093C5079093C6071092C8071F
:104390001092C70708951F93182F0EC080915B05D8
:1043A000882361F484E690E09093D4048093D3044E
:1043B0008AEF90E00E94D70B115080F71F9108956B
:1043C0008091D207E82FF0E0EE0FFF1FE459F84F7D
:1043D000808191818D5E9F4F14F0109298038081AF
:1043E00091818A5B9F4FDCF4809198038823B9F414
:1043F00081E080939803809153058F5F80935305EC
:1044000080915305853028F4809153050E94CB217B
:10441000089588EE93E09093D4048093D304089594
:104420002F923F924F925F926F927F928F929F92C4
:10443000AF92BF92CF92DF92EF92FF920F931F93B2
:10444000CF93DF93CDB7DEB7A2970FB6F894DEBF58
:104450000FBECDBF0E946C17299A2091750530912F
:1044600076058091E407482F50E0465F5F4F5887FC
:104470004F834217530714F438872F838091040524
:1044800090910505883791050CF071C0809103016A
:10449000882399F480910403909105038F5F9F4FC7
:1044A00061F488E99AE39093D4048093D30480E084
:1044B0009CE090930503809304038091B205909152
:1044C000B305009731F001979093B3058093B2053F
:1044D00004C010925B0510925C05809100018A3047
:1044E00011F4289A01C0289880915D0590915E058D
:1044F000895E934008F403C48091EB07A82FB0E0D5
:10450000B887AF8381E080935C05E091D2072E2FBE
:1045100030E0220F331FF901E657F84F1182108265
:10452000A091D307B0E0AA0FBB1FFD01E657F84FDB
:1045300011821082E091D5074E2F50E0440F551F95
:10454000CA018657984FFC01118210822459384FB6
:10455000F90111821082A459B84F11961C921E9233
:104560004459584FDA0111961C921E92CDC3809186
:104570000405909105058D3891050CF4C5C3109282
:104580005C058091EC0722E3829FC0011124909387
:10459000B3058093B205EF81F885B9976CF08091EF
:1045A0005D0590915E05FFEF8F3F9F0729F0019613
:1045B00090935E0580935D0580915D0590915E0509
:1045C0008F3F910509F0E8F41092C4051092C505DB
:1045D0001092C6051092C7051092C0051092C10531
:1045E0001092C2051092C3051092740510927305C3
:1045F0008A3F910531F481E090E09093AA05809381
:10460000A90520915F05309160058091D607E82FBC
:10461000F0E0EE0FFF1FE459F84F8081918182593D
:104620009F4F281739071CF42F5F3F4F0CC0808124
:10463000918182599F4F821793074CF421153105C0
:1046400031F0215030403093600520935F05209178
:104650006105309162058091D707E82FF0E0EE0FF9
:10466000FF1FE459F84F8081918182599F4F28178D
:1046700039071CF42F5F3F4F0CC080819181825914
:104680009F4F821793074CF42115310531F02150CB
:10469000304030936205209361052091630530918D
:1046A00064058091D807E82FF0E0EE0FFF1FE45972
:1046B000F84F8081918182599F4F281739071CF448
:1046C0002F5F3F4F0CC08081918182599F4F82178D
:1046D00093074CF42115310531F0215030403093CF
:1046E00064052093630520916505309166058091EE
:1046F000D907E82FF0E0EE0FFF1FE459F84F808153
:10470000918182599F4F281739071CF42F5F3F4F23
:104710000CC08081918182599F4F821793074CF47E
:104720002115310531F0215030403093660520933A
:104730006505209167053091680580917E0790910D
:104740007F0782599F4F281739071CF42F5F3F4F6F
:104750000EC080917E0790917F0782599F4F8217EC
:1047600093074CF42115310531F02150304030933E
:104770006805209367052091690530916A0580914D
:1047800080079091810782599F4F281739071CF4A1
:104790002F5F3F4F0EC08091800790918107825913
:1047A0009F4F821793074CF42115310531F02150AA
:1047B000304030936A052093690520916B05309154
:1047C0006C05809182079091830782599F4F28172B
:1047D00039071CF42F5F3F4F0EC0809182079091E4
:1047E000830782599F4F821793074CF42115310597
:1047F00031F02150304030936C0520936B052091AF
:104800006D0530916E0580918407909185078259DE
:104810009F4F281739071CF42F5F3F4F0EC0809120
:1048200084079091850782599F4F821793074CF414
:104830002115310531F02150304030936E05209321
:104840006D0580915F059091600597FF05C01092FE
:10485000600510925F050AC08F3F910539F034F072
:104860008FEF90E09093600580935F0580916105E4
:104870009091620597FF05C0109262051092610544
:104880000AC08F3F910539F034F08FEF90E090939C
:10489000620580936105809163059091640597FF9F
:1048A00005C010926405109263050AC08F3F910500
:1048B00039F034F08FEF90E09093640580936305B6
:1048C000809165059091660597FF05C01092660579
:1048D000109265050AC08F3F910539F034F08FEFD3
:1048E00090E09093660580936505809167059091AF
:1048F000680597FF05C010926805109267050AC009
:104900008F3F910539F034F08FEF90E09093680578
:10491000809367058091690590916A0597FF05C0AE
:1049200010926A05109269050AC08F3F910539F00F
:1049300034F08FEF90E090936A0580936905809141
:104940006B0590916C0597FF05C010926C05109255
:104950006B050AC08F3F910539F034F08FEF90E07E
:1049600090936C0580936B0580916D0590916E0519
:1049700097FF05C010926E0510926D050AC08F3F1B
:10498000910539F034F08FEF90E090936E058093AD
:104990006D05E091D407F0E0EE0FFF1FE459F84FEA
:1049A00080819181813591050CF40EC180915B0568
:1049B000882309F009C18091D507E82FF0E0EE0FB8
:1049C000FF1FE459F84F808191818C3491050CF4DC
:1049D000BFC08091B1058F5F8093B105893C08F419
:1049E000F3C01092B105299810925E0510925D05F2
:1049F0008091D207282F30E0D901AA0FBB1FA459FC
:104A0000B84F8D919C911197873491059CF48091BA
:104A1000D307E82FF0E0EE0FFF1FE459F84F808135
:104A2000918197FF03C0909581959F4F87349105A1
:104A30000CF46BC08091D307682F70E0DB01AA0FE4
:104A4000BB1FA459B84F8D919C9111978734910544
:104A50003CF0F901EE0FFF1FE459F84F808191817E
:104A60008D919C918734910564F0F901EE0FFF1F41
:104A7000E459F84F808191818734910514F042E028
:104A800001C041E0FB01EE0FFF1FE459F84F8081A8
:104A90009181863491055CF4F901EE0FFF1FE45912
:104AA000F84F80819181873491050CF043E0FB0140
:104AB000EE0FFF1FE459F84F808191818A5B9F4F71
:104AC0005CF4F901EE0FFF1FE459F84F80819181EA
:104AD000873491050CF044E0660F771F6459784FD6
:104AE000DB018D919C918A5B9F4F5CF4220F331FF9
:104AF0002459384FF90180819181863491050CF455
:104B000045E0842F0E94F1371CC08091DA0783FFB3
:104B100018C08081918197FF03C0909581959F4F28
:104B200044977CF48D919C918A5B9F4F54F481E073
:104B30008093530588EE93E09093D4048093D3043C
:104B400043C00E94D2390E940F380E94662035C0AF
:104B500080819181855B9F4FACF58091B1058F5F1E
:104B60008093B105893C80F11092B10529986FEFCF
:104B70007FEF84E00E94E93710925E0510925D0598
:104B80000E946620609115057091160584E00E94D0
:104B9000E937609117057091180586E00E94E937A2
:104BA0006091190570911A0580911B0590911C0563
:104BB0000E94B94088E00E94E9370E94D2390E94E1
:104BC000CB2102C01092B105E091D407F0E0EE0FC6
:104BD000FF1FE459F84F808191818B5A9F4F0CF051
:104BE00093C08091D507482F50E0FA01EE0FFF1FC8
:104BF000E459F84F80819181855B9F4F0CF065C02F
:104C00008091B0058F5F8093B005893C08F45FC048
:104C100088EC8093B00581E090E090935E058093EE
:104C20005D0581E080935B051092BC051092BD0587
:104C30001092BE051092BF051092410510924205D8
:104C400010924305109244051092310510923205DE
:104C500010923305109234051092390510923A05DE
:104C600010923B0510923C0580911D0590911E0508
:104C7000A0911F05B09120058093350590933605CE
:104C8000A0933705B09338058091250590912605AE
:104C9000A0912705B091280580933D0590933E058E
:104CA000A0933F05B09340051092C4051092C5052E
:104CB0001092C6051092C7051092C0051092C1054A
:104CC0001092C2051092C30502C01092B005440FA5
:104CD000551F4459584FDA018D919C918C349105A0
:104CE0008CF08091AF058F5F8093AF05893C60F0B9
:104CF00088EC8093AF0510925E0510925D051092CE
:104D00005B0502C01092AF0580916B0381508093C8
:104D10006B0380916B038F3F29F080915C058823A2
:104D200009F477C30E940C1DE0916F05F0917005A6
:104D3000FAA3E9A38091D207E82EFF24D701AA0F96
:104D4000BB1FCD018459984FFC018081918198A3AC
:104D50008F8F8091E107682E7724A657B84F0D906A
:104D6000BC91A02DBE8FAD8F8091E207A82EBB24F1
:104D700020917705309178053C8F2B8F209071051D
:104D8000309072058091D307082F10E0C801880F7A
:104D9000991FDC01A459B84F0D90BC91A02DBA8F7A
:104DA000A98F8657984FDC018D919C91988F8F8B9E
:104DB000E0917905F0917A05FE8BED8BE091D507B6
:104DC000AE2FB0E0AA0FBB1FA459B84F0D90BC91F5
:104DD000A02DBC8BAB8BE091D407F0E0EE0FFF1F52
:104DE000E459F84FC080D18028E730E0C20ED31ECE
:104DF000D0927605C09275056091870370E080E0DF
:104E000090E00E943A3E20E030E040E251E40E940F
:104E1000E83F20E030E040E85CE30E949F416F877C
:104E2000788B898B9A8B6093CD077093CE07809394
:104E3000CF079093D0076091880370E080E090E006
:104E40000E943A3E20E030EE4BE256E40E944C4095
:104E50006093B6077093B7078093B8079093B9072C
:104E60002091C504222331F08AE090E09093D4048D
:104E70008093D304E22F22FF09C080919203482F30
:104E800050E0440F551F440F551F10C023FD03C0B1
:104E900040E050E00BC08091920390E0880F991F92
:104EA000880F991F44275527481B590B20917F05D0
:104EB00030918005C901B3E0880F991FBA95E1F7D9
:104EC000821B930B840F951F68E070E00E944142A3
:104ED0002B017093800560937F05E4FF09C08091EA
:104EE0009203482F50E0440F551F440F551F10C028
:104EF000E5FD03C040E050E00BC08091920390E0DC
:104F0000880F991F880F991F44275527481B590B55
:104F100080918105909182059C01E3E0220F331F6F
:104F2000EA95E1F7281B390BCA01820F931F68E04D
:104F300070E00E9441424B017093820560938105AD
:104F40008091C404282F83FF03C082E390E004C053
:104F500082FF07C08EEC9FEF9093840580938305BA
:104F600004C0109284051092830521FF09C080912E
:104F70007C0390917D03019690937D0380937C0345
:104F800024FF09C080917C0390917D030197909349
:104F90007D0380937C034F8D58A1469DC001479DA2
:104FA000900D569D900D112429A13AA1220F331F77
:104FB00069A17AA1260F371FED8DFE8DEA9DD001E4
:104FC000EB9DB00DFA9DB00D11244B8D5C8DA41B93
:104FD000B50BBAA3A9A3820F931F64E070E00E94EF
:104FE000414289A19AA1860F971F9AA389A3C20162
:104FF00062E070E00E944142A9A1BAA1A60FB71FCA
:10500000BAA3A9A3B0937005A0936F05E98DFA8D9B
:10501000E69DC001E79D900DF69D900D1124910134
:10502000220F331F220D331D4F89588DB501469F26
:105030005001479FB00C569FB00C1124AD89BE891A
:10504000AA1ABB0A820F931F64E070E00E944142DB
:10505000A60EB71EC40162E070E00E944142A60E97
:10506000B71EB0927205A092710520918305309110
:105070008405220F331F220F331FEB89FC892E1B5F
:105080003F0B30937405209373058091860680FF53
:1050900056C080919203813808F451C080917F06F8
:1050A000992787FD9095AC01469DC001479D900DC5
:1050B000569D900D112469A17AA1680F791F7093F4
:1050C000700560936F0580918006992787FD909504
:1050D000DC01A69DC001A79D900DB69D900D1124E9
:1050E000A80EB91EB0927205A0927105809181063A
:1050F000992787FD9095280F391F309374052093C9
:1051000073052091DF0730E080918306992787FDA2
:105110009095FC012E9FC0012F9F900D3E9F900DFA
:10512000112490937D0380937C038091820690E00C
:105130008C159D0524F490937605809375058091D8
:1051400075059091760597FF04C010927605109230
:1051500075058091DA0782FF0CC080E090E0A0E046
:10516000B0E08093B6079093B707A093B807B093C9
:10517000B90720E030E040E050E06F857889898908
:105180009A890E942241882364F480E090E0A0E0A4
:10519000B0E08093CD079093CE07A093CF07B09354
:1051A000D00720E030E040E050E06091B607709119
:1051B000B7078091B8079091B9070E9422418823D0
:1051C00064F480E090E0A0E0B0E08093B6079093B4
:1051D000B707A093B807B093B907E0916F05F091B6
:1051E000700520917B0530917C05CF0164E070E073
:1051F0000E94414277FF03C0709561957F4F26174B
:1052000037077CF4CF01F7FF03C0909581959F4F3E
:1052100064E070E00E94414270937C0560937B05DE
:1052200006C02150304030937C0520937B05E091EF
:105230007105F091720520917D0530917E05CF01B9
:1052400064E070E00E94414277FF03C07095619571
:105250007F4F261737077CF4CF01F7FF03C09095E7
:1052600081959F4F64E070E00E94414270937E05FB
:1052700060937D0506C02150304030937E05209319
:105280007D05F801EE0FFF1FE459F84F20813181B1
:105290008091F907482F50E04217530744F480915A
:1052A000060882FF04C081E080938F0515C08091BD
:1052B0008F05882389F0F801EE0FFF1FE459F84F9E
:1052C000208131818091FA07BA01681B7109261784
:1052D000370714F410928F05F801EE0FFF1FE45901
:1052E000F84F8081918166277727641B750B86179D
:1052F000970744F48091060883FF04C081E08093FF
:10530000900515C080919005882389F0000F111F2A
:105310000459184FD8012D913C918091FA0790E0E3
:10532000841B950B8217930714F410929005F701D4
:10533000EE0FFF1FE459F84F8081918148175907FC
:1053400044F48091060880FF04C081E080939205B8
:1053500015C080919205882389F0F701EE0FFF1F99
:10536000E459F84F208131818091FA07FA01E81B56
:10537000F1092E173F0714F410929205F701EE0F72
:10538000FF1FE459F84F808191818617970744F4F5
:105390008091060881FF04C081E08093910517C0C9
:1053A00080919105882399F0EE0CFF1C2CE637E0E4
:1053B000E20EF31ED7012D913C918091FA0790E007
:1053C000841B950B8217930714F41092910580911A
:1053D0008F05882321F480919005882321F081E0B6
:1053E00080938E0502C010928E05809192058823CD
:1053F00021F480919105882351F081E080938D05FF
:1054000010928E0510928F051092900502C0109296
:105410008D0580918E05882311F40C94AD3784E6B8
:1054200090E09093D4048093D3048091F80790E0A7
:10543000EF81F8858E179F0714F498878F838091EA
:10544000910390E09093FA048093F9048091920381
:1054500090E09093FC048093FB040E94D814809108
:105460005C05882381F110927405109273051092E7
:10547000700510926F05109272051092710580E010
:1054800090E0A8ECBFE38093CD079093CE07A09364
:10549000CF07B093D0078BE09CEBA2E3BCE38093F3
:1054A000B6079093B707A093B807B093B9071092C7
:1054B0008E0510928D0510927C0510927B0510923E
:1054C0007E0510927D052091AF073091B007409185
:1054D000B1075091B20780911D0590911E05A091D2
:1054E0001F05B0912005820F931FA41FB51F809345
:1054F000AF079093B007A093B107B093B207209184
:10550000AB073091AC074091AD075091AE07809149
:10551000250590912605A0912705B0912805820FB9
:10552000931FA41FB51F8093AB079093AC07A09364
:10553000AD07B093AE0750908D05552029F48091AA
:105540008E05882309F44FC01092EA041092E904F2
:105550001092450510924605109247051092480595
:105560001092490510924A0510924B0510924C0575
:105570001092AF071092B0071092B1071092B207C5
:105580001092AB071092AC071092AD071092AE07C5
:105590008091310590913205A0913305B091340589
:1055A0008093350590933605A0933705B093380561
:1055B0008091390590913A05A0913B05B0913C0549
:1055C00080933D0590933E05A0933F05B093400521
:1055D00010928C0510928B0510928A051092890505
:1055E000552009F0F5C080918E05882309F0F0C0A0
:1055F00060911D0570911E0580911F0590912005F9
:10560000A090E607BB24CC24DD24E090C107F090F5
:10561000C207A60195010E9476420027F7FC00957B
:10562000102F2E193F09400B510BCA01B90120E17F
:1056300030E040E050E00E94764239014A0160913A
:105640002505709126058091270590912805E09009
:10565000CB07F090CC07A60195010E947642002767
:10566000F7FC0095102F2E193F09400B510BCA0172
:10567000B90120E130E040E050E00E94764279013B
:105680008A0180917B0590917C05819734F480910B
:105690007D0590917E058197A4F0C401B30123E0BC
:1056A00030E040E050E00E94764239014A01C801F2
:1056B000B70123E030E040E050E00E9476427901FB
:1056C0008A01E091D507F0E0EE0FFF1FE459F84F93
:1056D0000190F081E02DF7FF03C0F095E195FF4FB9
:1056E0007A97A4F0C401B30123E030E040E050E039
:1056F0000E94764239014A01C801B70123E030E037
:1057000040E050E00E94764279018A01F1E26F1692
:1057100071048104910434F070E2672E712C812CA5
:10572000912C11C020EE62162FEF72062FEF820629
:105730002FEF920644F460EE662E6FEF762E6FEF39
:10574000862E6FEF962E31E2E316F1040105110566
:1057500034F050E2E52EF12C012D112D11C040EE58
:10576000E4164FEFF4064FEF04074FEF140744F42D
:1057700040EEE42E4FEFF42E4FEF042F4FEF142F97
:105780008091310590913205A0913305B091340597
:1057900086199709A809B9098093310590933205B4
:1057A000A0933305B09334058091390590913A0563
:1057B000A0913B05B0913C058E199F09A00BB10B40
:1057C0008093390590933A05A0933B05B0933C052F
:1057D0008091E9049091EA048F3F910509F008F463
:1057E00045C4552009F0DCC380918E05882309F05B
:1057F000D7C380915405882309F0D2C36091AF07C5
:105800007091B0078091B1079091B20720E031E02C
:1058100040E050E00E9476422093AF073093B007FB
:105820004093B1075093B2076091AB077091AC07FA
:105830008091AD079091AE0720E031E040E050E06C
:105840000E9476422093AB073093AC074093AD079C
:105850005093AE07E090E607FF2400E010E02091AF
:105860004505309146054091470550914805C801CE
:10587000B7010E94024220E031E040E050E00E9487
:105880007642209345053093460540934705509353
:1058900048052091490530914A0540914B055091AA
:1058A0004C05C801B7010E94024220E031E040E00F
:1058B00050E00E9476422093490530934A05409378
:1058C0004B0550934C056091AF077091B0078091E4
:1058D000B1079091B207209145053091460540915E
:1058E000470550914805E090FF07FF2400E010E0D5
:1058F000621B730B840B950BA80197010E947642E3
:10590000CA01B90120E031E040E050E00E94764257
:10591000690130938C0520938B056091AB077091E2
:10592000AC078091AD079091AE0720914905309169
:105930004A0540914B0550914C05621B730B840B3B
:10594000950BA80197010E947642CA01B90120E097
:1059500031E040E050E00E947642890130938A05B0
:105960002093890580917B0590917C058197BCF4FB
:1059700080917D0590917E0581978CF4E091D5070B
:10598000F0E0EE0FFF1FE459F84F0190F081E02D99
:10599000F7FF03C0F095E195FF4F7A9794F0C601A9
:1059A00062E070E00E94414270938C0560938B0529
:1059B000C80162E070E00E94414270938A056093E2
:1059C0008905E0902105F0902205009123051091B2
:1059D000240580911D0590911E05A0911F05B09191
:1059E0002005E81AF90A0A0B1B0BE092B805F092A1
:1059F000B9050093BA051093BB05809135059091C8
:105A00003605A0913705B09138058E199F09A00B76
:105A1000B10B8093350590933605A0933705B0936D
:105A200038056090290570902A0580902B0590908C
:105A30002C058091250590912605A0912705B09110
:105A40002805681A790A8A0A9B0A6092B40570923E
:105A5000B5058092B6059092B70580913D0590916D
:105A60003E05A0913F05B091400586199709A80908
:105A7000B90980933D0590933E05A0933F05B093EF
:105A800040052091C7073091C807213831054CF0F7
:105A900080910F05909110050196909310058093C9
:105AA0000F0520583F4F4CF480910F059091100541
:105AB00001979093100580930F051092C8071092DC
:105AC000C70781E090E09093A00580939F05109216
:105AD000A5051092A6051092A7051092A805809121
:105AE000AF079091B007A091B107B091B207209194
:105AF0009705309198054091990550919A05281B7A
:105B0000390B4A0B5B0B57FF07C0509540953095FA
:105B100021953F4F4F4F5F4F20523E4440405040F1
:105B20000CF0C1C071E0E71670E1F70670E00707FE
:105B300070E017070CF452C080919E05882309F489
:105B400049C0D801C7012CE0B595A79597958795D1
:105B50002A95D1F701969093A00580939F05D801CF
:105B6000C701F3E0B595A79597958795FA95D1F775
:105B70008093A5059093A605A093A705B093A805CB
:105B800089589341A040B04064F088E893E1A0E0D8
:105B9000B0E08093A5059093A605A093A705B093C8
:105BA000A8056091A5057091A6058091A705909123
:105BB000A80520E031E040E050E00E94764280916C
:105BC0008B0590918C05820F931F90938C05809389
:105BD0008B0566C081E080939E0562C010929E0591
:105BE000F0E0EF16F0EFFF06FFEF0F07FFEF1F07E4
:105BF0000CF056C080919D05882309F44DC088277C
:105C00009927DC018E199F09A00BB10BECE0B5952B
:105C1000A79597958795EA95D1F701969093A0055A
:105C200080939F05C801B70128E030E040E050E0D4
:105C30000E9476422093A5053093A6054093A705C0
:105C40005093A80528573C4E4F4F5F4F64F488E7A8
:105C50009CEEAFEFBFEF8093A5059093A605A093B0
:105C6000A705B093A8056091A5057091A605809140
:105C7000A7059091A80520E031E040E050E00E94A7
:105C8000764280918B0590918C05820F931F9093A3
:105C90008C0580938B0511C081E080939D050DC01C
:105CA00010929D050AC01092A00510929F0584EFE6
:105CB00091E0909373038093720380910008C82E43
:105CC000DD2480919F059091A005C816D90624F483
:105CD000D092A005C0929F0571E0E71674E0F70628
:105CE00070E0070770E0170774F080910B05909142
:105CF0000C0520919F053091A005820F931F909372
:105D00000C0580930B0580E0E8168CEFF8068FEF0A
:105D100008078FEF180774F480910B0590910C051C
:105D200020919F053091A005821B930B90930C0549
:105D300080930B0581E090E09093A00580939F05F0
:105D40001092A1051092A2051092A3051092A4052D
:105D50008091AB079091AC07A091AD07B091AE07D1
:105D600020919305309194054091950550919605A9
:105D7000281B390B4A0B5B0B57FF07C0509540950A
:105D8000309521953F4F4F4F5F4F20523E4440404A
:105D900050400CF0C1C0A1E06A16A0E17A06A0E074
:105DA0008A06A0E09A060CF452C080919C058823D4
:105DB00009F449C0D401C3017CE0B595A795979536
:105DC00087957A95D1F701969093A00580939F05CA
:105DD000D401C30163E0B595A795979587956A951A
:105DE000D1F78093A1059093A205A093A305B0934A
:105DF000A40589589341A040B04064F088E893E13D
:105E0000A0E0B0E08093A1059093A205A093A30524
:105E1000B093A4056091A1057091A2058091A3059E
:105E20009091A40520E031E040E050E00E947642ED
:105E30008091890590918A05820F931F90938A051E
:105E40008093890566C081E080939C0562C01092B2
:105E50009C05F0E06F16F0EF7F06FFEF8F06FFEF77
:105E60009F060CF056C080919B05882309F44DC015
:105E700088279927DC0186199709A809B9095CE0E8
:105E8000B595A795979587955A95D1F701969093D3
:105E9000A00580939F05C401B30128E030E040E0F5
:105EA00050E00E9476422093A1053093A2054093D2
:105EB000A3055093A40528573C4E4F4F5F4F64F401
:105EC00088E79CEEAFEFBFEF8093A1059093A2050A
:105ED000A093A305B093A4056091A1057091A205BC
:105EE0008091A3059091A40520E031E040E050E0CE
:105EF0000E9476428091890590918A05820F931FB6
:105F000090938A058093890511C081E080939B0559
:105F10000DC010929B050AC01092A00510929F051B
:105F200084EF91E0909373038093720380919F05B7
:105F30009091A005C816D90624F4D092A005C0926D
:105F40009F0571E0671674E0770670E0870670E0E1
:105F5000970674F080910D0590910E0520919F0594
:105F60003091A005820F931F90930E0580930D052D
:105F700080E068168CEF78068FEF88068FEF980622
:105F8000CCF480910D0590910E0520919F053091E4
:105F9000A005821B930B90930E0580930D050AC0FC
:105FA00010928A051092890510928C0510928B052B
:105FB0001092540520E030E040E050E06091B607D8
:105FC0007091B7078091B8079091B9070E9422415C
:105FD000882341F410928A051092890510928C054D
:105FE00010928B058091AF079091B007A091B107F7
:105FF000B091B2078093970590939805A093990567
:10600000B0939A058091AB079091AC07A091AD0732
:10601000B091AE078093930590939405A093950556
:10602000B0939605109245051092460510924705CB
:10603000109248051092490510924A0510924B059E
:1060400010924C051092AF071092B0071092B10752
:106050001092B2071092AB071092AC071092AD07E6
:106060001092AE071092EA041092E904C0907305F2
:10607000D09074058601D7FE04C0002711270C19A3
:106080001D0900311105C4F08091DA0784FD14C0A8
:1060900081E090E09093AA058093A9058091C307C1
:1060A0009091C40790937103809370038AEF90E0FE
:1060B0009093730380937203E090E307B6018827FF
:1060C00077FD8095982F2E2D30E040E050E00E9423
:1060D00002429801442737FD4095542F0E94024206
:1060E00020E032E040E050E00E94764289019A01CF
:1060F000FF24EC9CC001ED9C900DFC9C900D1124A4
:1061000064E070E00E944142600F711F882777FDB4
:106110008095982F6093BC057093BD058093BE0554
:106120009093BF0520914105309142054091430570
:1061300050914405261B370B480B590B2093410502
:1061400030934205409343055093440580914105A7
:1061500090914205A0914305B09144058155934C1F
:10616000A040B04064F080E593ECA0E0B0E0809304
:10617000410590934205A0934305B0934405809157
:10618000410590914205A0914305B0914405805B83
:106190009C43AF4FBF4F64F480EB9CE3AFEFBFEF86
:1061A0008093410590934205A0934305B093440525
:1061B0008091DA0783FF5AC180915305882339F013
:1061C00080915B05882319F40E94E0214FC1609102
:1061D0001D0570911E0580911F059091200520E0FE
:1061E00032E040E050E00E947642890137FF03C070
:1061F000109501951F4F609125057091260580919E
:1062000027059091280520E032E040E050E00E9410
:106210007642690137FF04C0D094C194D108D39469
:10622000C016D1060CF4680129E1C216D10444F568
:106230008091A9059091AA05892B11F18091720393
:1062400090917303892BE1F488EC90E09093D4044F
:106250008093D3046091C3077091C4078091C507F0
:106260009091C6072EE036E040E050E00E94764272
:1062700030937103209370031092AA051092A90520
:1062800080916E0390916F0397FF03C020E030E090
:1062900029C0E0906E03F0906F034CE152E0E40EF1
:1062A000F51E0027F7FC0095102F6091C307709131
:1062B000C4078091C5079091C6072EE036E040E004
:1062C00050E00E947642E21AF30A040B150BC80153
:1062D000B70128E631E040E050E00E9476429B01A1
:1062E000245B3040C60168E070E00E9441426F5F6D
:1062F0007F4FC90143E0880F991F4A95E1F70E943B
:1063000041423B01882477FC8094982C8091C307FC
:106310009091C407A091C507B091C607680E791E79
:106320008A1E9B1E6092C3077092C4078092C507A5
:106330009092C60780918603A82EBB24CA9CC001F8
:10634000CB9C900DDA9C900D112460E470E00E94CB
:1063500041422501461A570A141415040CF080C056
:106360008091720390917303009711F001977AC0A6
:106370008091C7079091C807820F931F9093C80719
:106380008093C70780917D0590917E0520917B05C4
:1063900030917C05820F931F68E070E00E944142BB
:1063A0006B0160E470E0C60ED71E8091700390917F
:1063B0007103AA2797FDA095BA2F0CE1E02E02E009
:1063C000F02E012D112DE81AF90A0A0B1B0BC4013E
:1063D000B3012EE036E040E050E00E947642E20E4B
:1063E000F31E041F151FC801B70128E631E040E085
:1063F00050E00E947642645B7040649DC001659DE0
:10640000900D749D900D1124B6010E944142C5016A
:10641000880F991F8A0D9B1D8617970734F090955A
:1064200081959F4F681779070CF4BC0120914105B5
:10643000309142054091430550914405CB01AA2774
:1064400097FDA095BA2F820F931FA41FB51F8093AD
:10645000410590934205A0934305B093440506C0BF
:106460008AEF90E090937303809372038091AB0561
:1064700081508093AB058F3F09F0A4C088E18093E1
:10648000AB0560911D0570911E0580911F059091CF
:106490002005E090E607FF2400E010E0A801970146
:1064A0000E94764230938A062093890660912505E2
:1064B000709126058091270590912805A8019701E4
:1064C0000E94764230938C0620938B068091C10700
:1064D0009091C20790938E0680938D068091CB0792
:1064E0009091CC079093900680938F068091BE0781
:1064F0009091BF07909392068093910680918505B5
:1065000090918605909394068093930660914D0533
:1065100070914E0580914F059091500520E032E03A
:1065200040E050E00E947642309396062093950614
:1065300080916E0390916F0390939A0680939906D1
:10654000809108039091090390939C0680939B0689
:10655000809104059091050590939E0680939D0679
:106560006091C3077091C4078091C5079091C607D9
:106570002EE036E040E050E00E9476423093A006E4
:1065800020939F068091B3079091B4079093AA0639
:106590008093A9068091D7049091D8049093B20675
:1065A0008093B10680917705909178059093C60607
:1065B0008093C5068091790590917A059093C806DD
:1065C0008093C70680918D058823A9F06091BC0750
:1065D0007091BD07882777FD8095982F0E94E7402E
:1065E0002091CD073091CE074091CF075091D00731
:1065F0000E949F4132C060911D0570911E058091DF
:106600001F0590912005E090BC07F090BD070E9407
:10661000E7402091B6073091B7074091B8075091F5
:10662000B9070E949F415B016C010027F7FC0095B0
:10663000102FC801B7010E94E7402091CD0730918B
:10664000CE074091CF075091D0070E949F419B01F8
:10665000AC01C601B5010E94E83F0E94B4407093AE
:10666000BD076093BC0780918E058823A9F06091D7
:10667000BA077091BB07882777FD8095982F0E94F5
:10668000E7402091CD073091CE074091CF07509140
:10669000D0070E949F4132C0609125057091260568
:1066A0008091270590912805E090BA07F090BB07EC
:1066B0000E94E7402091B6073091B7074091B80794
:1066C0005091B9070E949F415B016C010027F7FCC4
:1066D0000095102FC801B7010E94E7402091CD0717
:1066E0003091CE074091CF075091D0070E949F4133
:1066F0009B01AC01C601B5010E94E83F0E94B44075
:106700007093BB076093BA076091BE077091BF0793
:10671000A0902D05B0902E05C0902F05D09030058B
:106720008091B6079091B707A091B807B091B907CB
:1067300089839A83AB83BC83882777FD8095982FC4
:106740000E94E7407B018C016091CD077091CE07DC
:106750008091CF079091D0079B01AC010E94E83F48
:106760009B01AC01C801B7010E949F417B018C01D4
:10677000C601B5010E94E74029813A814B815C81C5
:106780000E949F4120E030E040E05FE30E949F4193
:106790009B01AC01C801B7010E94E83F0E94B440D0
:1067A0007093BF076093BE078091BC079091BD07AF
:1067B0009093B4068093B3068091BA079091BB077B
:1067C0009093B6068093B5068091BC079091BD0763
:1067D0008150904434F080E090E49093BD07809322
:1067E000BC078091BC079091BD078050904C34F459
:1067F00080E090EC9093BD078093BC078091BA072E
:106800009091BB078150904434F080E090E49093E5
:10681000BB078093BA078091BA079091BB0780505D
:10682000904C34F480E090EC9093BB078093BA07CF
:106830008091BE079091BF078150904434F080E072
:1068400090E49093BF078093BE078091BE0790911C
:10685000BF078050904C34F480E090EC9093BF07D9
:106860008093BE07AF80B884AA0CBB1CAA0CBB1CCB
:106870008091DA07282F80FFC7C080915C058823AC
:1068800009F0C2C08091830321FF0EC0823310F54E
:106890008091850590918605449790938805809313
:1068A00087051092AE0519C020917C0330917D03BD
:1068B000280F311D8091DF0790E0AC01249FC001BB
:1068C000259F900D349F900D112444979093880537
:1068D0008093870581E08093AE05209185053091F6
:1068E00086054091870550918805421753070CF0A3
:1068F0008BC08091AE05882309F486C08091840303
:1069000090E0241B350BBC01629FC001639F900D7A
:10691000729F900D112464E070E00E9441424B018F
:10692000C090E704D090E80460914D0570914E0549
:1069300080914F0590915005E0908503FF2400E081
:1069400010E020E830E040E050E00E947642C801CC
:10695000B7010E94024220E230E040E050E00E9495
:1069600076427EEF283E370714F428EE3EEF809102
:10697000AC059091AD05FC01A4E0EE0FFF1FAA95B8
:10698000E1F7E81BF90BC60162E070E00E944142AA
:10699000E61BF70B81E02931380714F028E131E0DC
:1069A000E21BF30BC501881999098E0F9F1F60E147
:1069B00070E00E9441427093AD056093AC058091F8
:1069C000DB0790E0880F991F880F991F68177907D8
:1069D00064F4A816B9062CF09093AD058093AC052D
:1069E00004C0B092AD05A092AC058091AC05909129
:1069F000AD05A816B90624F4B092AD05A092AC0579
:106A0000A090AC05B090AD058091E507282E332409
:106A10008101000F111F000F111FC8018055904008
:106A200045018A159B050CF44C01909298068092C2
:106A300097062091BE073091BF078091BC059091C9
:106A4000BD05A091BE05B091BF0542E0880F991F1A
:106A5000AA1FBB1F4A95D1F7281B390B91EA89164B
:106A60009104ACF0F401F595E7952E173F070CF46F
:106A7000F901C40162E070E00E94414270956195A5
:106A80007F4FCF01E617F7076CF4CB010BC0C901AC
:106A9000205B3F4F14F480EB9FEF8135910514F09C
:106AA00080E590E0980128193909281739070CF476
:106AB000C9019401201B310B2C01821793070CF4A0
:106AC00029018091BC079091BD0760906F0570907F
:106AD0007005861997099093CA078093C90720E02B
:106AE00030E040E050E069817A818B819C810E9496
:106AF00022418823F1F1E0901D05F0901E050091E0
:106B00001F05109120056091C4057091C505809105
:106B1000C6059091C7050E94E7405B016C01C80162
:106B2000B7010E94E74029813A814B815C810E9434
:106B30009F417B018C01B301882777FD8095982FB9
:106B40000E94E7409B01AC01C801B7010E94E73FEA
:106B50009B01AC01C601B5010E94E83F0E94B44010
:106B60006093C4057093C5058093C6059093C705CF
:106B70001CC02091C9073091CA07442737FD4095B2
:106B8000542F8091C4059091C505A091C605B09180
:106B9000C705820F931FA41FB51F8093C405909350
:106BA000C505A093C605B093C7058091C405909113
:106BB000C505A091C605B091C70581509A4FA04068
:106BC000B04064F080E09AEFA0E0B0E08093C405AC
:106BD0009093C505A093C605B093C7058091C405E1
:106BE0009091C505A091C605B091C705805096400B
:106BF000AF4FBF4F64F480E096E0AFEFBFEF8093FC
:106C0000C4059093C505A093C605B093C7056091D0
:106C1000C9077091CA0720917E0330917F0340918C
:106C20008003509181032B873C874D875E8788279F
:106C300077FD8095982F0E94E7407B018C01609141
:106C4000C4057091C5058091C6059091C7050E9445
:106C5000E7409B01AC016B857C858D859E850E94FC
:106C60009F419B01AC01C801B7010E94E83F0E940F
:106C7000B4407B018C016B01C20157FE04C0882720
:106C800099278419950962E070E00E944142680DDD
:106C9000791D882777FD8095982F2091970330E004
:106CA00040E050E00E94024220E430E040E050E04A
:106CB0000E9476423E832D83C216D3060CF49701C0
:106CC0006D817E81709561957F4F7A8769872617E0
:106CD00037070CF49B01F201E80DF91DCF01820F7B
:106CE000931F64E070E00E94414277FF03C060E0C0
:106CF00070E004C0261637060CF4B1018091E40759
:106D0000A82FB0E0BAA3A9A36A177B070CF4BD01B2
:106D10006093AA07CF01821B930B64E070E00E948E
:106D2000414277FF03C060E070E004C026163706DA
:106D30000CF4B101E9A1FAA16E177F070CF4BF01B1
:106D40006093C0078091BA079091BB07609071056E
:106D500070907205861997099093A9078093A807E8
:106D600020E030E040E050E069817A818B819C81B5
:106D70000E9422418823F1F1E0902505F09026053C
:106D800000912705109128056091C0057091C105FB
:106D90008091C2059091C3050E94E7405B016C01A0
:106DA000C801B7010E94E74029813A814B815C818B
:106DB0000E949F417B018C01B301882777FD80955C
:106DC000982F0E94E7409B01AC01C801B7010E94C7
:106DD000E73F9B01AC01C601B5010E94E83F0E945C
:106DE000B4406093C0057093C1058093C205909331
:106DF000C3051CC02091A8073091A907442737FD7F
:106E00004095542F8091C0059091C105A091C20575
:106E1000B091C305820F931FA41FB51F8093C005B7
:106E20009093C105A093C205B093C3058091C0059E
:106E30009091C105A091C205B091C30581589E43B0
:106E4000A040B04064F080E89EE3A0E0B0E0809312
:106E5000C0059093C105A093C205B093C30580916E
:106E6000C0059091C105A091C205B091C30580589D
:106E7000914CAF4FBF4F64F480E891ECAFEFBFEFA0
:106E80008093C0059093C105A093C205B093C3053C
:106E90006091A8077091A907882777FD8095982FA2
:106EA0000E94E7407B018C016091C0057091C10593
:106EB0008091C2059091C3050E94E7409B01AC01FF
:106EC0006B857C858D859E850E949F419B01AC01D1
:106ED000C801B7010E94E83F0E94B4402D813E8165
:106EE000621773070CF49B0149855A8524173507EF
:106EF0000CF49A01C40184199509820F931F64E070
:106F000070E00E94414277FF03C060E070E004C07F
:106F1000261637060CF4B10189A19AA168177907E2
:106F20000CF4BC016093D107821A930AC40184193E
:106F3000950964E070E00E94414277FF03C060E081
:106F400070E004C0261637060CF4B101A9A1BAA15D
:106F50006A177B0754F4BD0108C080918D05882312
:106F600011F00C94152A0C941F2A6093B507A29671
:106F70000FB6F894DEBF0FBECDBFDF91CF911F914A
:106F80000F91FF90EF90DF90CF90BF90AF909F90C8
:106F90008F907F906F905F904F903F902F900895CB
:106FA000A0E0B0E0A80FB11D0E94C842802D90E083
:106FB0000895A0E0B0E0A80FB11D062E0E94DA42AD
:106FC0000895A0E0B0E0A80FB11D0E94D542CF0106
:106FD0000895A0E0B0E0A80FB11D0B010E94E642A9
:106FE0000895863008F085E0A2E0B0E0082E0E9407
:106FF000DA420895982F863008F095E086E4989F4D
:10700000D0011124AC59BF4FE2EDF7E0182E0E94D9
:10701000EB42A2E0B0E0092E0E94DA420895982FD8
:10702000863008F095E086E4989FD0011124AC5991
:10703000BF4FE2EDF7E0182E0E94D042089581E0A4
:107040008093D20782E08093D30743E04093D40734
:1070500064E06093D50755E05093D60736E030934F
:10706000D70787E08093D80728E02093D90788EED8
:107070008093DA079EE19093DB078BEF8093DD0727
:107080008AE08093DE079093DC079093E0074093BB
:10709000DF072093E10740E14093E2073093E307E5
:1070A0002093E40786EE8093E5079093E60780E857
:1070B0008093E70734E63093E80788E78093E90791
:1070C0008EE58093EA0783E28093EB0784E1809367
:1070D000EC071092ED074093EE078DEF8093EF07DA
:1070E0003093F0079AE59093F1079093F20790930D
:1070F0000208909303081092040810920508309338
:10710000F30788E28093F4071092070822E32093A4
:10711000F50786E98093F6075093F7072093F80761
:107120009093F9072093FA07109206089093FB07B3
:107130005093FC073093FD073093FE0780E2809365
:10714000FF076093000820930108ACE0B8E0E9E98C
:10715000F3E089E001900D928150E1F7089581E01C
:107160008093D20782E08093D30743E04093D40713
:1071700064E06093D50755E05093D60736E030932E
:10718000D70787E08093D80728E02093D90788E6BF
:107190008093DA079EE19093DB078BEF8093DD0706
:1071A0008AE08093DE079093DC079093E00740939A
:1071B000DF078CE08093E10780E18093E207309362
:1071C000E3072093E40786EE8093E5079093E607B4
:1071D00080E88093E70780E58093E80788E780935D
:1071E000E9078EE58093EA0783E28093EB079093AB
:1071F000EC071092ED0740E24093EE078DEF80938D
:10720000EF0734E63093F0072AE52093F107209347
:10721000F2072093020820930308109204081092AA
:1072200005083093F30788E28093F407109207086B
:1072300092E39093F50786E98093F6075093F7075A
:107240009093F8072093F9079093FA071092060895
:107250002093FB075093FC073093FD073093FE0704
:107260004093FF07609300088BE480930108ACE033
:10727000B8E0E3EAF3E087E001900D928150E1F796
:10728000089581E08093D20782E08093D30783E062
:107290008093D40754E05093D50735E03093D60758
:1072A00086E08093D70787E08093D80728E0209373
:1072B000D90788E68093DA079EE19093DB078BEF8E
:1072C0008093DD078AE08093DE079093DC0790933C
:1072D000E0075093DF078FE08093E1079093E20788
:1072E0008CE08093E3072093E40786EE8093E50724
:1072F0009093E60780E88093E70780E58093E807AE
:1073000046E94093E9078EE58093EA0783E280939C
:10731000EB079093EC071092ED0780E28093EE0765
:107320008DEF8093EF0724E62093F0079AE5909382
:10733000F1079093F207909302089093030810923C
:107340000408109205082093F30788E28093F4075D
:107350001092070882E38093F5074093F607309375
:10736000F7078093F8079093F9078093FA07109234
:1073700006089093FB073093FC072093FD072093AA
:10738000FE0780E18093FF075093000820930108D7
:10739000ACE0B8E0EBEAF3E086E001900D928150BA
:1073A000E1F7089522E030E0D9010E94C842802D23
:1073B000863028F082E0D901082E0E94DA4290E05F
:1073C00008950F931F93CF93DF93A1E0B0E00E9445
:1073D000C842802D863469F180E694E09F938F93B4
:1073E0001F920E945D080E944139C0E0D0E00F90DA
:1073F0000F900F900C2FC23039F0C33019F40E9457
:107400001F3804C0C43010F00E94AF38802F0E9493
:10741000FA372196C630D10569F7A2E0B0E083E0E3
:10742000082E0E94DA42A1E0B0E086E4082E0E9415
:10743000DA4202E010E0D8010E94C842802D0E948A
:107440000F38D8010E94C842802D90E09F938F93FF
:1074500087E494E09F938F931F920E945D080F90A2
:107460000F900F900F900F90DF91CF911F910F9180
:107470000895CF93DF93DC01EC01EA81FB81219138
:107480008E81815019F48981E81BF109ED01FB839C
:10749000EA838E839FB7F8948C9181508C939FBF21
:1074A000822F90E0DF91CF910895FC0110827583C7
:1074B0006483738362834183478346830895CF93B4
:1074C000DF93DC019C91ED018981981718F080E031
:1074D00090E016C0ED01EC81FD8161938F818150B8
:1074E00019F48981E81BF109ED018F83FD83EC8399
:1074F0009FB7F8948C918F5F8C939FBF81E090E051
:10750000DF91CF910895FC0180818823E9F3CF01B9
:107510000E94393A90E00895FC018081882319F493
:107520008FEF9FEF0895CF010E94393A90E00895C0
:107530009FB7F8948091C9008F778093C90080919C
:10754000C9008F7B8093C9008091C9008F7D809393
:10755000C9005A9A52985B9A539A1092CD008AE2C7
:107560008093CC008091C80082608093C80088E13D
:107570008093C9008091CA008F778093CA00809160
:10758000CA008F7B8093CA008091CA008F7D809350
:10759000CA008091CA008F7E8093CA008091CA0081
:1075A000877F8093CA008091C9008B7F8093C90038
:1075B0008091CA0084608093CA008091CA00826072
:1075C0008093CA0002C08091CE008091C80087FDE0
:1075D000FACF8091C90080688093C9008091C9006A
:1075E00080648093C9009FBF08951F920F920FB6C9
:1075F0000F9211248F938091CE008F910F900FBE28
:107600000F901F9018953C98449A1092B2031092D4
:10761000BC0881E08093BD0808956091D205709107
:10762000D305349B18C0CB0101969093D30580936A
:10763000D2058159914008F45FC08091B20388233C
:1076400019F081508093B2038FEF9FEF90936F03F7
:1076500080936E034DC0CB01019789569140B8F5D8
:107660006A30710528F410926F0310926E0315C0F2
:107670006A50704080E090E029E134E040E050E062
:107680000E9402422AE096958795779567952A95FC
:10769000D1F770936F0360936E0380916E039091A6
:1076A0006F032091700330917103845E9D4F821BA4
:1076B000930B68E671E00E944142845B9040909396
:1076C0005205809351058CE08093B20311C08091E4
:1076D000B203882319F081508093B2038FEF9FEF9C
:1076E00090936F0380936E03109252051092510590
:1076F0001092D3051092D2058091B2038823E1F451
:107700008091D0059091D1050E94AC0B8823A1F007
:107710008091D3049091D404892B31F484E690E0D5
:107720009093D4048093D30484E690E00E94A30B4A
:107730009093D1058093D005089584B1806A84B96F
:107740003D9A82E58CBD1DBC459A88ED98E09093EA
:1077500014098093130981E08093BE088AEA80931C
:10776000D80883E88093D9088AE08093DA081092D9
:10777000DC081092DB081092DE081092DD081092EF
:10778000F9080895F89460911D0570911E05809187
:107790001F05909120052CE630E040E050E00E946B
:1077A00076423093DC082093DB08609125057091C8
:1077B000260580912705909128052CE630E040E0D1
:1077C00050E00E9476423093DE082093DD086091FD
:1077D000C3077091C4078091C5079091C6072EE03A
:1077E00036E040E050E00E9476423093E408209377
:1077F000E3088091BC079091BD079093E6088093C1
:10780000E5088091BA079091BB079093E8088093B0
:10781000E7088091BE079091BF079093EA08809394
:10782000E9082091590530915A05809155059091AC
:107830005605B9010E944142CB01880F991F860F5E
:10784000971F880F991F880F991F9093E0088093C6
:10785000DF088091570590915805B9010E94414277
:10786000CB01880F991F860F971F880F991F880FCC
:10787000991F9093E2088093E10810925A051092A4
:107880005905109256051092550510925805109200
:1078900057058091DA088A3049F08A3008F4A6C08A
:1078A0008B3029F18C3009F0A1C094C080918B03FA
:1078B0008093EB0880918C038093EC0880918D037A
:1078C0008093ED0880918E038093EE0880918F0362
:1078D0008093EF08809190038093F008809191034A
:1078E0008093F108809192038093F2087FC0E09129
:1078F000D407F0E0EE0FFF1FE459F84F0190F0813C
:10790000E02D2FEFE038F20714F4E0E8FFEFE03865
:10791000F10514F0EFE7F0E0E093EB08E091D50714
:10792000F0E0EE0FFF1FE459F84F0190F081E02DD9
:107930006FEFE038F60714F4E0E8FFEFE038F10508
:1079400014F0EFE7F0E0E093EC08E091D307F0E00B
:10795000EE0FFF1FE459F84F0190F081E02D8FEFFB
:10796000E038F80714F4E0E8FFEFE038F10514F030
:10797000EFE7F0E0E093ED08E091D207F0E0EE0FE2
:10798000FF1FE459F84F0190F081E02D2FEFE03810
:10799000F20714F4E0E8FFEFE038F10514F0EFE748
:1079A000F0E0E093EE0880915F058093EF0880910E
:1079B00061058093F008809163058093F1088091C0
:1079C00065058093F20880910405909105058093E8
:1079D000F3080CC080915305863020F010925305B7
:1079E00085E002C0809153058093EB0878948091E4
:1079F000F908882309F461C04091FB085091FC0804
:107A0000CA0181509E4F8F5F9340B0F42091FD08D2
:107A10003091FE08C90181509E4F8F5F934060F402
:107A20008091DA0785FF08C0509378054093770569
:107A300030937A052093790580910109909102098C
:107A400021E08936920724F490936F0380936E03AC
:107A500080916E0390916F0397FF05C010925205BD
:107A60001092510516C080916E0390916F03209182
:107A7000700330917103845E9D4F821B930B68E607
:107A800071E00E944142845B904090935205809344
:107A9000510580910509282F30E08091D304909101
:107AA000D4048217930788F480915305882369F4DE
:107AB0003093D4042093D304089510927805109243
:107AC000770510927A051092790508958091BE0885
:107AD000882309F435C045988091D705E82FF0E058
:107AE000ED54FC4F90819093DA088F5F8093D70517
:107AF000853010F01092D7051092BE080E94C23B4C
:107B000081E08093D6050000000000000000000026
:107B10000000000000000000000000000000000065
:107B20000000000000000000000000000000000055
:107B30000000000000008091D8088093F7088EBDF7
:107B400008958091BE08882309F093C00DB407FE04
:107B500090C084E08093D504459A2EB58091D905D4
:107B6000813079F0813020F0823009F04FC015C0AB
:107B70001092D4052093D805213809F047C081E040
:107B800009C0253509F03CC08091D8058B5A8093F7
:107B9000D80582E08093D90539C08091D405E82FBB
:107BA000F0E0E154F74F20838F5F8093D4059091EC
:107BB000D805893140F12917C1F4F894EAEFF8E0CB
:107BC000AFEBB8E089E10D9001928150E1F7789434
:107BD00081E08093F9088091AD069091AE06019600
:107BE0009093AE068093AD060BC08091AB0690914A
:107BF000AC0601969093AC068093AB061092F90800
:107C00001092D90503C0920F9093D8052091D60504
:107C1000203208F02BC04598000000000000000052
:107C20000000000000000000000000000000000054
:107C30000000000000000000000000000000000044
:107C40000000000000000000E0911309F091140909
:107C5000E20FF11D80818EBD80819091F708890F20
:107C60008093F7082F5F2093D605089581E08093D5
:107C7000BE080895A8E0B0E0E0E4FEE30C949B4267
:107C80007B018C01611571058105910519F482E074
:107C900089835AC083E089838EE1C82ED12CDC828F
:107CA000CB82ED82FE820F831887C801B7010E9444
:107CB000AD3EBC016150704077FF33C0EE27FF2717
:107CC000E61BF70B20E030E040E050E081E090E080
:107CD000A0E0B0E00E2E04C0880F991FAA1FBB1FA2
:107CE0000A94D2F70197A109B1098E219F21A023FF
:107CF000B1230097A105B10521F021E030E040E07B
:107D000050E004C016950795F794E794EA95D2F7EA
:107D10002E293F29402B512B2D833E834F8358879B
:107D20000FC06115710581F0062E04C0EE0CFF1C1A
:107D3000001F111F0A94D2F7ED82FE820F8318876D
:107D4000C61AD70ADC82CB821A82CE0101960E9423
:107D5000FA3EE8E028960C94B742EF92FF920F9318
:107D60001F939B01AC01203080E0380781E0480779
:107D700080E0580780F42F3F31054105510509F097
:107D800020F4EE24FF24870119C068E0E62EF12CD0
:107D9000012D112D13C0203080E0380780E0480706
:107DA00081E0580730F490E1E92EF12C012D112DDE
:107DB00005C088E1E82EF12C012D112D80E290E024
:107DC000A0E0B0E08E199F09A00BB10B04C056953E
:107DD000479537952795EA94D2F7F901E854FC4F77
:107DE0002081821B9109A109B1091F910F91FF9078
:107DF000EF9008959F92AF92BF92CF92DF92EF9251
:107E0000FF920F931F93EE24FF248701FC0124812E
:107E100035814681578191808081823010F44061A4
:107E2000A2C0843009F49BC0823029F420E030E005
:107E300040E050E005C0211531054105510519F418
:107E4000E0E0F0E092C0828193816FEF8238960784
:107E50000CF05AC062E87FEF681B790B6A3171053C
:107E60002CF020E030E040E050E02AC0AA24BB24FF
:107E7000650181E090E0A0E0B0E0062E04C0880F2C
:107E8000991FAA1FBB1F0A94D2F70197A109B10934
:107E900082239323A423B5230097A105B10529F0DC
:107EA00071E0A72EB12CC12CD12C04C0569547955A
:107EB000379527956A95D2F72A293B294C295D29C0
:107EC000DA01C9018F779070A070B070803491058D
:107ED000A105B10539F427FF09C0205C3F4F4F4F82
:107EE0005F4F04C0215C3F4F4F4F5F4F80E090E0F9
:107EF000203060E0360760E0460760E4560710F087
:107F000081E090E0FC0123C08038910544F5FC013C
:107F1000E158FF4FDA01C9018F779070A070B070FF
:107F200080349105A105B10539F427FF09C0205C13
:107F30003F4F4F4F5F4F04C0215C3F4F4F4F5F4F4C
:107F400057FF05C05695479537952795319687E099
:107F500056954795379527958A95D1F706C020E025
:107F600030E040E050E0EFEFF0E0E22EF32E942F0F
:107F70009F77802F8078892B9E2F979599279795AB
:107F80008F77082F092B9E2F9695812F8078892B2C
:107F90009794992497948F77182F1929C801B701BE
:107FA0001F910F91FF90EF90DF90CF90BF90AF9017
:107FB0009F900895FC014150504030F0019006160A
:107FC000D1F73197CF010895882799270895505800
:107FD000BB27AA270ED079C16AD130F06FD120F02B
:107FE00031F49F3F11F41EF45FC10EF4E095E7FBFE
:107FF00055C1E92F7BD180F3BA1762077307840755
:10800000950718F071F49EF593C10EF4E0950B2ED0
:10801000BA2FA02D0B01B90190010C01CA01A001DA
:108020001124FF27591B99F0593F50F4503E68F135
:108030001A16F040A22F232F342F4427585FF3CF76
:10804000469537952795A795F0405395C9F77EF447
:108050001F16BA0B620B730B840BBAF09150A1F090
:10806000FF0FBB1F661F771F881FC2F70EC0BA0F16
:10807000621F731F841F48F4879577956795B7959E
:10808000F7959E3F08F0B3CF9395880F08F0992796
:10809000EE0F9795879508950CD017C10FD140F03A
:1080A00006D130F021F45F3F19F0F8C0511141C101
:1080B000FBC01CD198F39923C9F35523B1F3951B49
:1080C000550BBB27AA2762177307840738F09F5FF9
:1080D0005F4F220F331F441FAA1FA9F333D00E2E68
:1080E0003AF0E0E830D091505040E695001CCAF7D5
:1080F00029D0FE2F27D0660F771F881FBB1F26179A
:1081000037074807AB07B0E809F0BB0B802DBF016C
:10811000FF2793585F4F2AF09E3F510568F0BEC07D
:1081200008C15F3FECF3983EDCF386957795679541
:10813000B795F7959F5FC9F7880F911D969587951D
:1081400097F90895E1E0660F771F881FBB1F62173C
:1081500073078407BA0720F0621B730B840BBA0BFA
:10816000EE1F88F7E095089504D06894B111E1C03E
:108170000895C4D088F09F5790F0B92F9927B75130
:10818000A0F0D1F0660F771F881F991F1AF0BA95DB
:10819000C9F712C0B13081F0CBD0B1E00895C8C0AA
:1081A000672F782F8827B85F39F0B93FCCF38695D1
:1081B00077956795B395D9F73EF49095809570952E
:1081C00061957F4F8F4F9F4F0895E89409C097FBAB
:1081D0003EF490958095709561957F4F8F4F9F4F9E
:1081E0009923A9F0F92F96E9BB279395F6958795E2
:1081F00077956795B795F111F8CFFAF4BB0F11F4A5
:1082000060FF1BC06F5F7F4F8F4F9F4F16C088234B
:1082100011F096E911C0772321F09EE8872F762F81
:1082200005C0662371F096E8862F70E060E02AF0C2
:108230009A95660F771F881FDAF7880F96958795AE
:1082400097F9089507D008F481E0089503D008F461
:108250008FEF0895990F0008550FAA0BE0E8FEEF85
:1082600016161706E807F907C0F012161306E407FA
:10827000F50798F0621B730B840B950B39F40A26F3
:1082800061F0232B242B252B21F408950A2609F4D1
:10829000A140A6958FEF811D811D089597F99F67D5
:1082A00080E870E060E008959FEF80EC089500247E
:1082B0000A941616170618060906089500240A944B
:1082C00012161306140605060895092E0394000CD1
:1082D00011F4882352F0BB0F40F4BF2B11F460FF60
:1082E00004C06F5F7F4F8F4F9F4F089557FD905889
:1082F000440F551F59F05F3F71F04795880F97FB6A
:10830000991F61F09F3F79F0879508951216130623
:108310001406551FF2CF4695F1DF08C01616170652
:108320001806991FF1CF8695710561050894089587
:10833000E894BB2766277727CB0197F908950BD0E0
:10834000C4CFB5DF28F0BADF18F0952309F0A6CF27
:10835000ABCF1124EECFCADFA0F3959FD1F3950FD9
:1083600050E0551F629FF001729FBB27F00DB11DB9
:10837000639FAA27F00DB11DAA1F649F6627B00D49
:10838000A11D661F829F2227B00DA11D621F739F32
:10839000B00DA11D621F839FA00D611D221F749F40
:1083A0003327A00D611D231F849F600D211D822F87
:1083B000762F6A2F11249F5750408AF0E1F08823CE
:1083C0004AF0EE0FFF1FBB1F661F771F881F9150DB
:1083D0005040A9F79E3F510570F060CFAACF5F3F94
:1083E000ECF3983EDCF3869577956795B795F7950E
:1083F000E7959F5FC1F7FE2B880F911D9695879596
:1084000097F90895629FD001739FF001829FE00D5C
:10841000F11D649FE00DF11D929FF00D839FF00D03
:10842000749FF00D659FF00D9927729FB00DE11DAF
:10843000F91F639FB00DE11DF91FBD01CF0111248C
:108440000895991B79E004C0991F961708F0961BB0
:10845000881F7A95C9F780950895AA1BBB1B51E127
:1084600007C0AA1FBB1FA617B70710F0A61BB70BA4
:10847000881F991F5A95A9F780959095BC01CD0149
:10848000089597FB092E07260AD077FD04D0E5DF73
:1084900006D000201AF4709561957F4F0895F6F785
:1084A000909581959F4F0895A1E21A2EAA1BBB1BA0
:1084B000FD010DC0AA1FBB1FEE1FFF1FA217B307B0
:1084C000E407F50720F0A21BB30BE40BF50B661FC6
:1084D000771F881F991F1A9469F76095709580958A
:1084E00090959B01AC01BD01CF01089597FB092E2A
:1084F00005260ED057FD04D0D7DF0AD0001C38F473
:1085000050954095309521953F4F4F4F5F4F0895BF
:10851000F6F790958095709561957F4F8F4F9F4F9F
:1085200008952F923F924F925F926F927F928F9217
:108530009F92AF92BF92CF92DF92EF92FF920F93F2
:108540001F93CF93DF93CDB7DEB7CA1BDB0B0FB6FC
:10855000F894DEBF0FBECDBF09942A8839884888B9
:108560005F846E847D848C849B84AA84B984C8844F
:10857000DF80EE80FD800C811B81AA81B981CE0F46
:10858000D11D0FB6F894DEBF0FBECDBFED0108952B
:10859000F999FECFB2BDA1BDF89A119600B4089525
:1085A000F7DF01921A94E1F70895F2DFE02DF0DF92
:1085B000F02D0895F999FECFB2BDA1BD00BC119672
:1085C0000FB6F894FA9AF99A0FBE0895F3DF012CCA
:1085D000F1DF112408950190EDDF1A94E1F7089579
:0285E000FFCFCB
:1085E2000AFF0164496E74656772616C5069746355
:1085F20068202020496E74656772616C526F6C6CE2
:108602002020202041636350697463682020202069
:1086120020202020416363526F6C6C202020202098
:10862200202020204779726F596177202020202056
:108632002020202052656164696E67486569676819
:10864200742020204163635A2020202020202020F3
:10865200202020205468727573742020202020204E
:1086620020202020436F6D706173734865616469D7
:108672006E672020566F6C74616765202020202071
:10868200202020205265636569766572204C6576EC
:10869200656C20205961774779726F48656164691A
:1086A2006E6720204D6F746F725F46726F6E74201A
:1086B200202020204D6F746F725F526561722020FE
:1086C200202020204D6F746F725F5269676874209A
:1086D200202020204D6F746F725F4C6566742020DD
:1086E200202020204163635F5A2020202020202068
:1086F20020202020535049204572726F7220202082
:1087020020202020535049204F6B20202020202061
:108712002020202020202020202020202020202057
:1087220020202020536572766F20202020202020D8
:1087320020202020506974636820202020202020DF
:1087420020202020526F6C6C20202020202020200E
:108752002020202020202020202020202020202017
:108762002020202020202020202020202020202007
:1087720020202020202020202020202020202020F7
:1087820020202020202020202020202020202020E7
:1087920020202020202020202020202020202020D7
:1087A20020202020202020202020202020202020C7
:1087B20020202020202020202020202020202020B7
:1087C200202020204750535F506974636820202086
:1087D200202020204750535F526F6C6C20202020B5
:1087E20020202020FFFF010A6400007D0000FF031B
:1087F2000102030405060708090A48656C6C6F202C
:10880200576F726C6400000000000000000000005E
:108812000000000000000000000000000000000056
:108822000000000000000000000000000000000046
:108832000000000000000000000000000000000036
:10884200000000000000000000000B016400FFFFB8
:10885200FFFFF40190D0030090D00300ECFF17B7A4
:10886200D13830FB103A409696020A000000000010
:10887200000000644600006401426567696E6E652F
:108882007200004E6F726D616C000053706F7274F3
:1088920000000C0A0B0A0B0C000102020303030383
:1088A200040404040404040405050505050505057E
:1088B200050505050505050506060606060606065E
:1088C2000606060606060606060606060606060646
:1088D200060606060606060607070707070707072E
:1088E2000707070707070707070707070707070716
:1088F2000707070707070707070707070707070706
:1089020007070707070707070707070707070707F5
:1089120007070707070707070808080808080808DD
:1089220008080808080808080808080808080808C5
:1089320008080808080808080808080808080808B5
:1089420008080808080808080808080808080808A5
:108952000808080808080808080808080808080895
:108962000808080808080808080808080808080885
:108972000808080808080808080808080808080875
:108982000808080808080808080808080808080865
:0889920008080808080808089D
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Flight-Ctrl_MEGA644p_V0_69k.hex
0,0 → 1,2140
:100000000C9457020C9474020C9474020C947402B5
:100010000C9474020C9474020C9474020C94740288
:100020000C9474020C94B50C0C9474020C9474022D
:100030000C9410170C9474020C9474020C94DC163B
:100040000C9474020C9474020C94E00B0C947402E3
:100050000C9456040C9474020C9420040C947402B6
:100060000C948A0D0C9474020C9424160C94740253
:100070000C94973B0C9474020C9474020A0A0D00C1
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0004F4B0A0D000A0D43616C696272617469FD
:1000B0006E67206169722070726573737572652056
:1000C00073656E736F722E2E000A0D537570706F0C
:1000D000727420666F72204D4B334D414720436F41
:1000E0006D70617373000A0D414343206E6F74207D
:1000F00063616C6962726174656421000A0D3D3D43
:100100003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D1F
:100110003D3D3D3D3D3D3D3D3D3D3D3D000A0D46A6
:100120006C69676874436F6E74726F6C0A0D486116
:100130007264776172653A25642E25640A0D536FE7
:100140006674776172653A5625642E2564256320AE
:10015000002E0048693A253469202043663A253448
:1001600069200054683A253469202059613A2534C1
:1001700069200050693A2534692020526F3A2534AD
:1001800069200045787465726E436F6E74726F6C8F
:1001900020200052616E67653A2533692D25336949
:1001A00000506F736974696F6E3A2025336900538C
:1001B0006574706F696E7420202533690053657211
:1001C000766F202000506F343A2025336920506F1D
:1001D000383A2025336900506F333A20253369209F
:1001E000506F373A2025336900506F323A2025335B
:1001F0006920506F363A2025336900506F313A201C
:1002000025336920506F353A20253369004F6666E3
:10021000436F757273653A202535690048656164DE
:10022000696E673A20202025356900436F75727327
:10023000653A2020202025356900436F6D70617379
:1002400073202020202020200052432D4C6576650D
:100250006C3A2025356900566F6C746167653A20E9
:100260002025356900486569676874202534692050
:10027000282533692900526F6C6C202020253469B1
:1002800020282533692900506974636820202534AB
:100290006920282533692900414343202D205365D7
:1002A0006E736F72005961772020202534692028F1
:1002B0002533692900526F6C6C2020253469202871
:1002C0002533692900506974636820253469202822
:1002D0002533692900596177202020253469202899
:1002E0002533692900526F6C6C2020253469202841
:1002F00025336929005069746368202534692028F2
:1003000025336929004779726F202D2053656E735C
:100310006F720050333A253469202050343A253426
:1003200069200050313A253469202050323A253472
:1003300069200047733A253469202059613A2534F1
:1003400069200050693A2534692020526F3A2534DB
:1003500069200043373A253469202043383A253450
:1003600069200043353A253469202043363A253444
:1003700069200043333A253469202043343A253438
:1003800069200043313A253469202043323A25342C
:1003900069200048656164696E673A202020253530
:1003A0006900526F6C6C3A2020202020202535698E
:1003B0000050697463683A202020202025356900A8
:1003C0004174746974756465004865696768742070
:1003D000436F6E74726F6C004E6F20004F666673D1
:1003E0006574202020203A2535690041697220502B
:1003F000726573732E3A2535690053657420506F0A
:10040000696E743A20253569004865696768743AF1
:10041000202020202535690028632920486F6C673B
:10042000657220427573730053657474696E673A20
:10043000202564200048573A5625642E2564205311
:10044000573A25642E25642563002B204D696B7275
:100450006F4B6F70746572202B005B25695D005BCC
:1004600025695D000A0D5573696E672050617261E0
:100470006D6574657220536574202564000A0D490A
:100480006E69742E20454550524F4D3A2047656E97
:1004900065726174696E672044656661756C742D60
:1004A000506172616D657465722E2E2E00001124EC
:1004B0001FBECFEFD0E1DEBFCDBF14E0A0E0B1E0C2
:1004C000ECEEF1E802C005900D92A43BB107D9F71C
:1004D00018E0A4EBB4E001C01D92A53BB107E1F721
:1004E0000E9476020C94F5400C940000CF93DF93A9
:1004F000F89414B815B8189B02C08BE001C08AE0CC
:100500008093000184B1836084B9209100012A3076
:1005100011F4289A01C02898299884B7877F84BF4E
:10052000809160008861809360001092600080ED8F
:1005300097E09093D0048093CF04109268071092B4
:10054000670710926F0510926E0510926D0510925C
:100550006C0510926B0510926A052A3011F42898E8
:1005600001C0289A0E9474150E94960B0E94920C5A
:100570000E94F105809100018B3011F40E943A3BFA
:100580000E94A8160E946D0D0E94CD150E94A53BE9
:1005900078941092690685E480936A0687E08093D8
:1005A0006B0620910001822F6AE00E942640492FAD
:1005B00050E0822F0E94264090E02BE630E03F93EF
:1005C0002F9325E430E03F932F931F921F925F9368
:1005D0004F939F938F938DE191E09F938F931F9201
:1005E0000E94F2088CEF90E09F938F931F920E94DD
:1005F000F208299A0E94833A84E00E9483382DB73A
:100600003EB7205F3F4F0FB6F8943EBF0FBE2DBFE1
:100610008050944050F086EE90E09F938F931F920D
:100620000E94F2080F900F900F9084EF91E00E94CB
:10063000CB0BEC01CE010E94D40B8823D9F389ECBB
:1006400090E09F938F931F920E94F2088091D107B0
:100650000F900F900F9080FF20C085EA90E09F934D
:100660008F931F920E94F20888EE93E00E94CB0BBA
:10067000EC010E9469100F900F900F90CE010E9424
:10068000D40B8823D9F380EA90E09F938F931F9235
:100690000E94F2080F900F900F900E940821809105
:1006A00000018A3011F4289801C0289A80ED97E063
:1006B0009093D0048093CF0485E58093730684E9FA
:1006C00090E09F938F931F920E94F2088091D10730
:1006D0000F900F900F9082FF03C088E890E002C057
:1006E00080E890E09F938F931F920E94F2080F90F2
:1006F0000F900F908CE790E09F938F931F920E9432
:10070000F2080E94A91088E893E190936D0380930A
:100710006C030F900F900F908091CC048823E1F32D
:100720001092CC040E94B2220E94C12020910001AC
:100730002A3011F4289801C0289A80910301882357
:1007400021F081508093030112C01092C0041092D6
:10075000C10410927D0610927B0510927A051092CA
:100760007D0510927C0510927F0510927E05809188
:100770006C0390916D03892B01F585E090E09093D7
:100780006D0380936C030E94F41580910403909193
:1007900005038F5F9F4FF9F4809156058823D9F0A8
:1007A00080E197E29093D0048093CF0480E890E0BA
:1007B00090930503809304030EC080916C03909185
:1007C0006D03019790936D0380936C032A3011F4AD
:1007D000289801C0289A8091CC04882321F0809128
:1007E0005605882311F40E9460060E945C07CE0122
:1007F0000E94D40B882309F48FCF209108033091F5
:1008000009038091E10790E0281739079CF4809153
:100810000403909105038F5F9F4F61F480E797E198
:100820009093D0048093CF0480E093E090930503ED
:100830008093040384E190E00E94CB0BEC016CCF29
:100840001F920F920FB60F9211248F939F93EF93E5
:10085000FF93809102018823E1F48091C804909174
:10086000C90401969093C9048093C804FC01E05424
:10087000F94FE081ED3019F08639910539F4109285
:10088000C9041092C80481E080930201E093C6007D
:1008900004C01092C9041092C804FF91EF919F9177
:1008A0008F910F900FBE0F901F9018951F920F926F
:1008B0000FB60F9211242F933F934F935F936F9333
:1008C0007F938F939F93AF93BF93CF93DF93EF93D8
:1008D000FF937091C6008091BA04882309F06DC01F
:1008E0006091C504662371F4733279F47093CF0577
:1008F00081E08093C50483E290E09093C7048093E5
:10090000C6045BC0663908F054C0A62FB0E0209141
:10091000C6043091C7047D3069F0A153BA4F7C936F
:100920006F5F6093C504270F311D3093C704209378
:10093000C60443C0FD01E353FA4F9081ED01C25359
:10094000DA4F8881A901491B5109481B51095F7081
:100950005093C7044093C6042081CA0136E096959F
:1009600087953A95E1F7835C8217F1F49881842F9B
:100970008F73835C8917C1F481E08093BA0460931C
:10098000BB04A153BA4F7C938091D105823571F499
:1009900088E190E02CE00FB6F894A8958093600071
:1009A0000FBE2093600002C01092BA041092C504DA
:1009B00004C01092C5041092BA04FF91EF91DF9128
:1009C000CF91BF91AF919F918F917F916F915F91E7
:1009D0004F913F912F910F900FBE0F901F90189540
:1009E000DC0120E030E040E050E008C0FA01E054D3
:1009F000F94F8081280F311D4F5F5F4F4A175B070A
:100A0000A9F73F70C90146E0969587954A95E1F7A9
:100A1000835CFD01E054F94F808311962F73235CB2
:100A2000FD01E054F94F2083AF53B94F8DE08C9313
:100A3000109202018091C0068093C60008951F9312
:100A4000CF93DF93EA01722F93E29093C0066093F5
:100A5000C1068093C206A3E0B0E060E04FC0FE0193
:100A6000E60FF11D90816F5F715019F410E040E0C6
:100A70000FC0FE01E60FF11D40816F5F715011F450
:100A800010E006C0FE01E60FF11D10816F5F71508E
:100A9000892F86958695835CFD01E054F94F80830C
:100AA00050E09A0184E0369527958A95E1F7892FE1
:100AB00090E083709070F4E0880F991FFA95E1F749
:100AC000282B235CFD01EF53F94F2083812F829562
:100AD0008695869583704F705070440F551F440F54
:100AE000551F842B835CFD01EE53F94F80831F73E8
:100AF000135CFD01ED53F94F10831496772309F031
:100B0000AECFCD010E94F004DF91CF911F910895E7
:100B10001F93CF93DF93EC0170E0A22FB0E0129708
:100B200048C0E42FF0E0E153FA4F30814F5FE42FEB
:100B3000F0E0E153FA4F50814F5FE42FF0E0E153D2
:100B4000FA4F10814F5FE42FF0E0E153FA4F20811C
:100B50004F5F842F90E0A817B90774F15D53FE0131
:100B6000E70FF11D852F82958F703D53330F330FA3
:100B7000382B3083613001F1912F9D537F5FFE014F
:100B8000E70FF11D71505295507F892F86958695FC
:100B9000582B508363506F3F79F07E5FFE01E70F63
:100BA000F11D9295990F990F907C2D53922B908364
:100BB0007F5F662309F0B5CFDF91CF911F91089534
:100BC0001F93182F8A3019F48DE00E94E005809160
:100BD000C00085FFFCCF1093C60080E090E01F911D
:100BE00008951F931FB7F8948091C1008F77809369
:100BF000C1008091C1008F7B8093C100589A5098AA
:100C0000599A519A1092C5008AE28093C40080914B
:100C1000C00082608093C00088E18093C100809111
:100C2000C2008F778093C2008091C2008F7B809337
:100C3000C2008091C2008F7D8093C2008091C2006B
:100C40008F7E8093C2008091C200877F8093C20014
:100C50008091C1008B7F8093C1008091C20084602D
:100C60008093C2008091C20082608093C20002C063
:100C70008091C6008091C00087FDFACF8091C100AD
:100C800080688093C1008091C10080648093C1001E
:100C90001092BA0481E08093020188EC90E00E94F7
:100CA000CB0B90936806809367068CED90E00E94D2
:100CB000CB0B90936606809365061FBF1F91089526
:100CC00080910201882309F4F6C08091B50488233D
:100CD00071F080910201882351F06091C4042BE0EF
:100CE00043E756E087E40E941F051092B504809107
:100CF0006506909166060E94D40B882309F44BC0C8
:100D000080910201882309F446C060911805709112
:100D1000190580911A0590911B052CE630E040E002
:100D200050E00E947B403093AE082093AD08609164
:100D300020057091210580912205909123052CE6D4
:100D400030E040E050E00E947B403093B0082093B8
:100D5000AF0880918B038093B10880918C038093BE
:100D6000B20880914E058093B3086091C40428E0D6
:100D70004DEA58E087E70E941F0580914E058530B7
:100D800010F010924E0583E690E00E94CB0B9093FA
:100D900066068093650680916706909168060E94BA
:100DA000D40B882321F48091B7048823B1F080917B
:100DB0000201882391F06091C40422E44EE756E0DA
:100DC00084E40E941F051092B7048AEF90E00E940D
:100DD000CB0B9093680680936706609101016F3F8B
:100DE00089F0462F50E094E0440F551F9A95E1F7A3
:100DF0004C5F5E4F605D20E181E40E941F058FEF34
:100E000080930101909156079923A1F080910201EE
:100E1000882381F083E28093C0069093C1068DE021
:100E20008093C20610920201109256078091C0066C
:100E30008093C6008091B604882359F18091020105
:100E4000882339F10E94B2101092B6043091B9048F
:100E5000932F9F5F9093B904943021F08091B80450
:100E6000882359F02EE143E657E060E084E30E94D6
:100E70001F058FEF8093B9040CC044E1949FA0013B
:100E80001124465E5C4F24E160E0832F8F5C0E945A
:100E90001F058091B404882371F08091020188239A
:100EA00051F06091C4042AE049E656E086E50E94CC
:100EB0001F051092B40408951F93CF93DF93CDB70D
:100EC000DEB724970FB6F894DEBF0FBECDBF80917A
:100ED000BA04882309F423C18091D105883609F426
:100EE00086C0893690F4823609F453C0833630F4D4
:100EF0008B34F1F0813609F010C13FC0833609F41C
:100F00005CC0873609F009C1A7C0813738F48C3638
:100F100008F0D0C08B3609F000C18DC0843709F4C9
:100F200081C0863709F494C0813709F0F6C098C0B3
:100F30002091BB0443E062E0CE0101960E94880547
:100F400089819A8190936F0380936E0380916E03E1
:100F500090916F032091700330917103845E9D4FD7
:100F6000821B930B68E671E00E944640845B9040D0
:100F700090934D0580934C05D0C02091BB0443E075
:100F800062E0CE0103960E9488058B818093010167
:100F90002AC02091BB0443E06BE083E796E00E9407
:100FA00088058091F20490917506892B8093F20454
:100FB00080917C0680935607B0C02091BB0443E02B
:100FC0006BE083E796E00E9488058091F20490919F
:100FD0007506892B8093F20480917C0680935607D6
:100FE00081E08093B7048FEF8093030196C0209136
:100FF000BB0443E062E0CE0103960E948805809125
:10100000F2049B81892B8093F2048C818F3F21F421
:1010100081E08093B80402C01092B80481E080930C
:10102000B6047BC02091BB0443E064E08CEB94E009
:101030000E948805D8CF2091BB0443E064E080EC97
:1010400094E00E9488058091C30480935607CBCF1B
:1010500081E08093B40461C081E08093B5045DC0F9
:101060002091BB0443E062E0CE0103960E94880514
:10107000809102018823E1F38B818F3F71F08630EC
:1010800010F085E08B838B810E94B1386091C4049D
:101090008B8126E449EC57E009C01091C40482E03A
:1010A0000E94723826E449EC57E0612F855B0E946C
:1010B0001F0533C02091BB0443E066E489EC97E050
:1010C0000E9488058091D1058B560E949C386091C2
:1010D000F40770E080E090E024EC39E040E050E07C
:1010E0000E940740609374037093750380937603A6
:1010F000909377036091F50770E080E090E00E94A4
:101100000740609378037093790380937A039093F8
:101110007B030E94743A0E946D221092BA042496B6
:101120000FB6F894DEBF0FBECDBFDF91CF911F91F8
:101130000895982F80915707813069F48091F104C8
:10114000E82FF0E0E65EFC4F90838F5F8093F10420
:1011500021E030E005C0892F0E94E005282F30E013
:10116000C90108951F93182F04C080E30E949908B5
:1011700011501116D4F31F9108951F93182F04C016
:1011800080E20E94990811501116D4F31F9108951E
:101190000F931F93CF93DF938C01EB0108C0F801ED
:1011A0000F5F1F4FE4918E2F0E949908219720977F
:1011B000B1F7DF91CF911F910F9108950F931F9376
:1011C000CF93DF938C01EB0106C0F80181918F0171
:1011D0000E94990821972097C1F7DF91CF911F9125
:1011E0000F9108952F923F924F925F926F927F924C
:1011F0008F929F92AF92BF92CF92DF92EF92FF9227
:101200000F931F93CF93DF93CDB7DEB7E5970FB65C
:10121000F894DEBF0FBECDBF2B968FAD2B9780937A
:101220005707CE01835B9F4F9B838A832D964EACDD
:101230005FAC2D971EA61FA618AA19AA9E01225DB3
:101240003F4F3DAB2CAB820102C00F5F1F4FF80137
:10125000F490FF2019F0F5E2FF16B9F7B801641910
:10126000750919F0C2010E94C808FF2009F445C29F
:1012700028010894411C511C1982AA81BB81332486
:101280001BAA2FEF2AABF2010894411C511CB49009
:10129000632D70E06170707035E7B31621F08B2D0F
:1012A00080628837C9F46115710559F02D913D911F
:1012B0004D915C9113972EA73FA748AB59AB14965D
:1012C0000BC08D919C9111979C0140E050E02EA79E
:1012D0003FA748AB59AB129630E2B31621F489818F
:1012E000882389F61CC043E2B41611F458E055C0B7
:1012F0008AE2B81621F09DE2B91671F408C0FD012A
:101300001296E081EBABE7FFBECFE195EBABE0E1FE
:101310003E2AFFED3F22B7CF2BE2B21611F4B9827D
:10132000B2CF3EE2B31699F5F2010894411C511C6C
:1013300084918A3221F0B82E20E030E01DC0FD01FA
:1013400012964081518157FF02C04FEF5FEF4AABC9
:101350009ACFC90153E0880F991F5A95E1F7220FE0
:10136000331F280F391F2B0D311D20533040F20140
:101370000894411C511CB4908B2D80538A3048F343
:10138000A90137FF02C04FEF5FEF4AAB85CF40E3C3
:10139000B41629F434FC77CF50E2352A74CF8B2D64
:1013A00081538930D8F420E030E0C90103E0880F90
:1013B000991F0A95E1F7220F331F280F391F2B0DB4
:1013C000311D20533040F2010894411C511CB4904F
:1013D0008B2D80538A3048F32BAB5ECF88E6B8164E
:1013E00019F494E0392A4FCFECE6BE1619F4F1E077
:1013F0003F2A49CFBB83AA8323E6B21639F412965B
:10140000BB83AA8312978C918E8322C134E4B316D6
:1014100039F044E6B41631F059E6B516A9F502C024
:1014200081E0382A30FE08C01496BB83AA835E91FF
:101430004E913E912E910AC01296BB83AA839E9133
:101440008E919C01442737FD4095542F2EA73FA72E
:1014500048AB59AB8EA59FA5A8A9B9A9BB238CF40D
:101460002EA53FA548A959A950954095309521959D
:101470003F4F4F4F5F4F2EA73FA748AB59AB8DE271
:101480008983BAE02B2E80C03FE4B31621F04FE6EB
:10149000B41631F402C051E0352AA8E02A2E73C0F8
:1014A00080E7B81689F41296BB83AA839E918E9129
:1014B0009C0140E050E02EA73FA748AB59AB30E479
:1014C000332AF8E7BF2E5DC043E7B416D1F5129674
:1014D000BB83AA83DE90CE90C114D10489F488E244
:1014E0008E838EE68F8385E788878CE689878A8757
:1014F00089E28B871C86E6E0CE2ED12CCC0EDD1E39
:101500005AA957FD14C0452F552747FD509560E057
:1015100070E0C6010E94DF3D009711F4FAA80EC0EA
:10152000F82EFC188AA98F154CF4F82E07C0F60186
:1015300001900020E9F73197FE2EFC18198240E057
:1015400090C095E5B91621F0A5E7BA1631F402C0AE
:10155000B1E03B2A7AE0272E16C0E8E5BE1621F05E
:10156000F8E7BF1609F070C033FE0BC02EA53FA5EB
:1015700048A959A9211531054105510511F030E45B
:10158000332A60E1262E19824AA947FD02C05FED89
:1015900035228EA59FA5A8A9B9A90097A105B105D7
:1015A00049F49AA9992331F45EE2C52ED12CCC0ED0
:1015B000DD1E46C06EA47FA488A899A84EE2C42E62
:1015C000D12CCC0EDD1EE22CFF2400E010E06EA535
:1015D0007FA588A999A9A80197010E9459406A305E
:1015E00020F430E3A32EA60E08C027E5A22EA60EF7
:1015F000A8E5BA1611F4BFEDAB22F601A2926F0175
:101600006EA57FA588A999A9A80197010E945940B4
:101610002EA73FA748AB59AB6E147F0480069106F6
:1016200018F039014A01D3CFF8E02F1649F433FE00
:1016300007C020E3A21621F080E3D6018E936D014E
:10164000FCA8FC184AA90DC0BB2009F456C0BE82F4
:10165000198296E0C92ED12CCC0EDD1E40E0FF246D
:10166000F394E42EEF18E7FCEE248981882319F027
:101670008F2D8F5F06C036FC02C08F2D02C08F2DCC
:101680008E5FA82EAE0C032D10E080E3882E912CE7
:10169000802291228114910421F48BA98A190E943D
:1016A000BD088981882329F061E070E0CE010196B0
:1016B00009C006FF09C080E38C83BD8262E070E050
:1016C000CE0104960E94DE08B0E28B16910421F44C
:1016D0008BA98A190E94B2088E2D0E94B2086F2D24
:1016E000772767FD7095C6010E94DE0804FFABCD29
:1016F0008BA98A190E94BD08A6CDE5960FB6F8946D
:10170000DEBF0FBECDBFDF91CF911F910F91FF9034
:10171000EF90DF90CF90BF90AF909F908F907F9091
:101720006F905F904F903F902F9008952FB7F8944F
:10173000909100019A3019F4529A5A9802C03F9A37
:10174000479884B1886184B985B1877E85B99A301C
:1017500019F4529A5A9802C03F9A479884B58F7AE2
:1017600084BD84B5836A84BD85B5877385BD85B521
:10177000887F826085BD17BC88E788BD16BC8091D4
:101780006E00897F80936E0080916E0081608093EF
:101790006E002FBF08952091CA043091CB042F5FB3
:1017A0003F4F820F931F08952091CA043091CB04BC
:1017B000821B930B892F99278695807490E008955A
:1017C0001F920F920FB60F9211242F933F934F93B6
:1017D0005F936F937F938F939F93AF93BF93EF9399
:1017E000FF938091D10481508093D1048F3FB9F44D
:1017F00089E08093D104809106038F5F817080938C
:101800000603882319F481E08093CC048091CA04F4
:101810009091CB0401969093CB048093CA0480915D
:10182000CF049091D004892BB1F08091CF04909196
:10183000D00401979093D0048093CF042091CF04DB
:101840003091D00480910403909105038223932367
:10185000892BD1F406C08FEF9FEF909305038093FF
:101860000403809100018A3039F404C05A9A05C0FB
:10187000479A03C05A9801C047988091D10783FFC7
:1018800008C00E94AF3B05C0809100018A3081F7FB
:10189000EDCFFF91EF91BF91AF919F918F917F918C
:1018A0006F915F914F913F912F910F900FBE0F90CD
:1018B0001F901895AC012091CA043091CB042F5F82
:1018C0003F4F05C080917A00886C80937A008091A8
:1018D000CA049091CB04B901681B790BCB01840F2A
:1018E000951F80709078892F99278695882351F3CA
:1018F0000895AC012091CA043091CB042F5F3F4F73
:101900008091CA049091CB04B901681B790BCB017B
:10191000840F951F80709078892F9927869588234A
:1019200079F308959FB7F894579A5F9AE0EBF0E047
:1019300080818F788083808183688083E1EBF0E011
:101940008081867380838081866080838AE0809333
:10195000B3001092B200E0E7F0E080818A7F8083DC
:101960008081826080839FBF08951F920F920FB67F
:101970000F921124FF920F931F932F933F934F9336
:101980005F936F937F938F939F93AF93BF93EF93E7
:10199000FF93809107038150809307038F3F09F0E5
:1019A00082C08091B0008093B0008091B0008068C8
:1019B0008093B0008091930390E09093D304809340
:1019C000D2048091FE07F090EB0780FF23C00091C6
:1019D000D2041091D304609118057091190580917B
:1019E0001A0590911B0520E830E040E050E00E948D
:1019F0007B40CA01B9012F2D30E040E050E00E9449
:101A0000074020E032E040E050E00E947B40020FBF
:101A1000131F22C00091D2041091D30460911805C5
:101A20007091190580911A0590911B0520E830E00E
:101A300040E050E00E947B40CA01B9012F2D30E008
:101A400040E050E00E94074020E032E040E050E0FB
:101A50000E947B40021B130B1093D3040093D2040B
:101A60002091D2043091D3048091EC0790E02817A4
:101A7000390754F02091D2043091D3048091ED07BE
:101A800090E08217930724F49093D3048093D204B8
:101A90008091D2049091D3048093B3008091EE079B
:101AA0008093070306C08091B0008F738093B000CD
:101AB0005F98FF91EF91BF91AF919F918F917F912F
:101AC0006F915F914F913F912F911F910F91FF90D7
:101AD0000F900FBE0F901F9018959FB7F89411B8F4
:101AE00012B88FEF80937E00ECE7F0E080818F7179
:101AF00080838081807E8083AAE7B0E087E28C9338
:101B0000EBE7F0E08081887F80838C91886C8C93F8
:101B10009FBF08951F920F920FB60F921124EF925C
:101B2000FF920F931F932F933F934F935F936F9366
:101B30007F938F939F93AF93BF93CF93DF93EF9355
:101B4000FF9380917A00877380937A008091EF04ED
:101B50008F5F8093EF048150853009F47EC086301A
:101B600090F4823009F440C0833030F48823F1F0DF
:101B7000813009F082C22FC0833009F441C0843023
:101B800009F07BC25AC0883009F4B2C0893038F4F9
:101B9000863009F473C0873009F06FC28CC0893079
:101BA00009F4C3C08A3009F068C2DBC180917800B3
:101BB000909179009093EE048093ED0481E08093FE
:101BC000F0048091E4049091E50401969093E5047B
:101BD0008093E40456C280917800909179009093AC
:101BE000EC048093EB0482C080917800909179009E
:101BF0009093EA048093E90484E08093F00441C266
:101C000040910803509109038091780090917900E8
:101C10009A01220F331F240F351F63E070E00E94EA
:101C20003240260F371F36952795369527953093E6
:101C300009032093080386E0E0CF8091120590917C
:101C400013052091780030917900821B930B9093BB
:101C5000DD048093DC0487E0D0CF80917800909100
:101C600079002091100530911105821B930B909300
:101C7000DF048093DE041092F00403C2809100011F
:101C80002091ED043091EE048A3049F4809178007F
:101C900090917900820F931F9695879506C0809149
:101CA000780090917900820F931F9093DB048093CA
:101CB000DA0481E0A2CF809100012091EB04309101
:101CC000EC048A3049F48091780090917900820F79
:101CD000931F9695879506C0809178009091790022
:101CE000820F931F9093D9048093D80482E085CF0C
:101CF000809100012091E9043091EA048A3049F48E
:101D00008091780090917900820F931F9695879526
:101D100006C08091780090917900820F931F909374
:101D2000D7048093D60485E068CF609178007091E5
:101D30007900E0901405F0901505009116051091BA
:101D40001705882777FD8095982F0E94EC3EA80103
:101D500097010E94EC3D0E94B93E7093E1046093AC
:101D6000E004E091E004F091E1048091DE049091C0
:101D7000DF04C091DC04D091DD0497FF03C090958F
:101D800081959F4F64E070E00E9446409B01CE0128
:101D9000D7FF03C0909581959F4F64E070E00E944B
:101DA0004640260F371FE20FF31FF093E104E09344
:101DB000E0048091E0049091E10402970CF43EC0AD
:101DC0006091140570911505809116059091170585
:101DD00020E030E84BE354E40E94273F88230CF0D6
:101DE00078C0609114057091150580911605909149
:101DF00017052AE037ED43EA5CE30E94ED3D60936E
:101E0000140570931505809316059093170580911E
:101E1000580590915905845F914008F05AC060912F
:101E200014057091150580911605909117052DECFC
:101E30003CEC4CEC5DE30E94ED3D43C08091E0043E
:101E40009091E1048F5F9F4F0CF043C060911405A7
:101E500070911505809116059091170520E030E8E6
:101E600049E054E40E942B3F18169CF5609114053C
:101E70007091150580911605909117052AE037EDB0
:101E800043EA5CE30E94EC3D6093140570931505F2
:101E900080931605909317058091580590915905E8
:101EA000845F9140B0F460911405709115058091A4
:101EB0001605909117052DEC3CEC4CEC5DE30E946F
:101EC000EC3D60931405709315058093160590936F
:101ED000170580917800909179009093D5048093B4
:101EE000D404209148053091490540914A0550910C
:101EF0004B058091E0049091E104AA2797FDA095FD
:101F0000BA2F820F931FA41FB51F8093480590938B
:101F10004905A0934A05B0934B05E0904805F09021
:101F2000490500914A0510914B0560914805709153
:101F3000490580914A0590914B0520E034E040E04E
:101F400050E00E947B40E21AF30A040B150BE0926A
:101F50004805F092490500934A0510934B0583E02C
:101F60004CCEE0917800F09179008091E604909158
:101F7000E704E80FF91FF093E704E093E60480918B
:101F8000E8048F5F8093E804853008F476C0809180
:101F900078009091790090930F0380930E03409105
:101FA000E2045091E30420915807309159072E1B09
:101FB0003F0B8091800590918105281B390B809102
:101FC000820390E0BC01269FC001279F900D369FA1
:101FD000900D11249A01A3E0220F331FAA95E1F777
:101FE000241B350B820F931F68E070E00E9446406F
:101FF0007093E3046093E204E0900A03F0900B0313
:1020000000910C0310910D03BF01882777FD809587
:10201000982FA8019701220F331F441F551F2E0D23
:102020003F1D401F511F620F731F841F951F24E027
:1020300030E040E050E00E947B4020930A03309360
:102040000B0340930C0350930D03209158073091DC
:10205000590780910A0390910B03A0910C03B09152
:102060000D03281B390B30938105209380051092B6
:10207000E8041092E7041092E6041092F004109223
:10208000EF0480917C00807E9091F004892B8093F6
:102090007C008091EF04882329F080917A00886C7D
:1020A00080937A00FF91EF91DF91CF91BF91AF9133
:1020B0009F918F917F916F915F914F913F912F9160
:1020C0001F910F91FF90EF900F900FBE0F901F90F8
:1020D00018951F93CF93DF9383E00E947238182FD7
:1020E000853108F01A5017BD84E690E00E945A0C22
:1020F00080910E0390910F0382559340C0F410E03D
:1021000016C017BD82E390E00E945A0CDF93CF9374
:102110001F920E94F20880910E0390910F030F907E
:102120000F900F908458934030F01F5F02C0C1E5BC
:10213000D1E01A3F30F3612F83E00E947B38109387
:102140005A078CE291E00E945A0CDF91CF911F91C7
:102150000895EAE1F3E080E2819383E0EA36F8074C
:10216000D1F708951F938091F204282F30E0C90120
:1021700081709070682F8823A9F08091F3048823E0
:1021800011F0815002C080916A038093F304EAE168
:10219000F3E080E2819383E0EA36F807D1F78FEF2E
:1021A0008093B904A9014270507021FF17C090912B
:1021B000F30480916A03981719F41092F30403C092
:1021C0009F5F9093F304EAE1F3E080E2819393E070
:1021D000EA36F907D1F78FEF8093B904662321F02F
:1021E000452B11F01092F3048091F304282F30E076
:1021F0008A3040F481E18093F1043F932F938FE57F
:1022000094E007C080E18093F1043F932F938AE527
:1022100094E09F938F9381E08F930E94F2080F9038
:102220000F900F900F900F901091F304153009F458
:10223000FBC1163090F4123009F4D0C0133030F4E2
:10224000112309F1113009F046C465C0133009F4B7
:102250001BC1143009F03FC46BC1183009F411C31D
:10226000193038F4163009F499C2173009F033C424
:10227000E3C21A3009F49FC31A3008F440C31B307C
:1022800009F029C4D6C31092F1048AE494E09F9324
:102290008F9311E01F930E94F20884E18093F10470
:1022A00020910001822F6AE00E942640492F50E0D1
:1022B000822F0E94264090E02BE630E03F932F9340
:1022C00025E430E03F932F931F921F925F934F932B
:1022D0009F938F9385E394E09F938F931F930E9426
:1022E000F20888E28093F1040E94743A90E09F9390
:1022F0008F9388E294E09F938F931F930E94F2083C
:102300008CE38093F10488E194E09F938F931F9373
:102310000E94F208DCC38091D10780FF47C0109271
:10232000F10480918005909181059F938F9389E0BE
:1023300094E09F938F931F930E94F20884E180930F
:10234000F10480918205909183059F938F938AEF8A
:1023500093E09F938F931F930E94F20888E28093EB
:10236000F10480910E0390910F039F938F938BEE56
:1023700093E09F938F931F930E94F2088CE38093C6
:10238000F10480915A0790E09F938F938CED93E036
:102390009F938F931F930E94F2088DB79EB7449628
:1023A0000FB6F8949EBF0FBE8DBF9AC384E1809391
:1023B000F10488ED93E09F938F931F930E94F2089E
:1023C00088E28093F10489EC93E09F938F931F93AD
:1023D0000E94F2088DB79EB70696E2CF1092F104E4
:1023E00080EC93E09F938F9311E01F930E94F2087B
:1023F00084E18093F1046091180570911905809132
:102400001A0590911B0520E034E040E050E00E9466
:102410007B405F934F933F932F9381EB93E09F9388
:102420008F931F930E94F20888E28093F1046091D9
:10243000200570912105809122059091230520E0CF
:1024400034E040E050E00E947B405F934F933F9325
:102450002F9382EA93E09F938F931F930E94F20839
:102460008CE38093F10480916E0390916F039F93AE
:102470008F9383E993E09F938F931F930E94F208B9
:102480008DB79EB746968CCF1092F1048091670766
:102490009091680720916507309166079F938F930D
:1024A0003F932F9383E893E09F938F9311E01F93C3
:1024B0000E94F20884E18093F10480916B0790916F
:1024C0006C072091690730916A079F938F933F9320
:1024D0002F9383E793E09F938F931F930E94F208BB
:1024E00088E28093F10480916F07909170072091AA
:1024F0006D0730916E079F938F933F932F9383E6E1
:1025000093E09F938F931F930E94F2088CE3809334
:10251000F1048091730790917407209171073091B5
:1025200072079F938F933F932F9383E593E03AC273
:102530001092F104E091CA07F0E0EE0FFF1FED5991
:10254000F84F20813181E091C907F0E0EE0FFF1FC5
:10255000ED59F84F808191813F932F939F938F93F3
:1025600083E493E09F938F9311E01F930E94F208FE
:1025700084E18093F104E091CC07F0E0EE0FFF1FBF
:10258000ED59F84F20813181E091CB07F0E0EE0F5B
:10259000FF1FED59F84F808191813F932F939F93B7
:1025A0008F9383E393E09F938F931F930E94F2088E
:1025B00088E28093F104E091CE07F0E0EE0FFF1F78
:1025C000ED59F84F20813181E091CD07F0E0EE0F19
:1025D000FF1FED59F84F808191813F932F939F9377
:1025E0008F9383E293E09F938F931F930E94F2084F
:1025F0008CE38093F104E091D007F0E0EE0FFF1F31
:10260000ED59F84F20813181E091CF07F0E0EE0FD6
:10261000FF1FED59F84F808191813F932F939F9336
:102620008F9383E193E0BEC11092F10485E093E0C3
:102630009F938F9311E01F930E94F2080F900F90C9
:102640000F90809100018A3009F04AC084E18093A4
:10265000F10440910605509107058091D6049091B0
:10266000D7042091060530910705821B930B5F93D9
:102670004F939F938F9385EF92E09F938F931F9338
:102680000E94F20888E28093F1044091080550917D
:1026900009058091D8049091D904209108053091C2
:1026A0000905821B930B5F934F939F938F9385EE46
:1026B00092E09F938F931F930E94F2088CE3809384
:1026C000F10480910A0590910B052091B507309196
:1026D000B6079F938F933F932F9385ED92E055C05C
:1026E00084E18093F104809106059091070562E0F2
:1026F00070E00E9446408091D6049091D7042091CA
:10270000060530910705821B930B7F936F939F9370
:102710008F9385EC92E09F938F931F930E94F20812
:1027200088E28093F104809108059091090562E0A8
:1027300070E00E9446408091D8049091D904209185
:10274000080530910905821B930B7F936F939F932C
:102750008F9385EB92E09F938F931F930E94F208D3
:102760008CE38093F10480910A0590910B0562E05F
:1027700070E00E9446408091B5079091B6077F9324
:102780006F939F938F9385EA92E09F938F931F930C
:102790000E94F2088DB79EB7459602CE1092F104C2
:1027A00088E992E09F938F9311E01F930E94F208B3
:1027B00084E18093F104809110059091110520919E
:1027C000DE043091DF049F938F933F932F9387E82C
:1027D00092E09F938F931F930E94F20888E2809368
:1027E000F10480911205909113052091DC04309141
:1027F000DD049F938F933F932F9386E792E09F93FF
:102800008F931F930E94F2088CE38093F1046091F0
:1028100014057091150580911605909117050E9479
:10282000B93E2091AA073091AB077F936F933F93F6
:102830002F9385E692E046C184E18093F104809174
:102840000803909109039F938F9387E592E09F93EC
:102850008F9311E01F930E94F20888E28093F104A5
:102860008091FF04909100059F938F9389E492E0FB
:102870009F938F931F930E94F2088DB79EB70A967D
:102880008FCD1092F1048AE392E09F938F9311E031
:102890001F930E94F20884E18093F10480917003F9
:1028A000909171039F938F938BE292E09F938F930C
:1028B0001F930E94F20888E28093F10480916E03D6
:1028C00090916F039F938F938CE192E09F938F93EE
:1028D0001F930E94F2088CE38093F10480914C05D1
:1028E00090914D059F938F938DE092E09F938F93EE
:1028F0001F930E94F2088DB79EB7429651CD109259
:10290000F104809162059091630520915A05309100
:102910005B059F938F933F932F938BEF91E09F9352
:102920008F9311E01F930E94F20884E18093F104D9
:10293000809164059091650520915C0530915D055D
:102940009F938F933F932F9389EE91E09F938F9363
:102950001F930E94F20888E28093F104809166053B
:102960009091670520915E0530915F059F938F934D
:102970003F932F9387ED91E09F938F931F930E9436
:10298000F2088CE38093F1048091680590916905C9
:1029900020916005309161059F938F933F932F9312
:1029A00085EC91E09F938F931F930E94F2088DB75F
:1029B0009EB74C96F5CC1092F1048DEB91E09F936D
:1029C0008F9311E01F930E94F20884E18093F10439
:1029D0008091930390E09F938F938FEA91E09F9370
:1029E0008F931F930E94F20888E28093F1048091F4
:1029F000D2049091D3049F938F9381EA91E09F93A7
:102A00008F931F930E94F2088CE38093F10420912E
:102A1000ED0730E08091EC0790E03F932F939F9378
:102A20008F9383E991E09F938F931F930E94F20805
:102A3000B4CC1092F10483E891E09F938F9311E05E
:102A40001F930E94F20884E18093F104209177069D
:102A5000332727FD309580917606992787FD90953D
:102A60003F932F939F938F9383E791E09F938F934F
:102A70001F930E94F20888E28093F1042091780667
:102A8000332727FD30958091790690E03F932F936F
:102A90009F938F9383E691E09F938F931F930E9460
:102AA000F2088CE38093F10420917D0630E0809160
:102AB0007A06992787FD90953F932F939F938F9345
:102AC00083E591E09F938F931F930E94F2088DB747
:102AD0009EB7489665CC115010936A031092F30488
:102AE0001092F2041F91089587B18C6087B94298C3
:102AF000439808954091F4045091F50444315105F0
:102B000000F14C3D5105E8F42091FA043091FB04AA
:102B1000C901880F991F8417950710F4429A01C0C4
:102B200042982F5F3F4F3093FB042093FA042150CB
:102B300030402417350730F01092FB041092FA044D
:102B400001C0429A4091F6045091F7044431510576
:102B500010F4439808954C3D5105E8F42091F80491
:102B60003091F904C901880F991F8417950710F453
:102B7000439A01C043982F5F3F4F3093F90420934D
:102B8000F804215030402417350730F01092F90432
:102B90001092F8040895439808959FB7F8943998CF
:102BA000389A88B1836088B9E9EBF0E080818C7F46
:102BB00080838AE28093B8009FBF089585EA80935E
:102BC000BC00089584E98093BC0008958093BB0005
:102BD00085E88093BC00089585EC8093BC0008953F
:102BE00085E88093BC000895EF92FF920F931F93A6
:102BF0008CEBE82EF12C84E9F70180831092FC0421
:102C00000BEB10E0F80180818093FD041092FD042D
:102C100080E8F70180831092BD001092BA00F8019D
:102C200010821092B9001092B8000E94CD1585EA6A
:102C3000F7018083F801108285E8F70180831F91F6
:102C40000F91FF90EF9008951F920F920FB60F9281
:102C500011248F939F93EF93FF938091FC048F5FD8
:102C60008093FC0481508330D1F1843028F481308A
:102C700081F0823060F508C08530C1F18530A0F167
:102C8000863009F04FC03EC08091FD04880F8E5AF7
:102C900012C08091FD048F5F8093FD0481508130CC
:102CA00069F0813030F0823061F0833009F047C044
:102CB0000BC08091A1078093BB0020C08091B70713
:102CC000FACF8091AC07F7CF8091C807F4CF8091FD
:102CD000FD04843010F41092FC0485EA10C0809149
:102CE000FE04880F8D5AE7CF85EC09C0E091FE0401
:102CF000F0E08091BB00E55AF84F808385E880932F
:102D0000BC001DC08091FE04E82FF0E09091BB0054
:102D1000E15AF84F90838F5F8093FE04843010F067
:102D20001092FE0484E98093BC001092FC048AE0B7
:102D300090E090936D0380936C031092FD04FF91DB
:102D4000EF919F918F910F900FBE0F901F9018954C
:102D50009FB7F89456985E9A8AB180638AB98BB10E
:102D60008F7C8BB9809100018A3011F4539A5B9863
:102D7000809180008C708093800080918100837EA0
:102D80008093810080918100836C80938100809189
:102D900082008F738093820080916F00897F80937F
:102DA0006F0080916F00816280936F001092000528
:102DB0001092FF049FBF08951F920F920FB60F92BB
:102DC00011242F933F935F936F937F938F939F93E0
:102DD000AF93BF9380910105882391F42091FF0464
:102DE000309100058091FF049091000568E070E04B
:102DF0000E944640261B370B309300052093FF04AA
:102E000010920105BF91AF919F918F917F916F912A
:102E10005F913F912F910F900FBE0F901F901895CB
:102E20001F920F920FB60F9211240F931F932F939F
:102E30003F934F935F936F937F938F939F93AF9342
:102E4000BF93CF93DF93EF93FF9320918600309150
:102E500087008091020590910305281B390B809112
:102E60008600909187009093030580930205C90125
:102E70008D5494400091040510910505835F9A419B
:102E800088F4043011053CF010926B038091010529
:102E90008F5F8093010581E090E09093050580931A
:102EA000040598C00E3011050CF094C0C9018B5F69
:102EB0009040845B914008F072C0E901C25DD1404E
:102EC000F801EE0FFF1FED59F84F808191819E01AF
:102ED000281B390BC90137FF03C0909581959F4F7F
:102EE000069784F48091FF0490910005883C910539
:102EF0004CF48091FF04909100050A969093000590
:102F00008093FF04F801EE0FFF1FED59F84F208169
:102F10003181C901880F991F820F931F8C0F9D1F4C
:102F200064E070E00E9446409B01CE010196861746
:102F300097071CF42150304006C021976C177D077D
:102F400014F42F5F3F4F8091FF0490910005E8013A
:102F5000CC0FDD1F833C9105BCF0FE01ED59F84F0D
:102F600080819181A901481B590BCA0163E070E07F
:102F70000E944640CB01880F991F860F971FCF579D
:102F8000D84F9983888304C0CF57D84F19821882AD
:102F9000F801EE0FFF1FED59F84F31832083F80140
:102FA0003196F0930505E0930405E530F10511F441
:102FB0005D9A06C05D98E630F10511F45C9A01C097
:102FC0005C98809100018A3029F4379711F45B9A5C
:102FD00001C05B988091FF0490910005892B49F016
:102FE0008091FF04909100050197909300058093D4
:102FF000FF04FF91EF91DF91CF91BF91AF919F912E
:103000008F917F916F915F914F913F912F911F9180
:103010000F910F900FBE0F901F9018952F923F9217
:103020004F925F926F927F928F929F92AF92BF92D8
:10303000CF92DF92EF92FF920F931F93CF93DF9384
:10304000CDB7DEB722970FB6F894DEBF0FBECDBF67
:1030500080910A0590910B052091DA043091DB04F0
:10306000821B930B9093B6078093B5078091D80489
:103070009091D9042091080530910905821B930B8A
:103080009093B2078093B1078091D6049091D704B2
:103090002091060530910705821B930B9093B4078E
:1030A0008093B307E090B807F090B9076091DE0411
:1030B0007091DF04882777FD8095982F2CE030E011
:1030C00040E050E00E9407400027F7FC0095102FD9
:1030D000E60EF71E081F191FC801B70122E030E0F5
:1030E00040E050E00E947B403093B9072093B8073E
:1030F000E090C207F090C3076091DC047091DD049A
:10310000882777FD8095982F2CE030E040E050E054
:103110000E9407400027F7FC0095102FE60EF71ECF
:10312000081F191FC801B70122E030E040E050E05D
:103130000E947B403093C3072093C2072091AA07C7
:103140003091AB076091E0047091E104882777FD2E
:103150008095982F442737FD4095542F620F731F99
:10316000841F951F22E030E040E050E00E947B4049
:103170003093AB072093AA07409140055091410539
:1031800060914205709143052091DE043091DF0487
:10319000C901880F991F820F931F880F991F880FED
:1031A000991FAA2797FDA095BA2F840F951FA61FD8
:1031B000B71F8093400590934105A0934205B093BB
:1031C0004305409144055091450560914605709135
:1031D00047052091DC043091DD04C901880F991F57
:1031E000820F931F880F991F880F991FAA2797FD99
:1031F000A095BA2F840F951FA61FB71F8093440573
:1032000090934505A0934605B09347052091DE04B1
:103210003091DF048091500590915105820F931FEA
:1032200090935105809350052091DC043091DD048A
:103230008091520590915305820F931F90935305EF
:103240008093520580915405909155050196909375
:1032500055058093540520913C0530913D054091E2
:103260003E0550913F058091B5079091B607AA277A
:1032700097FDA095BA2F820F931FA41FB51F8093AF
:103280003C0590933D05A0933E05B0933F0580918A
:10329000B5079091B6079C01442737FD4095542F00
:1032A0008091BA079091BB07A091BC07B091BD0770
:1032B000280F391F4A1F5B1F2093BA073093BB07A3
:1032C0004093BC075093BD07203B83E8380788E054
:1032D000480780E0580764F0205B3348484050407E
:1032E0002093BA073093BB074093BC075093BD07A8
:1032F0008091BA079091BB07A091BC07B091BD0720
:10330000B7FF0CC080559C47A74FBF4F8093BA07AB
:103310009093BB07A093BC07B093BD07909188051D
:103320009A83992309F08AC080918905882309F03E
:1033300085C08091D10786FF81C06091B5077091EB
:10334000B60720912C0530912D0540912E05509106
:103350002F05E0909503FF2400E010E0882777FD1B
:103360008095982F0E94074020E038E040E050E030
:103370000E947B40CA01B901A80197010E94074041
:1033800020E030E140E050E00E947B4059016A01BA
:103390002093C7053093C8054093C9055093CA05CB
:1033A0006091B5077091B6072091340530913505CD
:1033B0004091360550913705882777FD8095982FE5
:1033C0000E94074020E038E040E050E00E947B404F
:1033D000CA01B901A80197010E94074020E030E12D
:1033E00040E050E00E947B402093C3053093C40529
:1033F0004093C5055093C605D601C501D7FE07C049
:10340000B095A095909581959F4FAF4FBF4F813854
:103410009105A105B10574F457FF07C0509540957B
:10342000309521953F4F4F4F5F4F21383105410572
:103430005105A4F081E080934F0510C01092C305A0
:103440001092C4051092C5051092C6051092C705CA
:103450001092C8051092C9051092CA058091B10753
:103460009091B2072090C7053090C8054090C905DB
:103470005090CA05820D931D9093B2078093B107B7
:103480000091B1071091B207A090C305B090C40598
:10349000C090C505D090C60580919603682E77240C
:1034A00088249924C401B301A60195010E94074014
:1034B00020E032E040E050E00E947B40020F131F0A
:1034C0001093B2070093B107209138053091390568
:1034D00040913A0550913B058091B1079091B20718
:1034E000AA2797FDA095BA2F820F931FA41FB51F7F
:1034F0008093380590933905A0933A05B0933B0526
:10350000409134055091350560913605709137052D
:103510008091B1079091B207209184053091850583
:10352000821B930BAA2797FDA095BA2F840F951F96
:10353000A61FB71F8093340590933505A0933605D9
:10354000B09337058091340590913505A0913605EB
:10355000B0913705E0907803F090790300917A03F9
:1035600010917B03E816F9060A071B0704F580E1B2
:1035700097E2A0E0B0E08E199F09A00BB10B8093F9
:10358000340590933505A0933605B09337058091A7
:10359000340590913505A0913605B091370580939B
:1035A000380590933905A0933A05B0933B052091D7
:1035B00034053091350540913605509137058827FF
:1035C0009927DC018E199F09A00BB10B2817390729
:1035D0004A075B0704F580EF98EDAFEFBFEFE80E09
:1035E000F91E0A1F1B1FE0923405F0923505009367
:1035F0003605109337058091340590913505A091DB
:103600003605B09137058093380590933905A0931E
:103610003A05B0933B058091D8049091D9040F9757
:1036200034F488E19CEF9093B2078093B1078091C6
:10363000D8049091D904079734F480E398EF9093DD
:10364000B2078093B1079091000199839A30A9F451
:103650008091D8049091D904835F934034F088EE30
:1036600093E09093B2078093B1078091D804909132
:10367000D9048A5F9340DCF014C08091D804909103
:10368000D904855E974034F088EE93E09093B207BA
:103690008093B1078091D8049091D904835F9740BB
:1036A00034F080ED97E09093B2078093B10780915A
:1036B000B3079091B4078A199B099093B40780933C
:1036C000B3070091B3071091B407C401B301A2017D
:1036D00091010E94074020E032E040E050E00E946B
:1036E0007B40021B130B1093B4070093B307209188
:1036F000300530913105409132055091330580916C
:10370000B3079091B407AA2797FDA095BA2F820F0F
:10371000931FA41FB51F8093300590933105A0938C
:103720003205B093330540912C0550912D056091E1
:103730002E0570912F058091B3079091B4072091C9
:10374000860530918705821B930BAA2797FDA095CC
:10375000BA2F840F951FA61FB71F80932C05909337
:103760002D05A0932E05B0932F0580912C059091E7
:103770002D05A0912E05B0912F05E0907403F090D7
:1037800075030091760310917703E816F9060A078E
:103790001B0704F588EA91E6A0E0B0E08E199F09C6
:1037A000A00BB10B80932C0590932D05A0932E05B3
:1037B000B0932F0580912C0590912D05A0912E0599
:1037C000B0912F058093300590933105A093320579
:1037D000B093330520912C0530912D0540912E0595
:1037E00050912F0588279927DC018E199F09A00B7E
:1037F000B10B281739074A075B0704F588E59EE9EE
:10380000AFEFBFEFE80EF91E0A1F1B1FE0922C0559
:10381000F0922D0500932E0510932F0580912C0515
:1038200090912D05A0912E05B0912F058093300524
:1038300090933105A0933205B09333058091D6045F
:103840009091D7040F9734F488E19CEF9093B407DC
:103850008093B3078091D6049091D704079734F4EE
:1038600080E398EF9093B4078093B30799819A30DF
:10387000A9F48091D6049091D704835F934034F0EB
:1038800088EE93E09093B4078093B3078091D604B9
:103890009091D7048A5F9340DCF014C08091D604E5
:1038A0009091D704855E974034F088EE93E0909332
:1038B000B4078093B3078091D6049091D704835FB7
:1038C000974034F080ED97E09093B4078093B3076E
:1038D00080917A00886C80937A0080913C05909169
:1038E0003D05A0913E05B0913F058093280590933A
:1038F0002905A0932A05B0932B0580912C05909162
:103900002D05A0912E05B0912F0580931805909359
:103910001905A0931A05B0931B0580913405909169
:103920003505A0913605B091370580932005909319
:103930002105A0932205B093230580913005909135
:103940003105A0913205B091330580931C05909309
:103950001D05A0931E05B0931F0580913805909119
:103960003905A0913A05B0913B05809324059093C9
:103970002505A0932605B09327058091D10787FFE1
:1039800063C02A81222309F05FC0809189058823C2
:1039900009F05AC08091B3079091B407893C910512
:1039A0005CF02091B3073091B4078091B3079091F8
:1039B000B4072052334011C08091B3079091B407EF
:1039C00088539F4FA4F42091B3073091B40780919E
:1039D000B3079091B407205E3C4F880F991F880F62
:1039E000991F280F391F3093B4072093B307809194
:1039F000B1079091B207893C91055CF02091B10725
:103A00003091B2078091B1079091B20720523340B4
:103A100011C08091B1079091B20788539F4FA4F4D1
:103A20002091B1073091B2078091B1079091B20710
:103A3000205E3C4F880F991F880F991F280F391F50
:103A40003093B2072093B10722960FB6F894DEBFE9
:103A50000FBECDBFDF91CF911F910F91FF90EF90DF
:103A6000DF90CF90BF90AF909F908F907F906F909E
:103A70005F904F903F902F9008950F931F930AE708
:103A800010E0F8018081877380838091D604909143
:103A9000D7049093B4078093B3078091D804909192
:103AA000D9049093B2078093B1078091DA04909182
:103AB000DB049093B6078093B5076091DE047091A4
:103AC000DF04882777FD8095982F2CE030E040E0D8
:103AD00050E00E9407407093B9076093B807609167
:103AE000DC047091DD04882777FD8095982F0E9473
:103AF00007407093C3076093C2078091E0049091E0
:103B0000E1049093AB078093AA07F8018081886C49
:103B100080836091F40770E080E090E024EC39E06D
:103B200040E050E00E940740609374037093750377
:103B300080937603909377036091F50770E080E0BF
:103B400090E00E940740609378037093790380931C
:103B50007A0390937B031F910F9108958091FF0446
:103B600090910005813A91050CF40AC38091D40725
:103B70008B3F98F08B3F19F480915A050EC08C3F13
:103B800019F480915C0509C08D3F19F480915E05A0
:103B900004C08E3F21F4809160058093830380915F
:103BA0008303882319F41092830304C08F3F11F418
:103BB000809383038091D3078B3F98F08B3F19F458
:103BC00080915A050EC08C3F19F480915C0509C0A4
:103BD0008D3F19F480915E0504C08E3F21F48091E1
:103BE00060058093820380918203882319F41092E8
:103BF000820305C0843618F084E6809382038091A6
:103C0000D5078B3F98F08B3F19F480915A050EC071
:103C10008C3F19F480915C0509C08D3F19F48091A7
:103C20005E0504C08E3F21F480916005809384037B
:103C300080918403882319F41092840305C084368C
:103C400018F084E6809384038091D7078B3F98F027
:103C50008B3F19F480915A050EC08C3F19F4809166
:103C60005C0509C08D3F19F480915E0504C08E3F4C
:103C700021F48091600580938503809185038823DA
:103C800019F41092850304C08F3F11F480938503CB
:103C90008091DE078B3F98F08B3F19F480915A0595
:103CA0000EC08C3F19F480915C0509C08D3F19F45A
:103CB00080915E0504C08E3F21F480916005809361
:103CC000860380918603882319F41092860304C02A
:103CD0008F3F11F4809386038091DF078B3F98F02C
:103CE0008B3F19F480915A050EC08C3F19F48091D6
:103CF0005C0509C08D3F19F480915E0504C08E3FBC
:103D000021F48091600580938703809187038B3035
:103D100010F48AE002C08F3F11F4809387038091F2
:103D2000E0078B3F98F08B3F19F480915A050EC045
:103D30008C3F19F480915C0509C08D3F19F4809186
:103D40005E0504C08E3F21F4809160058093880356
:103D500080918803882319F41092880304C08F3F50
:103D600011F4809388038091E5078B3F98F08B3F97
:103D700019F480915A050EC08C3F19F480915C05AE
:103D800009C08D3F19F480915E0504C08E3F21F477
:103D90008091600580938A0380918A03882319F4B7
:103DA00010928A0304C08F3F11F480938A0380919C
:103DB000E6078B3F98F08B3F19F480915A050EC0AF
:103DC0008C3F19F480915C0509C08D3F19F48091F6
:103DD0005E0504C08E3F21F48091600580938B03C3
:103DE00080918B03882319F410928B0304C08F3FBA
:103DF00011F480938B038091E7078B3F98F08B3F02
:103E000019F480915A050EC08C3F19F480915C051D
:103E100009C08D3F19F480915E0504C08E3F21F4E6
:103E20008091600580938C0380918C03882319F422
:103E300010928C0304C08F3F11F480938C03809107
:103E4000E8078B3F98F08B3F19F480915A050EC01C
:103E50008C3F19F480915C0509C08D3F19F4809165
:103E60005E0504C08E3F21F48091600580938D0330
:103E700080918D03882319F410928D0304C08F3F25
:103E800011F480938D038091E9078B3F98F08B3F6D
:103E900019F480915A050EC08C3F19F480915C058D
:103EA00009C08D3F19F480915E0504C08E3F21F456
:103EB0008091600580938E0380918E03882319F48E
:103EC00010928E0304C08F3F11F480938E03809173
:103ED000F9078B3F98F08B3F19F480915A050EC07B
:103EE0008C3F19F480915C0509C08D3F19F48091D5
:103EF0005E0504C08E3F21F48091600580938F039E
:103F000080918F03882319F410928F0304C08F3F90
:103F100011F480938F038091FA078B3F98F08B3FC9
:103F200019F480915A050EC08C3F19F480915C05FC
:103F300009C08D3F19F480915E0504C08E3F21F4C5
:103F4000809160058093900380919003882319F4F9
:103F50001092900304C08F3F11F4809390038091DE
:103F6000FB078B3F98F08B3F19F480915A050EC0E8
:103F70008C3F19F480915C0509C08D3F19F4809144
:103F80005E0504C08E3F21F480916005809391030B
:103F900080919103882319F41092910304C08F3FFC
:103FA00011F4809391038091FC078B3F98F08B3F35
:103FB00019F480915A050EC08C3F19F480915C056C
:103FC00009C08D3F19F480915E0504C08E3F21F435
:103FD000809160058093920380919203882319F465
:103FE0001092920304C08F3F11F48093920380914A
:103FF000EA078B3F98F08B3F19F480915A050EC069
:104000008C3F19F480915C0509C08D3F19F48091B3
:104010005E0504C08E3F21F4809160058093930378
:1040200080919303882319F41092930304C08F3F67
:1040300011F4809393038091EF078B3F98F08B3FAF
:1040400019F480915A050EC08C3F19F480915C05DB
:1040500009C08D3F19F480915E0504C08E3F21F4A4
:10406000809160058093940380919403882319F4D0
:104070001092940304C08F3F11F4809394038091B5
:10408000F2078B3F98F08B3F19F480915A050EC0D0
:104090008C3F19F480915C0509C08D3F19F4809123
:1040A0005E0504C08E3F21F48091600580939503E6
:1040B00080919503882319F41092950304C08F3FD3
:1040C00011F4809395038091F3078B3F98F08B3F19
:1040D00019F480915A050EC08C3F19F480915C054B
:1040E00009C08D3F19F480915E0504C08E3F21F414
:1040F000809160058093960380919603882319F43C
:104100001092960304C08F3F11F480939603809120
:10411000F8078B3F98F08B3F19F480915A050EC039
:104120008C3F19F480915C0509C08D3F19F4809192
:104130005E0504C08E3F21F4809160058093970353
:1041400080919703882319F41092970304C08F3F3E
:1041500011F48093970360918A0370E080E090E00F
:104160000E943F3C27E137EB41ED58E30E94A43F1A
:1041700060937E0370937F03809380039093810309
:10418000089580915605882301F51092B707109283
:10419000A1071092AC071092C8078091BC04882335
:1041A00011F08093A1078091BD04882311F08093C2
:1041B000B7078091BE04882311F08093C8078091CF
:1041C000BF04882311F08093AC078091A10790E091
:1041D00090939906809398068091B70790E090930A
:1041E0009B0680939A068091C80790E090939D0665
:1041F00080939C068091AC0790E090939F068093FB
:104200009E061092FC041092FD040E94DE15089593
:1042100010921105109210051092130510921205BC
:1042200080E090E0A0E0B0E0809314059093150545
:10423000A0931605B0931705109207051092060576
:10424000109209051092080510920B0510920A05AC
:1042500010929503109296030E943D1D84E690E013
:104260000E945A0C0E943D1D8091D10780FF10C012
:1042700080910E0390910F03875B934038F48091F7
:104280000E0390910F038E5E924010F40E9469100D
:104290008091D6049091D7049093070580930605EA
:1042A0008091D8049091D9049093090580930805D2
:1042B0008091DA049091DB0490930B0580930A05BA
:1042C000809108059091090590930D0580930C0548
:1042D000809106059091070590930F0580930E0538
:1042E00084E00E9483388050944058F18091C20746
:1042F0009091C30797FF03C0909581959F4F6CE005
:1043000070E00E94464070931305609312058091FF
:10431000B8079091B90797FF03C0909581959F4F7B
:104320006CE070E00E9446407093110560931005A8
:104330006091D4047091D504882777FD8095982FDB
:1043400017C084E00E948338909311058093100574
:1043500086E00E948338909313058093120588E0CD
:104360000E948338AA2797FDA095BA2FBC01CD01E2
:104370000E94EC3E6093140570931505809316051A
:104380009093170510922C0510922D0510922E0572
:1043900010922F05109230051092310510923205BF
:1043A000109233051092340510923505109236059F
:1043B00010923705109238051092390510923A057F
:1043C00010923B0510923C0510923D0510923E055F
:1043D00010923F051092B4071092B3071092B207E3
:1043E0001092B1071092B6071092B50780910A0398
:1043F00090910B03A0910C03B0910D03909359077A
:10440000809358071092E3041092E204109248053A
:104410001092490510924A0510924B0580916E0347
:1044200090916F03909371038093700382E390E007
:104430009093D0048093CF046091F40770E080E003
:1044400090E024EC39E040E050E00E9407406856DC
:10445000754C8F4F9F4F60937403709375038093D7
:104460007603909377036091F50770E080E090E029
:104470000E9407406856754C8F4F9F4F609378039A
:104480007093790380937A0390937B0310927D035A
:1044900010927C03109273051092720510927505AC
:1044A0001092740560916E0370916F03882777FDF9
:1044B0008095982F2EE036E040E050E00E940740C3
:1044C0006093BA077093BB078093BC079093BD07B6
:1044D0001092BF071092BE0708951F93182F0EC0A9
:1044E00080915605882361F484E690E09093D0048F
:1044F0008093CF048AEF90E00E94790C115080F7EE
:104500001F9108958091C907E82FF0E0EE0FFF1F7B
:10451000ED59F84F808191818D5E9F4F14F010927C
:104520009803808191818A5B9F4FDCF4809198038E
:104530008823B9F481E08093980380914E058F5FC2
:1045400080934E0580914E05853028F480914E056C
:104550000E946D22089588EE93E09093D00480939A
:10456000CF0408952F923F924F925F926F927F9265
:104570008F929F92AF92BF92CF92DF92EF92FF9273
:104580000F931F93CF93DF93CDB7DEB7A2970FB6EC
:10459000F894DEBF0FBECDBF0E940E18299A20915D
:1045A0007005309171058091DB07482F50E0465F20
:1045B0005F4F58874F834217530714F438872F8370
:1045C0008091FF0490910005883791050CF071C02F
:1045D00080910301882399F480910403909105034D
:1045E0008F5F9F4F61F488E99AE39093D0048093A2
:1045F000CF0480E09CE090930503809304038091B6
:10460000AD059091AE05009731F001979093AE05FE
:104610008093AD0504C01092560510925705809105
:1046200000018A3011F4289A01C028988091580519
:1046300090915905895E934008F403C48091E20784
:10464000A82FB0E0B887AF8381E080935705E09151
:10465000C9072E2F30E0220F331FF901EF57F84F13
:1046600011821082A091CA07B0E0AA0FBB1FFD0102
:10467000EF57F84F11821082E091CC074E2F50E097
:10468000440F551FCA018F57984FFC0111821082A9
:104690002D59384FF90111821082AD59B84F11963A
:1046A0001C921E924D59584FDA0111961C921E927F
:1046B000CDC38091FF04909100058D3891050CF4D5
:1046C000C5C3109257058091E30722E3829FC00182
:1046D00011249093AE058093AD05EF81F885B997CD
:1046E0006CF08091580590915905FFEF8F3F9F071F
:1046F00029F00196909359058093580580915805AB
:10470000909159058F3F910509F0E8F41092BF058B
:104710001092C0051092C1051092C2051092BB05FF
:104720001092BC051092BD051092BE0510926F0547
:1047300010926E058A3F910531F481E090E09093EC
:10474000A5058093A40520915A0530915B058091C1
:10475000CD07E82FF0E0EE0FFF1FED59F84F8081F5
:10476000918182599F4F281739071CF42F5F3F4FC3
:104770000CC08081918182599F4F821793074CF41E
:104780002115310531F02150304030935B052093E5
:104790005A0520915C0530915D058091CE07E82F88
:1047A000F0E0EE0FFF1FED59F84F808191818259A3
:1047B0009F4F281739071CF42F5F3F4F0CC0808193
:1047C000918182599F4F821793074CF4211531052F
:1047D00031F02150304030935D0520935C052091ED
:1047E0005E0530915F058091CF07E82FF0E0EE0F76
:1047F000FF1FED59F84F8081918182599F4F2817F3
:1048000039071CF42F5F3F4F0CC080819181825982
:104810009F4F821793074CF42115310531F0215039
:10482000304030935F0520935E0520916005309104
:1048300061058091D007E82FF0E0EE0FFF1FED59E2
:10484000F84F8081918182599F4F281739071CF4B6
:104850002F5F3F4F0CC08081918182599F4F8217FB
:1048600093074CF42115310531F02150304030933D
:104870006105209360052091620530916305809168
:1048800075079091760782599F4F281739071CF4B6
:104890002F5F3F4F0EC08091750790917607825928
:1048A0009F4F821793074CF42115310531F02150A9
:1048B0003040309363052093620520916405309168
:1048C0006505809177079091780782599F4F281747
:1048D00039071CF42F5F3F4F0EC0809177079091EE
:1048E000780782599F4F821793074CF421153105A1
:1048F00031F02150304030936505209364052091BC
:104900006605309167058091790790917A07825901
:104910009F4F281739071CF42F5F3F4F0EC080911F
:10492000790790917A0782599F4F821793074CF429
:104930002115310531F02150304030936705209327
:104940006605209168053091690580917B079091FB
:104950007C0782599F4F281739071CF42F5F3F4F60
:104960000EC080917B0790917C0782599F4F8217E0
:1049700093074CF42115310531F02150304030932C
:1049800069052093680580915A0590915B0597FF12
:1049900005C010925B0510925A050AC08F3F910521
:1049A00039F034F08FEF90E090935B0580935A05D7
:1049B00080915C0590915D0597FF05C010925D05A3
:1049C00010925C050AC08F3F910539F034F08FEFEB
:1049D00090E090935D0580935C0580915E059091D9
:1049E0005F0597FF05C010925F0510925E050AC033
:1049F0008F3F910539F034F08FEF90E090935F0591
:104A000080935E05809160059091610597FF05C0D8
:104A100010926105109260050AC08F3F910539F030
:104A200034F08FEF90E09093610580936005809162
:104A300062059091630597FF05C01092630510927F
:104A400062050AC08F3F910539F034F08FEF90E096
:104A5000909363058093620580916405909165054C
:104A600097FF05C010926505109264050AC08F3F3C
:104A7000910539F034F08FEF90E0909365058093C5
:104A80006405809166059091670597FF05C01092B7
:104A90006705109266050AC08F3F910539F034F022
:104AA0008FEF90E09093670580936605809168058D
:104AB0009091690597FF05C01092690510926805ED
:104AC0000AC08F3F910539F034F08FEF90E090935A
:104AD000690580936805E091CB07F0E0EE0FFF1FBA
:104AE000ED59F84F80819181813591050CF40EC10B
:104AF00080915605882309F009C18091CC07E82FE1
:104B0000F0E0EE0FFF1FED59F84F808191818C345A
:104B100091050CF4BFC08091AC058F5F8093AC050C
:104B2000893C08F4F3C01092AC05299810925905FD
:104B3000109258058091C907282F30E0D901AA0F9B
:104B4000BB1FAD59B84F8D919C911197873491053A
:104B50009CF48091CA07E82FF0E0EE0FFF1FED599B
:104B6000F84F8081918197FF03C0909581959F4F69
:104B7000873491050CF46BC08091CA07682F70E0F0
:104B8000DB01AA0FBB1FAD59B84F8D919C911197B6
:104B9000873491053CF0F901EE0FFF1FED59F84FF6
:104BA000808191818D919C918734910564F0F90108
:104BB000EE0FFF1FED59F84F8081918187349105E9
:104BC00014F042E001C041E0FB01EE0FFF1FED5980
:104BD000F84F80819181863491055CF4F901EE0FE4
:104BE000FF1FED59F84F80819181873491050CF0BA
:104BF00043E0FB01EE0FFF1FED59F84F80819181DB
:104C00008A5B9F4F5CF4F901EE0FFF1FED59F84FDF
:104C100080819181873491050CF044E0660F771F05
:104C20006D59784FDB018D919C918A5B9F4F5CF4AD
:104C3000220F331F2D59384FF9018081918186341D
:104C400091050CF445E0842F0E9493381CC080919C
:104C5000D10783FF18C08081918197FF03C0909591
:104C600081959F4F44977CF48D919C918A5B9F4FD7
:104C700054F481E080934E0588EE93E09093D00445
:104C80008093CF0443C00E94743A0E94B1380E94BE
:104C9000082135C080819181855B9F4FACF5809163
:104CA000AC058F5F8093AC05893C80F11092AC0518
:104CB00029986FEF7FEF84E00E948B38109259059E
:104CC000109258050E9408216091100570911105FD
:104CD00084E00E948B38609112057091130586E084
:104CE0000E948B386091140570911505809116050E
:104CF000909117050E94BE3E88E00E948B380E946A
:104D0000743A0E946D2202C01092AC05E091CB076C
:104D1000F0E0EE0FFF1FED59F84F808191818B5A23
:104D20009F4F0CF093C08091CC07482F50E0FA01C0
:104D3000EE0FFF1FED59F84F80819181855B9F4FEA
:104D40000CF065C08091AB058F5F8093AB05893C0B
:104D500008F45FC088EC8093AB0581E090E090930D
:104D600059058093580581E0809356051092B70548
:104D70001092B8051092B9051092BA0510923C0530
:104D800010923D0510923E0510923F0510922C05A1
:104D900010922D0510922E0510922F0510923405B9
:104DA000109235051092360510923705809118053E
:104DB00090911905A0911A05B0911B0580933005BB
:104DC00090933105A0933205B0933305809120056F
:104DD00090912105A0912205B0912305809338057B
:104DE00090933905A0933A05B0933B051092BF0507
:104DF0001092C0051092C1051092C2051092BB0519
:104E00001092BC051092BD051092BE0502C0109212
:104E1000AB05440F551F4D59584FDA018D919C91A8
:104E20008C3491058CF08091AA058F5F8093AA0540
:104E3000893C60F088EC8093AA0510925905109285
:104E400058051092560502C01092AA0580916B0376
:104E5000815080936B0380916B038F3F29F0809189
:104E60005705882309F477C30E94AE1DE0916A05B7
:104E7000F0916B05FAA3E9A38091C907E82EFF24FE
:104E8000D701AA0FBB1FCD018D59984FFC0180811E
:104E9000918198A38F8F8091D807682E7724AF5780
:104EA000B84F0D90BC91A02DBE8FAD8F8091D907CA
:104EB000A82EBB2420917205309173053C8F2B8F57
:104EC00020906C0530906D058091CA07082F10E086
:104ED000C801880F991FDC01AD59B84F0D90BC91E6
:104EE000A02DBA8FA98F8F57984FDC018D919C917F
:104EF000988F8F8BE0917405F0917505FE8BED8B8B
:104F0000E091CC07AE2FB0E0AA0FBB1FAD59B84F50
:104F10000D90BC91A02DBC8BAB8BE091CB07F0E04A
:104F2000EE0FFF1FED59F84FC080D18028E730E029
:104F3000C20ED31ED0927105C09270056091870396
:104F400070E080E090E00E943F3C20E030E040E2F2
:104F500051E40E94ED3D20E030E040E85CE30E9437
:104F6000A43F6F87788B898B9A8B6093C40770936B
:104F7000C5078093C6079093C7076091880370E0C8
:104F800080E090E00E943F3C20E030EE4BE256E4AF
:104F90000E94513E6093AD077093AE078093AF07B8
:104FA0009093B0072091C104222331F08AE090E071
:104FB0009093D0048093CF04E22F22FF09C0809108
:104FC0009203482F50E0440F551F440F551F10C047
:104FD00023FD03C040E050E00BC08091920390E0BD
:104FE000880F991F880F991F44275527481B590B75
:104FF00020917A0530917B05C901B3E0880F991F94
:10500000BA95E1F7821B930B840F951F68E070E05F
:105010000E9446402B0170937B0560937A05E4FF64
:1050200009C080919203482F50E0440F551F440F50
:10503000551F10C0E5FD03C040E050E00BC080915B
:10504000920390E0880F991F880F991F44275527D6
:10505000481B590B80917C0590917D059C01E3E0F4
:10506000220F331FEA95E1F7281B390BCA01820F83
:10507000931F68E070E00E9446404B0170937D05ED
:1050800060937C058091C004282F83FF03C082E3D6
:1050900090E004C082FF07C08EEC9FEF90937F05E5
:1050A00080937E0504C010927F0510927E0521FF3B
:1050B00009C080917C0390917D03019690937D03BC
:1050C00080937C0324FF09C080917C0390917D0331
:1050D000019790937D0380937C034F8D58A1469D4B
:1050E000C001479D900D569D900D112429A13AA114
:1050F000220F331F69A17AA1260F371FED8DFE8D78
:10510000EA9DD001EB9DB00DFA9DB00D11244B8DA1
:105110005C8DA41BB50BBAA3A9A3820F931F64E0F7
:1051200070E00E94464089A19AA1860F971F9AA31A
:1051300089A3C20162E070E00E944640A9A1BAA121
:10514000A60FB71FBAA3A9A3B0936B05A0936A05D6
:10515000E98DFA8DE69DC001E79D900DF69D900DBD
:1051600011249101220F331F220D331D4F89588DB9
:10517000B501469F5001479FB00C569FB00C1124BB
:10518000AD89BE89AA1ABB0A820F931F64E070E042
:105190000E944640A60EB71EC40162E070E00E9465
:1051A0004640A60EB71EB0926D05A0926C052091E8
:1051B0007E0530917F05220F331F220F331FEB89AD
:1051C000FC892E1B3F0B30936F0520936E05809159
:1051D0007D0680FF56C080919203813808F451C04B
:1051E00080917606992787FD9095AC01469DC00178
:1051F000479D900D569D900D112469A17AA1680FCD
:10520000791F70936B0560936A05809177069927E3
:1052100087FD9095DC01A69DC001A79D900DB69DD0
:10522000900D1124A80EB91EB0926D05A0926C05C8
:1052300080917806992787FD9095280F391F309324
:105240006F0520936E052091D60730E080917A0695
:10525000992787FD9095FC012E9FC0012F9F900DEF
:105260003E9F900D112490937D0380937C03809149
:10527000790690E08C159D0524F490937105809338
:105280007005809170059091710597FF04C0109290
:105290007105109270058091D10782FF0CC080E0EB
:1052A00090E0A0E0B0E08093AD079093AE07A093AC
:1052B000AF07B093B00720E030E040E050E06F85EA
:1052C000788989899A890E94273F882364F480E03D
:1052D00090E0A0E0B0E08093C4079093C507A0934E
:1052E000C607B093C70720E030E040E050E060918F
:1052F000AD077091AE078091AF079091B0070E9403
:10530000273F882364F480E090E0A0E0B0E0809341
:10531000AD079093AE07A093AF07B093B007E091AD
:105320006A05F0916B052091760530917705CF01E4
:1053300064E070E00E94464077FF03C0709561957D
:105340007F4F261737077CF4CF01F7FF03C09095F6
:1053500081959F4F64E070E00E944640709377050E
:105360006093760506C02150304030937705209336
:105370007605E0916C05F0916D05209178053091EE
:105380007905CF0164E070E00E94464077FF03C0DA
:10539000709561957F4F261737077CF4CF01F7FF93
:1053A00003C0909581959F4F64E070E00E94464055
:1053B000709379056093780506C021503040309392
:1053C000790520937805F801EE0FFF1FED59F84F8E
:1053D000208131818091F007482F50E04217530718
:1053E00044F48091FD0782FF04C081E080938A0528
:1053F00015C080918A05882389F0F801EE0FFF1F00
:10540000ED59F84F208131818091F107BA01681B75
:1054100071092617370714F410928A05F801EE0F68
:10542000FF1FED59F84F8081918166277727641B14
:10543000750B8617970744F48091FD0783FF04C01E
:1054400081E080938B0515C080918B05882389F0BE
:10545000000F111F0D59184FD8012D913C918091CB
:10546000F10790E0841B950B8217930714F41092B8
:105470008B05F701EE0FFF1FED59F84F80819181E9
:105480004817590744F48091FD0780FF04C081E06C
:1054900080938D0515C080918D05882389F0F701D3
:1054A000EE0FFF1FED59F84F208131818091F107F8
:1054B000FA01E81BF1092E173F0714F410928D052D
:1054C000F701EE0FFF1FED59F84F8081918186178C
:1054D000970744F48091FD0781FF04C081E0809329
:1054E0008C0517C080918C05882399F0EE0CFF1C69
:1054F00023E637E0E20EF31ED7012D913C91809117
:10550000F10790E0841B950B8217930714F4109217
:105510008C0580918A05882321F480918B0588234E
:1055200021F081E08093890502C010928905809165
:105530008D05882321F480918C05882351F081E02A
:10554000809388051092890510928A0510928B0528
:1055500002C01092880580918905882311F40C946B
:105560004F3884E690E09093D0048093CF048091EC
:10557000EF0790E0EF81F8858E179F0714F4988766
:105580008F838091910390E09093F5048093F404CD
:105590008091920390E09093F7048093F6040E9428
:1055A0007A1580915705882381F110926F0510922A
:1055B0006E0510926B0510926A0510926D0510929F
:1055C0006C0580E090E0A8ECBFE38093C407909363
:1055D000C507A093C607B093C7078BE09CEBA2E377
:1055E000BCE38093AD079093AE07A093AF07B09351
:1055F000B0071092890510928805109277051092D5
:10560000760510927905109278052091A6073091C1
:10561000A7074091A8075091A9078091180590917C
:105620001905A0911A05B0911B05820F931FA41FA5
:10563000B51F8093A6079093A707A093A807B093E0
:10564000A9072091A2073091A3074091A407509188
:10565000A5078091200590912105A0912205B09188
:105660002305820F931FA41FB51F8093A207909359
:10567000A307A093A407B093A507509088055520D1
:1056800029F480918905882309F44FC01092E5041C
:105690001092E404109240051092410510924205C8
:1056A000109243051092440510924505109246054C
:1056B000109247051092A6071092A7071092A8070C
:1056C0001092A9071092A2071092A3071092A407A4
:1056D0001092A50780912C0590912D05A0912E0583
:1056E000B0912F058093300590933105A09332053A
:1056F000B09333058091340590913505A09136051E
:10570000B09137058093380590933905A0933A05F9
:10571000B0933B051092870510928605109285057F
:1057200010928405552009F0F5C0809189058823E1
:1057300009F0F0C0609118057091190580911A0563
:1057400090911B05A090DD07BB24CC24DD24E090C4
:10575000B807F090B907A60195010E947B40002789
:10576000F7FC0095102F2E193F09400B510BCA0171
:10577000B90120E130E040E050E00E947B40390177
:105780004A01609120057091210580912205909138
:105790002305E090C207F090C307A60195010E947F
:1057A0007B400027F7FC0095102F2E193F09400B76
:1057B000510BCA01B90120E130E040E050E00E9405
:1057C0007B4079018A0180917605909177058197D8
:1057D00034F480917805909179058197A4F0C40103
:1057E000B30123E030E040E050E00E947B4039010B
:1057F0004A01C801B70123E030E040E050E00E94D8
:105800007B4079018A01E091CC07F0E0EE0FFF1FA9
:10581000ED59F84F0190F081E02DF7FF03C0F095AE
:10582000E195FF4F7A97A4F0C401B30123E030E083
:1058300040E050E00E947B4039014A01C801B701B5
:1058400023E030E040E050E00E947B4079018A0193
:10585000F1E26F1671048104910434F070E2672E56
:10586000712C812C912C11C020EE62162FEF720644
:105870002FEF82062FEF920644F460EE662E6FEF54
:10588000762E6FEF862E6FEF962E31E2E316F1043F
:105890000105110534F050E2E52EF12C012D112DFA
:1058A00011C040EEE4164FEFF4064FEF04074FEF40
:1058B000140744F440EEE42E4FEFF42E4FEF042F84
:1058C0004FEF142F80912C0590912D05A0912E055E
:1058D000B0912F0586199709A809B90980932C055D
:1058E00090932D05A0932E05B0932F05809134053C
:1058F00090913505A0913605B09137058E199F0915
:10590000A00BB10B8093340590933505A093360519
:10591000B09337058091E4049091E5048F3F9105A1
:1059200009F008F445C4552009F0DCC380918905CD
:10593000882309F0D7C380914F05882309F0D2C38B
:105940006091A6077091A7078091A8079091A90779
:1059500020E031E040E050E00E947B402093A60729
:105960003093A7074093A8075093A9076091A20717
:105970007091A3078091A4079091A50720E031E0E2
:1059800040E050E00E947B402093A2073093A307A1
:105990004093A4075093A507E090DD07FF2400E0A3
:1059A00010E0209140053091410540914205509111
:1059B0004305C801B7010E94074020E031E040E004
:1059C00050E00E947B402093400530934105409376
:1059D000420550934305209144053091450540917F
:1059E000460550914705C801B7010E94074020E0D5
:1059F00031E040E050E00E947B402093440530932A
:105A0000450540934605509347056091A607709160
:105A1000A7078091A8079091A90720914005309190
:105A200041054091420550914305E090F607FF245F
:105A300000E010E0621B730B840B950BA80197012B
:105A40000E947B40CA01B90120E031E040E050E013
:105A50000E947B4069013093870520938605609101
:105A6000A2077091A3078091A4079091A5072091A8
:105A70004405309145054091460550914705621B0C
:105A8000730B840B950BA80197010E947B40CA0100
:105A9000B90120E031E040E050E00E947B40890104
:105AA0003093850520938405809176059091770544
:105AB0008197BCF4809178059091790581978CF459
:105AC000E091CC07F0E0EE0FFF1FED59F84F019089
:105AD000F081E02DF7FF03C0F095E195FF4F7A9735
:105AE00094F0C60162E070E00E9446407093870522
:105AF00060938605C80162E070E00E9446407093A2
:105B0000850560938405E0901C05F0901D050091CB
:105B10001E0510911F058091180590911905A091FF
:105B20001A05B0911B05E81AF90A0A0B1B0BE09243
:105B3000B305F092B4050093B5051093B6058091B6
:105B4000300590913105A0913205B09133058E1941
:105B50009F09A00BB10B8093300590933105A09362
:105B60003205B09333056090240570902505809030
:105B70002605909027058091200590912105A09100
:105B80002205B0912305681A790A8A0A9B0A609255
:105B9000AF057092B0058092B1059092B2058091E8
:105BA000380590913905A0913A05B0913B058619C9
:105BB0009709A809B9098093380590933905A093EE
:105BC0003A05B0933B052091BE073091BF072138BD
:105BD00031054CF080910A0590910B050196909348
:105BE0000B0580930A0520583F4F4CF480910A051D
:105BF00090910B05019790930B0580930A051092E5
:105C0000BF071092BE0781E090E090939B058093C0
:105C10009A051092A0051092A1051092A20510926B
:105C2000A3058091A6079091A707A091A807B0911E
:105C3000A9072091920530919305409194055091C8
:105C40009505281B390B4A0B5B0B57FF07C0509576
:105C50004095309521953F4F4F4F5F4F20523E4426
:105C6000404050400CF0C1C071E0E71670E1F7060B
:105C700070E0070770E017070CF452C08091990597
:105C8000882309F449C0D801C7012CE0B595A79530
:105C9000979587952A95D1F7019690939B058093C8
:105CA0009A05D801C701F3E0B595A7959795879513
:105CB000FA95D1F78093A0059093A105A093A20532
:105CC000B093A30589589341A040B04064F088E8A0
:105CD00093E1A0E0B0E08093A0059093A105A0938C
:105CE000A205B093A3056091A0057091A1058091D4
:105CF000A2059091A30520E031E040E050E00E9431
:105D00007B408091860590918705820F931F909329
:105D100087058093860566C081E08093990562C0FF
:105D200010929905F0E0EF16F0EFFF06FFEF0F0776
:105D3000FFEF1F070CF056C080919805882309F4E7
:105D40004DC088279927DC018E199F09A00BB10B44
:105D5000ECE0B595A79597958795EA95D1F70196CB
:105D600090939B0580939A05C801B70128E030E025
:105D700040E050E00E947B402093A0053093A105B5
:105D80004093A2055093A30528573C4E4F4F5F4FB9
:105D900064F488E79CEEAFEFBFEF8093A00590938B
:105DA000A105A093A205B093A3056091A0057091F1
:105DB000A1058091A2059091A30520E031E040E08B
:105DC00050E00E947B408091860590918705820F6C
:105DD000931F909387058093860511C081E080937F
:105DE00098050DC0109298050AC010929B0510925C
:105DF0009A0584EF91E090937303809372038091EE
:105E0000F707C82EDD2480919A0590919B05C8164E
:105E1000D90624F4D0929B05C0929A0571E0E7164A
:105E200074E0F70670E0070770E0170774F08091E0
:105E300006059091070520919A0530919B05820FE8
:105E4000931F909307058093060580E0E8168CEF7A
:105E5000F8068FEF08078FEF180774F48091060596
:105E60009091070520919A0530919B05821B930B19
:105E7000909307058093060581E090E090939B0541
:105E800080939A0510929C0510929D0510929E0594
:105E900010929F058091A2079091A307A091A4075B
:105EA000B091A50720918E0530918F054091900506
:105EB00050919105281B390B4A0B5B0B57FF07C00C
:105EC00050954095309521953F4F4F4F5F4F205251
:105ED0003E44404050400CF0C1C0A1E06A16A0E131
:105EE0007A06A0E08A06A0E09A060CF452C08091DF
:105EF0009705882309F449C0D401C3017CE0B59516
:105F0000A795979587957A95D1F7019690939B05DC
:105F100080939A05D401C30163E0B595A795979541
:105F200087956A95D1F780939C0590939D05A093E2
:105F30009E05B0939F0589589341A040B04064F0FE
:105F400088E893E1A0E0B0E080939C0590939D05E4
:105F5000A0939E05B0939F0560919C0570919D054F
:105F600080919E0590919F0520E031E040E050E057
:105F70000E947B408091840590918505820F931F3C
:105F8000909385058093840566C081E08093970592
:105F900062C010929705F0E06F16F0EF7F06FFEFFA
:105FA0008F06FFEF9F060CF056C080919605882360
:105FB00009F44DC088279927DC0186199709A8099B
:105FC000B9095CE0B595A795979587955A95D1F74E
:105FD000019690939B0580939A05C401B30128E034
:105FE00030E040E050E00E947B4020939C053093DD
:105FF0009D0540939E0550939F0528573C4E4F4F5B
:106000005F4F64F488E79CEEAFEFBFEF80939C0591
:1060100090939D05A0939E05B0939F0560919C056C
:1060200070919D0580919E0590919F0520E031E043
:1060300040E050E00E947B4080918405909185056E
:10604000820F931F909385058093840511C081E092
:10605000809396050DC0109296050AC010929B057C
:1060600010929A0584EF91E09093730380937203EA
:1060700080919A0590919B05C816D90624F4D09278
:106080009B05C0929A0571E0671674E0770670E090
:10609000870670E0970674F08091080590910905D5
:1060A00020919A0530919B05820F931F90930905CB
:1060B0008093080580E068168CEF78068FEF8806DD
:1060C0008FEF9806CCF480910805909109052091F6
:1060D0009A0530919B05821B930B90930905809341
:1060E00008050AC010928505109284051092870554
:1060F0001092860510924F0520E030E040E050E01D
:106100006091AD077091AE078091AF079091B00795
:106110000E94273F882341F4109285051092840540
:1061200010928705109286058091A6079091A70787
:10613000A091A807B091A907809392059093930529
:10614000A0939405B09395058091A2079091A30721
:10615000A091A407B091A50780938E0590938F0519
:10616000A0939005B09391051092400510924105BF
:106170001092420510924305109244051092450575
:1061800010924605109247051092A6071092A70795
:106190001092A8071092A9071092A2071092A307C5
:1061A0001092A4071092A5071092E5041092E4043F
:1061B000C0906E05D0906F058601D7FE04C0002701
:1061C00011270C191D0900311105C4F08091D10768
:1061D00084FD14C081E090E09093A5058093A40510
:1061E0008091BA079091BB079093710380937003DD
:1061F0008AEF90E09093730380937203E090DA0744
:10620000B601882777FD8095982F2E2D30E040E04D
:1062100050E00E9407409801442737FD4095542FD5
:106220000E94074020E032E040E050E00E947B40C6
:1062300089019A01FF24EC9CC001ED9C900DFC9C0F
:10624000900D112464E070E00E944640600F711FC1
:10625000882777FD8095982F6093B7057093B805D0
:106260008093B9059093BA0520913C0530913D0586
:1062700040913E0550913F05261B370B480B590BAB
:1062800020933C0530933D0540933E0550933F05D8
:1062900080913C0590913D05A0913E05B0913F0550
:1062A0008155934CA040B04064F080E593ECA0E0B1
:1062B000B0E080933C0590933D05A0933E05B093DC
:1062C0003F0580913C0590913D05A0913E05B09120
:1062D0003F05805B9C43AF4FBF4F64F480EB9CE372
:1062E000AFEFBFEF80933C0590933D05A0933E0533
:1062F000B0933F058091D10783FF5AC180914E052D
:10630000882339F080915605882319F40E9482224F
:106310004FC1609118057091190580911A059091EF
:106320001B0520E032E040E050E00E947B40890104
:1063300037FF03C0109501951F4F609120057091A4
:106340002105809122059091230520E032E040E074
:1063500050E00E947B40690137FF04C0D094C19493
:10636000D108D394C016D1060CF4680129E1C216F5
:10637000D10444F58091A4059091A505892B11F1D4
:106380008091720390917303892BE1F488EC90E083
:106390009093D0048093CF046091BA077091BB07AB
:1063A0008091BC079091BD072EE036E040E050E0C0
:1063B0000E947B4030937103209370031092A505D7
:1063C0001092A40580916E0390916F0397FF03C014
:1063D00020E030E029C0E0906E03F0906F034CE1C4
:1063E00052E0E40EF51E0027F7FC0095102F609197
:1063F000BA077091BB078091BC079091BD072EE052
:1064000036E040E050E00E947B40E21AF30A040BC1
:10641000150BC801B70128E631E040E050E00E94CA
:106420007B409B01245B3040C60168E070E00E9425
:1064300046406F5F7F4FC90143E0880F991F4A951F
:10644000E1F70E9446403B01882477FC8094982C19
:106450008091BA079091BB07A091BC07B091BD078E
:10646000680E791E8A1E9B1E6092BA077092BB0747
:106470008092BC079092BD0780918603A82EBB2412
:10648000CA9CC001CB9C900DDA9C900D112460E455
:1064900070E00E9446402501461A570A141415045C
:1064A0000CF080C08091720390917303009711F0FB
:1064B00001977AC08091BE079091BF07820F931F0A
:1064C0009093BF078093BE078091780590917905DE
:1064D0002091760530917705820F931F68E070E078
:1064E0000E9446406B0160E470E0C60ED71E8091AA
:1064F000700390917103AA2797FDA095BA2F0CE124
:10650000E02E02E0F02E012D112DE81AF90A0A0BF7
:106510001B0BC401B3012EE036E040E050E00E94C6
:106520007B40E20EF31E041F151FC801B70128E6C9
:1065300031E040E050E00E947B40645B7040649D2D
:10654000C001659D900D749D900D1124B6010E94AF
:106550004640C501880F991F8A0D9B1D8617970716
:1065600034F0909581959F4F681779070CF4BC0122
:1065700020913C0530913D0540913E0550913F05ED
:10658000CB01AA2797FDA095BA2F820F931FA41FB6
:10659000B51F80933C0590933D05A0933E05B093B5
:1065A0003F0506C08AEF90E09093730380937203D7
:1065B0008091A60581508093A6058F3F09F0A4C065
:1065C00088E18093A6056091180570911905809166
:1065D0001A0590911B05E090DD07FF2400E010E014
:1065E000A80197010E947B4030938106209380068A
:1065F00060912005709121058091220590912305DD
:10660000A80197010E947B40309383062093820665
:106610008091B8079091B90790938506809384067E
:106620008091C2079091C307909387068093860656
:106630008091B5079091B60790938906809388065C
:10664000809180059091810590938B0680938A06B6
:10665000609148057091490580914A0590914B05DC
:1066600020E032E040E050E00E947B4030938D0615
:1066700020938C0680916E0390916F039093910606
:10668000809390068091080390910903909393065C
:10669000809392068091FF04909100059093950657
:1066A000809394066091BA077091BB078091BC07F4
:1066B0009091BD072EE036E040E050E00E947B4024
:1066C00030939706209396068091AA079091AB0786
:1066D0009093A1068093A0068091D2049091D30458
:1066E0009093A9068093A8068091720590917305F6
:1066F0009093BD068093BC068091740590917505BA
:106700009093BF068093BE06809188058823A9F0E8
:106710006091B3077091B407882777FD8095982F13
:106720000E94EC3E2091C4073091C5074091C607F6
:106730005091C7070E94A43F32C060911805709124
:10674000190580911A0590911B05E090B307F09010
:10675000B4070E94EC3E2091AD073091AE07409106
:10676000AF075091B0070E94A43F5B016C01002766
:10677000F7FC0095102FC801B7010E94EC3E209154
:10678000C4073091C5074091C6075091C7070E94C2
:10679000A43F9B01AC01C601B5010E94ED3D0E94E2
:1067A000B93E7093B4076093B3078091890588233D
:1067B000A9F06091B1077091B207882777FD8095A5
:1067C000982F0E94EC3E2091C4073091C50740915C
:1067D000C6075091C7070E94A43F32C060912005B0
:1067E000709121058091220590912305E090B107D9
:1067F000F090B2070E94EC3E2091AD073091AE07B9
:106800004091AF075091B0070E94A43F5B016C011B
:106810000027F7FC0095102FC801B7010E94EC3E3D
:106820002091C4073091C5074091C6075091C70712
:106830000E94A43F9B01AC01C601B5010E94ED3D41
:106840000E94B93E7093B2076093B1076091B5079B
:106850007091B607A0902805B0902905C0902A0530
:10686000D0902B058091AD079091AE07A091AF0716
:10687000B091B00789839A83AB83BC83882777FD67
:106880008095982F0E94EC3E7B018C016091C4079B
:106890007091C5078091C6079091C7079B01AC0115
:1068A0000E94ED3D9B01AC01C801B7010E94A43FCD
:1068B0007B018C01C601B5010E94EC3E29813A8121
:1068C0004B815C810E94A43F20E030E040E05FE328
:1068D0000E94A43F9B01AC01C801B7010E94ED3D9D
:1068E0000E94B93E7093B6076093B5078091B307D5
:1068F0009091B4079093AB068093AA068091B1075C
:106900009091B2079093AD068093AC068091B30747
:106910009091B4078150904434F080E090E49093DB
:10692000B4078093B3078091B3079091B407805068
:10693000904C34F480E090EC9093B4078093B307CC
:106940008091B1079091B2078150904434F080E07B
:1069500090E49093B2078093B1078091B107909132
:10696000B2078050904C34F480E090EC9093B207E2
:106970008093B1078091B5079091B60781509044FC
:1069800034F080E090E49093B6078093B50780914F
:10699000B5079091B6078050904C34F480E090ECAD
:1069A0009093B6078093B507AF80B884AA0CBB1C40
:1069B000AA0CBB1C8091D107282F80FFC7C08091F3
:1069C0005705882309F0C2C08091830321FF0EC0C0
:1069D000823310F5809180059091810544979093C2
:1069E0008305809382051092A90519C020917C032C
:1069F00030917D03280F311D8091D60790E0AC01C6
:106A0000249FC001259F900D349F900D1124449721
:106A1000909383058093820581E08093A90520915E
:106A20008005309181054091820550918305421780
:106A300053070CF08BC08091A905882309F486C008
:106A40008091840390E0241B350BBC01629FC00140
:106A5000639F900D729F900D112464E070E00E947E
:106A600046404B01C090E204D090E3046091480599
:106A70007091490580914A0590914B05E0908503FE
:106A8000FF2400E010E020E830E040E050E00E9409
:106A90007B40C801B7010E94074020E230E040E09F
:106AA00050E00E947B407EEF283E370714F428EE2A
:106AB0003EEF8091A7059091A805FC01A4E0EE0FA0
:106AC000FF1FAA95E1F7E81BF90BC60162E070E031
:106AD0000E944640E61BF70B81E02931380714F08D
:106AE00028E131E0E21BF30BC501881999098E0FEB
:106AF0009F1F60E170E00E9446407093A80560937C
:106B0000A7058091D20790E0880F991F880F991FE1
:106B10006817790764F4A816B9062CF09093A805B5
:106B20008093A70504C0B092A805A092A705809104
:106B3000A7059091A805A816B90624F4B092A80557
:106B4000A092A705A090A705B090A8058091DC07AA
:106B5000282E33248101000F111F000F111FC801BF
:106B60008055904045018A159B050CF44C0190928C
:106B70008F0680928E062091B5073091B6078091DE
:106B8000B7059091B805A091B905B091BA0542E05A
:106B9000880F991FAA1FBB1F4A95D1F7281B390BD5
:106BA00091EA89169104ACF0F401F595E7952E175A
:106BB0003F070CF4F901C40162E070E00E94464016
:106BC000709561957F4FCF01E617F7076CF4CB0105
:106BD0000BC0C901205B3F4F14F480EB9FEF813560
:106BE000910514F080E590E09801281939092817DB
:106BF00039070CF4C9019401201B310B2C018217B9
:106C000093070CF429018091B3079091B407609029
:106C10006A0570906B05861997099093C107809358
:106C2000C00720E030E040E050E069817A818B814C
:106C30009C810E94273F8823F1F1E0901805F09095
:106C4000190500911A0510911B056091BF057091FF
:106C5000C0058091C1059091C2050E94EC3E5B0188
:106C60006C01C801B7010E94EC3E29813A814B8139
:106C70005C810E94A43F7B018C01B301882777FDD2
:106C80008095982F0E94EC3E9B01AC01C801B70192
:106C90000E94EC3D9B01AC01C601B5010E94ED3D97
:106CA0000E94B93E6093BF057093C0058093C105F3
:106CB0009093C2051CC02091C0073091C1074427A2
:106CC00037FD4095542F8091BF059091C005A0914C
:106CD000C105B091C205820F931FA41FB51F8093F9
:106CE000BF059093C005A093C105B093C2058091E4
:106CF000BF059091C005A091C105B091C20581501A
:106D00009A4FA040B04064F080E09AEFA0E0B0E07D
:106D10008093BF059093C005A093C105B093C205B1
:106D20008091BF059091C005A091C105B091C205A9
:106D300080509640AF4FBF4F64F480E096E0AFEFD5
:106D4000BFEF8093BF059093C005A093C105B0939A
:106D5000C2056091C0077091C10720917E033091F8
:106D60007F0340918003509181032B873C874D879F
:106D70005E87882777FD8095982F0E94EC3E7B01E7
:106D80008C016091BF057091C0058091C105909103
:106D9000C2050E94EC3E9B01AC016B857C858D8514
:106DA0009E850E94A43F9B01AC01C801B7010E94CF
:106DB000ED3D0E94B93E7B018C016B01C20157FE83
:106DC00004C0882799278419950962E070E00E9421
:106DD0004640680D791D882777FD8095982F209172
:106DE000970330E040E050E00E94074020E430E0AC
:106DF00040E050E00E947B403E832D83C216D306C4
:106E00000CF497016D817E81709561957F4F7A8733
:106E10006987261737070CF49B01F201E80DF91D6D
:106E2000CF01820F931F64E070E00E94464077FF1D
:106E300003C060E070E004C0261637060CF4B10110
:106E40008091DB07A82FB0E0BAA3A9A36A177B073C
:106E50000CF4BD016093A107CF01821B930B64E08A
:106E600070E00E94464077FF03C060E070E004C01D
:106E7000261637060CF4B101E9A1FAA16E177F07B7
:106E80000CF4BF016093B7078091B1079091B207EE
:106E900060906C0570906D05861997099093A00716
:106EA00080939F0720E030E040E050E069817A81E4
:106EB0008B819C810E94273F8823F1F1E09020057F
:106EC000F090210500912205109123056091BB05EA
:106ED0007091BC058091BD059091BE050E94EC3E6D
:106EE0005B016C01C801B7010E94EC3E29813A8127
:106EF0004B815C810E94A43F7B018C01B3018827F8
:106F000077FD8095982F0E94EC3E9B01AC01C80153
:106F1000B7010E94EC3D9B01AC01C601B5010E9486
:106F2000ED3D0E94B93E6093BB057093BC05809314
:106F3000BD059093BE051CC020919F073091A0070E
:106F4000442737FD4095542F8091BB059091BC0597
:106F5000A091BD05B091BE05820F931FA41FB51F60
:106F60008093BB059093BC05A093BD05B093BE056F
:106F70008091BB059091BC05A091BD05B091BE0567
:106F800081589E43A040B04064F080E89EE3A0E0BA
:106F9000B0E08093BB059093BC05A093BD05B09372
:106FA000BE058091BB059091BC05A091BD05B09137
:106FB000BE058058914CAF4FBF4F64F480E891EC10
:106FC000AFEFBFEF8093BB059093BC05A093BD05C9
:106FD000B093BE0560919F077091A007882777FD49
:106FE0008095982F0E94EC3E7B018C016091BB053F
:106FF0007091BC058091BD059091BE050E94EC3E4C
:107000009B01AC016B857C858D859E850E94A43F8C
:107010009B01AC01C801B7010E94ED3D0E94B93E41
:107020002D813E81621773070CF49B0149855A85B7
:10703000241735070CF49A01C40184199509820FAD
:10704000931F64E070E00E94464077FF03C060E059
:1070500070E004C0261637060CF4B10189A19AA18C
:10706000681779070CF4BC016093C807821A930A69
:10707000C4018419950964E070E00E94464077FFDE
:1070800003C060E070E004C0261637060CF4B101BE
:10709000A9A1BAA16A177B0754F4BD0108C0809169
:1070A0008805882311F00C94B72A0C94C12A6093A8
:1070B000AC07A2960FB6F894DEBF0FBECDBFDF912E
:1070C000CF911F910F91FF90EF90DF90CF90BF90E5
:1070D000AF909F908F907F906F905F904F903F9078
:1070E0002F900895A0E0B0E0A80FB11D0E94CD4000
:1070F000802D90E00895A0E0B0E0A80FB11D062E0D
:107100000E94DF400895A0E0B0E0A80FB11D0E94EA
:10711000DA40CF010895A0E0B0E0A80FB11D0B0147
:107120000E94EB400895863008F085E0A2E0B0E0D0
:10713000082E0E94DF400895982F863008F095E0D1
:1071400086E4989FD0011124AC59BF4FE9ECF7E0D9
:10715000182E0E94F040A2E0B0E0092E0E94DF400D
:107160000895982F863008F095E086E4989FD00126
:107170001124AC59BF4FE9ECF7E0182E0E94D5401E
:10718000089581E08093C90782E08093CA0743E0B5
:107190004093CB0764E06093CC0755E05093CD0754
:1071A00036E03093CE0787E08093CF0728E0209326
:1071B000D00788EE8093D1079EE19093D2078BEFA2
:1071C0008093D4078AE08093D5079093D307909358
:1071D000D7074093D6072093D80740E14093D907BB
:1071E0003093DA072093DB0786EE8093DC079093D9
:1071F000DD0780E88093DE0734E63093DF0788E719
:107200008093E0078EE58093E10783E28093E207B5
:1072100084E18093E3071092E4074093E5078DEF44
:107220008093E6073093E7079AE59093E8079093F9
:10723000E9079093F9079093FA071092FB071092D1
:10724000FC073093EA0788E28093EB071092FE0771
:1072500022E32093EC0786E98093ED075093EE0735
:107260002093EF079093F0072093F1071092FD070A
:107270009093F2075093F3073093F4073093F50798
:1072800080E28093F6076093F7072093F807A3E066
:10729000B8E0E9E9F3E089E001900D928150E1F76F
:1072A000089581E08093C90782E08093CA0743E094
:1072B0004093CB0764E06093CC0755E05093CD0733
:1072C00036E03093CE0787E08093CF0728E0209305
:1072D000D00788E68093D1079EE19093D2078BEF89
:1072E0008093D4078AE08093D5079093D307909337
:1072F000D7074093D6078CE08093D80780E180932E
:10730000D9073093DA072093DB0786EE8093DC07FA
:107310009093DD0780E88093DE0780E58093DF07A8
:1073200088E78093E0078EE58093E10783E280930E
:10733000E2079093E3071092E40740E24093E507E9
:107340008DEF8093E60734E63093E7072AE5209334
:10735000E8072093E9072093F9072093FA07109292
:10736000FB071092FC073093EA0788E28093EB0753
:107370001092FE0792E39093EC0786E98093ED0765
:107380005093EE079093EF072093F0079093F10747
:107390001092FD072093F2075093F3073093F40700
:1073A0003093F5074093F6076093F7078BE48093DB
:1073B000F807A3E0B8E0E3EAF3E087E001900D927C
:1073C0008150E1F7089581E08093C90782E08093BE
:1073D000CA0783E08093CB0754E05093CC0735E095
:1073E0003093CD0786E08093CE0787E08093CF0768
:1073F00028E02093D00788E68093D1079EE1909300
:10740000D2078BEF8093D4078AE08093D5079093BF
:10741000D3079093D7075093D6078FE08093D80770
:107420009093D9078CE08093DA072093DB0786EEF0
:107430008093DC079093DD0780E88093DE0780E58A
:107440008093DF0746E94093E0078EE58093E107EC
:1074500083E28093E2079093E3071092E40780E2CF
:107460008093E5078DEF8093E60724E62093E707F6
:107470009AE59093E8079093E9079093F907909322
:10748000FA071092FB071092FC072093EA0788E2A4
:107490008093EB071092FE0782E38093EC07409302
:1074A000ED073093EE078093EF079093F0078093FA
:1074B000F1071092FD079093F2073093F3072093A2
:1074C000F4072093F50780E18093F6075093F707C0
:1074D0002093F807A3E0B8E0EBEAF3E086E0019040
:1074E0000D928150E1F7089522E030E0D9010E9429
:1074F000CD40802D863028F082E0D901082E0E94F0
:10750000DF4090E008950F931F93CF93DF93A1E0A6
:10751000B0E00E94CD40802D863469F18DE794E083
:107520009F938F931F920E94F2080E94E339C0E05C
:10753000D0E00F900F900F900C2FC23039F0C33075
:1075400019F40E94C13804C0C43010F00E945139AF
:10755000802F0E949C382196C630D10569F7A2E0A1
:10756000B0E083E0082E0E94DF40A1E0B0E086E4B6
:10757000082E0E94DF4002E010E0D8010E94CD40BA
:10758000802D0E94B138D8010E94CD40802D90E01E
:107590009F938F9384E694E09F938F931F920E9412
:1075A000F2080F900F900F900F900F90DF91CF91F6
:1075B0001F910F910895CF93DF93DC01EC01EA81D5
:1075C000FB8121918E81815019F48981E81BF10999
:1075D000ED01FB83EA838E839FB7F8948C918150F1
:1075E0008C939FBF822F90E0DF91CF910895FC0193
:1075F00010827583648373836283418347834683E8
:107600000895CF93DF93DC019C91ED018981981758
:1076100018F080E090E016C0ED01EC81FD816193EF
:107620008F81815019F48981E81BF109ED018F8365
:10763000FD83EC839FB7F8948C918F5F8C939FBFF1
:1076400081E090E0DF91CF910895FC018081882353
:10765000E9F3CF010E94DB3A90E00895FC018081BC
:10766000882319F48FEF9FEF0895CF010E94DB3A32
:1076700090E008959FB7F8948091C9008F77809328
:10768000C9008091C9008F7B8093C9008091C90097
:107690008F7D8093C9005A9A52985B9A539A1092A0
:1076A000CD008AE28093CC008091C80082608093F4
:1076B000C80088E18093C9008091CA008F778093C9
:1076C000CA008091CA008F7B8093CA008091CA0053
:1076D0008F7D8093CA008091CA008F7E8093CA00FC
:1076E0008091CA00877F8093CA008091C9008B7FF8
:1076F0008093C9008091CA0084608093CA00809101
:10770000CA0082608093CA0002C08091CE0080913E
:10771000C80087FDFACF8091C90080688093C900B6
:107720008091C90080648093C9009FBF08951F9213
:107730000F920FB60F9211248F938091CE008F91EC
:107740000F900FBE0F901F9018953C98449A10927E
:10775000B2031092B30881E08093B4080895609159
:10776000CD057091CE05349B18C0CB010196909346
:10777000CE058093CD058159914008F45FC080917A
:10778000B203882319F081508093B2038FEF9FEFEB
:1077900090936F0380936E034DC0CB010197895680
:1077A0009140B8F56A30710528F410926F03109279
:1077B0006E0315C06A50704080E090E029E134E02B
:1077C00040E050E00E9407402AE096958795779523
:1077D00067952A95D1F770936F0360936E0380913C
:1077E0006E0390916F032091700330917103845E5A
:1077F0009D4F821B930B68E671E00E944640845BBC
:10780000904090934D0580934C058CE08093B2039B
:1078100011C08091B203882319F081508093B20384
:107820008FEF9FEF90936F0380936E0310924D053F
:1078300010924C051092CE051092CD058091B203A6
:107840008823E1F48091CB059091CC050E94D40B64
:107850008823A1F08091CF049091D004892B31F43A
:1078600084E690E09093D0048093CF0484E690E087
:107870000E94CB0B9093CC058093CB050895A8E094
:10788000B0E0E5E4FCE30C94A0407B018C016115C1
:1078900071058105910519F482E089835AC083E05E
:1078A00089838EE1C82ED12CDC82CB82ED82FE82D0
:1078B0000F831887C801B7010E94B23CBC01615018
:1078C000704077FF33C0EE27FF27E61BF70B20E061
:1078D00030E040E050E081E090E0A0E0B0E00E2E2B
:1078E00004C0880F991FAA1FBB1F0A94D2F70197E3
:1078F000A109B1098E219F21A023B1230097A105E1
:10790000B10521F021E030E040E050E004C01695E0
:107910000795F794E794EA95D2F72E293F29402B53
:10792000512B2D833E834F8358870FC061157105FE
:1079300081F0062E04C0EE0CFF1C001F111F0A94DC
:10794000D2F7ED82FE820F831887C61AD70ADC822F
:10795000CB821A82CE0101960E94FF3CE8E0289675
:107960000C94BC40EF92FF920F931F939B01AC01CC
:10797000203080E0380781E0480780E0580780F435
:107980002F3F31054105510509F020F4EE24FF2475
:10799000870119C068E0E62EF12C012D112D13C0CE
:1079A000203080E0380780E0480781E0580730F455
:1079B00090E1E92EF12C012D112D05C088E1E82E72
:1079C000F12C012D112D80E290E0A0E0B0E08E19A5
:1079D0009F09A00BB10B04C0569547953795279585
:1079E000EA94D2F7F901ED54FC4F2081821B9109F2
:1079F000A109B1091F910F91FF90EF9008959F92F7
:107A0000AF92BF92CF92DF92EF92FF920F931F93AC
:107A1000EE24FF248701FC012481358146815781B2
:107A200091808081823010F44061A2C0843009F4DA
:107A30009BC0823029F420E030E040E050E005C0F7
:107A4000211531054105510519F4E0E0F0E092C03F
:107A5000828193816FEF823896070CF05AC062E8FA
:107A60007FEF681B790B6A3171052CF020E030E064
:107A700040E050E02AC0AA24BB24650181E090E0E8
:107A8000A0E0B0E0062E04C0880F991FAA1FBB1FFC
:107A90000A94D2F70197A109B10982239323A42361
:107AA000B5230097A105B10529F071E0A72EB12CEF
:107AB000C12CD12C04C056954795379527956A95CA
:107AC000D2F72A293B294C295D29DA01C9018F7790
:107AD0009070A070B07080349105A105B10539F4A3
:107AE00027FF09C0205C3F4F4F4F5F4F04C0215C10
:107AF0003F4F4F4F5F4F80E090E0203060E036070F
:107B000060E0460760E4560710F081E090E0FC0179
:107B100023C08038910544F5FC01E158FF4FDA019C
:107B2000C9018F779070A070B07080349105A10565
:107B3000B10539F427FF09C0205C3F4F4F4F5F4F1D
:107B400004C0215C3F4F4F4F5F4F57FF05C0569514
:107B5000479537952795319687E056954795379500
:107B600027958A95D1F706C020E030E040E050E04C
:107B7000EFEFF0E0E22EF32E942F9F77802F8078A6
:107B8000892B9E2F9795992797958F77082F092BEB
:107B90009E2F9695812F8078892B9794992497947E
:107BA0008F77182F1929C801B7011F910F91FF90E6
:107BB000EF90DF90CF90BF90AF909F900895FC0121
:107BC0004150504030F001900616D1F73197CF0167
:107BD00008958827992708955058BB27AA270ED0C3
:107BE00079C16AD130F06FD120F031F49F3F11F4A8
:107BF0001EF45FC10EF4E095E7FB55C1E92F7BD180
:107C000080F3BA17620773078407950718F071F4B9
:107C10009EF593C10EF4E0950B2EBA2FA02D0B010B
:107C2000B90190010C01CA01A0011124FF27591BC1
:107C300099F0593F50F4503E68F11A16F040A22FC7
:107C4000232F342F4427585FF3CF46953795279538
:107C5000A795F0405395C9F77EF41F16BA0B620B37
:107C6000730B840BBAF09150A1F0FF0FBB1F661F7E
:107C7000771F881FC2F70EC0BA0F621F731F841FC1
:107C800048F4879577956795B795F7959E3F08F0E7
:107C9000B3CF9395880F08F09927EE0F97958795A6
:107CA00008950CD017C10FD140F006D130F021F467
:107CB0005F3F19F0F8C0511141C1FBC01CD198F3CE
:107CC0009923C9F35523B1F3951B550BBB27AA275D
:107CD00062177307840738F09F5F5F4F220F331FCF
:107CE000441FAA1FA9F333D00E2E3AF0E0E830D09B
:107CF00091505040E695001CCAF729D0FE2F27D09E
:107D0000660F771F881FBB1F261737074807AB076B
:107D1000B0E809F0BB0B802DBF01FF2793585F4FE0
:107D20002AF09E3F510568F0BEC008C15F3FECF3EA
:107D3000983EDCF3869577956795B795F7959F5FA5
:107D4000C9F7880F911D9695879597F90895E1E0F9
:107D5000660F771F881FBB1F621773078407BA0758
:107D600020F0621B730B840BBA0BEE1F88F7E095B3
:107D7000089504D06894B111E1C00895C4D088F08A
:107D80009F5790F0B92F9927B751A0F0D1F0660F07
:107D9000771F881F991F1AF0BA95C9F712C0B13022
:107DA00081F0CBD0B1E00895C8C0672F782F882725
:107DB000B85F39F0B93FCCF3869577956795B39561
:107DC000D9F73EF490958095709561957F4F8F4FD0
:107DD0009F4F0895E89409C097FB3EF490958095D5
:107DE000709561957F4F8F4F9F4F9923A9F0F92F81
:107DF00096E9BB279395F695879577956795B795FF
:107E0000F111F8CFFAF4BB0F11F460FF1BC06F5FE4
:107E10007F4F8F4F9F4F16C0882311F096E911C0F6
:107E2000772321F09EE8872F762F05C0662371F017
:107E300096E8862F70E060E02AF09A95660F771F2B
:107E4000881FDAF7880F9695879597F9089507D0D8
:107E500008F481E0089503D008F48FEF0895990F96
:107E60000008550FAA0BE0E8FEEF16161706E80704
:107E7000F907C0F012161306E407F50798F0621B25
:107E8000730B840B950B39F40A2661F0232B242BFA
:107E9000252B21F408950A2609F4A140A6958FEF19
:107EA000811D811D089597F99F6780E870E060E06B
:107EB00008959FEF80EC089500240A941616170683
:107EC00018060906089500240A94121613061406CB
:107ED00005060895092E0394000C11F4882352F02E
:107EE000BB0F40F4BF2B11F460FF04C06F5F7F4FE6
:107EF0008F4F9F4F089557FD9058440F551F59F0CD
:107F00005F3F71F04795880F97FB991F61F09F3F86
:107F100079F087950895121613061406551FF2CFAF
:107F20004695F1DF08C0161617061806991FF1CFFF
:107F300086957105610508940895E894BB27662726
:107F40007727CB0197F908950BD0C4CFB5DF28F080
:107F5000BADF18F0952309F0A6CFABCF1124EECFEE
:107F6000CADFA0F3959FD1F3950F50E0551F629F94
:107F7000F001729FBB27F00DB11D639FAA27F00D82
:107F8000B11DAA1F649F6627B00DA11D661F829FA9
:107F90002227B00DA11D621F739FB00DA11D621F8E
:107FA000839FA00D611D221F749F3327A00D611DAB
:107FB000231F849F600D211D822F762F6A2F11248D
:107FC0009F5750408AF0E1F088234AF0EE0FFF1FE0
:107FD000BB1F661F771F881F91505040A9F79E3F17
:107FE000510570F060CFAACF5F3FECF3983EDCF311
:107FF000869577956795B795F795E7959F5FC1F754
:10800000FE2B880F911D9695879597F90895629F8D
:10801000D001739FF001829FE00DF11D649FE00D80
:10802000F11D929FF00D839FF00D749FF00D659FE1
:10803000F00D9927729FB00DE11DF91F639FB00DE0
:10804000E11DF91FBD01CF0111240895991B79E0AD
:1080500004C0991F961708F0961B881F7A95C9F7D8
:1080600080950895AA1BBB1B51E107C0AA1FBB1F27
:10807000A617B70710F0A61BB70B881F991F5A95B4
:10808000A9F780959095BC01CD01089597FB092E25
:1080900007260AD077FD04D0E5DF06D000201AF4C9
:1080A000709561957F4F0895F6F7909581959F4F54
:1080B0000895A1E21A2EAA1BBB1BFD010DC0AA1F29
:1080C000BB1FEE1FFF1FA217B307E407F50720F041
:1080D000A21BB30BE40BF50B661F771F881F991FBC
:1080E0001A9469F760957095809590959B01AC0105
:1080F000BD01CF01089597FB092E05260ED057FD2F
:1081000004D0D7DF0AD0001C38F450954095309544
:1081100021953F4F4F4F5F4F0895F6F7909580950B
:10812000709561957F4F8F4F9F4F08952F923F928B
:108130004F925F926F927F928F929F92AF92BF9277
:10814000CF92DF92EF92FF920F931F93CF93DF9323
:10815000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE80
:10816000CDBF09942A88398848885F846E847D84CD
:108170008C849B84AA84B984C884DF80EE80FD80CF
:108180000C811B81AA81B981CE0FD11D0FB6F89445
:10819000DEBF0FBECDBFED010895F999FECFB2BD90
:1081A000A1BDF89A119600B40895F7DF01921A94D0
:1081B000E1F70895F2DFE02DF0DFF02D0895F99951
:1081C000FECFB2BDA1BD00BC11960FB6F894FA9ACD
:1081D000F99A0FBE0895F3DF012CF1DF1124089501
:0C81E0000190EDDF1A94E1F70895FFCF45
:1081EC000AFF0164496E74656772616C506974634F
:1081FC0068202020496E74656772616C526F6C6CDC
:10820C002020202041636350697463682020202063
:10821C0020202020416363526F6C6C202020202092
:10822C00202020204779726F596177202020202050
:10823C002020202052656164696E67486569676813
:10824C00742020204163635A2020202020202020ED
:10825C002020202054687275737420202020202048
:10826C0020202020436F6D706173734865616469D1
:10827C006E672020566F6C7461676520202020206B
:10828C00202020205265636569766572204C6576E6
:10829C00656C20205961774779726F486561646914
:1082AC006E6720204D6F746F725F46726F6E742014
:1082BC00202020204D6F746F725F526561722020F8
:1082CC00202020204D6F746F725F52696768742094
:1082DC00202020204D6F746F725F4C6566742020D7
:1082EC00202020204163635F5A2020202020202062
:1082FC0020202020535049204572726F722020207C
:10830C0020202020535049204F6B2020202020205B
:10831C002020202020202020202020202020202051
:10832C0020202020536572766F20202020202020D2
:10833C0020202020506974636820202020202020D9
:10834C0020202020526F6C6C202020202020202008
:10835C002020202020202020202020202020202011
:10836C002020202020202020202020202020202001
:10837C0020202020202020202020202020202020F1
:10838C0020202020202020202020202020202020E1
:10839C0020202020202020202020202020202020D1
:1083AC0020202020202020202020202020202020C1
:1083BC0020202020202020202020202020202020B1
:1083CC00202020204750535F506974636820202080
:1083DC00202020204750535F526F6C6C20202020AF
:1083EC0020202020FFFF010A6400007D0000FF0315
:1083FC000102030405060708090A48656C6C6F2026
:10840C00576F726C64000000000000000000000058
:10841C000000000000000000000000000000000050
:10842C000000000000000000000000000000000040
:10843C000000000000000000000000000000000030
:10844C00000000000000000000000B016400FFFFB2
:10845C00FFFFF40190D0030090D00300ECFF17B79E
:10846C00D13830FB103A409696020A00000000000A
:10847C00000000644600006401426567696E6E6529
:10848C007200004E6F726D616C000053706F7274ED
:10849C0000000C000102020303030304040404049F
:1084AC000404040505050505050505050505050573
:1084BC000505050606060606060606060606060653
:1084CC000606060606060606060606060606060640
:1084DC000606060707070707070707070707070723
:1084EC000707070707070707070707070707070710
:1084FC000707070707070707070707070707070700
:10850C0007070707070707070707070707070707EF
:10851C0007070708080808080808080808080808D2
:10852C0008080808080808080808080808080808BF
:10853C0008080808080808080808080808080808AF
:10854C00080808080808080808080808080808089F
:10855C00080808080808080808080808080808088F
:10856C00080808080808080808080808080808087F
:10857C00080808080808080808080808080808086F
:10858C00080808080808080808080808080808085F
:04859C0008080800C3
:00000001FF
/branches/V0.69k Code Redesign killagreg/Hex-Files/Readme.txt
0,0 → 1,159
V0.69k Ausgangsversion.
 
G.Stobrawa 01.06.2008:
 
- Code stärker modularisiert und restrukturiert
- viele Kommentare zur Erklärug eingefügt
- konsequent englische Variablennamen
- PPM24 Support für bis zu 12 RC-Kanäle.
- Support für Kompass CMPS01, MK3MAG oder MM3
- 2. Uart wird nun unterstützt (MCU = atmega644p im Makefile)
- Ausertung des UBX-Pprotocols an 1. oder 2. Uart
- einige kleinere Bugfixes
- GPS-Hold-Funktion hinzugefügt
- GPS-Home-Funktion hinzugefügt (wird beim Motorstart gelernt, und bei Motorenstop wieder gelöscht)
- Poti3 steuert die GPS Funktionen (Poti3 < 70:GPS inaktiv, 70<=Poti3<160: GPS Hold, 160<=Poti3: GPS Home)
- LED Steuerung an J16, parametrierbar durch die User Parameter 7 & 8. UserParam7 legt die
LEDOnTime in Vielfachen von 2ms fest und UserParam 8 die LEDOffTime.
- Zusätzliche Punkte im Menü des KopterTool zur Anzeige des GPS-Status und der MM3-Kalibierparameter
 
 
- Hardware Configuration:
 
- Die PWM des MK3MAG/CMPS03 wird wie bisher standard über den Port PC4 (Pin5 an SV1 der FC) eingelesen.
- Der MM3 wird wie folgt verbunden.
 
FC 1.0/1.1/1.2 Level Shifter MM3
SCK (Pin1 SV5) ---> SCK (Pin1)
MISO (Pin3 SV5) <--- MISO (Pin2)
MOSI (Pin5 SV5) ---> MOSI (Pin3)
GND (Pin6 SV5) ---> GND (Pin7 / Pin14)
PC4 (Pin5 SV1) ---> SS (Pin4)
PC5 (Pin6 SV1) ---> RESET (Pin6)
 
Zusätzlich benötigt der MM3 noch eine 3V oder 3V3 Versorgung an VDD (Pin12).
 
- Für das UBLOX-Modul muss noch GPS-GND mit FC-GND (Pin7 SV1) und
die GPS-TXD Leitung mit FC-RXD (Pin1 SV1) verbunden werden,
wenn man die FC 1.0 mit dem Atmega644 verwendet.
Für die FC 1.1/1.2 mit Atmega644p-Bestückung benötigt man FC-RXD1 (Pin3 SV1).
Zusätzlich benötigt das UBLOX-Modul noch eine 5V-Versorgung die ggf. von
der FC (an Pin2 SV1) abgegriffen werden kann.
Wenn die FC gültige Messages vom GPS empfängt, blinkt die rote LED mit 4 Hz.
 
 
- Konfiguration des MK.
Es sollte ein Haken bei GPS und Kompass gesetzt sein. Wenn nur GPS Aktiviert ist, wird intern immer auch der
Kompass aktiviert, da er für den GPS-Regler unbedingt notwendig ist.
 
- Unter Sonstiges: Kompass-Wirkung etwa auf 50 bis 70.
 
- User Parameters:
Parameter 2 --> I-Factor for GPS PD controller (start with small values below 10)
Parameter 3 --> Calibration factor for transforming Gyro Integrals to angular degrees (~170)
Parameter 4 --> Angle between the MM3 Board (Arrow) and the MK head (typical ~180)
Parameter 5 --> P-Factor for GPS PD controller (~70)
Parameter 6 --> D-Factor for GPS PD controller (~140)
Parameter 7 --> LED1Time for J16
Parameter 8 --> LED2Time for J17
- LED-Steuerung an J16/J17
Das Verhalten der über einen Transistor gegen Masse geschalteten Ausgänge J16/J17 wird mit
Hilfe der Userparameter 7 und 8 angepasst.
Es gilt:
UP7/8 < 20: Ausgang liegt dauerhaft auf Masse.
UP7/8 > 220: Ausgang ist dauerhaft hochohmig.
Sonst wird geblinkt, wobei sich die Frequenz mit dem Userparameter zwischen 2 bis 25 Hz einstellen lässt.
 
- Zusätzliche akustische Signale:
 
Signale die eine Fehlfunktion anzeigen:
Dauerton: Eine GPS-Funktion ist aktiviert und es werden keine oder
unvollständige GPS-Daten via UART empfangen.
Hier ist zu berücksichtigen, dass die folgenden UBX Messages am UBLOX
aktiviert wurden: NAV-POSLLH, NAV-SOL, NAV-VELNED.
Fehlt eine dieser Messages wird breits der Dauerton gesetzt.
5Hz Piepen: Ist eine der GPS Funktion aktiviert, zeigt dass den Empfang valider UBX-Daten,
wenn noch kein 3D-Satfix vorliegt. Die Pausen zwischen den 4Hz Pieps werden
immer länger je mehr Satelitten das GPS empfängt.
Liegt ein 3D Fix vor, so verstummt der Pieper dann endgültig egal wie viele Satelitten
beteiligt sind (es müssen dafür aber mindesten 4 sein).
Ist die Comming Home Funktion aktiv (Poti3>160) und konnte keine Home-Position beim
Einschalten der Motoren eingelernt werden, so ertönt ebenfalls ein 4Hz-Piepen.
10Hz Piepen: Die Kommunikation zum Kompassmodul ist gestört. (Funktioniert bei beiden Kompassmodulen)
Der CompassValue in den Debugs vom Koptertool zeigt dann -1 an.
 
Signale die eine Aktion bestätigen.
1s Piepen: Ertönt dieses Signal nach dem Einschalten der Motoren wird die erfolgreiche
Übernahme der Home-Position bestätigt.
 
 
- Inbetriebnahme:
 
Nach dem Flashen des Codes sollte man die Kalibrierung für den MK3MAG/MM3 wiederholen, da diese Daten
an einer anderen Position im EEProm der FC abgelegt und wieder gelesen werden.
 
Das Vorgehen erfolgt beim MM3 und MK3MAG exakt gleich wie hier beschrieben.
http://www.mikrokopter.de/ucwiki/MK3Mag?highlight=%28mk3mag%29
 
Zur Bestimmung des User Parameters 3 (Umrechnungsfaktor zwischen dem Gyrointegral und dem zugehörigen Neigungswinkel)
hat sich folgendes Vorgehen bewehrt.
- Man bestimmt den Wert des Roll- und Nick-Integrals für einen Neigungswinkel von 45°
über die Ausgaben des Koptertools.
- Aus diesem Wert kann man den benötigten UserParam3 berechnen.
UserParam3 = (Nick-Integral(45°)+Roll-Integral(45°))/2*GyroACCFaktor/45°/8. (typisch 170)
- Nachdem dieser Wert über die Settings des Koptertools im MK abgepeichert ist, sollte sich der CompassValue bei
Verkippungen nur unwesentlich verändern.
 
- Preflight GPS Test:
Ist der Kopter eingeschaltet, so kann man den GPS-Empfang überprüfen, in dem man Poti3 > 70 setzt.
Erhält man ein Dauerpiepen besteht keine Kommunikation zum GPS oder eine der benötigten UBX-Messseages fehlt.
Blinkt die rote LED der FC, so werden grundsätzlich valide Daten vom GPS empfangen. Abhilfe schafft dann die
Einstellung des GPS-Moduls via USB und u-Center sodass die UBX Messages NAV-POSLLH, NAV-SOL, NAV-VELNED
mit 57600 baud auf zum Target 1 (RS232) gesendet werden. Es empfiehlt sich alle anderen Sendungen inkl. NMEA
abzuschalten, da diese sonst durch den UBX-Parser auf der FC laufen und sinnlose Rechenzeit beanspruchen.
Am einfachsten geht das mit dem Konfigurationsfile "Conrad LEA-4H Config.txt". Dazu verbindet man das
UBLOX-Modul via USB mit dem PC und started das u-Center. Dan wählt man im Menü:
"Tools->GPS Configuration" dieses File aus und klickt auf den Button "File >> GPS".
Hat man diese Hürde genommen (Dauerpiepsen ist Weg), wird wahrscheinlich ein 5Hz piepen zu hören sein.
Dieses zeigt den korrekten Empfang aller UBX-Messages an. Je mehr Satelitten empfangen werden, desto länger werden
die Pausen zwischen den Pieps, bis sie schleißlich ganz verschwinden, was einen 3D-Satfix signalisiert.
Die GPS-Funktionen können ggf. nun wieder abgeschaltet werden (Poti3<70).
 
- Setzen der Home Position:
Startet man die Motoren, so ertönt in diesem Moment eine 1s-langer Piep, der die erfolgreiche Übernahme
der Home-Position bestätigt. Dies passiert immer, auch wenn keine GPS-Funktion aktiviert wurde (Poti3<70).
Es kann jedoch sein, dass das Signal nicht ertönt. In diesem Fall konnte keine Home Position
abgespeichert werden, da zu diesem Zeitpunkt kein 3D-Fix vorlag. Aktiviert man dann später während des Fluges Comming Home (Poti3>160) wird dieser Zustand mit einem 5Hz Piepen angezeigt. Der Kopter versucht dann
wenigstens ein Position Hold. Schaltet man die Motoren ab, so wird auch die ggf.
gespeicherte Home-Position gelöscht.
- Dynamishes Position Hold:
Ist 70 < Poti3 < 160 so ist die dynamische Position Hold Funktion aktiv. Solange sich der Nick- & Roll-Stick
in Zentralposiotion befinden (genauer Auschlag < 20 Counts) wird die laterale (XY)-Position durch das GPS-
Signal geregelt. Dabei wird versucht die Abweichung der aktuellen GPS-Position von der zum Zeitpunkt
der letzen Nick/Roll-Stickbewegung gespeicherten Position zu minimieren. (Siehe dazu auch D- & P-Parameter
des GPS-Reglers). Dadurch kann man den MK zu einer bestimmten Position steuern und behält diese bei.
 
Es kann vorkommen, das bei extremer Timmerstellung an Nick und Roll der Funke der
zugehörige Stickwert bereits eine Auslenkung > 20 zeigt. In diesem Fall wird das Position Hold
leider nicht aktiviert. Durch die automatische Abschaltung des GPS-Reglers für den Fall einer manuellen
Bedienung kann man jederzeit in das Flugverhalten eingreifen.
 
- Comming Home:
Ist Poti3 > 160 so ist die Comming Home Funktion aktiv. Das verhalten ist analog dem Position Hold,
jedoch ist das Regelziel nicht die zuletzt gespeichwerte GPS-Position sondern die zum Zeitpunkt des
Einschaltens der MOtoren gespeicherte Home Position. Eine manualle Bedienung von Nick- und Roll-Stick
unterbricht auch hier sofort den GPS-Regler und die Steuerung erfolgt manuell.
 
/branches/V0.69k Code Redesign killagreg/Hex-Files/WasIstWas.txt
6,10 → 6,20
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde!
Danach können Softwareupdates seriell eingespielt werden.
 
Flight-Ctrl_MEGA644_Vx_yy.hex
Aktuelle Firmware
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt
Aktuelle Firmware
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt
Flight-Ctrl SW >= 0.69 benötigt das Kopter-Tool 1.50
 
Flight-Ctrl SW > 0.62 benötigt das Kopter-Tool >1.47
Flight-Ctrl_MEGA644_KILLAGREG_V0_69k.hex für Atmega644 mit Extension Board für MM3 und Conrad-GPS
Flight-Ctrl_MEGA644_NAVICTRL_V0_69k.hex für Atmega644 mit NaviCtrl
Flight-Ctrl_MEGA644_V0_69k.hex für Atmega655 mit Support für den CMPS03/MK3MAG an der FC
 
Flight-Ctrl_MEGA644p_KILLAGREG_V0_69k.hex für Atmega644 mit Extension Board für MM3 und Conrad-GPS
Flight-Ctrl_MEGA644p_NAVICTRL_V0_69k.hex für Atmega644 mit NaviCtrl
Flight-Ctrl_MEGA644p_V0_69k.hex für Atmega655 mit Support für den CMPS03/MK3MAG an der FC
 
Die Firmware läuft sowohl auf der FC 1.0 als auch auf der FC 1.1/1.2
 
 
/branches/V0.69k Code Redesign killagreg/Kopter-Tool/MikroKopter-Tool.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/V0.69k Code Redesign killagreg/_Settings.h
2,14 → 2,12
// Testmodi
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define MOTOR_OFF 0
#define MOTOR_TEST 0
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Abstimmung
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define ACC_AMPLIFY 12
#define FAKTOR_P 1
#define FAKTOR_I 0.0001
#define FACTOR_I 0.0001
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
18,17 → 16,7
#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein?
#define MIN_DEBUG_INTERVALL 250 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Sender
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define K_NICK 0
#define K_ROLL 1
#define K_GAS 2
#define K_GIER 3
#define K_POTI1 4
#define K_POTI2 5
#define K_POTI3 6
#define K_POTI4 7
 
// +++++++++++++++++++++++++++++++
// + Getestete Settings:
// +++++++++++++++++++++++++++++++
/branches/V0.69k Code Redesign killagreg/analog.c
4,152 → 4,200
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "analog.h"
#include "main.h"
#include "timer0.h"
#include "fc.h"
#include "printf_P.h"
#include "eeprom.h"
 
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100;
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0;
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0;
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0;
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0;
volatile long Luftdruck = 32000;
volatile int StartLuftdruck;
volatile unsigned int MessLuftdruck = 1023;
unsigned char DruckOffsetSetting;
volatile int HoeheD = 0;
volatile char messanzahl_Druck;
volatile int tmpLuftdruck;
volatile unsigned int ZaehlMessungen = 0;
volatile int16_t Current_AccZ = 0;
volatile int16_t UBat = 100;
volatile int16_t AdValueGyrPitch = 0, AdValueGyrRoll = 0, AdValueGyrYaw = 0;
volatile int16_t AdValueAccRoll = 0, AdValueAccPitch = 0, AdValueAccTop = 0;
volatile int32_t AirPressure = 32000;
volatile int16_t StartAirPressure;
volatile uint16_t ReadingAirPressure = 1023;
uint8_t PressureSensorOffset;
volatile int16_t HeightD = 0;
volatile uint16_t MeasurementCounter = 0;
 
//#######################################################################################
//
/*****************************************************/
/* Initialize Analog Digital Converter */
/*****************************************************/
void ADC_Init(void)
//#######################################################################################
{
ADMUX = 0;//Referenz ist extern
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE);
//Free Running Mode, Division Factor 128, Interrupt on
{
uint8_t sreg = SREG;
// disable all interrupts before reconfiguration
cli();
//ADC0 ... ADC7 is connected to PortA pin 0 ... 7
DDRA = 0x00;
PORTA = 0x00;
// Digital Input Disable Register 0
// Disable digital input buffer for analog adc_channel pins
DIDR0 = 0xFF;
// external reference, adjust data to the right
ADMUX &= ~((1 << REFS1)|(1 << REFS0)|(1 << ADLAR));
// set muxer to ADC adc_channel 0 (0 to 7 is a valid choice)
ADMUX = (ADMUX & 0xE0) | 0x00;
//Set ADC Control and Status Register A
//Auto Trigger Enable, Prescaler Select Bits to Division Factor 128, i.e. ADC clock = SYSCKL/128 = 156.25 kHz
ADCSRA = (1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//Set ADC Control and Status Register B
//Trigger Source to Free Running Mode
ADCSRB &= ~((1 << ADTS2)|(1 << ADTS1)|(1 << ADTS0));
// Enable AD conversion
ADC_Enable();
// restore global interrupt flags
SREG = sreg;
}
 
void SucheLuftruckOffset(void)
void SearchAirPressureOffset(void)
{
unsigned int off;
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]);
if(off > 20) off -= 10;
OCR0A = off;
Delay_ms_Mess(100);
if(MessLuftdruck < 850) off = 0;
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(MessLuftdruck < 900) break;
}
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off);
DruckOffsetSetting = off;
Delay_ms_Mess(300);
uint8_t off;
off = GetParamByte(PID_PRESSURE_OFFSET);
if(off > 20) off -= 10;
OCR0A = off;
Delay_ms_Mess(100);
if(ReadingAirPressure < 850) off = 0;
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(ReadingAirPressure < 900) break;
}
SetParamByte(PID_PRESSURE_OFFSET, off);
PressureSensorOffset = off;
Delay_ms_Mess(300);
}
 
 
//#######################################################################################
//
SIGNAL(SIG_ADC)
//#######################################################################################
/*****************************************************/
/* Interrupt Service Routine for ADC */
/*****************************************************/
// runs at 156.25 kHz or 6.4 µs
// if after (70.4µs) all 11 states are processed the interrupt is disabled
// and the update of further ads is stopped
// The routine changes the ADC input muxer running
// thru the state machine by the following order.
// state 0: ch0 (yaw gyro)
// state 1: ch1 (roll gyro)
// state 2: ch2 (pitch gyro)
// state 3: ch4 (battery voltage -> UBat)
// state 4: ch6 (acc y -> Current_AccY)
// state 5: ch7 (acc x -> Current_AccX)
// state 6: ch0 (yaw gyro average with first reading -> AdValueGyrYaw)
// state 7: ch1 (roll gyro average with first reading -> AdValueGyrRoll)
// state 8: ch2 (pitch gyro average with first reading -> AdValueGyrPitch)
// state 9: ch5 (acc z add also 4th part of acc x and acc y to reading)
// state10: ch3 (air pressure averaging over 5 single readings -> tmpAirPressure)
 
ISR(ADC_vect)
{
static unsigned char kanal=0,state = 0;
static unsigned int gier1, roll1, nick1;
ANALOG_OFF;
static uint8_t adc_channel = 0, state = 0;
static uint16_t yaw1, roll1, pitch1;
static uint8_t average_pressure = 0;
static int16_t tmpAirPressure = 0;
// disable further AD conversion
ADC_Disable();
// state machine
switch(state++)
{
case 0:
gier1 = ADC;
kanal = 1;
ZaehlMessungen++;
yaw1 = ADC; // get Gyro Yaw Voltage 1st sample
adc_channel = 1; // set next channel to ADC1 = ROLL GYRO
MeasurementCounter++; // increment total measurement counter
break;
case 1:
roll1 = ADC;
kanal = 2;
roll1 = ADC; // get Gyro Roll Voltage 1st sample
adc_channel = 2; // set next channel to ADC2 = PITCH GYRO
break;
case 2:
nick1 = ADC;
kanal = 4;
pitch1 = ADC; // get Gyro Pitch Voltage 1st sample
adc_channel = 4; // set next channel to ADC4 = UBAT
break;
case 3:
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2;
kanal = 6;
// get actual UBat (Volts*10) is ADC*30V/1024*10 = ADC/3
UBat = (3 * UBat + ADC / 3) / 4; // low pass filter updates UBat only to 1 quater with actual ADC value
adc_channel = 6; // set next channel to ADC6 = ACC_Y
break;
case 4:
Aktuell_ay = NeutralAccY - ADC;
AdWertAccRoll = Aktuell_ay;
kanal = 7;
AdValueAccRoll = NeutralAccY - ADC; // get acceleration in Y direction
adc_channel = 7; // set next channel to ADC7 = ACC_X
break;
case 5:
Aktuell_ax = ADC - NeutralAccX;
AdWertAccNick = Aktuell_ax;
kanal = 0;
AdValueAccPitch = ADC - NeutralAccX; // get acceleration in X direction
adc_channel = 0; // set next channel to ADC7 = YAW GYRO
break;
case 6:
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2;
else AdWertGier = ADC + gier1;
kanal = 1;
// average over two samples to create current AdValueGyrYaw
if(BoardRelease == 10) AdValueGyrYaw = (ADC + yaw1) / 2;
else AdValueGyrYaw = ADC + yaw1; // gain is 2 times lower on FC 1.1
adc_channel = 1; // set next channel to ADC7 = ROLL GYRO
break;
case 7:
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2;
else AdWertRoll = ADC + roll1;
kanal = 2;
// average over two samples to create current ADValueGyrRoll
if(BoardRelease == 10) AdValueGyrRoll = (ADC + roll1) / 2;
else AdValueGyrRoll = ADC + roll1; // gain is 2 times lower on FC 1.1
adc_channel = 2; // set next channel to ADC2 = PITCH GYRO
break;
case 8:
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2;
else AdWertNick = ADC + nick1;
//AdWertNick = 0;
//AdWertNick += Poti2;
kanal = 5;
// average over two samples to create current ADValuePitch
if(BoardRelease == 10) AdValueGyrPitch = (ADC + pitch1) / 2;
else AdValueGyrPitch = ADC + pitch1; // gain is 2 times lower on FC 1.1
adc_channel = 5; // set next channel to ADC5 = ACC_Z
break;
case 9:
AdWertAccHoch = (signed int) ADC - NeutralAccZ;
// AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4;
if(AdWertAccHoch > 1)
// get z acceleration
AdValueAccTop = (int16_t) ADC - NeutralAccZ; // get plain acceleration in Z direction
AdValueAccTop += abs(AdValueAccPitch) / 4 + abs(AdValueAccRoll) / 4;
if(AdValueAccTop > 1)
{
if(NeutralAccZ < 750)
{
NeutralAccZ += 0.02;
if(modell_fliegt < 500) NeutralAccZ += 0.1;
}
}
else if(AdWertAccHoch < -1)
if(NeutralAccZ < 750)
{
NeutralAccZ += 0.02;
if(Model_Is_Flying < 500) NeutralAccZ += 0.1;
}
}
else if(AdValueAccTop < -1)
{
if(NeutralAccZ > 550)
{
NeutralAccZ-= 0.02;
if(modell_fliegt < 500) NeutralAccZ -= 0.1;
}
}
messanzahl_AccHoch = 1;
Aktuell_az = ADC;
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen
kanal = 3;
if(NeutralAccZ > 550)
{
NeutralAccZ-= 0.02;
if(Model_Is_Flying < 500) NeutralAccZ -= 0.1;
}
}
Current_AccZ = ADC;
Reading_Integral_Top += AdValueAccTop; // Integrieren
Reading_Integral_Top -= Reading_Integral_Top / 1024; // dämfen
adc_channel = 3; // set next channel to ADC3 = air pressure
break;
case 10:
tmpLuftdruck += ADC;
if(++messanzahl_Druck >= 5)
{
MessLuftdruck = ADC;
messanzahl_Druck = 0;
HoeheD = (7 * HoeheD + (int) Parameter_Luftdruck_D * (int)(StartLuftdruck - tmpLuftdruck - HoehenWert))/8; // D-Anteil = neuerWert - AlterWert
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4;
HoehenWert = StartLuftdruck - Luftdruck;
tmpLuftdruck = 0;
}
kanal = 0;
state = 0;
tmpAirPressure += ADC; // sum vadc values
if(++average_pressure >= 5) // if 5 values are summerized for averaging
{
ReadingAirPressure = ADC; // update measured air pressure
HeightD = (7 * HeightD + (int16_t)FCParam.Height_D * (int16_t)(StartAirPressure - tmpAirPressure - ReadingHeight))/8; // D-Part = CurrentValue - OldValue
AirPressure = (tmpAirPressure + 3 * AirPressure) / 4; // averaging using history
ReadingHeight = StartAirPressure - AirPressure;
average_pressure = 0; // reset air pressure measurement counter
tmpAirPressure = 0;
}
adc_channel = 0; // set next channel to ADC0 = GIER GYRO
state = 0; // reset state machine
break;
default:
kanal = 0;
default:
adc_channel = 0;
state = 0;
break;
}
ADMUX = kanal;
if(state != 0) ANALOG_ON;
}
// set adc muxer to next adc_channel
ADMUX = (ADMUX & 0xE0) | adc_channel;
// after full cycle stop further interrupts
if(state != 0) ADC_Enable();
}
/branches/V0.69k Code Redesign killagreg/analog.h
1,24 → 1,29
/*#######################################################################################
#ifndef _ANALOG_H
#define _ANALOG_H
 
#######################################################################################*/
#include <inttypes.h>
 
extern volatile int UBat;
extern volatile int AdWertNick, AdWertRoll, AdWertGier;
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch;
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az;
extern volatile long Luftdruck;
extern volatile char messanzahl_Druck;
extern volatile unsigned int ZaehlMessungen;
extern unsigned char DruckOffsetSetting;
extern volatile int HoeheD;
extern volatile unsigned int MessLuftdruck;
extern volatile int StartLuftdruck;
extern volatile char MessanzahlNick;
extern volatile int16_t UBat;
extern volatile int16_t AdValueGyrPitch, AdValueGyrRoll, AdValueGyrYaw;
extern volatile int16_t AdValueAccRoll, AdValueAccPitch, AdValueAccTop;
extern volatile int16_t Current_AccZ;
extern volatile int32_t AirPressure;
extern volatile uint16_t MeasurementCounter;
extern uint8_t PressureSensorOffset;
extern volatile int16_t HeightD;
extern volatile uint16_t ReadingAirPressure;
extern volatile int16_t StartAirPressure;
 
unsigned int ReadADC(unsigned char adc_input);
void ADC_Init(void);
void SucheLuftruckOffset(void);
extern void SearchAirPressureOffset(void);
 
extern void ADC_Init(void);
 
#define ANALOG_OFF ADCSRA=0
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE)
// clear ADC enable & ADC Start Conversion & ADC Interrupt Enable bit
#define ADC_Disable() (ADCSRA &= ~((1<<ADEN)|(1<<ADSC)|(1<<ADIE)))
// set ADC enable & ADC Start Conversion & ADC Interrupt Enable bit
#define ADC_Enable() (ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADIE))
 
 
#endif //_ANALOG_H
 
 
/branches/V0.69k Code Redesign killagreg/eeprom.c
1,182 → 1,321
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Konstanten
// + Konstanten
// + 0-250 -> normale Werte
// + 251 -> Poti1
// + 252 -> Poti2
// + 253 -> Poti3
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void DefaultKonstanten1(void)
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
 
 
#include <avr/eeprom.h>
#include <string.h>
#include "eeprom.h"
#include "printf_P.h"
 
 
// byte array in eeprom
uint8_t EEPromArray[E2END+1] EEMEM;
 
paramset_t ParamSet;
 
 
 
/***************************************************/
/* Default Values for parameter set 1 */
/***************************************************/
void ParamSet_DefaultSet1(void) // sport
{
EE_Parameter.Kanalbelegung[K_NICK] = 1;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_GAS] = 3;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01;
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50
EE_Parameter.Stick_P = 15; // Wert : 1-6
EE_Parameter.Stick_D = 30; // Wert : 0-64
EE_Parameter.Gier_P = 12; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 80; // Wert : 0-250
EE_Parameter.Gyro_I = 150; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 253; // zur freien Verwendung
EE_Parameter.UserParam2 = 100; // zur freien Verwendung
EE_Parameter.UserParam3 = 90; // zur freien Verwendung
EE_Parameter.UserParam4 = 90; // zur freien Verwendung
EE_Parameter.UserParam5 = 90; // zur freien Verwendung
EE_Parameter.UserParam6 = 90; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 5;
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
EE_Parameter.AchsKopplung1 = 90;
EE_Parameter.AchsGegenKopplung1 = 5;
EE_Parameter.WinkelUmschlagNick = 100;
EE_Parameter.WinkelUmschlagRoll = 100;
EE_Parameter.GyroAccAbgleich = 16; // 1/k
EE_Parameter.Driftkomp = 4;
EE_Parameter.DynamicStability = 100;
memcpy(EE_Parameter.Name, "Sport\0", 12);
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 4; // Wert : 0-50
ParamSet.Stick_P = 15; // Wert : 1-24
ParamSet.Stick_D = 30; // Wert : 0-250
ParamSet.Yaw_P = 12; // Wert : 1-20
ParamSet.Trust_Min = 8; // Wert : 0-32
ParamSet.Trust_Max = 230; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 80; // Wert : 0-250
ParamSet.Gyro_I = 150; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 32;
ParamSet.UserParam1 = 253; //zur freien Verwendung
ParamSet.UserParam2 = 100; //zur freien Verwendung
ParamSet.UserParam3 = 90; //zur freien Verwendung
ParamSet.UserParam4 = 90; //zur freien Verwendung
ParamSet.UserParam5 = 90; // zur freien Verwendung
ParamSet.UserParam6 = 90; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
ParamSet.Yaw_PosFeedback = 90;
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 16; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 100;
memcpy(ParamSet.Name, "Sport\0",6);
}
void DefaultKonstanten2(void)
 
 
/***************************************************/
/* Default Values for parameter set 2 */
/***************************************************/
void ParamSet_DefaultSet2(void) // normal
{
EE_Parameter.Kanalbelegung[K_NICK] = 1;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_GAS] = 3;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01;
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_Verstaerkung = 3; // Wert : 0-50
EE_Parameter.Stick_P = 12; // Wert : 1-6
EE_Parameter.Stick_D = 16; // Wert : 0-64
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 80; // Wert : 0-250
EE_Parameter.Gyro_I = 120; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 253; // zur freien Verwendung
EE_Parameter.UserParam2 = 100; // zur freien Verwendung
EE_Parameter.UserParam3 = 90; // zur freien Verwendung
EE_Parameter.UserParam4 = 90; // zur freien Verwendung
EE_Parameter.UserParam5 = 90; // zur freien Verwendung
EE_Parameter.UserParam6 = 90; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 5;
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt
EE_Parameter.AchsGegenKopplung1 = 5;
EE_Parameter.WinkelUmschlagNick = 100;
EE_Parameter.WinkelUmschlagRoll = 100;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.Driftkomp = 4;
EE_Parameter.DynamicStability = 75;
memcpy(EE_Parameter.Name, "Normal\0", 12);
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 3; // Wert : 0-50
ParamSet.Stick_P = 12; // Wert : 1-24
ParamSet.Stick_D = 16; // Wert : 0-250
ParamSet.Yaw_P = 6; // Wert : 1-20
ParamSet.Trust_Min = 8; // Wert : 0-32
ParamSet.Trust_Max = 230; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 80; // Wert : 0-250
ParamSet.Gyro_I = 120; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 32;
ParamSet.UserParam1 = 253; // zur freien Verwendung
ParamSet.UserParam2 = 100; // zur freien Verwendung
ParamSet.UserParam3 = 90; // zur freien Verwendung
ParamSet.UserParam4 = 90; // zur freien Verwendung
ParamSet.UserParam5 = 90; // zur freien Verwendung
ParamSet.UserParam6 = 90; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Pitch verkoppelt
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 32; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 75;
memcpy(ParamSet.Name, "Normal\0", 7);
}
 
void DefaultKonstanten3(void)
 
/***************************************************/
/* Default Values for parameter set 3 */
/***************************************************/
void ParamSet_DefaultSet3(void) // beginner
{
EE_Parameter.Kanalbelegung[K_NICK] = 1;
EE_Parameter.Kanalbelegung[K_ROLL] = 2;
EE_Parameter.Kanalbelegung[K_GAS] = 3;
EE_Parameter.Kanalbelegung[K_GIER] = 4;
EE_Parameter.Kanalbelegung[K_POTI1] = 5;
EE_Parameter.Kanalbelegung[K_POTI2] = 6;
EE_Parameter.Kanalbelegung[K_POTI3] = 7;
EE_Parameter.Kanalbelegung[K_POTI4] = 8;
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;///*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV;//0x01;
EE_Parameter.Hoehe_MinGas = 30;
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1
EE_Parameter.Hoehe_P = 10; // Wert : 0-32
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250
EE_Parameter.Hoehe_Verstaerkung = 3; // Wert : 0-50
EE_Parameter.Stick_P = 8; // Wert : 1-6
EE_Parameter.Stick_D = 16; // Wert : 0-64
EE_Parameter.Gier_P = 6; // Wert : 1-20
EE_Parameter.Gas_Min = 8; // Wert : 0-32
EE_Parameter.Gas_Max = 230; // Wert : 33-250
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64
EE_Parameter.KompassWirkung = 128; // Wert : 0-250
EE_Parameter.Gyro_P = 100; // Wert : 0-250
EE_Parameter.Gyro_I = 120; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 16;
EE_Parameter.UserParam1 = 253; // zur freien Verwendung
EE_Parameter.UserParam2 = 100; // zur freien Verwendung
EE_Parameter.UserParam3 = 90; // zur freien Verwendung
EE_Parameter.UserParam4 = 90; // zur freien Verwendung
EE_Parameter.UserParam5 = 90; // zur freien Verwendung
EE_Parameter.UserParam6 = 90; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
EE_Parameter.ServoNickMin = 50; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickMax = 150; // Wert : 0-250 // Anschlag
EE_Parameter.ServoNickRefresh = 5;
EE_Parameter.LoopGasLimit = 50;
EE_Parameter.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
EE_Parameter.LoopHysterese = 50;
EE_Parameter.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt
EE_Parameter.AchsGegenKopplung1 = 5;
EE_Parameter.WinkelUmschlagNick = 100;
EE_Parameter.WinkelUmschlagRoll = 100;
EE_Parameter.GyroAccAbgleich = 32; // 1/k
EE_Parameter.Driftkomp = 4;
EE_Parameter.DynamicStability = 50;
memcpy(EE_Parameter.Name, "Beginner\0", 12);
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 3; // Wert : 0-50
ParamSet.Stick_P = 8; // Wert : 1-24
ParamSet.Stick_D = 16; // Wert : 0-250
ParamSet.Yaw_P = 6; // Wert : 1-20
ParamSet.Trust_Min = 8; // Wert : 0-32
ParamSet.Trust_Max = 230; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 100; // Wert : 0-250
ParamSet.Gyro_I = 120; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 16;
ParamSet.UserParam1 = 253; // zur freien Verwendung
ParamSet.UserParam2 = 100; // zur freien Verwendung
ParamSet.UserParam3 = 90; // zur freien Verwendung
ParamSet.UserParam4 = 90; // zur freien Verwendung
ParamSet.UserParam5 = 90; // zur freien Verwendung
ParamSet.UserParam6 = 90; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Pitch verkoppelt
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 32; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 50;
memcpy(ParamSet.Name, "Beginner\0", 9);
}
 
/***************************************************/
/* Read Parameter from EEPROM as byte */
/***************************************************/
uint8_t GetParamByte(uint8_t param_id)
{
return eeprom_read_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]);
}
 
/***************************************************/
/* Write Parameter to EEPROM as byte */
/***************************************************/
void SetParamByte(uint8_t param_id, uint8_t value)
{
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value);
}
 
/***************************************************/
/* Read Parameter from EEPROM as word */
/***************************************************/
uint16_t GetParamWord(uint8_t param_id)
{
return eeprom_read_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]);
}
 
/***************************************************/
/* Write Parameter to EEPROM as word */
/***************************************************/
void SetParamWord(uint8_t param_id, uint16_t value)
{
eeprom_write_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value);
}
 
 
/***************************************************/
/* Read Parameter Set from EEPROM */
/***************************************************/
// number [0..5]
void ParamSet_ReadFromEEProm(uint8_t setnumber)
{
if (setnumber > 5) setnumber = 5;
eeprom_read_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN);
}
 
/***************************************************/
/* Write Parameter Set to EEPROM */
/***************************************************/
// number [0..5]
void ParamSet_WriteToEEProm(uint8_t setnumber)
{
if(setnumber > 5) setnumber = 5;
eeprom_write_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN);
// set this parameter set to active set
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
 
/***************************************************/
/* Get active parameter set */
/***************************************************/
uint8_t GetActiveParamSet(void)
{
uint8_t setnumber;
setnumber = eeprom_read_byte(&EEPromArray[PID_ACTIVE_SET]);
if(setnumber > 5)
{
setnumber = 2;
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
return(setnumber);
}
 
/***************************************************/
/* Set active parameter set */
/***************************************************/
void SetActiveParamSet(uint8_t setnumber)
{
if(setnumber > 5) setnumber = 5;
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
 
/***************************************************/
/* Initialize EEPROM Parameter Sets */
/***************************************************/
void ParamSet_Init(void)
{
// version check
if(eeprom_read_byte(&EEPromArray[PID_VERSION]) != EEPARAM_VERSION)
{
// if version check faild
printf("\n\rInit. EEPROM: Generating Default-Parameter...");
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport)
// fill all 5 parameter settings with set 1 except otherwise defined
for (unsigned char i=0;i<6;i++)
{
if(i==2) ParamSet_DefaultSet2(); // Kamera
if(i==3) ParamSet_DefaultSet3(); // Beginner
if(i>3) ParamSet_DefaultSet2(); // Kamera
ParamSet_WriteToEEProm(i);
}
// default-Setting is parameter set 3
SetParamByte(PID_ACTIVE_SET, 3);
// update version info
SetParamByte(PID_VERSION, EEPARAM_VERSION);
}
// read active parameter set to ParamSet stucture
ParamSet_ReadFromEEProm(GetParamByte(PID_ACTIVE_SET));
printf("\n\rUsing Parameter Set %d", GetParamByte(PID_ACTIVE_SET));
}
/branches/V0.69k Code Redesign killagreg/eeprom.h
0,0 → 1,123
#ifndef _EEPROM_H
#define _EEPROM_H
 
#include <inttypes.h>
 
#define EEPROM_ADR_PARAM_BEGIN 0
#define PID_VERSION 1 // byte
#define PID_ACTIVE_SET 2 // byte
#define PID_PRESSURE_OFFSET 3 // byte
#define PID_ACC_PITCH 4 // word
#define PID_ACC_ROLL 6 // word
#define PID_ACC_Z 8 // word
 
#ifdef USE_KILLAGREG
#define PID_MM3_X_OFF 10 // byte
#define PID_MM3_Y_OFF 11 // byte
#define PID_MM3_Z_OFF 12 // byte
#define PID_MM3_X_RANGE 13 // word
#define PID_MM3_Y_RANGE 15 // word
#define PID_MM3_Z_RANGE 17 // word
#endif
 
#define EEPROM_ADR_PARAMSET_BEGIN 100
 
// bit mask for mk_param_struct.GlobalConfig
#define CFG_HEIGHT_CONTROL 0x01
#define CFG_HEIGHT_SWITCH 0x02
#define CFG_HEADING_HOLD 0x04
#define CFG_COMPASS_ACTIVE 0x08
#define CFG_COMPASS_FIX 0x10
#define CFG_GPS_ACTIVE 0x20
#define CFG_AXIS_COUPLING_ACTIVE 0x40
#define CFG_ROTARY_RATE_LIMITER 0x80
 
// bit mask for mk_param_struct.LoopConfig
#define CFG_LOOP_UP 0x01
#define CFG_LOOP_DOWN 0x02
#define CFG_LOOP_LEFT 0x04
#define CFG_LOOP_RIGHT 0x08
 
// defines for lookup mk_param_struct.ChannelAssignment
#define CH_PITCH 0
#define CH_ROLL 1
#define CH_THRUST 2
#define CH_YAW 3
#define CH_POTI1 4
#define CH_POTI2 5
#define CH_POTI3 6
#define CH_POTI4 7
 
#define EEPARAM_VERSION 70 // is count up, if EE_Paramater stucture has changed (compatibility)
 
// values above 250 representing poti1 to poti4
typedef struct
{
uint8_t ChannelAssignment[8]; // see upper defines for details
uint8_t GlobalConfig; // see upper defines for bitcoding
uint8_t Height_MinThrust; // Wert : 0-100
uint8_t Height_D; // Wert : 0-250
uint8_t MaxHeight; // Wert : 0-32
uint8_t Height_P; // Wert : 0-32
uint8_t Height_Gain; // Wert : 0-50
uint8_t Height_ACC_Effect; // Wert : 0-250
uint8_t Stick_P; // Wert : 1-6
uint8_t Stick_D; // Wert : 0-64
uint8_t Yaw_P; // Wert : 1-20
uint8_t Trust_Min; // Wert : 0-32
uint8_t Trust_Max; // Wert : 33-250
uint8_t GyroAccFactor; // Wert : 1-64
uint8_t CompassYawEffect; // Wert : 0-32
uint8_t Gyro_P; // Wert : 10-250
uint8_t Gyro_I; // Wert : 0-250
uint8_t LowVoltageWarning; // Wert : 0-250
uint8_t EmergencyThrust; // Wert : 0-250 //Gaswert bei Empängsverlust
uint8_t EmergencyThrustDuration; // Wert : 0-250 // Zeitbis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
uint8_t UfoArrangement; // x oder + Formation
uint8_t I_Factor; // Wert : 0-250
uint8_t UserParam1; // Wert : 0-250
uint8_t UserParam2; // Wert : 0-250
uint8_t UserParam3; // Wert : 0-250
uint8_t UserParam4; // Wert : 0-250
uint8_t ServoPitchControl; // Wert : 0-250 // Stellung des Servos
uint8_t ServoPitchComp; // Wert : 0-250 // Einfluss Gyro/Servo
uint8_t ServoPitchMin; // Wert : 0-250 // Anschlag
uint8_t ServoPitchMax; // Wert : 0-250 // Anschlag
uint8_t ServoPitchRefresh; //
uint8_t LoopThrustLimit; // Wert: 0-250 max. Gas während Looping
uint8_t LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
uint8_t LoopHysteresis; // Wert: 0-250 Hysterese für Stickausschlag
uint8_t Yaw_PosFeedback; // Wert: 0-250 Faktor, mit dem Yaw die Achsen Roll und Pitch koppelt (PitchRollMitkopplung)
uint8_t Yaw_NegFeedback; // Wert: 0-250 Faktor, mit dem Yaw die Achsen Roll und Pitch Gegenkoppelt (PitchRollGegenkopplung)
uint8_t AngleTurnOverPitch; // Wert: 0-250 180°-Punkt
uint8_t AngleTurnOverRoll; // Wert: 0-250 180°-Punkt
uint8_t GyroAccTrim; // 1/k (Koppel_ACC_Wirkung)
uint8_t DriftComp;
uint8_t DynamicStability;
uint8_t UserParam5; // Wert : 0-250
uint8_t UserParam6; // Wert : 0-250
uint8_t UserParam7; // Wert : 0-250
uint8_t UserParam8; // Wert : 0-250
uint8_t LoopConfig; // see upper defines for bitcoding
uint8_t ServoPitchCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
uint8_t Reserved[4];
int8_t Name[12];
} paramset_t;
 
#define PARAMSET_STRUCT_LEN sizeof(paramset_t)
 
extern paramset_t ParamSet;
 
extern void ParamSet_Init(void);
extern void ParamSet_ReadFromEEProm(uint8_t setnumber);
extern void ParamSet_WriteToEEProm(uint8_t setnumber);
extern uint8_t GetActiveParamSet(void);
extern void SetActiveParamSet(uint8_t setnumber);
 
 
extern uint8_t GetParamByte(uint8_t param_id);
extern void SetParamByte(uint8_t param_id, uint8_t value);
extern uint16_t GetParamWord(uint8_t param_id);
extern void SetParamWord(uint8_t param_id, uint16_t value);
 
#endif //_EEPROM_H
/branches/V0.69k Code Redesign killagreg/fc.c
6,14 → 6,14
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
24,21 → 24,21
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49,1187 → 49,1385
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <stdlib.h>
#include <avr/io.h>
 
#include "main.h"
#include "eeprom.c"
#include "eeprom.h"
#include "timer0.h"
#include "_Settings.h"
#include "analog.h"
#include "fc.h"
#include "uart.h"
#include "rc.h"
#include "twimaster.h"
#include "timer2.h"
#ifdef USE_KILLAGREG
#include "mm3.h"
#include "gps.h"
#endif
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
#include "mk3mag.h"
#endif
#include "led.h"
 
unsigned char h,m,s;
volatile unsigned int I2CTimeout = 100;
volatile int MesswertNick,MesswertRoll,MesswertGier;
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0;
int NaviAccNick, NaviAccRoll,NaviCntAcc = 0;
volatile uint16_t I2CTimeout = 100;
// gyro readings
volatile int16_t Reading_GyroPitch, Reading_GyroRoll, Reading_GyroYaw;
// gyro neutral readings
volatile int16_t AdNeutralPitch = 0, AdNeutralRoll = 0, AdNeutralYaw = 0;
volatile int16_t StartNeutralRoll = 0, StartNeutralPitch = 0;
// mean accelerations
volatile int16_t Mean_AccPitch, Mean_AccRoll, Mean_AccTop;
 
// neutral acceleration readings
volatile int16_t NeutralAccX=0, NeutralAccY=0;
volatile float NeutralAccZ = 0;
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0;
long IntegralNick = 0,IntegralNick2 = 0;
long IntegralRoll = 0,IntegralRoll2 = 0;
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
long Integral_Gier = 0;
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2;
volatile long Mess_Integral_Hoch = 0;
volatile int KompassValue = 0;
volatile int KompassStartwert = 0;
volatile int KompassRichtung = 0;
unsigned int KompassSignalSchlecht = 500;
unsigned char MAX_GAS,MIN_GAS;
unsigned char Notlandung = 0;
unsigned char HoehenReglerAktiv = 0;
unsigned char TrichterFlug = 0;
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
long ErsatzKompass;
int ErsatzKompassInGrad; // Kompasswert in Grad
int GierGyroFehler = 0;
float GyroFaktor;
float IntegralFaktor;
volatile int DiffNick,DiffRoll;
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
volatile unsigned char SenderOkay = 0;
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
char MotorenEin = 0;
int HoehenWert = 0;
int SollHoehe = 0;
int LageKorrekturRoll = 0,LageKorrekturNick = 0;
float Ki = FAKTOR_I;
unsigned char Looping_Nick = 0,Looping_Roll = 0;
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0;
 
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250
unsigned char Parameter_Gier_P = 2; // Wert : 1-20
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20
unsigned char Parameter_UserParam1 = 0;
unsigned char Parameter_UserParam2 = 0;
unsigned char Parameter_UserParam3 = 0;
unsigned char Parameter_UserParam4 = 0;
unsigned char Parameter_UserParam5 = 0;
unsigned char Parameter_UserParam6 = 0;
unsigned char Parameter_UserParam7 = 0;
unsigned char Parameter_UserParam8 = 0;
unsigned char Parameter_ServoNickControl = 100;
unsigned char Parameter_LoopGasLimit = 70;
unsigned char Parameter_AchsKopplung1 = 0;
unsigned char Parameter_AchsGegenKopplung1 = 0;
unsigned char Parameter_DynamicStability = 100;
struct mk_param_struct EE_Parameter;
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
int MaxStickNick = 0,MaxStickRoll = 0;
unsigned int modell_fliegt = 0;
// attitude gyro integrals
volatile int32_t IntegralPitch = 0,IntegralPitch2 = 0;
volatile int32_t IntegralRoll = 0,IntegralRoll2 = 0;
volatile int32_t IntegralYaw = 0;
volatile int32_t Reading_IntegralGyroPitch = 0, Reading_IntegralGyroPitch2 = 0;
volatile int32_t Reading_IntegralGyroRoll = 0, Reading_IntegralGyroRoll2 = 0;
volatile int32_t Reading_IntegralGyroYaw = 0;
volatile int32_t MeanIntegralPitch;
volatile int32_t MeanIntegralRoll;
 
void Piep(unsigned char Anzahl)
// attitude acceleration integrals
volatile int32_t IntegralAccPitch = 0, IntegralAccRoll = 0;
volatile int32_t Reading_Integral_Top = 0;
 
// compass course
volatile int16_t CompassHeading = -1; // negative angle indicates invalid data.
volatile int16_t CompassCourse = -1;
volatile int16_t CompassOffCourse = 0;
volatile uint8_t CompassCalState = 0;
uint8_t FunnelCourse = 0;
uint16_t BadCompassHeading = 500;
int32_t YawGyroHeading;
int16_t YawGyroDrift;
 
 
int16_t NaviAccPitch = 0, NaviAccRoll = 0, NaviCntAcc = 0;
 
 
// flags
uint8_t MotorsOn = 0;
uint8_t EmergencyLanding = 0;
uint16_t Model_Is_Flying = 0;
 
int32_t TurnOver180Pitch = 250000L, TurnOver180Roll = 250000L;
 
float Gyro_P_Factor;
float Gyro_I_Factor;
 
volatile int16_t DiffPitch, DiffRoll;
 
int16_t Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
 
// setpoints for motors
volatile uint8_t Motor_Front, Motor_Rear, Motor_Right, Motor_Left;
 
// stick values derived by rc channels readings
int16_t StickPitch = 0, StickRoll = 0, StickYaw = 0, StickThrust = 0;
int16_t GPS_Pitch = 0, GPS_Roll = 0;
 
int16_t MaxStickPitch = 0, MaxStickRoll = 0;
// stick values derived by uart inputs
int16_t ExternStickPitch = 0, ExternStickRoll = 0, ExternStickYaw = 0, ExternHeightValue = -20;
 
 
 
 
int16_t ReadingHeight = 0;
int16_t SetPointHeight = 0;
 
int16_t AttitudeCorrectionRoll = 0, AttitudeCorrectionPitch = 0;
 
float Ki = FACTOR_I;
 
uint8_t Looping_Pitch = 0, Looping_Roll = 0;
uint8_t Looping_Left = 0, Looping_Right = 0, Looping_Down = 0, Looping_Top = 0;
 
 
fc_param_t FCParam = {48,251,16,58,64,150,150,2,10,0,0,0,0,0,0,0,0,100,70,0,0,100};
 
 
/************************************************************************/
/* Creates numbeeps beeps at the speaker */
/************************************************************************/
void Beep(uint8_t numbeeps)
{
while(Anzahl--)
{
if(MotorenEin) return; //auf keinen Fall im Flug!
beeptime = 100;
Delay_ms(250);
}
while(numbeeps--)
{
if(MotorsOn) return; //auf keinen Fall im Flug!
BeepTime = 100; // 0.1 second
Delay_ms(250); // blocks 250 ms as pause to next beep,
// this will block the flight control loop,
// therefore do not use this funktion if motors are running
}
}
 
//############################################################################
// Nullwerte ermitteln
/************************************************************************/
/* Neutral Readings */
/************************************************************************/
void SetNeutral(void)
//############################################################################
{
NeutralAccX = 0;
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
AdNeutralNick = 0;
AdNeutralRoll = 0;
AdNeutralGier = 0;
Parameter_AchsKopplung1 = 0;
Parameter_AchsGegenKopplung1 = 0;
CalibrierMittelwert();
AdNeutralPitch = 0;
AdNeutralRoll = 0;
AdNeutralYaw = 0;
FCParam.Yaw_PosFeedback = 0;
FCParam.Yaw_NegFeedback = 0;
CalibMean();
Delay_ms_Mess(100);
CalibrierMittelwert();
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
 
AdNeutralNick= AdWertNick;
AdNeutralRoll= AdWertRoll;
AdNeutralGier= AdWertGier;
StartNeutralRoll = AdNeutralRoll;
StartNeutralNick = AdNeutralNick;
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
CalibMean();
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)) // Height Control activated?
{
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
NeutralAccX = abs(Mittelwert_AccNick) / ACC_AMPLIFY;
NeutralAccZ = Aktuell_az;
if((ReadingAirPressure > 950) || (ReadingAirPressure < 750)) SearchAirPressureOffset();
}
else
AdNeutralPitch = AdValueGyrPitch;
AdNeutralRoll = AdValueGyrRoll;
AdNeutralYaw = AdValueGyrYaw;
StartNeutralRoll = AdNeutralRoll;
StartNeutralPitch = AdNeutralPitch;
if(GetParamWord(PID_ACC_PITCH) > 1023)
{
NeutralAccX = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1]);
NeutralAccY = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1]);
NeutralAccZ = (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z]) * 256 + (int)eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1]);
NeutralAccY = abs(Mean_AccRoll) / ACC_AMPLIFY;
NeutralAccX = abs(Mean_AccPitch) / ACC_AMPLIFY;
NeutralAccZ = Current_AccZ;
}
Mess_IntegralNick = 0;
Mess_IntegralNick2 = 0;
Mess_IntegralRoll = 0;
Mess_IntegralRoll2 = 0;
Mess_Integral_Gier = 0;
MesswertNick = 0;
MesswertRoll = 0;
MesswertGier = 0;
StartLuftdruck = Luftdruck;
HoeheD = 0;
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
GPS_Neutral();
beeptime = 50;
Umschlag180Nick = ((long) EE_Parameter.WinkelUmschlagNick * 2500L) + 15000L;
Umschlag180Roll = ((long) EE_Parameter.WinkelUmschlagRoll * 2500L) + 15000L;
ExternHoehenValue = 0;
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
GierGyroFehler = 0;
SendVersionToNavi = 1;
else
{
NeutralAccX = (int16_t)GetParamWord(PID_ACC_PITCH);
NeutralAccY = (int16_t)GetParamWord(PID_ACC_ROLL);
NeutralAccZ = (int16_t)GetParamWord(PID_ACC_Z);
}
Reading_IntegralGyroPitch = 0;
Reading_IntegralGyroPitch2 = 0;
Reading_IntegralGyroRoll = 0;
Reading_IntegralGyroRoll2 = 0;
Reading_IntegralGyroYaw = 0;
Reading_GyroPitch = 0;
Reading_GyroRoll = 0;
Reading_GyroYaw = 0;
StartAirPressure = AirPressure;
HeightD = 0;
Reading_Integral_Top = 0;
CompassCourse = CompassHeading;
BeepTime = 50;
TurnOver180Pitch = ((int32_t) ParamSet.AngleTurnOverPitch * 2500L) +15000L;
TurnOver180Roll = ((int32_t) ParamSet.AngleTurnOverRoll * 2500L) +15000L;
ExternHeightValue = 0;
GPS_Pitch = 0;
GPS_Roll = 0;
YawGyroHeading = CompassHeading * YAW_GYRO_DEG_FACTOR;
YawGyroDrift = 0;
}
 
//############################################################################
// Bearbeitet die Messwerte
void Mittelwert(void)
//############################################################################
{
static signed long tmpl,tmpl2;
MesswertGier = (signed int) AdNeutralGier - AdWertGier;
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll;
MesswertNick = (signed int) AdWertNick - AdNeutralNick;
/************************************************************************/
/* Averaging Measurement Readings */
/************************************************************************/
void Mean(void)
{
static int32_t tmpl,tmpl2;
 
//DebugOut.Analog[26] = MesswertNick;
DebugOut.Analog[28] = MesswertRoll;
// Get offset corrected gyro readings (~ to angular velocity)
Reading_GyroYaw = AdNeutralYaw - AdValueGyrYaw;
Reading_GyroRoll = AdValueGyrRoll - AdNeutralRoll;
Reading_GyroPitch = AdValueGyrPitch - AdNeutralPitch;
 
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L;
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L;
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L;
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
NaviAccNick += AdWertAccNick;
NaviAccRoll += AdWertAccRoll;
// Acceleration Sensor
// sliding average sensor readings
Mean_AccPitch = ((int32_t)Mean_AccPitch * 1 + ((ACC_AMPLIFY * (int32_t)AdValueAccPitch))) / 2L;
Mean_AccRoll = ((int32_t)Mean_AccRoll * 1 + ((ACC_AMPLIFY * (int32_t)AdValueAccRoll))) / 2L;
Mean_AccTop = ((int32_t)Mean_AccTop * 1 + ((int32_t)AdValueAccTop)) / 2L;
 
// sum sensor readings for later averaging
IntegralAccPitch += ACC_AMPLIFY * AdValueAccPitch;
IntegralAccRoll += ACC_AMPLIFY * AdValueAccRoll;
 
NaviAccPitch += AdValueAccPitch;
NaviAccRoll += AdValueAccRoll;
NaviCntAcc++;
IntegralAccZ += Aktuell_az - NeutralAccZ;
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++
ErsatzKompass += MesswertGier;
Mess_Integral_Gier += MesswertGier;
Mess_Integral_Gier2 += MesswertGier;
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
{
tmpl = (MesswertGier * Mess_IntegralNick) / 2048L;
tmpl *= Parameter_AchsKopplung1; //125
tmpl /= 4096L;
tmpl2 = (MesswertGier * Mess_IntegralRoll) / 2048L;
tmpl2 *= Parameter_AchsKopplung1;
tmpl2 /= 4096L;
if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
}
else tmpl = tmpl2 = 0;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
MesswertRoll += tmpl;
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109
Mess_IntegralRoll2 += MesswertRoll;
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll;
if(Mess_IntegralRoll > Umschlag180Roll)
{
Mess_IntegralRoll = -(Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
if(Mess_IntegralRoll <-Umschlag180Roll)
{
Mess_IntegralRoll = (Umschlag180Roll - 25000L);
Mess_IntegralRoll2 = Mess_IntegralRoll;
}
if(AdWertRoll < 15) MesswertRoll = -1000;
if(AdWertRoll < 7) MesswertRoll = -2000;
if(PlatinenVersion == 10)
{
if(AdWertRoll > 1010) MesswertRoll = +1000;
if(AdWertRoll > 1017) MesswertRoll = +2000;
}
else
{
if(AdWertRoll > 2020) MesswertRoll = +1000;
if(AdWertRoll > 2034) MesswertRoll = +2000;
}
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
MesswertNick -= tmpl2;
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L;
Mess_IntegralNick2 += MesswertNick;
Mess_IntegralNick += MesswertNick - LageKorrekturNick;
 
if(Mess_IntegralNick > Umschlag180Nick)
{
Mess_IntegralNick = -(Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
if(Mess_IntegralNick <-Umschlag180Nick)
{
Mess_IntegralNick = (Umschlag180Nick - 25000L);
Mess_IntegralNick2 = Mess_IntegralNick;
}
if(AdWertNick < 15) MesswertNick = -1000;
if(AdWertNick < 7) MesswertNick = -2000;
if(PlatinenVersion == 10)
{
if(AdWertNick > 1010) MesswertNick = +1000;
if(AdWertNick > 1017) MesswertNick = +2000;
}
else
{
if(AdWertNick > 2020) MesswertNick = +1000;
if(AdWertNick > 2034) MesswertNick = +2000;
}
//++++++++++++++++++++++++++++++++++++++++++++++++
// ADC einschalten
ANALOG_ON;
//++++++++++++++++++++++++++++++++++++++++++++++++
// Yaw
// calculate yaw gyro integral (~ to rotation angle)
Reading_IntegralGyroYaw += Reading_GyroYaw;
YawGyroHeading += Reading_GyroYaw;
if(YawGyroHeading >= (360L * YAW_GYRO_DEG_FACTOR)) YawGyroHeading -= 360L * YAW_GYRO_DEG_FACTOR; // 360° Wrap
if(YawGyroHeading < 0) YawGyroHeading += 360L * YAW_GYRO_DEG_FACTOR;
 
Integral_Gier = Mess_Integral_Gier;
IntegralNick = Mess_IntegralNick;
IntegralRoll = Mess_IntegralRoll;
IntegralNick2 = Mess_IntegralNick2;
IntegralRoll2 = Mess_IntegralRoll2;
 
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll)
{
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200);
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200);
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
}
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
// Coupling fraction
if(!Looping_Pitch && !Looping_Roll && (ParamSet.GlobalConfig & CFG_AXIS_COUPLING_ACTIVE))
{
tmpl = (Reading_GyroYaw * Reading_IntegralGyroPitch) / 2048L;
tmpl *= FCParam.Yaw_PosFeedback;
tmpl /= 4096L;
tmpl2 = ( Reading_GyroYaw * Reading_IntegralGyroRoll) / 2048L;
tmpl2 *= FCParam.Yaw_PosFeedback;
tmpl2 /= 4096L;
if(labs(tmpl) > 128 || labs(tmpl2) > 128) FunnelCourse = 1;
}
else tmpl = tmpl2 = 0;
 
// Roll
Reading_GyroRoll += tmpl;
Reading_GyroRoll += (tmpl2 * FCParam.Yaw_NegFeedback) / 512L;
Reading_IntegralGyroRoll2 += Reading_GyroRoll;
Reading_IntegralGyroRoll += Reading_GyroRoll - AttitudeCorrectionRoll;
if(Reading_IntegralGyroRoll > TurnOver180Roll)
{
Reading_IntegralGyroRoll = -(TurnOver180Roll - 10000L);
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
}
if(Reading_IntegralGyroRoll < -TurnOver180Roll)
{
Reading_IntegralGyroRoll = (TurnOver180Roll - 10000L);
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
}
if(AdValueGyrRoll < 15) Reading_GyroRoll = -1000;
if(AdValueGyrRoll < 7) Reading_GyroRoll = -2000;
if(BoardRelease == 10)
{
if(AdValueGyrRoll > 1010) Reading_GyroRoll = +1000;
if(AdValueGyrRoll > 1017) Reading_GyroRoll = +2000;
}
else
{
if(AdValueGyrRoll > 2020) Reading_GyroRoll = +1000;
if(AdValueGyrRoll > 2034) Reading_GyroRoll = +2000;
}
// Pitch
Reading_GyroPitch -= tmpl2;
Reading_GyroPitch -= (tmpl*FCParam.Yaw_NegFeedback) / 512L;
Reading_IntegralGyroPitch2 += Reading_GyroPitch;
Reading_IntegralGyroPitch += Reading_GyroPitch - AttitudeCorrectionPitch;
if(Reading_IntegralGyroPitch > TurnOver180Pitch)
{
Reading_IntegralGyroPitch = -(TurnOver180Pitch - 25000L);
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
}
if(Reading_IntegralGyroPitch < -TurnOver180Pitch)
{
Reading_IntegralGyroPitch = (TurnOver180Pitch - 25000L);
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
}
if(AdValueGyrPitch < 15) Reading_GyroPitch = -1000;
if(AdValueGyrPitch < 7) Reading_GyroPitch = -2000;
if(BoardRelease == 10)
{
if(AdValueGyrPitch > 1010) Reading_GyroPitch = +1000;
if(AdValueGyrPitch > 1017) Reading_GyroPitch = +2000;
}
else
{
if(AdValueGyrPitch > 2020) Reading_GyroPitch = +1000;
if(AdValueGyrPitch > 2034) Reading_GyroPitch = +2000;
}
 
// start ADC again to capture measurement values for the next loop
ADC_Enable();
 
IntegralYaw = Reading_IntegralGyroYaw;
IntegralPitch = Reading_IntegralGyroPitch;
IntegralRoll = Reading_IntegralGyroRoll;
IntegralPitch2 = Reading_IntegralGyroPitch2;
IntegralRoll2 = Reading_IntegralGyroRoll2;
 
if((ParamSet.GlobalConfig & CFG_ROTARY_RATE_LIMITER) && !Looping_Pitch && !Looping_Roll)
{
if(Reading_GyroPitch > 200) Reading_GyroPitch += 4 * (Reading_GyroPitch - 200);
else if(Reading_GyroPitch < -200) Reading_GyroPitch += 4 * (Reading_GyroPitch + 200);
if(Reading_GyroRoll > 200) Reading_GyroRoll += 4 * (Reading_GyroRoll - 200);
else if(Reading_GyroRoll < -200) Reading_GyroRoll += 4 * (Reading_GyroRoll + 200);
}
}
 
//############################################################################
// Messwerte beim Ermitteln der Nullage
void CalibrierMittelwert(void)
//############################################################################
{
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern
ANALOG_OFF;
MesswertNick = AdWertNick;
MesswertRoll = AdWertRoll;
MesswertGier = AdWertGier;
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick;
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll;
Mittelwert_AccHoch = (long)AdWertAccHoch;
// ADC einschalten
ANALOG_ON;
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
/************************************************************************/
/* Averaging Measurement Readings for Calibration */
/************************************************************************/
void CalibMean(void)
{
// stop ADC to avoid changing values during calculation
ADC_Disable();
 
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
Reading_GyroPitch = AdValueGyrPitch;
Reading_GyroRoll = AdValueGyrRoll;
Reading_GyroYaw = AdValueGyrYaw;
 
Mean_AccPitch = ACC_AMPLIFY * (int32_t)AdValueAccPitch;
Mean_AccRoll = ACC_AMPLIFY * (int32_t)AdValueAccRoll;
Mean_AccTop = (int32_t)AdValueAccTop;
// start ADC (enables internal trigger so that the ISR in analog.c
// updates the readings once)
ADC_Enable();
 
TurnOver180Pitch = (int32_t) ParamSet.AngleTurnOverPitch * 2500L;
TurnOver180Roll = (int32_t) ParamSet.AngleTurnOverRoll * 2500L;
}
 
//############################################################################
// Senden der Motorwerte per I2C-Bus
/************************************************************************/
/* Transmit Motor Data via I2C */
/************************************************************************/
void SendMotorData(void)
//############################################################################
{
if(MOTOR_OFF || !MotorenEin)
{
Motor_Hinten = 0;
Motor_Vorne = 0;
Motor_Rechts = 0;
Motor_Links = 0;
if(MotorTest[0]) Motor_Vorne = MotorTest[0];
if(MotorTest[1]) Motor_Hinten = MotorTest[1];
if(MotorTest[2]) Motor_Links = MotorTest[2];
if(MotorTest[3]) Motor_Rechts = MotorTest[3];
}
{
if(MOTOR_OFF || !MotorsOn)
{
Motor_Rear = 0;
Motor_Front = 0;
Motor_Right = 0;
Motor_Left = 0;
if(MotorTest[0]) Motor_Front = MotorTest[0];
if(MotorTest[1]) Motor_Rear = MotorTest[1];
if(MotorTest[2]) Motor_Left = MotorTest[2];
if(MotorTest[3]) Motor_Right = MotorTest[3];
}
 
DebugOut.Analog[12] = Motor_Vorne;
DebugOut.Analog[13] = Motor_Hinten;
DebugOut.Analog[14] = Motor_Links;
DebugOut.Analog[15] = Motor_Rechts;
DebugOut.Analog[12] = Motor_Front;
DebugOut.Analog[13] = Motor_Rear;
DebugOut.Analog[14] = Motor_Left;
DebugOut.Analog[15] = Motor_Right;
 
//Start I2C Interrupt Mode
twi_state = 0;
motor = 0;
i2c_start();
I2C_Start();
}
 
 
 
//############################################################################
// Trägt ggf. das Poti als Parameter ein
void ParameterZuordnung(void)
//############################################################################
/************************************************************************/
/* Maps the parameter to poti values */
/************************************************************************/
void ParameterMapping(void)
{
if(RC_Quality > 160) // do the mapping of RC-Potis only if the rc-signal is ok
// else the last updated values are used
{
//update poti values by rc-signals
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
CHK_POTI(FCParam.MaxHeight,ParamSet.MaxHeight,0,255);
CHK_POTI(FCParam.Height_D,ParamSet.Height_D,0,100);
CHK_POTI(FCParam.Height_P,ParamSet.Height_P,0,100);
CHK_POTI(FCParam.Height_ACC_Effect,ParamSet.Height_ACC_Effect,0,255);
CHK_POTI(FCParam.CompassYawEffect,ParamSet.CompassYawEffect,0,255);
CHK_POTI(FCParam.Gyro_P,ParamSet.Gyro_P,10,255);
CHK_POTI(FCParam.Gyro_I,ParamSet.Gyro_I,0,255);
CHK_POTI(FCParam.I_Factor,ParamSet.I_Factor,0,255);
CHK_POTI(FCParam.UserParam1,ParamSet.UserParam1,0,255);
CHK_POTI(FCParam.UserParam2,ParamSet.UserParam2,0,255);
CHK_POTI(FCParam.UserParam3,ParamSet.UserParam3,0,255);
CHK_POTI(FCParam.UserParam4,ParamSet.UserParam4,0,255);
CHK_POTI(FCParam.UserParam5,ParamSet.UserParam5,0,255);
CHK_POTI(FCParam.UserParam6,ParamSet.UserParam6,0,255);
CHK_POTI(FCParam.UserParam7,ParamSet.UserParam7,0,255);
CHK_POTI(FCParam.UserParam8,ParamSet.UserParam8,0,255);
CHK_POTI(FCParam.ServoPitchControl,ParamSet.ServoPitchControl,0,255);
CHK_POTI(FCParam.LoopThrustLimit,ParamSet.LoopThrustLimit,0,255);
CHK_POTI(FCParam.Yaw_PosFeedback,ParamSet.Yaw_PosFeedback,0,255);
CHK_POTI(FCParam.Yaw_NegFeedback,ParamSet.Yaw_NegFeedback,0,255);
CHK_POTI(FCParam.DynamicStability,ParamSet.DynamicStability,0,255);
Ki = (float) FCParam.I_Factor * FACTOR_I;
}
}
 
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255);
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100);
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100);
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255);
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255);
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255);
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255);
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255);
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255);
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255);
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255);
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255);
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255);
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255);
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255);
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255);
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255);
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255);
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
 
Ki = (float) Parameter_I_Faktor * 0.0001;
MAX_GAS = EE_Parameter.Gas_Max;
MIN_GAS = EE_Parameter.Gas_Min;
void SetCompassCalState(void)
{
static uint8_t stick = 1;
 
// if pitch is centered or top set stick to zero
if(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > -20) stick = 0;
// if pitch is down trigger to next cal state
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < -70) && !stick)
{
stick = 1;
CompassCalState++;
if(CompassCalState < 5) Beep(CompassCalState);
else BeepTime = 1000;
}
}
 
 
 
 
//############################################################################
//
void MotorRegler(void)
//############################################################################
/************************************************************************/
/* MotorControl */
/************************************************************************/
void MotorControl(void)
{
int motorwert,pd_ergebnis,h,tmp_int;
int GierMischanteil,GasMischanteil;
static long SummeNick=0,SummeRoll=0;
static long sollGier = 0,tmp_long,tmp_long2;
static long IntegralFehlerNick = 0;
static long IntegralFehlerRoll = 0;
static unsigned int RcLostTimer;
static unsigned char delay_neutral = 0;
static unsigned char delay_einschalten = 0,delay_ausschalten = 0;
static int hoehenregler = 0;
static char TimerWerteausgabe = 0;
static char NeueKompassRichtungMerken = 0;
static long ausgleichNick, ausgleichRoll;
Mittelwert();
int16_t MotorValue, pd_result, h, tmp_int;
int16_t YawMixFraction, ThrustMixFraction;
static int32_t SumPitch = 0, SumRoll = 0;
static int32_t SetPointYaw = 0;
static int32_t IntegralErrorPitch = 0;
static int32_t IntegralErrorRoll = 0;
static uint16_t RcLostTimer;
static uint8_t delay_neutral = 0, delay_startmotors = 0, delay_stopmotors = 0;
static uint8_t HeightControlActive = 0;
static int16_t HeightControlThrust = 0;
static int8_t TimerDebugOut = 0;
static uint16_t UpdateCompassCourse = 0;
static int32_t CorrectionPitch, CorrectionRoll;
 
GRN_ON;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gaswert ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = StickGas;
if(GasMischanteil < MIN_GAS + 10) GasMischanteil = MIN_GAS + 10;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Empfang schlecht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay < 100)
{
if(!PcZugriff)
{
if(BeepMuster == 0xffff)
{
beeptime = 15000;
BeepMuster = 0x0c00;
}
}
if(RcLostTimer) RcLostTimer--;
else
{
MotorenEin = 0;
Notlandung = 0;
}
ROT_ON;
if(modell_fliegt > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
GasMischanteil = EE_Parameter.NotGas;
Notlandung = 1;
PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0;
}
else MotorenEin = 0;
}
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang gut
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay > 140)
{
Notlandung = 0;
RcLostTimer = EE_Parameter.NotGasZeit * 50;
if(GasMischanteil > 40)
{
if(modell_fliegt < 0xffff) modell_fliegt++;
}
if((modell_fliegt < 256))
{
SummeNick = 0;
SummeRoll = 0;
if(modell_fliegt == 250) NeueKompassRichtungMerken = 1;
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// auf Nullwerte kalibrieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70)
{
unsigned char setting=1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken
}
// else
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 20 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
{
WinkelOut.CalcState = 1;
beeptime = 1000;
}
else
{
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert?
{
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
}
SetNeutral();
Piep(GetActiveParamSetNumber());
}
}
}
else
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75) // ACC Neutralwerte speichern
{
if(++delay_neutral > 200) // nicht sofort
{
GRN_OFF;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],0xff); // Werte löschen
MotorenEin = 0;
delay_neutral = 0;
modell_fliegt = 0;
SetNeutral();
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK],NeutralAccX / 256); // ACC-NeutralWerte speichern
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_NICK+1],NeutralAccX % 256); // ACC-NeutralWerte speichern
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL],NeutralAccY / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_ROLL+1],NeutralAccY % 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z],(int)NeutralAccZ / 256);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACC_Z+1],(int)NeutralAccZ % 256);
Piep(GetActiveParamSetNumber());
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gas ist unten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] < 35-120)
{
// Starten
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] < -75)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Einschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(++delay_einschalten > 200)
{
delay_einschalten = 200;
modell_fliegt = 1;
MotorenEin = 1;
sollGier = 0;
Mess_Integral_Gier = 0;
Mess_Integral_Gier2 = 0;
Mess_IntegralNick = 0;
Mess_IntegralRoll = 0;
Mess_IntegralNick2 = IntegralNick;
Mess_IntegralRoll2 = IntegralRoll;
SummeNick = 0;
SummeRoll = 0;
}
}
else delay_einschalten = 0;
//Auf Neutralwerte setzen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Auschalten
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75)
{
if(++delay_ausschalten > 200) // nicht sofort
{
MotorenEin = 0;
delay_ausschalten = 200;
modell_fliegt = 0;
}
}
else delay_ausschalten = 0;
}
}
Mean();
GRN_ON;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// neue Werte von der Funke
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!NewPpmData-- || Notlandung)
{
int tmp_int;
static int stick_nick,stick_roll;
ParameterZuordnung();
stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
StickNick = stick_nick - (GPS_Nick + GPS_Nick2);
// StickNick = (StickNick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// determine thrust value
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ThrustMixFraction = StickThrust;
if(ThrustMixFraction < ParamSet.Trust_Min + 10) ThrustMixFraction = ParamSet.Trust_Min + 10;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// RC-signal is bad
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(RC_Quality < 120) // the rc-frame signal is not reveived or noisy
{
if(!PcAccess) // if also no PC-Access via UART
{
if(BeepModulation == 0xFFFF)
{
BeepTime = 15000; // 1.5 seconds
BeepModulation = 0x0C00;
}
}
if(RcLostTimer) RcLostTimer--; // decremtent timer after rc sigal lost
else // rc lost countdown finished
{
MotorsOn = 0; // stop all motors
EmergencyLanding = 0; // emergency landing is over
}
ROT_ON; // set red led
if(Model_Is_Flying > 1000) // wahrscheinlich in der Luft --> langsam absenken
{
ThrustMixFraction = ParamSet.EmergencyThrust; // set emergency thrust
EmergencyLanding = 1; // enable emergency landing
// set neutral rc inputs
PPM_diff[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
PPM_diff[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
PPM_diff[ParamSet.ChannelAssignment[CH_YAW]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_YAW]] = 0;
}
else MotorsOn = 0; // switch of all motors
} // eof RC_Quality < 120
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// RC-signal is good
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(RC_Quality > 140)
{
EmergencyLanding = 0; // switch off emergency landing if RC-signal is okay
// reset emergency timer
RcLostTimer = ParamSet.EmergencyThrustDuration * 50;
if(ThrustMixFraction > 40)
{
if(Model_Is_Flying < 0xFFFF) Model_Is_Flying++;
}
if(Model_Is_Flying < 256)
{
SumPitch = 0;
SumRoll = 0;
StickYaw = 0;
if(Model_Is_Flying == 250) UpdateCompassCourse = 1;
}
 
stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
StickRoll = stick_roll - (GPS_Roll + GPS_Roll2);
if(Poti1 < PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110 && Poti4) Poti4--;
//PPM24-Extension
if(Poti5 < PPM_in[9] + 110) Poti5++; else if(Poti5 > PPM_in[9] + 110 && Poti5) Poti5--;
if(Poti6 < PPM_in[10] + 110) Poti6++; else if(Poti6 > PPM_in[10] + 110 && Poti6) Poti6--;
if(Poti7 < PPM_in[11] + 110) Poti7++; else if(Poti7 > PPM_in[11] + 110 && Poti7) Poti7--;
if(Poti8 < PPM_in[12] + 110) Poti8++; else if(Poti8 > PPM_in[12] + 110 && Poti8) Poti8--;
//limit poti values
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
//PPM24-Extension
if(Poti5 < 0) Poti5 = 0; else if(Poti5 > 255) Poti5 = 255;
if(Poti6 < 0) Poti6 = 0; else if(Poti6 > 255) Poti6 = 255;
if(Poti7 < 0) Poti7 = 0; else if(Poti7 > 255) Poti7 = 255;
if(Poti8 < 0) Poti8 = 0; else if(Poti8 > 255) Poti8 = 255;
 
// StickRoll = (StickRoll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
// if motors are off and the thrust stick is in the upper position
if((PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] > 80) && MotorsOn == 0)
{
// and if the yaw stick is in the leftmost position
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 75)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// calibrate the neutral readings of all attitude sensors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
{
// thrust/yaw joystick is top left
// _________
// |x |
// | |
// | |
// | |
// | |
// ¯¯¯¯¯¯¯¯¯
if(++delay_neutral > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_neutral = 0;
GRN_OFF;
Model_Is_Flying = 0;
// check roll/pitch stick position
// if pitch stick is top or roll stick is left or right --> change parameter setting
// according to roll/pitch stick position
if(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70 || abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) > 70)
{
uint8_t setting = 1; // default
// pitch/roll joystick
// _________
// |2 3 4|
// | |
// |1 5|
// | |
// | |
// ¯¯¯¯¯¯¯¯¯
// roll stick leftmost and pitch stick centered --> setting 1
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < 70) setting = 1;
// roll stick leftmost and pitch stick topmost --> setting 2
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 2;
// roll stick centered an pitch stick topmost --> setting 3
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 3;
// roll stick rightmost and pitch stick topmost --> setting 4
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 4;
// roll stick rightmost and pitch stick centered --> setting 5
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < 70) setting = 5;
// update active parameter set in eeprom
SetActiveParamSet(setting);
ParamSet_ReadFromEEProm(GetActiveParamSet());
SetNeutral();
Beep(GetActiveParamSet());
}
else
{
if((ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE))
{
// if roll stick is centered and pitch stick is down
if (abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) < 20 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < -70)
{
// pitch/roll joystick
// _________
// | |
// | |
// | |
// | |
// | x |
// ¯¯¯¯¯¯¯¯¯
// enable calibration state of compass
CompassCalState = 1;
BeepTime = 1000;
}
else // pitch and roll are centered
{
ParamSet_ReadFromEEProm(GetActiveParamSet());
SetNeutral();
Beep(GetActiveParamSet());
}
}
else // pitch and roll are centered
{
ParamSet_ReadFromEEProm(GetActiveParamSet());
SetNeutral();
Beep(GetActiveParamSet());
}
}
}
}
// and if the yaw stick is in the rightmost position
// save the ACC neutral setting to eeprom
else if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] < -75)
{
if(++delay_neutral > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_neutral = 0;
GRN_OFF;
SetParamWord(PID_ACC_PITCH, 0xFFFF); // make value invalid
Model_Is_Flying = 0;
SetNeutral();
// Save ACC neutral settings to eeprom
SetParamWord(PID_ACC_PITCH, (uint16_t)NeutralAccX);
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY);
SetParamWord(PID_ACC_Z, (uint16_t)NeutralAccZ);
Beep(GetActiveParamSet());
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// thrust stick is down
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] < -85)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// and yaw stick is rightmost --> start motors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] < -75)
{
if(++delay_startmotors > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_startmotors = 200; // do not repeat if once executed
Model_Is_Flying = 1;
MotorsOn = 1;
SetPointYaw = 0;
Reading_IntegralGyroYaw = 0;
Reading_IntegralGyroPitch = 0;
Reading_IntegralGyroRoll = 0;
Reading_IntegralGyroPitch2 = IntegralPitch;
Reading_IntegralGyroRoll2 = IntegralRoll;
SumPitch = 0;
SumRoll = 0;
#ifdef USE_KILLAGREG
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_SetHomePosition();
}
#endif
}
}
else delay_startmotors = 0; // reset delay timer if sticks are not in this position
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// and yaw stick is leftmost --> stop motors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 75)
{
if(++delay_stopmotors > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_stopmotors = 200; // do not repeat if once executed
Model_Is_Flying = 0;
MotorsOn = 0;
#ifdef USE_KILLAGREG
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_ClearHomePosition();
}
#endif
}
}
else delay_stopmotors = 0; // reset delay timer if sticks are not in this position
}
// remapping of paameters only if the signal rc-sigbnal conditions are good
} // eof RC_Quality > 150
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// new values from RC
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!NewPpmData-- || EmergencyLanding) // NewData = 0 means new data from RC
{
int tmp_int;
ParameterMapping(); // remapping params (online poti replacement)
// calculate Stick inputs by rc channels (P) and changing of rc channels (D)
StickPitch = (StickPitch * 3 + PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] * ParamSet.Stick_P) / 4;
StickPitch += PPM_diff[ParamSet.ChannelAssignment[CH_PITCH]] * ParamSet.Stick_D;
StickPitch -= (GPS_Pitch);
 
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]];
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
StickRoll = (StickRoll * 3 + PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_P) / 4;
StickRoll += PPM_diff[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_D;
StickRoll -= (GPS_Roll);
 
/* if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) > MaxStickNick)
MaxStickNick = abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]); else MaxStickNick--;
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > MaxStickRoll)
MaxStickRoll = abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]); else MaxStickRoll--;
*/
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / (256.0/STICK_GAIN);
IntegralFaktor = ((float) Parameter_Gyro_I) / (44000 / STICK_GAIN);
// direct mapping of yaw and thrust
StickYaw = -PPM_in[ParamSet.ChannelAssignment[CH_YAW]];
StickThrust = PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] + 120;// shift to positive numbers
 
// update gyro control loop factors
Gyro_P_Factor = ((float) FCParam.Gyro_P + 10.0) / (256.0 / STICK_GAIN);
Gyro_I_Factor = ((float) FCParam.Gyro_I) / (44000 / STICK_GAIN);
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Digitale Steuerung per DubWise
// Digital Control via DubWise
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define KEY_VALUE (Parameter_UserParam8 * 4) //(Poti3 * 8)
if(DubWiseKeys[1]) beeptime = 10;
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0;
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8;
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0;
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8;
 
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0;
if(DubWiseKeys[0] & 2) ExternHoehenValue++;
if(DubWiseKeys[0] & 16) ExternHoehenValue--;
#define KEY_VALUE (FCParam.UserParam8 * 4) // step width
if(DubWiseKeys[1]) BeepTime = 10;
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE;
else if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE;
else tmp_int = 0;
ExternStickPitch = (ExternStickPitch * 7 + tmp_int) / 8;
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE;
else if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE;
else tmp_int = 0;
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8;
 
StickNick += (STICK_GAIN * ExternStickNick) / 8;
StickRoll += (STICK_GAIN * ExternStickRoll) / 8;
StickGier += STICK_GAIN * ExternStickGier;
if(DubWiseKeys[0] & 8) ExternStickYaw = 50;else
if(DubWiseKeys[0] & 4) ExternStickYaw =-50;else ExternStickYaw = 0;
if(DubWiseKeys[0] & 2) ExternHeightValue++;
if(DubWiseKeys[0] & 16) ExternHeightValue--;
 
StickPitch += (STICK_GAIN * ExternStickPitch) / 8;
StickRoll += (STICK_GAIN * ExternStickRoll) / 8;
StickYaw += (STICK_GAIN * ExternStickYaw);
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Analoge Steuerung per Seriell
//+ Analog control via serial communication
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ExternControl.Config & 0x01 && Parameter_UserParam8 > 128)
{
StickNick += (int) ExternControl.Nick * (int) EE_Parameter.Stick_P;
StickRoll += (int) ExternControl.Roll * (int) EE_Parameter.Stick_P;
StickGier += ExternControl.Gier;
ExternHoehenValue = (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
}
if(StickGas < 0) StickGas = 0;
 
if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0;
if(GyroFaktor < 0) GyroFaktor = 0;
if(IntegralFaktor < 0) IntegralFaktor = 0;
if(ExternControl.Config & 0x01 && FCParam.UserParam8 > 128)
{
StickPitch += (int16_t) ExternControl.Pitch * (int16_t) ParamSet.Stick_P;
StickRoll += (int16_t) ExternControl.Roll * (int16_t) ParamSet.Stick_P;
StickYaw += ExternControl.Yaw;
ExternHeightValue = (int16_t) ExternControl.Height * (int16_t)ParamSet.Height_Gain;
if(ExternControl.Thrust < StickThrust) StickThrust = ExternControl.Thrust;
}
if(StickThrust < 0) StickThrust = 0;
 
if(abs(StickNick/STICK_GAIN) > MaxStickNick) MaxStickNick = abs(StickNick)/STICK_GAIN; else MaxStickNick--;
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) MaxStickRoll = abs(StickRoll)/STICK_GAIN; else MaxStickRoll--;
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;}
// disable I part of gyro control feedback
if(ParamSet.GlobalConfig & CFG_HEADING_HOLD) Gyro_I_Factor = 0;
// avoid negative scaling factors
if(Gyro_P_Factor < 0) Gyro_P_Factor = 0;
if(Gyro_I_Factor < 0) Gyro_I_Factor = 0;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
// update max stick positions for pitch and roll
 
if(abs(StickPitch / STICK_GAIN) > MaxStickPitch) MaxStickPitch = abs(StickPitch)/STICK_GAIN;
else MaxStickPitch--;
if(abs(StickRoll / STICK_GAIN) > MaxStickRoll) MaxStickRoll = abs(StickRoll)/STICK_GAIN;
else MaxStickRoll--;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Looping?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1;
else
{
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1;
else
{
if(Looping_Rechts) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0;
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1;
else
{
if(Looping_Oben) // Hysterese
{
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0;
}
}
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1;
else
{
if(Looping_Unten) // Hysterese
{
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0;
}
}
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_LEFT) Looping_Left = 1;
else
{
if(Looping_Left) // Hysteresis
{
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Left = 0;
}
}
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_RIGHT) Looping_Right = 1;
else
{
if(Looping_Right) // Hysteresis
{
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Right = 0;
}
}
 
if(Looping_Links || Looping_Rechts) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Oben || Looping_Unten) {Looping_Nick = 1; Looping_Roll = 0; Looping_Links = 0; Looping_Rechts = 0;} else Looping_Nick = 0;
} // Ende neue Funken-Werte
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_UP) Looping_Top = 1;
else
{
if(Looping_Top) // Hysteresis
{
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Top = 0;
}
}
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_DOWN) Looping_Down = 1;
else
{
if(Looping_Down) // Hysteresis
{
if(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Down = 0;
}
}
 
if(Looping_Roll) beeptime = 100;
if(Looping_Roll || Looping_Nick)
{
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit;
}
if(Looping_Left || Looping_Right) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Top || Looping_Down) {Looping_Pitch = 1; Looping_Roll = 0; Looping_Left = 0; Looping_Right = 0;} else Looping_Pitch = 0;
} // End of new RC-Values or Emergency Landing
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Bei Empfangsausfall im Flug
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Notlandung)
{
StickGier = 0;
StickNick = 0;
StickRoll = 0;
GyroFaktor = (float) 100 / (256.0 / STICK_GAIN);
IntegralFaktor = (float) 120 / (44000 / STICK_GAIN);
Looping_Roll = 0;
Looping_Nick = 0;
}
 
if(Looping_Roll) BeepTime = 100;
if(Looping_Roll || Looping_Pitch)
{
if(ThrustMixFraction > ParamSet.LoopThrustLimit) ThrustMixFraction = ParamSet.LoopThrustLimit;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Integrale auf ACC-Signal abgleichen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define ABGLEICH_ANZAHL 256L
 
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren
MittelIntegralRoll += IntegralRoll;
MittelIntegralNick2 += IntegralNick2;
MittelIntegralRoll2 += IntegralRoll2;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LED Control on J16/J17
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LED1_Time = FCParam.UserParam7;
LED2_Time = FCParam.UserParam8;
LED_Update();
 
if(Looping_Nick || Looping_Roll)
{
IntegralAccNick = 0;
IntegralAccRoll = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
Mess_IntegralNick2 = Mess_IntegralNick;
Mess_IntegralRoll2 = Mess_IntegralRoll;
ZaehlMessungen = 0;
LageKorrekturNick = 0;
LageKorrekturRoll = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// in case of emergency landing
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// set all inputs to save values
if(EmergencyLanding)
{
StickYaw = 0;
StickPitch = 0;
StickRoll = 0;
Gyro_P_Factor = (float) 100 / (256.0 / STICK_GAIN);
Gyro_I_Factor = (float) 120 / (44000 / STICK_GAIN);
Looping_Roll = 0;
Looping_Pitch = 0;
MaxStickPitch = 0;
MaxStickRoll = 0;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Nick && !Looping_Roll)
{
long tmp_long, tmp_long2;
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
tmp_long /= 16;
tmp_long2 /= 16;
if((MaxStickNick > 32) || (MaxStickRoll > 32))
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)
{
tmp_long /= 3;
tmp_long2 /= 3;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Trim Gyro-Integrals to ACC-Signals
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#define AUSGLEICH 32
if(tmp_long > AUSGLEICH) tmp_long = AUSGLEICH;
if(tmp_long < -AUSGLEICH) tmp_long =-AUSGLEICH;
if(tmp_long2 > AUSGLEICH) tmp_long2 = AUSGLEICH;
if(tmp_long2 <-AUSGLEICH) tmp_long2 =-AUSGLEICH;
#define BALANCE_NUMBER 256L
// sum for averaging
MeanIntegralPitch += IntegralPitch;
MeanIntegralRoll += IntegralRoll;
 
Mess_IntegralNick -= tmp_long;
Mess_IntegralRoll -= tmp_long2;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(Looping_Pitch || Looping_Roll) // if looping in any direction
{
// reset averaging for acc and gyro integral as well as gyro integral acc correction
MeasurementCounter = 0;
 
if(ZaehlMessungen >= ABGLEICH_ANZAHL)
{
static int cnt = 0;
static char last_n_p,last_n_n,last_r_p,last_r_n;
static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
if(!Looping_Nick && !Looping_Roll && !TrichterFlug)
{
MittelIntegralNick /= ABGLEICH_ANZAHL;
MittelIntegralRoll /= ABGLEICH_ANZAHL;
IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
IntegralAccZ = IntegralAccZ / ABGLEICH_ANZAHL;
#define MAX_I 0//(Poti2/10)
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
ausgleichRoll = IntegralFehlerRoll / EE_Parameter.GyroAccAbgleich;
IntegralAccPitch = 0;
IntegralAccRoll = 0;
 
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL;
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL;
MeanIntegralPitch = 0;
MeanIntegralRoll = 0;
 
if((MaxStickNick > 32) || (MaxStickRoll > 32) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25))
{
LageKorrekturNick /= 2;
LageKorrekturRoll /= 2;
}
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick2 /= ABGLEICH_ANZAHL;
MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
tmp_long = IntegralNick2 - IntegralNick;
tmp_long2 = IntegralRoll2 - IntegralRoll;
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26;
AttitudeCorrectionPitch = 0;
AttitudeCorrectionRoll = 0;
}
 
IntegralFehlerNick = tmp_long;
IntegralFehlerRoll = tmp_long2;
Mess_IntegralNick2 -= IntegralFehlerNick;
Mess_IntegralRoll2 -= IntegralFehlerRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Pitch && !Looping_Roll) // if not lopping in any direction
{
int32_t tmp_long, tmp_long2;
// determine the deviation of gyro integral from averaged acceleration sensor
tmp_long = (int32_t)(IntegralPitch / ParamSet.GyroAccFactor - (int32_t)Mean_AccPitch);
tmp_long /= 16;
tmp_long2 = (int32_t)(IntegralRoll / ParamSet.GyroAccFactor - (int32_t)Mean_AccRoll);
tmp_long2 /= 16;
 
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2;
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2;
if(GierGyroFehler > ABGLEICH_ANZAHL/2) AdNeutralGier++;
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) AdNeutralGier--;
if((MaxStickPitch > 32) || (MaxStickRoll > 32)) // reduce effect during stick commands
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_YAW]]) > 25) // reduce further if yaw stick is active
{
tmp_long /= 3;
tmp_long2 /= 3;
}
 
DebugOut.Analog[22] = MittelIntegralRoll / 26;
#define BALANCE 32
// limit correction effect
if(tmp_long > BALANCE) tmp_long = BALANCE;
if(tmp_long < -BALANCE) tmp_long =-BALANCE;
if(tmp_long2 > BALANCE) tmp_long2 = BALANCE;
if(tmp_long2 <-BALANCE) tmp_long2 =-BALANCE;
// correct current readings
Reading_IntegralGyroPitch -= tmp_long;
Reading_IntegralGyroRoll -= tmp_long2;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// MeasurementCounter is incremented in the isr of analog.c
if(MeasurementCounter >= BALANCE_NUMBER) // averaging number has reached
{
static int16_t cnt = 0;
static int8_t last_n_p, last_n_n, last_r_p, last_r_n;
static int32_t MeanIntegralPitch_old, MeanIntegralRoll_old;
 
GierGyroFehler = 0;
// if not lopping in any direction (this should be alwais the case,
// because the Measurement counter is reset to 0 if looping in any direction is active.)
if(!Looping_Pitch && !Looping_Roll && !FunnelCourse)
{
// Calculate mean value of the gyro integrals
MeanIntegralPitch /= BALANCE_NUMBER;
MeanIntegralRoll /= BALANCE_NUMBER;
 
// Calculate mean of the acceleration values
IntegralAccPitch = (ParamSet.GyroAccFactor * IntegralAccPitch) / BALANCE_NUMBER;
IntegralAccRoll = (ParamSet.GyroAccFactor * IntegralAccRoll ) / BALANCE_NUMBER;
 
/*DebugOut.Analog[17] = IntegralAccNick / 26;
DebugOut.Analog[18] = IntegralAccRoll / 26;
DebugOut.Analog[19] = IntegralFehlerNick;// / 26;
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26;
// Pitch ++++++++++++++++++++++++++++++++++++++++++++++++
// Calculate deviation of the averaged gyro integral and the averaged acceleration integral
IntegralErrorPitch = (int32_t)(MeanIntegralPitch - (int32_t)IntegralAccPitch);
CorrectionPitch = IntegralErrorPitch / ParamSet.GyroAccTrim;
AttitudeCorrectionPitch = CorrectionPitch / BALANCE_NUMBER;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
// Calculate deviation of the averaged gyro integral and the averaged acceleration integral
IntegralErrorRoll = (int32_t)(MeanIntegralRoll - (int32_t)IntegralAccRoll);
CorrectionRoll = IntegralErrorRoll / ParamSet.GyroAccTrim;
AttitudeCorrectionRoll = CorrectionRoll / BALANCE_NUMBER;
 
if((MaxStickPitch > 32) || (MaxStickRoll > 32) || (abs(PPM_in[ParamSet.ChannelAssignment[CH_YAW]]) > 25))
{
AttitudeCorrectionPitch /= 2;
AttitudeCorrectionRoll /= 2;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// deviation of gyro pitch integral (IntegralPitch is corrected by averaged acc sensor)
IntegralErrorPitch = IntegralPitch2 - IntegralPitch;
Reading_IntegralGyroPitch2 -= IntegralErrorPitch;
// deviation of gyro pitch integral (IntegralPitch is corrected by averaged acc sensor)
IntegralErrorRoll = IntegralRoll2 - IntegralRoll;
Reading_IntegralGyroRoll2 -= IntegralErrorRoll;
 
if(YawGyroDrift > BALANCE_NUMBER/2) AdNeutralYaw++;
if(YawGyroDrift < -BALANCE_NUMBER/2) AdNeutralYaw--;
YawGyroDrift = 0;
/*
DebugOut.Analog[17] = IntegralAccPitch / 26;
DebugOut.Analog[18] = IntegralAccRoll / 26;
DebugOut.Analog[19] = IntegralErrorPitch;// / 26;
DebugOut.Analog[20] = IntegralErrorRoll;// / 26;
DebugOut.Analog[21] = MeanIntegralPitch / 26;
DebugOut.Analog[22] = MeanIntegralRoll / 26;
//DebugOut.Analog[28] = CorrectionPitch;
DebugOut.Analog[29] = CorrectionRoll;
DebugOut.Analog[30] = AttitudeCorrectionRoll * 10;
*/
//DebugOut.Analog[21] = MittelIntegralNick / 26;
//MittelIntegralRoll = MittelIntegralRoll;
//DebugOut.Analog[28] = ausgleichNick;
 
#define ERROR_LIMIT (BALANCE_NUMBER * 4)
#define ERROR_LIMIT2 (BALANCE_NUMBER * 16)
#define MOVEMENT_LIMIT 20000
// Pitch +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralErrorPitch) / 4096;
CorrectionPitch = 0;
if(labs(MeanIntegralPitch_old - MeanIntegralPitch) < MOVEMENT_LIMIT)
{
if(IntegralErrorPitch > ERROR_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralErrorPitch) / ERROR_LIMIT2;
CorrectionPitch = IntegralErrorPitch / 8;
if(CorrectionPitch > 5000) CorrectionPitch = 5000;
AttitudeCorrectionPitch += CorrectionPitch / BALANCE_NUMBER;
}
else last_n_p = 1;
}
else last_n_p = 0;
if(IntegralErrorPitch < -ERROR_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralErrorPitch) / ERROR_LIMIT2;
CorrectionPitch = IntegralErrorPitch / 8;
if(CorrectionPitch < -5000) CorrectionPitch = -5000;
AttitudeCorrectionPitch += CorrectionPitch / BALANCE_NUMBER;
}
else last_n_n = 1;
}
else last_n_n = 0;
}
else
{
cnt = 0;
BadCompassHeading = 500;
}
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp;
// correct Gyro Offsets
if(IntegralErrorPitch > ERROR_LIMIT) AdNeutralPitch += cnt;
if(IntegralErrorPitch < -ERROR_LIMIT) AdNeutralPitch -= cnt;
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralErrorPitch) / 4096;
CorrectionRoll = 0;
if(labs(MeanIntegralRoll_old - MeanIntegralRoll) < MOVEMENT_LIMIT)
{
if(IntegralErrorRoll > ERROR_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralErrorRoll) / ERROR_LIMIT2;
CorrectionRoll = IntegralErrorRoll / 8;
if(CorrectionRoll > 5000) CorrectionRoll = 5000;
AttitudeCorrectionRoll += CorrectionRoll / BALANCE_NUMBER;
}
else last_r_p = 1;
}
else last_r_p = 0;
if(IntegralErrorRoll < -ERROR_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralErrorRoll) / ERROR_LIMIT2;
CorrectionRoll = IntegralErrorRoll / 8;
if(CorrectionRoll < -5000) CorrectionRoll = -5000;
AttitudeCorrectionRoll += CorrectionRoll / BALANCE_NUMBER;
}
else last_r_n = 1;
}
else last_r_n = 0;
}
else
{
cnt = 0;
BadCompassHeading = 500;
}
// correct Gyro Offsets
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp;
if(IntegralErrorRoll > ERROR_LIMIT) AdNeutralRoll += cnt;
if(IntegralErrorRoll < -ERROR_LIMIT) AdNeutralRoll -= cnt;
/*
DebugOut.Analog[29] = ausgleichRoll;
DebugOut.Analog[30] = LageKorrekturRoll * 10;
DebugOut.Analog[27] = CorrectionRoll;
DebugOut.Analog[23] = AdNeutralPitch;//10*(AdNeutralPitch - StartNeutralPitch);
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll);
*/
}
else // looping is active
{
AttitudeCorrectionRoll = 0;
AttitudeCorrectionPitch = 0;
FunnelCourse = 0;
}
 
#define FEHLER_LIMIT (ABGLEICH_ANZAHL * 4)
#define FEHLER_LIMIT2 (ABGLEICH_ANZAHL * 16)
#define BEWEGUNGS_LIMIT 20000
// Nick +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
if(labs(MittelIntegralNick_Alt - MittelIntegralNick) < BEWEGUNGS_LIMIT)
{
if(IntegralFehlerNick > FEHLER_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2;
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick > 5000) ausgleichNick = 5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_p = 1;
} else last_n_p = 0;
if(IntegralFehlerNick < -FEHLER_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2;
ausgleichNick = IntegralFehlerNick / 8;
if(ausgleichNick < -5000) ausgleichNick = -5000;
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
}
else last_n_n = 1;
} else last_n_n = 0;
}
else
{
cnt = 0;
KompassSignalSchlecht = 500;
}
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt;
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt;
// if Gyro_I_Factor == 0 , for example at Heading Hold, ignore attitude correction
if(!Gyro_I_Factor)
{
AttitudeCorrectionRoll = 0;
AttitudeCorrectionPitch = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
MeanIntegralPitch_old = MeanIntegralPitch;
MeanIntegralRoll_old = MeanIntegralRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
// reset variables used for averaging
IntegralAccPitch = 0;
IntegralAccRoll = 0;
MeanIntegralPitch = 0;
MeanIntegralRoll = 0;
MeasurementCounter = 0;
} // end of averaging
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralFehlerNick) / 4096;
 
ausgleichRoll = 0;
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT)
{
if(IntegralFehlerRoll > FEHLER_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2;
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll > 5000) ausgleichRoll = 5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_p = 1;
} else last_r_p = 0;
if(IntegralFehlerRoll < -FEHLER_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2;
ausgleichRoll = IntegralFehlerRoll / 8;
if(ausgleichRoll < -5000) ausgleichRoll = -5000;
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL;
}
else last_r_n = 1;
} else last_r_n = 0;
} else
{
cnt = 0;
KompassSignalSchlecht = 500;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Yawing
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickYaw) > 15 ) // yaw stick is activated
{
if(!(ParamSet.GlobalConfig & CFG_COMPASS_FIX))
{
UpdateCompassCourse = 1;
CompassCourse = YawGyroHeading;
BadCompassHeading = 250;
}
}
// exponential stick sensitivity in yawring rate
tmp_int = (int32_t) ParamSet.Yaw_P * ((int32_t)StickYaw * abs(StickYaw)) / 512L; // expo y = ax + bx²
tmp_int += (ParamSet.Yaw_P * StickYaw) / 4;
SetPointYaw = tmp_int;
// trimm drift of Reading_IntegralGyroYaw with SetPointYaw(StickYaw)
Reading_IntegralGyroYaw -= tmp_int;
// limit the effect
if(Reading_IntegralGyroYaw > 50000) Reading_IntegralGyroYaw = 50000;
if(Reading_IntegralGyroYaw <-50000) Reading_IntegralGyroYaw =-50000;
 
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt;
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt;
/*DebugOut.Analog[27] = ausgleichRoll;
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick);
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll);
*/
}
else
{
LageKorrekturRoll = 0;
LageKorrekturNick = 0;
TrichterFlug = 0;
}
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
MittelIntegralNick_Alt = MittelIntegralNick;
MittelIntegralRoll_Alt = MittelIntegralRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
IntegralAccNick = 0;
IntegralAccRoll = 0;
IntegralAccZ = 0;
MittelIntegralNick = 0;
MittelIntegralRoll = 0;
MittelIntegralNick2 = 0;
MittelIntegralRoll2 = 0;
ZaehlMessungen = 0;
}
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor);
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Compass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// compass code is used if Compass option is selected
if((ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE))
{
int16_t w, v, r,correction, error;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gieren
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;};
if(abs(StickGier) > 15) // war 35
{
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX))
{
NeueKompassRichtungMerken = 1;
KompassStartwert = ErsatzKompass;
KompassSignalSchlecht = 250;
};
}
tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx²
tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
sollGier = tmp_int;
Mess_Integral_Gier -= tmp_int;
if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen
if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Kompass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//DebugOut.Analog[29] = (MaxStickNick + MaxStickRoll);
if(CompassCalState && MotorsOn == 0 )
{
SetCompassCalState();
#ifdef USE_KILLAGREG
MM3_Calibrate();
#endif
}
else
{
#ifdef USE_KILLAGREG
static uint8_t updCompass = 0;
if (!updCompass--)
{
updCompass = 49; // update only at 2ms*50 = 100ms (10Hz)
MM3_Heading();
}
#endif
 
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
{
int w,v,r,fehler,korrektur;
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
v = abs(IntegralRoll /512);
if(v > w) w = v; // grösste Neigung ermitteln
korrektur = w / 8 + 1;
if(w < 25 && NeueKompassRichtungMerken && !KompassSignalSchlecht)
{
beeptime = 200;
// KompassStartwert = KompassValue;
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR);
NeueKompassRichtungMerken = 0;
}
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
ErsatzKompass += (fehler * 8) / korrektur;
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln
if(w > 0)
{
if(!KompassSignalSchlecht)
{
GierGyroFehler += fehler;
v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;
r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180;
// r = KompassRichtung;
v = (r * w) / v; // nach Kompass ausrichten
w = 3 * Parameter_KompassWirkung;
if(v > w) v = w; // Begrenzen
else
if(v < -w) v = -w;
Mess_Integral_Gier += v;
}
if(KompassSignalSchlecht) KompassSignalSchlecht--;
}
else KompassSignalSchlecht = 250; // so lange das Signal taub stellen --> ca. 0,5 sek
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// get maximum attitude angle
w = abs(IntegralPitch/512);
v = abs(IntegralRoll /512);
if(v > w) w = v;
// update compass course
if (w < 25 && UpdateCompassCourse && !BadCompassHeading)
{
BeepTime = 200;
CompassCourse = YawGyroHeading / YAW_GYRO_DEG_FACTOR;
UpdateCompassCourse = 0;
}
// calculate the deviation of the yaw gyro heading and the compass heading
if (CompassHeading < 0) error = 0; // disable yaw drift compensation if compass heading is undefined
else error = ((540 + CompassHeading - (YawGyroHeading / YAW_GYRO_DEG_FACTOR)) % 360) - 180;
correction = w / 8 + 1;
YawGyroHeading += (error * 8) / correction;
w = (w * FCParam.CompassYawEffect) / 64;
w = FCParam.CompassYawEffect - w;
if(w > 0)
{
if(BadCompassHeading)
{ // wait a while
BadCompassHeading--;
}
else
{ //
YawGyroDrift += error;
v = 64 + (MaxStickPitch + MaxStickRoll) / 8;
// calc course deviation
r = ((540 + (YawGyroHeading / YAW_GYRO_DEG_FACTOR) - CompassCourse) % 360) - 180;
v = (r * w) / v; // align to compass course
// limit yaw rate
w = 3 * FCParam.CompassYawEffect;
if (v > w) v = w;
else if (v < -w) v = -w;
Reading_IntegralGyroYaw += v;
}
}
else
{ // ignore compass at extreme attitudes for a while
BadCompassHeading = 250;
}
}
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#ifdef USE_KILLAGREG
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// GPS
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_I_Factor = FCParam.UserParam2;
GPS_P_Factor = FCParam.UserParam5;
GPS_D_Factor = FCParam.UserParam6;
if(EmergencyLanding) GPS_Main(230); // enables Comming Home
else GPS_Main(Poti3); // behavior controlled by Poti3
}
else
{
GPS_Pitch = 0;
GPS_Roll = 0;
}
#endif
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debugwerte zuordnen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!TimerWerteausgabe--)
{
TimerWerteausgabe = 24;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!TimerDebugOut--)
{
TimerDebugOut = 24; // update debug outputs every 25*2ms = 50 ms (20Hz)
DebugOut.Analog[0] = IntegralPitch / ParamSet.GyroAccFactor;
DebugOut.Analog[1] = IntegralRoll / ParamSet.GyroAccFactor;
DebugOut.Analog[2] = Mean_AccPitch;
DebugOut.Analog[3] = Mean_AccRoll;
DebugOut.Analog[4] = Reading_GyroYaw;
DebugOut.Analog[5] = ReadingHeight;
DebugOut.Analog[6] = (Reading_Integral_Top / 512);
DebugOut.Analog[8] = CompassHeading;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[10] = RC_Quality;
DebugOut.Analog[11] = YawGyroHeading / YAW_GYRO_DEG_FACTOR;
DebugOut.Analog[16] = Mean_AccTop;
 
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor;
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor;
DebugOut.Analog[2] = Mittelwert_AccNick;
DebugOut.Analog[3] = Mittelwert_AccRoll;
DebugOut.Analog[4] = MesswertGier;
DebugOut.Analog[5] = HoehenWert;
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512);
DebugOut.Analog[8] = KompassValue;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
DebugOut.Analog[10] = SenderOkay;
DebugOut.Analog[16] = Mittelwert_AccHoch;
DebugOut.Analog[20] = ServoValue;
 
//DebugOut.Analog[17] = FromNaviCtrl_Value.Distance;
//DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar;
DebugOut.Analog[19] = WinkelOut.CalcState;
DebugOut.Analog[20] = ServoValue;
 
DebugOut.Analog[30] = GPS_Nick;
DebugOut.Analog[31] = GPS_Roll;
 
DebugOut.Analog[30] = GPS_Pitch;
DebugOut.Analog[31] = GPS_Roll;
 
// DebugOut.Analog[19] -= DebugOut.Analog[19]/128;
// if(DebugOut.Analog[19] > 0) DebugOut.Analog[19]--; else DebugOut.Analog[19]++;
/* DebugOut.Analog[16] = motor_rx[0];
DebugOut.Analog[17] = motor_rx[1];
DebugOut.Analog[18] = motor_rx[2];
DebugOut.Analog[19] = motor_rx[3];
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3];
DebugOut.Analog[20] /= 14;
DebugOut.Analog[21] = motor_rx[4];
DebugOut.Analog[22] = motor_rx[5];
DebugOut.Analog[23] = motor_rx[6];
DebugOut.Analog[24] = motor_rx[7];
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7];
 
/* DebugOut.Analog[16] = motor_rx[0];
DebugOut.Analog[17] = motor_rx[1];
DebugOut.Analog[18] = motor_rx[2];
DebugOut.Analog[19] = motor_rx[3];
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3];
DebugOut.Analog[20] /= 14;
DebugOut.Analog[21] = motor_rx[4];
DebugOut.Analog[22] = motor_rx[5];
DebugOut.Analog[23] = motor_rx[6];
DebugOut.Analog[24] = motor_rx[7];
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7];
*/
// DebugOut.Analog[9] = MesswertNick;
// DebugOut.Analog[9] = SollHoehe;
// DebugOut.Analog[10] = Mess_Integral_Gier / 128;
// DebugOut.Analog[11] = KompassStartwert;
// DebugOut.Analog[10] = Parameter_Gyro_I;
// DebugOut.Analog[10] = EE_Parameter.Gyro_I;
// DebugOut.Analog[9] = KompassRichtung;
// DebugOut.Analog[10] = GasMischanteil;
// DebugOut.Analog[3] = HoeheD * 32;
// DebugOut.Analog[4] = hoehenregler;
}
DebugOut.Analog[9] = Reading_GyroPitch;
DebugOut.Analog[9] = SetPointHeight;
DebugOut.Analog[10] = Reading_IntegralGyroYaw / 128;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[10] = FCParam.Gyro_I;
DebugOut.Analog[10] = ParamSet.Gyro_I;
DebugOut.Analog[9] = CompassOffCourse;
DebugOut.Analog[10] = ThrustMixFraction;
DebugOut.Analog[3] = HeightD * 32;
DebugOut.Analog[4] = HeightControlThrust;
*/
}
 
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor;
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor;
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor;
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor;
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// calculate control feedback from angle (gyro integral) and agular velocity (gyro signal)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
DebugOut.Analog[21] = MesswertNick;
DebugOut.Analog[22] = MesswertRoll;
if(Looping_Pitch) Reading_GyroPitch = Reading_GyroPitch * Gyro_P_Factor;
else Reading_GyroPitch = IntegralPitch * Gyro_I_Factor + Reading_GyroPitch * Gyro_P_Factor;
if(Looping_Roll) Reading_GyroRoll = Reading_GyroRoll * Gyro_P_Factor;
else Reading_GyroRoll = IntegralRoll * Gyro_I_Factor + Reading_GyroRoll * Gyro_P_Factor;
Reading_GyroYaw = Reading_GyroYaw * (2 * Gyro_P_Factor) + IntegralYaw * Gyro_I_Factor / 2;
 
// Maximalwerte abfangen
#define MAX_SENSOR (4096*STICK_GAIN)
if(MesswertNick > MAX_SENSOR) MesswertNick = MAX_SENSOR;
if(MesswertNick < -MAX_SENSOR) MesswertNick = -MAX_SENSOR;
if(MesswertRoll > MAX_SENSOR) MesswertRoll = MAX_SENSOR;
if(MesswertRoll < -MAX_SENSOR) MesswertRoll = -MAX_SENSOR;
if(MesswertGier > MAX_SENSOR) MesswertGier = MAX_SENSOR;
if(MesswertGier < -MAX_SENSOR) MesswertGier = -MAX_SENSOR;
DebugOut.Analog[21] = Reading_GyroPitch;
DebugOut.Analog[22] = Reading_GyroRoll;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Höhenregelung
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//OCR0B = 180 - (Poti1 + 120) / 4;
//DruckOffsetSetting = OCR0B;
GasMischanteil *= STICK_GAIN;
// limit control feedback
#define MAX_SENSOR (4096 * STICK_GAIN)
if(Reading_GyroPitch > MAX_SENSOR) Reading_GyroPitch = MAX_SENSOR;
if(Reading_GyroPitch < -MAX_SENSOR) Reading_GyroPitch = -MAX_SENSOR;
if(Reading_GyroRoll > MAX_SENSOR) Reading_GyroRoll = MAX_SENSOR;
if(Reading_GyroRoll < -MAX_SENSOR) Reading_GyroRoll = -MAX_SENSOR;
if(Reading_GyroYaw > MAX_SENSOR) Reading_GyroYaw = MAX_SENSOR;
if(Reading_GyroYaw < -MAX_SENSOR) Reading_GyroYaw = -MAX_SENSOR;
 
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung
{
int tmp_int;
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert
{
if(Parameter_MaxHoehe < 50)
{
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters
HoehenReglerAktiv = 0;
}
else
HoehenReglerAktiv = 1;
}
else
{
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20;
HoehenReglerAktiv = 1;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Height Control
// The height control algorithm reduces the thrust but does not increase the thrust.
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(Notlandung) SollHoehe = 0;
h = HoehenWert;
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln
{
h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / (16 / STICK_GAIN); // Differenz bestimmen --> P-Anteil
h = GasMischanteil - h; // vom Gas abziehen
// h -= (HoeheD * Parameter_Luftdruck_D)/(8/STICK_GAIN); // D-Anteil
h -= (HoeheD)/(8/STICK_GAIN); // D-Anteil
tmp_int = ((Mess_Integral_Hoch / 128) * (signed long) Parameter_Hoehe_ACC_Wirkung) / (128 / STICK_GAIN);
if(tmp_int > 70*STICK_GAIN) tmp_int = 70*STICK_GAIN;
else if(tmp_int < -(70*STICK_GAIN)) tmp_int = -(70*STICK_GAIN);
h -= tmp_int;
hoehenregler = (hoehenregler*15 + h) / 16;
if(hoehenregler < EE_Parameter.Hoehe_MinGas * STICK_GAIN) // nicht unter MIN
{
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = EE_Parameter.Hoehe_MinGas * STICK_GAIN;
if(GasMischanteil < EE_Parameter.Hoehe_MinGas * STICK_GAIN) hoehenregler = GasMischanteil;
}
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas
GasMischanteil = hoehenregler;
}
}
if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mischer und PI-Regler
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[7] = GasMischanteil;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gier-Anteil
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define MUL_G 1.0
GierMischanteil = MesswertGier - sollGier * STICK_GAIN; // Regler für Gier
// GierMischanteil = 0;
#define MIN_GIERGAS (40*STICK_GAIN) // unter diesem Gaswert trotzdem Gieren
if(GasMischanteil > MIN_GIERGAS)
{
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
}
else
{
if(GierMischanteil > (MIN_GIERGAS / 2)) GierMischanteil = MIN_GIERGAS / 2;
if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
}
tmp_int = MAX_GAS*STICK_GAIN;
if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil));
if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil));
ThrustMixFraction *= STICK_GAIN;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Nick-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffNick = MesswertNick - StickNick; // Differenz bestimmen
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - StickNick; // I-Anteil bei Winkelregelung
else SummeNick += DiffNick; // I-Anteil bei HH
if(SummeNick > (STICK_GAIN * 16000L)) SummeNick = (STICK_GAIN * 16000L);
if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN);
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick
// Motor Vorn
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int;
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
// If height control is activated and no emergency landing is active
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL) && (!EmergencyLanding) )
{
int tmp_int;
// if height control is activated by an rc channel
if(ParamSet.GlobalConfig & CFG_HEIGHT_SWITCH)
{ // check if parameter is less than activation threshold
if(FCParam.MaxHeight < 50)
{
SetPointHeight = ReadingHeight - 20; // update SetPoint with current reading
HeightControlActive = 0; // disable height control
}
else HeightControlActive = 1; // enable height control
}
else // no switchable height control
{
SetPointHeight = ((int16_t) ExternHeightValue + (int16_t) FCParam.MaxHeight) * (int16_t)ParamSet.Height_Gain - 20;
HeightControlActive = 1;
}
// get current height
h = ReadingHeight;
// if current height is above the setpoint reduce thrust
if((h > SetPointHeight) && HeightControlActive)
{
// ThrustMixFraction - HightDeviation * P - HeightChange * D - ACCTop * DACC
// height difference -> P control part
h = ((h - SetPointHeight) * (int16_t) FCParam.Height_P) / (16 / STICK_GAIN);
h = ThrustMixFraction - h; // reduce gas
// height gradient --> D control part
//h -= (HeightD * FCParam.Height_D) / (8 / STICK_GAIN); // D control part
h -= (HeightD) / (8 / STICK_GAIN); // D control part
// acceleration sensor effect
tmp_int = ((Reading_Integral_Top / 128) * (int32_t) FCParam.Height_ACC_Effect) / (128 / STICK_GAIN);
if(tmp_int > 70 * STICK_GAIN) tmp_int = 70 * STICK_GAIN;
else if(tmp_int < -(70 * STICK_GAIN)) tmp_int = -(70 * STICK_GAIN);
h -= tmp_int;
// update height control thrust
HeightControlThrust = (HeightControlThrust*15 + h) / 16;
// limit thrust reduction
if(HeightControlThrust < ParamSet.Height_MinThrust * STICK_GAIN)
{
if(ThrustMixFraction >= ParamSet.Height_MinThrust * STICK_GAIN) HeightControlThrust = ParamSet.Height_MinThrust * STICK_GAIN;
// allows landing also if thrust stick is reduced below min thrust on height control
if(ThrustMixFraction < ParamSet.Height_MinThrust * STICK_GAIN) HeightControlThrust = ThrustMixFraction;
}
// limit thrust to stick setting
if(HeightControlThrust > ThrustMixFraction) HeightControlThrust = ThrustMixFraction;
ThrustMixFraction = HeightControlThrust;
}
}
// limit thrust to parameter setting
if(ThrustMixFraction > (ParamSet.Trust_Max - 20) * STICK_GAIN) ThrustMixFraction = (ParamSet.Trust_Max - 20) * STICK_GAIN;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mixer and PI-Controller
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DebugOut.Analog[7] = ThrustMixFraction;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Yaw-Fraction
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
YawMixFraction = Reading_GyroYaw - SetPointYaw * STICK_GAIN; // yaw controller
#define MIN_YAWTHRUST (40 * STICK_GAIN) // yaw also below this thrust value
// limit YawMixFraction
if(ThrustMixFraction > MIN_YAWTHRUST)
{
if(YawMixFraction > (ThrustMixFraction / 2)) YawMixFraction = ThrustMixFraction / 2;
if(YawMixFraction < -(ThrustMixFraction / 2)) YawMixFraction = -(ThrustMixFraction / 2);
}
else
{
if(YawMixFraction > (MIN_YAWTHRUST / 2)) YawMixFraction = MIN_YAWTHRUST / 2;
if(YawMixFraction < -(MIN_YAWTHRUST / 2)) YawMixFraction = -(MIN_YAWTHRUST / 2);
}
tmp_int = ParamSet.Trust_Max * STICK_GAIN;
if(YawMixFraction > ((tmp_int - ThrustMixFraction))) YawMixFraction = ((tmp_int - ThrustMixFraction));
if(YawMixFraction < -((tmp_int - ThrustMixFraction))) YawMixFraction = -((tmp_int - ThrustMixFraction));
 
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Vorne = motorwert;
// Motor Heck
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Hinten = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Achse
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - StickRoll;// I-Anteil bei Winkelregelung
else SummeRoll += DiffRoll; // I-Anteil bei HH
if(SummeRoll > 16000) SummeRoll = 16000;
if(SummeRoll < -16000) SummeRoll = -16000;
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int;
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
// Motor Links
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Links = motorwert;
// Motor Rechts
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil;
motorwert /= STICK_GAIN;
if ((motorwert < 0)) motorwert = 0;
else if(motorwert > MAX_GAS) motorwert = MAX_GAS;
if (motorwert < MIN_GAS) motorwert = MIN_GAS;
Motor_Rechts = motorwert;
// +++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Pitch-Axis
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffPitch = Reading_GyroPitch - StickPitch; // get difference
if(Gyro_I_Factor) SumPitch += IntegralPitch * Gyro_I_Factor - StickPitch; // I-part for attitude control
else SumPitch += DiffPitch; // I-part for head holding
if(SumPitch > (STICK_GAIN * 16000L)) SumPitch = (STICK_GAIN * 16000L);
if(SumPitch < -(STICK_GAIN * 16000L)) SumPitch = -(STICK_GAIN * 16000L);
pd_result = DiffPitch + Ki * SumPitch; // PI-controller for pitch
 
tmp_int = (int32_t)((int32_t)FCParam.DynamicStability * (int32_t)(ThrustMixFraction + abs(YawMixFraction)/2)) / 64;
if(pd_result > tmp_int) pd_result = tmp_int;
if(pd_result < -tmp_int) pd_result = -tmp_int;
 
// Motor Front
MotorValue = ThrustMixFraction + pd_result + YawMixFraction; // Mixer
MotorValue /= STICK_GAIN;
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Front = MotorValue;
 
// Motor Rear
MotorValue = ThrustMixFraction - pd_result + YawMixFraction; // Mixer
MotorValue /= STICK_GAIN;
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Rear = MotorValue;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Axis
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = Reading_GyroRoll - StickRoll; // get difference
if(Gyro_I_Factor) SumRoll += IntegralRoll * Gyro_I_Factor - StickRoll; // I-part for attitude control
else SumRoll += DiffRoll; // I-part for head holding
if(SumRoll > 16000) SumRoll = 16000;
if(SumRoll < -16000) SumRoll = -16000;
pd_result = DiffRoll + Ki * SumRoll; // PI-controller for roll
tmp_int = (int32_t)((int32_t)FCParam.DynamicStability * (int32_t)(ThrustMixFraction + abs(YawMixFraction)/2)) / 64;
if(pd_result > tmp_int) pd_result = tmp_int;
if(pd_result < -tmp_int) pd_result = -tmp_int;
 
// Motor Left
MotorValue = ThrustMixFraction + pd_result - YawMixFraction; // Mixer
MotorValue /= STICK_GAIN;
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Left = MotorValue;
 
// Motor Right
MotorValue = ThrustMixFraction - pd_result - YawMixFraction; // Mixer
MotorValue /= STICK_GAIN;
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Right = MotorValue;
}
 
/branches/V0.69k Code Redesign killagreg/fc.h
4,139 → 4,106
 
#ifndef _FC_H
#define _FC_H
//#define GIER_GRAD_FAKTOR 1450L // Abhängigkeit wzischen GyroIntegral und Winkel
#define GIER_GRAD_FAKTOR 1550L // Abhängigkeit wzischen GyroIntegral und Winkel
 
#include <inttypes.h>
 
#define YAW_GYRO_DEG_FACTOR 1550L // Factor between Yaw Gyro Integral and HeadingAngle in deg
#define STICK_GAIN 4
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern long IntegralNick,IntegralNick2;
extern long IntegralRoll,IntegralRoll2;
extern long Mess_IntegralNick,Mess_IntegralNick2;
extern long Mess_IntegralRoll,Mess_IntegralRoll2;
extern long IntegralAccNick,IntegralAccRoll;
extern volatile long Mess_Integral_Hoch;
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern volatile int KompassValue;
extern volatile int KompassStartwert;
extern volatile int KompassRichtung;
extern long ErsatzKompass;
extern int ErsatzKompassInGrad; // Kompasswert in Grad
extern int HoehenWert;
extern int SollHoehe;
extern volatile int MesswertNick,MesswertRoll,MesswertGier;
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
 
typedef struct
{
uint8_t Height_D;
uint8_t MaxHeight;
uint8_t Height_P;
uint8_t Height_ACC_Effect;
uint8_t CompassYawEffect;
uint8_t Gyro_P;
uint8_t Gyro_I;
uint8_t Gier_P;
uint8_t I_Factor;
uint8_t UserParam1;
uint8_t UserParam2;
uint8_t UserParam3;
uint8_t UserParam4;
uint8_t UserParam5;
uint8_t UserParam6;
uint8_t UserParam7;
uint8_t UserParam8;
uint8_t ServoPitchControl;
uint8_t LoopThrustLimit;
uint8_t Yaw_PosFeedback;
uint8_t Yaw_NegFeedback;
uint8_t DynamicStability;
} fc_param_t;
 
extern fc_param_t FCParam;
 
extern volatile uint16_t I2CTimeout;
 
// attitude
extern volatile int32_t IntegralPitch, IntegralRoll, IntegralYaw;
extern volatile int16_t Reading_GyroPitch, Reading_GyroRoll, Reading_GyroYaw;
 
// offsets
extern volatile int16_t AdNeutralPitch, AdNeutralRoll, AdNeutralYaw;
extern volatile int16_t NeutralAccX, NeutralAccY;
extern volatile float NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier;
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8;
extern int NaviAccNick,NaviAccRoll,NaviCntAcc;
extern unsigned int modell_fliegt;
void MotorRegler(void);
 
 
extern volatile int32_t Reading_Integral_Top; // calculated in analog.c
 
// compass navigation
extern volatile int16_t CompassHeading;
extern volatile int16_t CompassCourse;
extern volatile int16_t CompassOffCourse;
extern volatile uint8_t CompassCalState;
extern int32_t YawGyroHeading;
extern int16_t YawGyroHeadingInDeg;
 
// hight control
extern int ReadingHeight;
extern int SetPointHeight;
 
// mean accelerations
extern volatile int16_t Mean_AccPitch, Mean_AccRoll, Mean_AccTop;
 
// acceleration send to navi board
extern int16_t NaviAccPitch, NaviAccRoll, NaviCntAcc;
 
 
// looping params
extern long TurnOver180Pitch, TurnOver180Roll;
 
// external control
extern int16_t ExternStickPitch, ExternStickRoll, ExternStickYaw;
 
 
void MotorControl(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void CalibMean(void);
void Mean(void);
void SetNeutral(void);
void Piep(unsigned char Anzahl);
extern void DefaultKonstanten(void);
void DefaultKonstanten1(void);
void DefaultKonstanten2(void);
void Beep(uint8_t numbeeps);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern volatile int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
extern volatile unsigned char SenderOkay;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
extern void DefaultKonstanten1(void);
extern void DefaultKonstanten2(void);
 
#define STRUCT_PARAM_LAENGE 71
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung)
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp;
unsigned char DynamicStability;
unsigned char UserParam5; // Wert : 0-250
unsigned char UserParam6; // Wert : 0-250
unsigned char UserParam7; // Wert : 0-250
unsigned char UserParam8; // Wert : 0-250
extern int16_t Poti1, Poti2, Poti3, Poti4, Poti5, Poti6, Poti7, Poti8;
 
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
};
// setpoints for motors
extern volatile uint8_t Motor_Front, Motor_Rear, Motor_Right, Motor_Left; //used by twimaster isr
 
// current stick values
extern int16_t StickPitch;
extern int16_t StickRoll;
extern int16_t StickYaw;
extern int16_t GPS_Pitch;
extern int16_t GPS_Roll;
 
/*
unsigned char ServoNickMax; // Wert : 0-250
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
*/
extern struct mk_param_struct EE_Parameter;
// current stick elongations
extern int16_t MaxStickPitch, MaxStickRoll, MaxStickYaw;
extern uint8_t MotorsOn;
extern uint8_t EmergencyLanding;
extern uint16_t Model_Is_Flying;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsGegenKopplung1;
 
 
#endif //_FC_H
 
/branches/V0.69k Code Redesign killagreg/fifo.c
0,0 → 1,28
#include "fifo.h"
 
void fifo_init (fifo_t *f, uint8_t *buffer, const uint8_t size)
{
f->count = 0;
f->pread = f->pwrite = buffer;
f->read2end = f->write2end = f->size = size;
}
 
uint8_t fifo_put (fifo_t *f, const uint8_t data)
{
return _inline_fifo_put (f, data);
}
 
uint8_t fifo_get_wait (fifo_t *f)
{
while (!f->count);
 
return _inline_fifo_get (f);
}
 
int16_t fifo_get_nowait (fifo_t *f)
{
if (!f->count) return -1;
 
return (int16_t) _inline_fifo_get (f);
}
 
/branches/V0.69k Code Redesign killagreg/fifo.h
0,0 → 1,98
#ifndef _FIFO_H_
#define _FIFO_H_
 
#include <avr/io.h>
#include <avr/interrupt.h>
 
// the fifo object
typedef struct
{
uint8_t volatile count; // # number of characters in FIFO
uint8_t size; // buffer size
uint8_t *pread; // read pointer
uint8_t *pwrite; // write pointer
uint8_t read2end, write2end; // number of characters for buffer overflow for read/write pointers
} fifo_t;
 
/*
The initialization of the FIFO sets the read/write pointers etc..
The FIFO uses the buffer 'buf' which byte length must 'size'.
*/
extern void fifo_init (fifo_t*, uint8_t* buf, const uint8_t size);
 
/*
Puts a byte into the FIFO. Returns 1 on success ans 0 in case of FIFO overflow.
*/
extern uint8_t fifo_put (fifo_t*, const uint8_t data);
 
/*
Get the next byte out of the FIFO. If the FIFO is empty the function blocks
until the next byte is put into the FIFO.
*/
extern uint8_t fifo_get_wait (fifo_t*);
 
/*
Get the next byte from the FIFO as int. Returns -1 if the FIFO is empty.
*/
extern int16_t fifo_get_nowait (fifo_t*);
 
 
/*
The same like fifo_put
*/
static inline uint8_t _inline_fifo_put (fifo_t *f, const uint8_t data)
{
if (f->count >= f->size)
return 0;
 
uint8_t * pwrite = f->pwrite;
 
*(pwrite++) = data;
 
uint8_t write2end = f->write2end;
 
if (--write2end == 0)
{
write2end = f->size;
pwrite -= write2end;
}
 
f->write2end = write2end;
f->pwrite = pwrite;
 
uint8_t sreg = SREG;
cli();
f->count++;
SREG = sreg;
 
return 1;
}
 
/*
Get the next byte from FIFO. Before this functionis called
it must be checked that there is a byte in the FIFO to get.
*/
static inline uint8_t _inline_fifo_get (fifo_t *f)
{
uint8_t *pread = f->pread;
uint8_t data = *(pread++);
uint8_t read2end = f->read2end;
 
if (--read2end == 0)
{
read2end = f->size;
pread -= read2end;
}
 
f->pread = pread;
f->read2end = read2end;
 
uint8_t sreg = SREG;
cli();
f->count--;
SREG = sreg;
 
return data;
}
 
#endif /* _FIFO_H_ */
/branches/V0.69k Code Redesign killagreg/gps.c
0,0 → 1,374
#include <inttypes.h>
#include <stdlib.h>
#include "fc.h"
#include "ubx.h"
#include "mymath.h"
#include "timer0.h"
#include "uart.h"
#include "rc.h"
#include "eeprom.h"
 
#define TSK_IDLE 0
#define TSK_HOLD 1
#define TSK_HOME 2
 
#define GPS_STICK_SENSE 15 // must be at least in a range where 90% of the trimming does not switch of the GPS function
#define GPS_STICK_LIMIT 45 // limit of gps stick control to avoid critical flight attitudes
#define GPS_POSDEV_INTEGRAL_LIMIT 32000 // limit for the position error integral
#define GPS_P_LIMIT 25
 
 
uint8_t GPS_P_Factor = 0, GPS_I_Factor = 0, GPS_D_Factor = 0;
 
 
 
typedef struct
{
int32_t Longitude;
int32_t Latitude;
int32_t Altitude;
uint8_t Status;
} GPS_Pos_t;
 
// GPS coordinates for hold position
GPS_Pos_t HoldPosition = {0,0,0,INVALID};
// GPS coordinates for home position
GPS_Pos_t HomePosition = {0,0,0,INVALID};
 
 
// ---------------------------------------------------------------------------------
 
// checks pitch and roll sticks for manual control
uint8_t IsManualControlled(void)
{
if ( (abs(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]]) < GPS_STICK_SENSE) && (abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) < GPS_STICK_SENSE)) return 0;
else return 1;
}
 
// set home position to current positon
void GPS_SetHomePosition(void)
{
if( ((GPSInfo.status == VALID) || (GPSInfo.status == PROCESSED)) && GPSInfo.satfix == SATFIX_3D)
{
HomePosition.Longitude = GPSInfo.longitude;
HomePosition.Latitude = GPSInfo.latitude;
HomePosition.Altitude = GPSInfo.altitude;
HomePosition.Status = VALID;
BeepTime = 1000; // signal if new home position was set
}
else
{
HomePosition.Status = INVALID;
}
}
 
// set hold position to current positon
void GPS_SetHoldPosition(void)
{
if( ((GPSInfo.status == VALID) || (GPSInfo.status == PROCESSED)) && GPSInfo.satfix == SATFIX_3D)
{
HoldPosition.Longitude = GPSInfo.longitude;
HoldPosition.Latitude = GPSInfo.latitude;
HoldPosition.Altitude = GPSInfo.altitude;
HoldPosition.Status = VALID;
}
else
{
HoldPosition.Status = INVALID;
}
}
 
// clear home position
void GPS_ClearHomePosition(void)
{
HomePosition.Status = INVALID;
}
 
// disable GPS control sticks
void GPS_Neutral(void)
{
GPS_Pitch = 0;
GPS_Roll = 0;
}
 
// calculates the GPS control stick values from the deviation to target position
// if the pointer to the target positin is NULL or is the target position invalid
// then the P part of the controller is deactivated.
void GPS_PIDController(GPS_Pos_t *pTargetPos)
{
int32_t temp, temp1, PID_Pitch, PID_Roll;
int32_t coscompass, sincompass;
int32_t GPSPosDev_North, GPSPosDev_East; // Position deviation in cm
int32_t P_North = 0, D_North = 0, P_East = 0, D_East = 0, I_North = 0, I_East = 0;
int32_t PID_North = 0, PID_East = 0;
static int32_t cos_target_latitude = 1;
static int32_t GPSPosDevIntegral_North = 0, GPSPosDevIntegral_East = 0;
static GPS_Pos_t *pLastTargetPos = 0;
 
// if GPS data and Compass are ok
if((GPSInfo.status == VALID) && (GPSInfo.satfix == SATFIX_3D) && (CompassHeading >= 0) )
{
 
if(pTargetPos != NULL) // if there is a target position
{
if(pTargetPos->Status != INVALID) // and the position data are valid
{
// if the target data are updated or the target pointer has changed
if ((pTargetPos->Status != PROCESSED) || (pTargetPos != pLastTargetPos) )
{
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
// recalculate latitude projection
cos_target_latitude = (int32_t)c_cos_8192((int16_t)(pTargetPos->Latitude/10000000L));
// remember last target pointer
pLastTargetPos = pTargetPos;
// mark data as processed
pTargetPos->Status = PROCESSED;
}
// calculate position deviation from latitude and longitude differences
GPSPosDev_North = (GPSInfo.latitude - pTargetPos->Latitude); // to calculate real cm we would need *111/100 additionally
GPSPosDev_East = (GPSInfo.longitude - pTargetPos->Longitude); // to calculate real cm we would need *111/100 additionally
// calculate latitude projection
GPSPosDev_East *= cos_target_latitude;
GPSPosDev_East /= 8192;
}
else // no valid target position available
{
// reset error
GPSPosDev_North = 0;
GPSPosDev_East = 0;
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
}
else // no target position available
{
// reset error
GPSPosDev_North = 0;
GPSPosDev_East = 0;
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
 
//Calculate PID-components of the controller (negative sign for compensation)
 
// P-Part
P_North = -((int32_t)GPS_P_Factor * GPSPosDev_North)/2048;
P_East = -((int32_t)GPS_P_Factor * GPSPosDev_East)/2048;
 
// I-Part
I_North = -((int32_t)GPS_I_Factor * GPSPosDevIntegral_North)/8192;
I_East = -((int32_t)GPS_I_Factor * GPSPosDevIntegral_East)/8192;
 
// combine P- & I-Part
PID_North = P_North + I_North;
PID_East = P_East + I_East;
 
//limit PI-Part to limit the max velocity
//temp1 = ((int32_t)GPS_D_Factor * MAX_VELOCITY)/512; // the PI-Part limit
temp = (int32_t)c_sqrt(PID_North*PID_North + PID_East*PID_East); // the current PI-Part
if(temp > GPS_P_LIMIT) // P-Part limit is reached
{
// normalize P-part components to the P-Part limit
PID_North = (PID_North * GPS_P_LIMIT)/temp;
PID_East = (PID_East * GPS_P_LIMIT)/temp;
}
else // PI-Part under its limit
{
// update position error integrals
GPSPosDevIntegral_North += GPSPosDev_North/16;
if( GPSPosDevIntegral_North > GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_North = GPS_POSDEV_INTEGRAL_LIMIT;
else if (GPSPosDevIntegral_North < -GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_North = -GPS_POSDEV_INTEGRAL_LIMIT;
GPSPosDevIntegral_East += GPSPosDev_East/16;
if( GPSPosDevIntegral_East > GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_East = GPS_POSDEV_INTEGRAL_LIMIT;
else if (GPSPosDevIntegral_East < -GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_East = -GPS_POSDEV_INTEGRAL_LIMIT;
}
 
// D-Part
D_North = -((int32_t)GPS_D_Factor * GPSInfo.velnorth)/512;
D_East = -((int32_t)GPS_D_Factor * GPSInfo.veleast)/512;
 
 
// combine PI- and D-Part
PID_North += D_North;
PID_East += D_East;
 
// GPS to pitch and roll settings
 
// A positive pitch angle moves head downwards (flying forward).
// A positive roll angle tilts left side downwards (flying left).
// If compass heading is 0 the head of the copter is in north direction.
// A positive pitch angle will fly to north and a positive roll angle will fly to west.
// In case of a positive north deviation/velocity the
// copter should fly to south (negative pitch).
// In case of a positive east position deviation and a positive east velocity the
// copter should fly to west (positive roll).
// The influence of the GPS_Pitch and GPS_Roll variable is contrarily to the stick values
// in the fc.c. Therefore a positive north deviation/velocity should result in a positive
// GPS_Pitch and a positive east deviation/velocity should result in a negative GPS_Roll.
 
coscompass = (int32_t)c_cos_8192(CompassHeading);
sincompass = (int32_t)c_sin_8192(CompassHeading);
PID_Roll = (coscompass * PID_East - sincompass * PID_North) / 8192;
PID_Pitch = -1*((sincompass * PID_East + coscompass * PID_North) / 8192);
 
// limit resulting GPS control vector
temp = (int32_t)c_sqrt(PID_Roll*PID_Roll + PID_Pitch*PID_Pitch);
if (temp > GPS_STICK_LIMIT)
{
// normalize control vector components to the limit
PID_Roll = (PID_Roll * GPS_STICK_LIMIT)/temp;
PID_Pitch = (PID_Pitch * GPS_STICK_LIMIT)/temp;
}
 
GPS_Roll = (int16_t)PID_Roll;
GPS_Pitch = (int16_t)PID_Pitch;
 
}
else // invalid GPS data or bad compass reading
{
GPS_Neutral(); // do nothing
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
}
 
 
 
 
void GPS_Main(uint8_t ctrl)
{
static uint8_t GPS_Task = TSK_IDLE;
static uint8_t GPS_P_Delay = 0;
int16_t satbeep;
 
// ctrl enables the gps feature
if(ctrl < 70) GPS_Task = TSK_IDLE;
else if (ctrl < 160) GPS_Task = TSK_HOLD;
else GPS_Task = TSK_HOME; // ctrl >= 160
 
 
switch(GPSInfo.status)
{
case INVALID: // invalid gps data
GPS_Neutral();
if(GPS_Task != TSK_IDLE)
{
BeepTime = 100; // beep if signal is neccesary
}
break;
case PROCESSED: // if gps data are already processed do nothing
// downcount timeout
if(GPSTimeout) GPSTimeout--;
// if no new data arrived within timeout set current data invalid
// and therefore disable GPS
else
{
GPS_Neutral();
GPSInfo.status = INVALID;
}
break;
case VALID: // new valid data from gps device
// if the gps data quality is good
DebugOut.Analog[29] = (int16_t)GPSInfo.updatetime;
if (GPSInfo.satfix == SATFIX_3D)
{
switch(GPS_Task) // check what's to do
{
case TSK_IDLE:
// update hold position to current gps position
GPS_SetHoldPosition(); // can get invalid if gps signal is bad
// disable gps control
GPS_Neutral();
break; // eof TSK_IDLE
case TSK_HOLD:
if(HoldPosition.Status != INVALID)
{
if( IsManualControlled() ) // MK controlled by user
{
// update hold point to current gps position
GPS_SetHoldPosition();
// disable gps control
GPS_Neutral();
GPS_P_Delay = 0;
}
else // GPS control active
{
if(GPS_P_Delay<7)
{ // delayed activation of P-Part for 8 cycles (8*0.25s = 2s)
GPS_P_Delay++;
GPS_SetHoldPosition(); // update hold point to current gps position
GPS_PIDController(NULL); // activates only the D-Part
}
else GPS_PIDController(&HoldPosition);// activates the P&D-Part
}
}
else // invalid Hold Position
{ // try to catch a valid hold position from gps data input
GPS_SetHoldPosition();
GPS_Neutral();
}
break; // eof TSK_HOLD
case TSK_HOME:
if(HomePosition.Status != INVALID)
{
// update hold point to current gps position
// to avoid a flight back if home comming is deactivated
GPS_SetHoldPosition();
if( IsManualControlled() ) // MK controlled by user
{
GPS_Neutral();
}
else // GPS control active
{
GPS_PIDController(&HomePosition);
}
}
else // bad home position
{
BeepTime = 50; // signal invalid home position
// try to hold at least the position as a fallback option
 
if (HoldPosition.Status != INVALID)
{
if( IsManualControlled() ) // MK controlled by user
{
GPS_Neutral();
}
else // GPS control active
{
GPS_PIDController(&HoldPosition);
}
}
else
{ // try to catch a valid hold position
GPS_SetHoldPosition();
GPS_Neutral();
}
}
break; // eof TSK_HOME
default: // unhandled task
GPS_Neutral();
break; // eof default
} // eof switch GPS_Task
} // eof 3D-FIX
else // no 3D-SATFIX
{ // disable gps control
GPS_Neutral();
if(GPS_Task != TSK_IDLE)
{
satbeep = 1600 - (int16_t)GPSInfo.satnum * 200; // is zero at 8 sats
if (satbeep < 0) satbeep = 0;
BeepTime = 50 + (uint16_t)satbeep; // max 1650 * 0.1 ms =
}
}
// set current data as processed to avoid further calculations on the same gps data
GPSInfo.status = PROCESSED;
break;
} // eof GPSInfo.status
}
 
/branches/V0.69k Code Redesign killagreg/gps.h
1,7 → 1,15
extern signed int GPS_Nick;
extern signed int GPS_Roll;
extern signed int GPS_Nick2;
extern signed int GPS_Roll2;
#ifndef _GPS_H
#define _GPS_H
 
void GPS_Neutral(void);
void GPS_BerechneZielrichtung(void);
#include <inttypes.h>
 
extern uint8_t GPS_P_Factor;
extern uint8_t GPS_I_Factor;
extern uint8_t GPS_D_Factor;
 
extern void GPS_Main(uint8_t ctrl);
extern void GPS_SetHomePosition(void);
extern void GPS_ClearHomePosition(void);
 
#endif //_GPS_H
 
/branches/V0.69k Code Redesign killagreg/led.c
0,0 → 1,42
#include <inttypes.h>
#include "led.h"
#include "fc.h"
 
uint16_t LED1_Time = 0;
uint16_t LED2_Time = 0;
 
 
// initializes the LED control outputs J16, J17
void LED_Init(void)
{
// set PC2 & PC3 as output (control of J16 & J17)
DDRC |= (1<<DDC2)|(1<<DDC3);
J16_OFF;
J17_OFF;
}
 
 
// called in UpdateMotors() every 2ms
void LED_Update(void)
{
static uint16_t J16_blinkcount = 0;
static uint16_t J17_blinkcount = 0;
 
if (LED1_Time < 20) J16_ON;
else if(LED1_Time < 220)
{
if((2 * J16_blinkcount) < LED1_Time) J16_ON;
else J16_OFF;
if(J16_blinkcount++ >= LED1_Time) J16_blinkcount = 0;
}
else J16_ON;
 
if (LED2_Time < 20) J17_OFF;
else if(LED2_Time < 220)
{
if((2 * J17_blinkcount) < LED2_Time) J17_ON;
else J17_OFF;
if(J17_blinkcount++ >= LED2_Time) J17_blinkcount = 0;
}
else J17_OFF;
}
/branches/V0.69k Code Redesign killagreg/led.h
0,0 → 1,22
#ifndef _LED_H
#define _LED_H
 
#include <avr/io.h>
 
#define J16_ON PORTC |= (1<<PORTC2)
#define J16_OFF PORTC &= ~(1<<PORTC2)
#define J16_TOGGLE PORTC ^= (1<<PORTC2)
#define J17_ON PORTC |= (1<<PORTC3)
#define J17_OFF PORTC &= ~(1<<PORTC3)
#define J17_TOGGLE PORTC ^= (1<<PORTC3)
 
 
extern uint16_t LED1_Time;
extern uint16_t LED2_Time;
 
extern void LED_Init(void);
extern void LED_Update(void);
 
 
#endif //_LED_H
 
/branches/V0.69k Code Redesign killagreg/main.c
3,14 → 3,14
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
21,21 → 21,21
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
47,63 → 47,43
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "main.h"
#include <avr/boot.h>
 
unsigned char EEPromArray[E2END+1] EEMEM;
unsigned char PlatinenVersion = 10;
unsigned char SendVersionToNavi = 1;
// -- Parametersatz aus EEPROM lesen ---
// number [0..5]
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
{
if (number > 5) number = 5;
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
}
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "main.h"
#include "timer0.h"
#include "timer2.h"
#include "uart.h"
#if defined (__AVR_ATmega644P__)
#include "uart1.h"
#endif
#include "led.h"
#include "menu.h"
#include "fc.h"
#include "rc.h"
#include "analog.h"
#include "printf_P.h"
#ifdef USE_KILLAGREG
#include "mm3.h"
#endif
#ifdef USE_NAVICTRL
#include "spi.h"
#endif
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
#include "mk3mag.h"
#endif
#include "twimaster.h"
#include "eeprom.h"
#include "_Settings.h"
 
// -- Parametersatz ins EEPROM schreiben ---
// number [0..5]
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length)
{
if(number > 5) number = 5;
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken
}
 
unsigned char GetActiveParamSetNumber(void)
{
unsigned char set;
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]);
if(set > 5)
{
set = 2;
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken
}
return(set);
}
uint8_t BoardRelease = 10;
 
void CalMk3Mag(void)
{
static unsigned char stick = 1;
 
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -20) stick = 0;
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70) && !stick)
{
stick = 1;
WinkelOut.CalcState++;
if(WinkelOut.CalcState > 4)
{
// WinkelOut.CalcState = 0; // in Uart.c
beeptime = 1000;
}
else Piep(WinkelOut.CalcState);
}
DebugOut.Analog[19] = WinkelOut.CalcState;
}
 
 
//############################################################################
//Hauptprogramm
int main (void)
111,169 → 91,207
{
unsigned int timer;
 
//unsigned int timer2 = 0;
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // verzögern
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10;
DDRC = 0x81; // SCL
PORTC = 0xff; // Pullup SDA
DDRB = 0x1B; // LEDs und Druckoffset
PORTB = 0x01; // LED_Rot
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5
DDRD |=0x80; // J7
PORTD = 0xF7; // LED
// disable interrupts global
cli();
 
// get board release
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // make some delay
if(PINB & (1<<PINB0)) BoardRelease = 11;
else BoardRelease = 10;
 
// set LED ports as output
DDRB |= (1<<DDB1)|(1<<DDB0);
ROT_ON;
GRN_OFF;
 
// disable watchdog
MCUSR &=~(1<<WDRF);
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = 0;
 
beeptime = 2000;
BeepTime = 2000;
 
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0;
PPM_in[CH_THRUST] = 0;
StickYaw = 0;
StickRoll = 0;
StickPitch = 0;
 
ROT_OFF;
Timer_Init();
UART_Init();
rc_sum_init();
 
// initalize modules
LED_Init();
TIMER0_Init();
TIMER2_Init();
USART0_Init();
 
#if defined (__AVR_ATmega644P__)
if (BoardRelease == 11) USART1_Init();
#endif
 
RC_Init();
ADC_Init();
i2c_init();
I2C_Init();
 
#ifdef USE_KILLAGREG
MM3_Init();
#endif
#ifdef USE_NAVICTRL
SPI_MasterInit();
#endif
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
MK3MAG_Init();
#endif
 
 
// enable interrupts global
sei();
 
VersionInfo.Hauptversion = VERSION_HAUPTVERSION;
VersionInfo.Nebenversion = VERSION_NEBENVERSION;
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL;
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a');
VersionInfo.Major = VERSION_MAJOR;
VersionInfo.Minor = VERSION_MINOR;
VersionInfo.PCCompatible = VERSION_COMPATIBLE;
 
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",BoardRelease/10,BoardRelease%10, VERSION_MAJOR, VERSION_MINOR,VERSION_INDEX + 'a');
printf("\n\r==============================");
GRN_ON;
 
#define EE_DATENREVISION 70 // wird angepasst, wenn sich die EEPROM-Daten geändert haben
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION)
{
printf("\n\rInit. EEPROM: Generiere Default-Parameter...");
DefaultKonstanten1();
for (unsigned char i=0;i<6;i++)
{
if(i==2) DefaultKonstanten2(); // Kamera
if(i==3) DefaultKonstanten3(); // Beginner
if(i>3) DefaultKonstanten2(); // Kamera
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
}
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION);
}
// Parameter set handling
ParamSet_Init();
 
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
if(GetParamWord(PID_ACC_PITCH) > 1023)
{
printf("\n\rACC nicht abgeglichen!");
printf("\n\rACC not calibrated!");
}
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
printf("\n\rBenutze Parametersatz %d", GetActiveParamSetNumber());
 
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
printf("\n\rAbgleich Luftdrucksensor..");
timer = SetDelay(1000);
SucheLuftruckOffset();
//wait for a short time (otherwise the RC channel check won't work below)
timer = SetDelay(500);
while(!CheckDelay(timer));
 
 
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
printf("\n\rSupport for MK3MAG Compass");
#endif
 
 
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
{
printf("\n\rCalibrating air pressure sensor..");
timer = SetDelay(1000);
SearchAirPressureOffset();
while (!CheckDelay(timer));
printf("OK\n\r");
}
 
#ifdef USE_KILLAGREG
printf("\n\rSupport for MicroMag3 Compass");
#if defined (__AVR_ATmega644P__)
if(BoardRelease == 10)
{
printf("\n\rSupport for GPS at 1st UART");
}
else
{
printf("\n\rSupport for GPS at 2nd UART");
}
#else // (__AVR_ATmega644__)
printf("\n\rSupport for GPS at 1st UART");
#endif
#endif
 
SetNeutral();
 
ROT_OFF;
beeptime = 2000;
ExternControl.Digital[0] = 0x55;
 
printf("\n\rSteuerung: ");
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
BeepTime = 2000;
ExternControl.Digital[0] = 0x55;
 
 
printf("\n\rControl: ");
if (ParamSet.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
else printf("Neutral");
 
printf("\n\n\r");
LcdClear();
 
LCD_Clear();
 
I2CTimeout = 5000;
WinkelOut.Orientation = 1;
 
while (1)
{
if(UpdateMotor) // ReglerIntervall
{
UpdateMotor=0;
//PORTD |= 0x08;
if(WinkelOut.CalcState) CalMk3Mag();
else MotorRegler();
//PORTD &= ~0x08;
SendMotorData();
if(UpdateMotor) // control interval
{
UpdateMotor=0; // reset Flag, is enabled every 2 ms by isr of timer0
//PORTD |= (1<<PORTD4);
MotorControl();
//PORTD &= ~(1<<PORTD4);
 
SendMotorData();
 
ROT_OFF;
if(PcZugriff) PcZugriff--;
else
{
DubWiseKeys[0] = 0;
 
if(PcAccess) PcAccess--;
else
{
DubWiseKeys[0] = 0;
DubWiseKeys[1] = 0;
ExternControl.Config = 0;
ExternStickNick = 0;
ExternStickPitch= 0;
ExternStickRoll = 0;
ExternStickGier = 0;
}
if(SenderOkay) SenderOkay--;
ExternStickYaw = 0;
}
 
if(!I2CTimeout)
{
I2CTimeout = 5;
I2C_Reset();
if((BeepModulation == 0xFFFF) && MotorsOn)
{
BeepTime = 10000; // 1 second
BeepModulation = 0x0080;
}
}
else
{
I2CTimeout--;
ROT_OFF;
}
 
if(SIO_DEBUG && (!UpdateMotor || !MotorsOn))
{
USART0_TransmitTxData();
USART0_ProcessRxData();
}
else USART0_ProcessRxData();
 
if(CheckDelay(timer))
{
if(UBat < ParamSet.LowVoltageWarning)
{
I2CTimeout = 5;
i2c_reset();
if((BeepMuster == 0xffff) && MotorenEin)
{
beeptime = 10000;
BeepMuster = 0x0080;
}
if(BeepModulation == 0xFFFF)
{
BeepTime = 6000; // 0.6 seconds
BeepModulation = 0x0300;
}
}
else
{
I2CTimeout--;
ROT_OFF;
}
if(SIO_DEBUG && (!UpdateMotor || !MotorenEin))
{
DatenUebertragung();
BearbeiteRxDaten();
}
else BearbeiteRxDaten();
if(CheckDelay(timer))
{
if(UBat < EE_Parameter.UnterspannungsWarnung)
{
if(BeepMuster == 0xffff)
{
beeptime = 6000;
BeepMuster = 0x0300;
}
}
/* if(SendVersionToNavi)
{
SPI_StartTransmitPacket(SPI_CMD_VERSION);//#
SendVersionToNavi = 0;
}
else SPI_StartTransmitPacket(SPI_CMD_VALUE);//#
*/
SPI_StartTransmitPacket();//#
#ifdef USE_NAVICTRL
SPI_StartTransmitPacket();
SendSPI = 4;
#endif
timer = SetDelay(20); // every 20 ms
}
}
 
SendSPI = 4;
timer = SetDelay(20);
}
//if(UpdateMotor) DebugOut.Analog[26]++;
}
if(!SendSPI) { SPI_TransmitByte(); }
#ifdef USE_NAVICTRL
if(!SendSPI)
{ // SendSPI is decremented in timer0.c with a rate of 9.765 kHz.
// within the SPI_TransmitByte() routine the value is set to 4.
// I.e. the SPI_TransmitByte() is called at a rate of 9.765 kHz/4= 2441.25 Hz,
// and therefore the time of transmission of a complete spi-packet (32 bytes) is 32*4/9.765 kHz = 13.1 ms.
SPI_TransmitByte();
}
#endif
}
return (1);
return (1);
}
 
/branches/V0.69k Code Redesign killagreg/main.h
1,6 → 1,8
#ifndef _MAIN_H
#define _MAIN_H
#define _MAIN_H
 
#include <avr/io.h>
 
//Hier die Quarz Frequenz einstellen
#if defined (__AVR_ATmega32__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
8,92 → 10,27
 
#if defined (__AVR_ATmega644__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
//#define SYSCLK 16000000L //Quarz Frequenz in Hz
#endif
 
// neue Hardware
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;}
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;}
#define ROT_FLASH PORTB ^= 0x01
#define GRN_OFF PORTB &=~0x02
#define GRN_ON PORTB |= 0x02
#define GRN_FLASH PORTB ^= 0x02
#if defined (__AVR_ATmega644P__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
#define F_CPU SYSCLK
//#ifndef F_CPU
//#error ################## F_CPU nicht definiert oder ungültig #############
//#endif
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#define EEPROM_ADR_VALID 1
#define EEPROM_ADR_ACTIVE_SET 2
#define EEPROM_ADR_LAST_OFFSET 3
 
#define EEPROM_ADR_ACC_NICK 4
#define EEPROM_ADR_ACC_ROLL 6
#define EEPROM_ADR_ACC_Z 8
// neue Hardware
#define ROT_OFF {if(BoardRelease == 10) PORTB &=~(1<<PORTB0); else PORTB |= (1<<PORTB0);}
#define ROT_ON {if(BoardRelease == 10) PORTB |= (1<<PORTB0); else PORTB &=~(1<<PORTB0);}
#define ROT_FLASH PORTB ^= (1<<PORTB0)
#define GRN_OFF PORTB &=~(1<<PORTB1)
#define GRN_ON PORTB |= (1<<PORTB1)
#define GRN_FLASH PORTB ^= (1<<PORTB1)
 
#define EEPROM_ADR_PARAM_BEGIN 100
#include <inttypes.h>
 
#define CFG_HOEHENREGELUNG 0x01
#define CFG_HOEHEN_SCHALTER 0x02
#define CFG_HEADING_HOLD 0x04
#define CFG_KOMPASS_AKTIV 0x08
#define CFG_KOMPASS_FIX 0x10
#define CFG_GPS_AKTIV 0x20
#define CFG_ACHSENKOPPLUNG_AKTIV 0x40
#define CFG_DREHRATEN_BEGRENZER 0x80
extern uint8_t BoardRelease;
 
#define CFG_LOOP_OBEN 0x01
#define CFG_LOOP_UNTEN 0x02
#define CFG_LOOP_LINKS 0x04
#define CFG_LOOP_RECHTS 0x08
 
//#define SYSCLK
//extern unsigned long SYSCLK;
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll;
extern volatile unsigned char SenderOkay;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern unsigned char PlatinenVersion;
extern unsigned char SendVersionToNavi;
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length);
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length);
extern unsigned char GetActiveParamSetNumber(void);
extern unsigned char EEPromArray[];
 
#include <stdlib.h>
#include <string.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <avr/boot.h>
#include <avr/wdt.h>
 
#include "old_macros.h"
 
#include "_Settings.h"
#include "printf_P.h"
#include "timer0.h"
#include "uart.h"
#include "analog.h"
#include "twimaster.h"
#include "menu.h"
#include "rc.h"
#include "fc.h"
#include "gps.h"
#include "spi.h"
 
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
 
#define DEBUG_DISPLAY_INTERVALL 123 // in ms
 
 
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU ))
#endif //_MAIN_H
 
 
/branches/V0.69k Code Redesign killagreg/makefile
1,31 → 1,32
#--------------------------------------------------------------------
# MCU name
MCU = atmega644
#MCU = atmega644
MCU = atmega644p
F_CPU = 20000000
#-------------------------------------------------------------------
HAUPT_VERSION = 0
NEBEN_VERSION = 69
VERSION_MAJOR = 0
VERSION_MINOR = 69
VERSION_INDEX = 10
 
VERSION_KOMPATIBEL = 7 # PC-Kompatibilität
VERSION_COMPATIBLE = 7 # PC-Kompatibilität
#-------------------------------------------------------------------
#OPTIONS
# Use on of the extensions für a gps solution
# If no extension is used the support for the MK3MAG only is included.
#EXT = KILLAGREG
#EXT = NAVICTRL
#-------------------------------------------------------------------
 
ifeq ($(MCU), atmega32)
# FUSE_SETTINGS= -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m
 
HEX_NAME = MEGA32
endif
 
ifeq ($(MCU), atmega644)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
# -u bei neuen Controllern wieder einspielen
HEX_NAME = MEGA644
HEX_NAME = MEGA644_$(EXT)
endif
 
ifeq ($(MCU), atmega644p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
HEX_NAME = MEGA644
HEX_NAME = MEGA644p_$(EXT)
endif
 
 
44,39 → 45,40
# Target file name (without extension).
 
ifeq ($(VERSION_INDEX), 0)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a
endif
ifeq ($(VERSION_INDEX), 1)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b
endif
ifeq ($(VERSION_INDEX), 2)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c
endif
ifeq ($(VERSION_INDEX), 3)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d
endif
ifeq ($(VERSION_INDEX), 4)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e
endif
ifeq ($(VERSION_INDEX), 5)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f
endif
ifeq ($(VERSION_INDEX), 6)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g
endif
ifeq ($(VERSION_INDEX), 7)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h
endif
ifeq ($(VERSION_INDEX), 8)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)i
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i
endif
ifeq ($(VERSION_INDEX), 9)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)j
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j
endif
ifeq ($(VERSION_INDEX), 10)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)k
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k
endif
 
 
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
83,9 → 85,19
 
##########################################################################################################
# List C source files here. (C dependencies are automatically generated.)
SRC = main.c uart.c printf_P.c timer0.c analog.c menu.c
SRC += twimaster.c rc.c fc.c GPS.c spi.c
 
SRC = main.c uart.c printf_P.c timer0.c timer2.c analog.c menu.c led.c
SRC += twimaster.c rc.c fc.c eeprom.c fifo.c
ifeq ($(MCU), atmega644p)
SRC += uart1.c
endif
ifeq ($(EXT), KILLAGREG)
SRC += mm3.c mymath.c gps.c ubx.c
else
SRC += mk3mag.c
endif
ifeq ($(EXT), NAVICTRL)
SRC += spi.c
endif
##########################################################################################################
 
 
127,9 → 139,18
#CFLAGS += -std=c99
CFLAGS += -std=gnu99
 
CFLAGS += -DVERSION_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX)
CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_COMPATIBLE=$(VERSION_COMPATIBLE) -DVERSION_INDEX=$(VERSION_INDEX)
 
ifeq ($(EXT), KILLAGREG)
CFLAGS += -DUSE_KILLAGREG
endif
ifeq ($(EXT), NAVICTRL)
CFLAGS += -DUSE_NAVICTRL
endif
 
 
 
 
# Optional assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create listing
/branches/V0.69k Code Redesign killagreg/menu.c
4,15 → 4,31
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <stdlib.h>
#include <inttypes.h>
#include "main.h"
#include "eeprom.h"
#include "timer2.h"
#include "fc.h"
#include "rc.h"
#include "uart.h"
#include "printf_P.h"
#include "analog.h"
#ifdef USE_KILLAGREG
#include "mm3.h"
#include "ubx.h"
#endif
#include "_Settings.h"
 
unsigned int TestInt = 0;
#define ARRAYGROESSE 10
unsigned char Array[ARRAYGROESSE] = {1,2,3,4,5,6,7,8,9,10};
char DisplayBuff[80] = "Hallo Welt";
unsigned char DispPtr = 0;
unsigned char RemoteTasten = 0;
 
#define ARRAYSIZE 10
uint8_t Array[ARRAYSIZE] = {1,2,3,4,5,6,7,8,9,10};
#define DISPLAYBUFFSIZE 80
int8_t DisplayBuff[DISPLAYBUFFSIZE] = "Hello World";
uint8_t DispPtr = 0;
uint8_t RemoteButtons = 0;
 
#define KEY1 0x01
#define KEY2 0x02
#define KEY3 0x04
19,115 → 35,204
#define KEY4 0x08
#define KEY5 0x10
 
void LcdClear(void)
/************************************/
/* Clear LCD Buffer */
/************************************/
void LCD_Clear(void)
{
unsigned char i;
for(i=0;i<80;i++) DisplayBuff[i] = ' ';
uint8_t i;
for( i = 0; i < DISPLAYBUFFSIZE; i++) DisplayBuff[i] = ' ';
}
 
void Menu(void)
 
/************************************/
/* Update Menu on LCD */
/************************************/
// Display with 20 characters in 4 lines
void LCD_PrintMenu(void)
{
static unsigned char MaxMenue = 11,MenuePunkt=0;
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; }
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;}
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0;
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} else {LCD_printfxy(16,0,"[%i]",MenuePunkt);};
switch(MenuePunkt)
{
case 0:
#ifdef USE_KILLAGREG
static uint8_t MaxMenuItem = 14;
#else
static uint8_t MaxMenuItem = 11;
#endif
static uint8_t MenuItem=0;
 
// if KEY1 is activated goto previous menu item
if(RemoteButtons & KEY1)
{
if(MenuItem) MenuItem--;
else MenuItem = MaxMenuItem;
LCD_Clear();
RemotePollDisplayLine = -1;
}
// if KEY2 is activated goto next menu item
if(RemoteButtons & KEY2)
{
if (MenuItem == MaxMenuItem) MenuItem = 0;
else MenuItem++;
LCD_Clear();
RemotePollDisplayLine = -1;
}
 
// if KEY1 and KEY2 is activated goto initial menu item
if((RemoteButtons & KEY1) && (RemoteButtons & KEY2)) MenuItem = 0;
 
// print menu item number in the upper right corner
if(MenuItem < 10)
{
LCD_printfxy(17,0,"[%i]",MenuItem);
}
else
{
LCD_printfxy(16,0,"[%i]",MenuItem);
}
 
switch(MenuItem)
{
case 0:// Version Info Menu Item
LCD_printfxy(0,0,"+ MikroKopter +");
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a');
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber());
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",BoardRelease/10,BoardRelease%10,VERSION_MAJOR, VERSION_MINOR,VERSION_INDEX+'a');
LCD_printfxy(0,2,"Setting: %d ", GetActiveParamSet());
LCD_printfxy(0,3,"(c) Holger Buss");
// if(RemoteTasten & KEY3) TestInt--;
// if(RemoteTasten & KEY4) TestInt++;
break;
case 1:
if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
{
LCD_printfxy(0,0,"Hoehe: %5i",HoehenWert);
LCD_printfxy(0,1,"SollHoehe: %5i",SollHoehe);
LCD_printfxy(0,2,"Luftdruck: %5i",MessLuftdruck);
LCD_printfxy(0,3,"Off : %5i",DruckOffsetSetting);
case 1:// Height Control Menu Item
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
{
LCD_printfxy(0,0,"Height: %5i",ReadingHeight);
LCD_printfxy(0,1,"Set Point: %5i",SetPointHeight);
LCD_printfxy(0,2,"Air Press.:%5i",ReadingAirPressure);
LCD_printfxy(0,3,"Offset :%5i",PressureSensorOffset);
}
else
{
LCD_printfxy(0,1,"Keine ");
LCD_printfxy(0,2,"Höhenregelung");
else
{
LCD_printfxy(0,1,"No ");
LCD_printfxy(0,2,"Height Control");
}
 
break;
case 2:
LCD_printfxy(0,0,"akt. Lage");
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024);
case 2:// Attitude Menu Item
LCD_printfxy(0,0,"Attitude");
LCD_printfxy(0,1,"Pitch: %5i",IntegralPitch/1024);
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024);
LCD_printfxy(0,3,"Kompass: %5i",KompassValue);
LCD_printfxy(0,3,"Heading: %5i",CompassHeading);
break;
case 3:
LCD_printfxy(0,0,"K1:%4i K2:%4i ",PPM_in[1],PPM_in[2]);
LCD_printfxy(0,1,"K3:%4i K4:%4i ",PPM_in[3],PPM_in[4]);
LCD_printfxy(0,2,"K5:%4i K6:%4i ",PPM_in[5],PPM_in[6]);
LCD_printfxy(0,3,"K7:%4i K8:%4i ",PPM_in[7],PPM_in[8]);
case 3:// Remote Control Channel Menu Item
LCD_printfxy(0,0,"C1:%4i C2:%4i ",PPM_in[1],PPM_in[2]);
LCD_printfxy(0,1,"C3:%4i C4:%4i ",PPM_in[3],PPM_in[4]);
LCD_printfxy(0,2,"C5:%4i C6:%4i ",PPM_in[5],PPM_in[6]);
LCD_printfxy(0,3,"C7:%4i C8:%4i ",PPM_in[7],PPM_in[8]);
break;
case 4:
LCD_printfxy(0,0,"Ni:%4i Ro:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_NICK]],PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]);
LCD_printfxy(0,1,"Gs:%4i Gi:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_GAS]],PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]);
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]]);
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]],PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]);
case 4:// Remote Control Mapping Menu Item
LCD_printfxy(0,0,"Pi:%4i Ro:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_PITCH]],PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]);
LCD_printfxy(0,1,"Gs:%4i Ya:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_THRUST]],PPM_in[ParamSet.ChannelAssignment[CH_YAW]]);
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI1]],PPM_in[ParamSet.ChannelAssignment[CH_POTI2]]);
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI3]],PPM_in[ParamSet.ChannelAssignment[CH_POTI4]]);
break;
case 5:
case 5:// Gyro Sensor Menu Item
LCD_printfxy(0,0,"Gyro - Sensor");
if(PlatinenVersion == 10)
if(BoardRelease == 10)
{
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll);
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier);
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueGyrPitch - AdNeutralPitch, AdNeutralPitch);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll);
LCD_printfxy(0,3,"Yaw %4i (%3i)",Reading_GyroYaw, AdNeutralYaw);
}
else
else
{
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2);
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier/2);
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueGyrPitch - AdNeutralPitch, AdNeutralPitch/2);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll/2);
LCD_printfxy(0,3,"Yaw %4i (%3i)",Reading_GyroYaw, AdNeutralYaw/2);
}
break;
case 6:
case 6:// Acceleration Sensor Menu Item
LCD_printfxy(0,0,"ACC - Sensor");
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertAccNick,NeutralAccX);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertAccRoll,NeutralAccY);
LCD_printfxy(0,3,"Hoch %4i (%3i)",Mittelwert_AccHoch/*accumulate_AccHoch / messanzahl_AccHoch*/,(int)NeutralAccZ);
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueAccPitch, NeutralAccX);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueAccRoll, NeutralAccY);
LCD_printfxy(0,3,"Height %4i (%3i)",Mean_AccTop, (int)NeutralAccZ);
break;
case 7:
LCD_printfxy(0,1,"Spannung: %5i",UBat);
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay);
case 7:// Accumulator Voltage / Remote Control Level
LCD_printfxy(0,1,"Voltage: %5i",UBat);
LCD_printfxy(0,2,"RC-Level: %5i",RC_Quality);
break;
case 8:
LCD_printfxy(0,0,"Kompass ");
LCD_printfxy(0,1,"Richtung: %5i",KompassRichtung);
LCD_printfxy(0,2,"Messwert: %5i",KompassValue);
LCD_printfxy(0,3,"Start: %5i",KompassStartwert);
case 8:// Compass Menu Item
LCD_printfxy(0,0,"Compass ");
LCD_printfxy(0,1,"Course: %5i",CompassCourse);
LCD_printfxy(0,2,"Heading: %5i",CompassHeading);
LCD_printfxy(0,3,"OffCourse: %5i",CompassOffCourse);
break;
case 9:
LCD_printfxy(0,0,"Poti1: %3i",Poti1);
LCD_printfxy(0,1,"Poti2: %3i",Poti2);
LCD_printfxy(0,2,"Poti3: %3i",Poti3);
LCD_printfxy(0,3,"Poti4: %3i",Poti4);
case 9:// Poti Menu Item
LCD_printfxy(0,0,"Po1: %3i Po5: %3i" ,Poti1,Poti5); //PPM24-Extesion
LCD_printfxy(0,1,"Po2: %3i Po6: %3i" ,Poti2,Poti6); //PPM24-Extesion
LCD_printfxy(0,2,"Po3: %3i Po7: %3i" ,Poti3,Poti7); //PPM24-Extesion
LCD_printfxy(0,3,"Po4: %3i Po8: %3i" ,Poti4,Poti8); //PPM24-Extesion
break;
case 10:
case 10:// Servo Menu Item
LCD_printfxy(0,0,"Servo " );
LCD_printfxy(0,1,"Setpoint %3i",Parameter_ServoNickControl);
LCD_printfxy(0,2,"Stellung: %3i",ServoValue);
LCD_printfxy(0,3,"Range:%3i-%3i",EE_Parameter.ServoNickMin,EE_Parameter.ServoNickMax);
LCD_printfxy(0,1,"Setpoint %3i",FCParam.ServoPitchControl);
LCD_printfxy(0,2,"Position: %3i",ServoValue);
LCD_printfxy(0,3,"Range:%3i-%3i",ParamSet.ServoPitchMin, ParamSet.ServoPitchMax);
break;
case 11:
case 11://Extern Control
LCD_printfxy(0,0,"ExternControl " );
LCD_printfxy(0,1,"Ni:%4i Ro:%4i ",ExternControl.Nick,ExternControl.Roll);
LCD_printfxy(0,2,"Gs:%4i Gi:%4i ",ExternControl.Gas,ExternControl.Gier);
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Hight,ExternControl.Config);
LCD_printfxy(0,1,"Pi:%4i Ro:%4i ",ExternControl.Pitch, ExternControl.Roll);
LCD_printfxy(0,2,"Th:%4i Ya:%4i ",ExternControl.Thrust, ExternControl.Yaw);
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Height, ExternControl.Config);
break;
default: MaxMenue = MenuePunkt - 1;
MenuePunkt = 0;
 
#ifdef USE_KILLAGREG
case 12://GPS Lat/Lon coords
if (GPSInfo.status == INVALID)
{
LCD_printfxy(0,0,"No GPS data!");
}
else
{
switch (GPSInfo.satfix)
{
case SATFIX_NONE:
LCD_printfxy(0,0,"Sats: %d Fix: No", GPSInfo.satnum);
break;
case SATFIX_2D:
LCD_printfxy(0,0,"Sats: %d Fix: 2D", GPSInfo.satnum);
break;
case SATFIX_3D:
LCD_printfxy(0,0,"Sats: %d Fix: 3D", GPSInfo.satnum);
break;
default:
LCD_printfxy(0,0,"Sats: %d Fix: ??", GPSInfo.satnum);
break;
}
int16_t i1,i2,i3;
i1 = (int16_t)(GPSInfo.longitude/10000000L);
i2 = abs((int16_t)((GPSInfo.longitude%10000000L)/10000L));
i3 = abs((int16_t)(((GPSInfo.longitude%10000000L)%10000L)/10L));
LCD_printfxy(0,1,"Lon: %d.%.3d%.3d deg",i1, i2, i3);
i1 = (int16_t)(GPSInfo.latitude/10000000L);
i2 = abs((int16_t)((GPSInfo.latitude%10000000L)/10000L));
i3 = abs((int16_t)(((GPSInfo.latitude%10000000L)%10000L)/10L));
LCD_printfxy(0,2,"Lat: %d.%.3d%.3d deg",i1, i2, i3);
i1 = (int16_t)(GPSInfo.altitude/1000L);
i2 = abs((int16_t)(GPSInfo.altitude%1000L));
LCD_printfxy(0,3,"Alt: %d.%.3d m",i1, i2);
}
break;
case 13:// MM3 Kompass
LCD_printfxy(0,0,"MM3 Offset");
LCD_printfxy(0,1,"X_Offset: %3i",MM3_calib.X_off);
LCD_printfxy(0,2,"Y_Offset: %3i",MM3_calib.Y_off);
LCD_printfxy(0,3,"Z_Offset: %3i",MM3_calib.Z_off);
break;
case 14://MM3 Range
LCD_printfxy(0,0,"MM3 Range");
LCD_printfxy(0,1,"X_Range: %4i",MM3_calib.X_range);
LCD_printfxy(0,2,"Y_Range: %4i",MM3_calib.Y_range);
LCD_printfxy(0,3,"Z_Range: %4i",MM3_calib.Z_range);
break;
#endif
 
default: MaxMenuItem = MenuItem - 1;
MenuItem = 0;
break;
}
RemoteTasten = 0;
RemoteButtons = 0;
}
/branches/V0.69k Code Redesign killagreg/menu.h
1,6 → 1,16
extern void Menu(void);
extern void LcdClear(void);
extern char DisplayBuff[80];
extern unsigned char DispPtr;
extern unsigned char RemoteTasten;
#ifndef _MENU_H
#define _MENU_H
 
#include <inttypes.h>
 
#define DISPLAYBUFFSIZE 80
 
extern void LCD_PrintMenu(void);
extern void LCD_Clear(void);
extern int8_t DisplayBuff[DISPLAYBUFFSIZE];
extern uint8_t DispPtr;
extern uint8_t RemoteButtons;
 
#endif //_MENU_H
 
 
/branches/V0.69k Code Redesign killagreg/mk3mag.c
0,0 → 1,88
#include <avr/io.h>
#include <stdlib.h>
#include <inttypes.h>
#include "timer0.h"
#include "uart.h"
#include "fc.h"
#include "rc.h"
#include "eeprom.h"
#include "mk3mag.h"
 
uint8_t PWMTimeout = 12;
ToMk3Mag_t ToMk3Mag;
 
 
/*********************************************/
/* Initialize Interface to MK3MAG Compass */
/*********************************************/
void MK3MAG_Init(void)
{
// Port PC4 connected to PWM output from compass module
DDRC &= ~(1<<DDC4); // set as input
PORTC |= (1<<PORTC4); // pull up to increase PWM counter also if nothing is connected
 
PWMTimeout = 0;
 
ToMk3Mag.CalState = 0;
ToMk3Mag.Orientation = 1;
}
 
 
/*********************************************/
/* Get PWM from MK3MAG */
/*********************************************/
void MK3MAG_Update(void) // called every 102.4 us by timer 0 ISR
{
static uint16_t PWMCount = 0;
static uint16_t BeepDelay = 0;
// The pulse width varies from 1ms (0°) to 36.99ms (359.9°)
// in other words 100us/° with a +1ms offset.
// The signal goes low for 65ms between pulses,
// so the cycle time is 65mS + the pulse width.
 
// pwm is high
if(PINC & (1<<PINC4))
{ // If PWM signal is high increment PWM high counter
// This counter is incremented by a periode of 102.4us,
// i.e. the resoluton of pwm coded heading is approx. 1 deg.
PWMCount++;
// pwm overflow?
if (PWMCount > 400)
{
if(PWMTimeout) PWMTimeout--; // decrement timeout
CompassHeading = -1; // unknown heading
PWMCount = 0; // reset PWM Counter
}
 
}
else // pwm is low
{ // ignore pwm values values of 0 and higher than 37 ms
if((PWMCount) && (PWMCount < 362)) // 362 * 102.4us = 37.0688 ms
{
if(PWMCount <10) CompassHeading = 0;
else CompassHeading = ((uint32_t)(PWMCount - 10) * 1049L)/1024; // correct timebase and offset
CompassOffCourse = ((540 + CompassHeading - CompassCourse) % 360) - 180;
PWMTimeout = 12; // if 12 periodes long no valid PWM was detected the data are invalid
// 12 * 362 counts * 102.4 us
}
else
{ // bad pwm value (out of range or permanent low)
if(PWMTimeout) PWMTimeout--; // decrement timeout
CompassHeading = -1; // unknown heading
CompassOffCourse = 0;
}
PWMCount = 0; // reset pwm counter
}
 
if(!PWMTimeout)
{
if(CheckDelay(BeepDelay))
{
if(!BeepTime) BeepTime = 100; // make noise with 10Hz to signal the compass problem
BeepDelay = SetDelay(100);
}
}
}
 
 
 
/branches/V0.69k Code Redesign killagreg/mk3mag.h
0,0 → 1,21
#ifndef _MK3MAG_H
#define _MK3MAG_H
 
typedef struct
{
int16_t Attitude[2];
uint8_t UserParam[2];
uint8_t CalState;
uint8_t Orientation;
} ToMk3Mag_t;
 
extern ToMk3Mag_t ToMk3Mag;
 
// Initialization
void MK3MAG_Init(void);
 
// should be called cyclic to get actual compass heading
void MK3MAG_Update(void);
 
#endif //_MK3MAG_H
 
/branches/V0.69k Code Redesign killagreg/mm3.c
0,0 → 1,476
/*
 
Copyright 2008, by Killagreg
 
This program (files mm3.c and mm3.h) is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
either version 3 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
 
Please note: The original implementation was done by Niklas Nold.
All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de
*/
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
 
#include "mm3.h"
#include "main.h"
#include "mymath.h"
#include "fc.h"
#include "timer0.h"
#include "rc.h"
#include "eeprom.h"
#include "printf_P.h"
 
#define MAX_AXIS_VALUE 500
 
 
typedef struct
{
uint8_t STATE;
uint16_t DRDY;
uint8_t AXIS;
int16_t x_axis;
int16_t y_axis;
int16_t z_axis;
} MM3_working_t;
 
 
// MM3 State Machine
#define MM3_STATE_RESET 0
#define MM3_STATE_START_TRANSFER 1
#define MM3_STATE_WAIT_DRDY 2
#define MM3_STATE_DRDY 3
#define MM3_STATE_BYTE2 4
 
#define MM3_X_AXIS 0x01
#define MM3_Y_AXIS 0x02
#define MM3_Z_AXIS 0x03
 
 
#define MM3_PERIOD_32 0x00
#define MM3_PERIOD_64 0x10
#define MM3_PERIOD_128 0x20
#define MM3_PERIOD_256 0x30
#define MM3_PERIOD_512 0x40
#define MM3_PERIOD_1024 0x50
#define MM3_PERIOD_2048 0x60
#define MM3_PERIOD_4096 0x70
 
MM3_calib_t MM3_calib;
volatile MM3_working_t MM3;
volatile uint8_t MM3_Timeout = 0;
 
 
 
/*********************************************/
/* Initialize Interface to MM3 Compass */
/*********************************************/
void MM3_Init(void)
{
uint8_t sreg = SREG;
 
cli();
 
// Configure Pins for SPI
// set SCK (PB7), MOSI (PB5) as output
DDRB |= (1<<DDB7)|(1<<DDB5);
// set MISO (PB6) as input
DDRB &= ~(1<<DDB6);
 
#ifdef USE_WALTER_EXT // walthers board
// Output Pins (J9)PC6->MM3_SS ,(J8)PB2->MM3_RESET
DDRB |= (1<<DDB2);
DDRC |= (1<<DDC6);
// set pins permanent to low
PORTB &= ~((1<<PORTB2));
PORTC &= ~((1<<PORTC6));
#else // killagregs board
// Output Pins PC4->MM3_SS ,PC5->MM3_RESET
DDRC |= (1<<DDC4)|(1<<DDC5);
// set pins permanent to low
PORTC &= ~((1<<PORTC4)|(1<<PORTC5));
#endif
 
// Initialize SPI-Interface
// Enable interrupt (SPIE=1)
// Enable SPI bus (SPE=1)
// MSB transmitted first (DORD = 0)
// Master SPI Mode (MSTR=1)
// Clock polarity low when idle (CPOL=0)
// Clock phase sample at leading edge (CPHA=0)
// Clock rate = SYSCLK/128 (SPI2X=0, SPR1=1, SPR0=1) 20MHz/128 = 156.25kHz
SPCR = (1<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(1<<SPR1)|(1<<SPR0);
SPSR &= ~(1<<SPI2X);
 
// Init Statemachine
MM3.AXIS = MM3_X_AXIS;
MM3.STATE = MM3_STATE_RESET;
 
// Read calibration from EEprom
MM3_calib.X_off = (int8_t)GetParamByte(PID_MM3_X_OFF);
MM3_calib.Y_off = (int8_t)GetParamByte(PID_MM3_Y_OFF);
MM3_calib.Z_off = (int8_t)GetParamByte(PID_MM3_Z_OFF);
MM3_calib.X_range = (int16_t)GetParamWord(PID_MM3_X_RANGE);
MM3_calib.Y_range = (int16_t)GetParamWord(PID_MM3_Y_RANGE);
MM3_calib.Z_range = (int16_t)GetParamWord(PID_MM3_Z_RANGE);
 
MM3_Timeout = 0;
 
SREG = sreg;
}
 
 
/*********************************************/
/* Get Data from MM3 */
/*********************************************/
void MM3_Update(void) // called every 102.4 µs by timer 0 ISR
{
switch (MM3.STATE)
{
case MM3_STATE_RESET:
#ifdef USE_WALTER_EXT // walthers board
PORTC &= ~(1<<PORTC6); // select slave
PORTB |= (1<<PORTB2); // PB2 to High, MM3 Reset
#else
PORTC &= ~(1<<PORTC4); // select slave
PORTC |= (1<<PORTC5); // PC5 to High, MM3 Reset
#endif
MM3.STATE = MM3_STATE_START_TRANSFER;
return;
 
case MM3_STATE_START_TRANSFER:
#ifdef USE_WALTER_EXT // walthers board
PORTB &= ~(1<<PORTB2); // PB2 auf Low (was 102.4 µs at high level)
#else
PORTC &= ~(1<<PORTC5); // PC4 auf Low (was 102.4 µs at high level)
#endif
// write to SPDR triggers automatically the transfer MOSI MISO
// MM3 Period, + AXIS code
switch(MM3.AXIS)
{
case MM3_X_AXIS:
SPDR = MM3_PERIOD_256 + MM3_X_AXIS;
break;
case MM3_Y_AXIS:
SPDR = MM3_PERIOD_256 + MM3_Y_AXIS;
break;
case MM3_Z_AXIS:
SPDR = MM3_PERIOD_256 + MM3_Z_AXIS;
break;
default:
MM3.AXIS = MM3_X_AXIS;
MM3.STATE = MM3_STATE_RESET;
return;
}
 
// DRDY line is not connected, therefore
// wait before reading data back
MM3.DRDY = SetDelay(8); // wait 8ms for data ready
MM3.STATE = MM3_STATE_WAIT_DRDY;
return;
 
case MM3_STATE_WAIT_DRDY:
if (CheckDelay(MM3.DRDY))
{
// write something into SPDR to trigger data reading
SPDR = 0x00;
MM3.STATE = MM3_STATE_DRDY;
}
return;
}
}
 
 
/*********************************************/
/* Interrupt SPI transfer complete */
/*********************************************/
ISR(SPI_STC_vect)
{
static int8_t tmp;
int16_t value;
 
switch (MM3.STATE)
{
// 1st byte received
case MM3_STATE_DRDY:
tmp = SPDR; // store 1st byte
SPDR = 0x00; // trigger transfer of 2nd byte
MM3.STATE = MM3_STATE_BYTE2;
return;
 
case MM3_STATE_BYTE2: // 2nd byte received
value = (int16_t)tmp; // combine the 1st and 2nd byte to a word
value <<= 8; // shift 1st byte to MSB-Position
value |= (int16_t)SPDR; // add 2nd byte
 
if(abs(value) < MAX_AXIS_VALUE) // ignore spikes
{
switch (MM3.AXIS)
{
case MM3_X_AXIS:
MM3.x_axis = value;
MM3.AXIS = MM3_Y_AXIS;
break;
case MM3_Y_AXIS:
MM3.y_axis = value;
MM3.AXIS = MM3_Z_AXIS;
break;
case MM3_Z_AXIS:
MM3.z_axis = value;
MM3.AXIS = MM3_X_AXIS;
break;
default:
MM3.AXIS = MM3_X_AXIS;
break;
}
}
#ifdef USE_WALTER_EXT // walthers board
PORTC |= (1<<PORTC6); // deselect slave
#else
PORTC |= (1<<PORTC4); // deselect slave
#endif
MM3.STATE = MM3_STATE_RESET;
// Update timeout is called every 102.4 µs.
// It takes 2 cycles to write a measurement data request for one axis and
// at at least 8 ms / 102.4 µs = 79 cycles to read the requested data back.
// I.e. 81 cycles * 102.4 µs = 8.3ms per axis.
// The two function accessing the MM3 Data - MM3_Calibrate() and MM3_Heading() -
// decremtent the MM3_Timeout every 100 ms.
// incrementing the counter by 1 every 8.3 ms is sufficient to avoid a timeout.
if ((MM3.x_axis != MM3.y_axis) || (MM3.x_axis != MM3.z_axis) || (MM3.y_axis != MM3.z_axis))
{ // if all axis measurements give diffrent readings the data should be valid
if(MM3_Timeout < 20) MM3_Timeout++;
}
else // something is very strange here
{
if(MM3_Timeout ) MM3_Timeout--;
}
return;
 
default:
return;
}
}
 
 
/*********************************************/
/* Calibrate Compass */
/*********************************************/
void MM3_Calibrate(void)
{
static int16_t x_min, x_max, y_min, y_max, z_min, z_max;
 
switch(CompassCalState)
{
case 1: // change to x-y axis
x_min = 10000;
x_max = -10000;
y_min = 10000;
y_max = -10000;
z_min = 10000;
z_max = -10000;
break;
case 2:
// find Min and Max of the X- and Y-Axis
if(MM3.x_axis < x_min) x_min = MM3.x_axis;
if(MM3.x_axis > x_max) x_max = MM3.x_axis;
if(MM3.y_axis < y_min) y_min = MM3.y_axis;
if(MM3.y_axis > y_max) y_max = MM3.y_axis;
break;
case 3:
// change to z-Axis
break;
case 4:
ROT_ON; // find Min and Max of the Z-axis
if(MM3.z_axis < z_min) z_min = MM3.z_axis;
if(MM3.z_axis > z_max) z_max = MM3.z_axis;
break;
case 5:
// calc range of all axis
MM3_calib.X_range = (x_max - x_min);
MM3_calib.Y_range = (y_max - y_min);
MM3_calib.Z_range = (z_max - z_min);
 
// calc offset of all axis
MM3_calib.X_off = (x_max + x_min) / 2;
MM3_calib.Y_off = (y_max + y_min) / 2;
MM3_calib.Z_off = (z_max + z_min) / 2;
 
// save to EEProm
SetParamByte(PID_MM3_X_OFF, (uint8_t)MM3_calib.X_off);
SetParamByte(PID_MM3_Y_OFF, (uint8_t)MM3_calib.Y_off);
SetParamByte(PID_MM3_Z_OFF, (uint8_t)MM3_calib.Z_off);
SetParamWord(PID_MM3_X_RANGE, (uint16_t)MM3_calib.X_range);
SetParamWord(PID_MM3_Y_RANGE, (uint16_t)MM3_calib.Y_range);
SetParamWord(PID_MM3_Z_RANGE, (uint16_t)MM3_calib.Z_range);
 
CompassCalState = 0;
break;
default:
CompassCalState = 0;
break;
}
}
 
 
/*
void MM3_Calibrate(void)
{
static uint8_t debugcounter = 0;
int16_t x_min = 0, x_max = 0, y_min = 0, y_max = 0, z_min = 0, z_max = 0;
uint8_t measurement = 50, beeper = 0;
uint16_t timer;
 
GRN_ON;
ROT_OFF;
 
// get maximum and minimum reading of all axis
while (measurement)
{
// reset range markers if yawstick ist leftmost
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 100)
{
x_min = 0;
x_max = 0;
y_min = 0;
y_max = 0;
z_min = 0;
z_max = 0;
}
 
if (MM3.x_axis > x_max) x_max = MM3.x_axis;
else if (MM3.x_axis < x_min) x_min = MM3.x_axis;
 
if (MM3.y_axis > y_max) y_max = MM3.y_axis;
else if (MM3.y_axis < y_min) y_min = MM3.y_axis;
 
if (MM3.z_axis > z_max) z_max = MM3.z_axis;
else if (MM3.z_axis < z_min) z_min = MM3.z_axis;
 
if (!beeper)
{
ROT_FLASH;
GRN_FLASH;
BeepTime = 50;
beeper = 50;
}
beeper--;
// loop with period of 10 ms / 100 Hz
timer = SetDelay(10);
while(!CheckDelay(timer));
 
if(debugcounter++ > 30)
{
printf("\n\rXMin:%4d, XMax:%4d, YMin:%4d, YMax:%4d, ZMin:%4d, ZMax:%4d",x_min,x_max,y_min,y_max,z_min,z_max);
debugcounter = 0;
}
 
// If thrust is less than 100, stop calibration with a delay of 0.5 seconds
if (PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] < 100) measurement--;
}
// Rage of all axis
MM3_calib.X_range = (x_max - x_min);
MM3_calib.Y_range = (y_max - y_min);
MM3_calib.Z_range = (z_max - z_min);
 
// Offset of all axis
MM3_calib.X_off = (x_max + x_min) / 2;
MM3_calib.Y_off = (y_max + y_min) / 2;
MM3_calib.Z_off = (z_max + z_min) / 2;
 
// save to EEProm
SetParamByte(PID_MM3_X_OFF, (uint8_t)MM3_calib.X_off);
SetParamByte(PID_MM3_Y_OFF, (uint8_t)MM3_calib.Y_off);
SetParamByte(PID_MM3_Z_OFF, (uint8_t)MM3_calib.Z_off);
SetParamWord(PID_MM3_X_RANGE, (uint16_t)MM3_calib.X_range);
SetParamWord(PID_MM3_Y_RANGE, (uint16_t)MM3_calib.Y_range);
SetParamWord(PID_MM3_Z_RANGE, (uint16_t)MM3_calib.Z_range);
 
}
*/
 
/*********************************************/
/* Calculate north direction (heading) */
/*********************************************/
void MM3_Heading(void)
{
int32_t sin_pitch, cos_pitch, sin_roll, cos_roll, sin_yaw, cos_yaw;
int32_t Hx, Hy, Hz, Hx_corr, Hy_corr;
int16_t angle;
uint16_t div_factor;
int16_t heading;
 
if (MM3_Timeout)
{
// Offset correction and normalization (values of H are +/- 512)
Hx = (((int32_t)(MM3.x_axis - MM3_calib.X_off)) * 1024) / (int32_t)MM3_calib.X_range;
Hy = (((int32_t)(MM3.y_axis - MM3_calib.Y_off)) * 1024) / (int32_t)MM3_calib.Y_range;
Hz = (((int32_t)(MM3.z_axis - MM3_calib.Z_off)) * 1024) / (int32_t)MM3_calib.Z_range;
 
// Compensate the angle of the MM3-arrow to the head of the MK by a yaw rotation transformation
// assuming the MM3 board is mounted parallel to the frame.
// User Param 4 is used to define the positive angle from the MM3-arrow to the MK heading
// in a top view counter clockwise direction.
// North is in opposite direction of the small arrow on the MM3 board.
// Therefore 180 deg must be added to that angle.
angle = ((int16_t)ParamSet.UserParam4 + 180);
// wrap angle to interval of 0°- 359°
angle += 360;
angle %= 360;
sin_yaw = (int32_t)(c_sin_8192(angle));
cos_yaw = (int32_t)(c_cos_8192(angle));
 
Hx_corr = Hx;
Hy_corr = Hy;
 
// rotate
Hx = (Hx_corr * cos_yaw - Hy_corr * sin_yaw) / 8192;
Hy = (Hx_corr * sin_yaw + Hy_corr * cos_yaw) / 8192;
 
 
// tilt compensation
 
// calibration factor for transforming Gyro Integrals to angular degrees
div_factor = (uint16_t)ParamSet.UserParam3 * 8;
 
// calculate sinus cosinus of pitch and tilt angle
angle = (IntegralPitch/div_factor);
sin_pitch = (int32_t)(c_sin_8192(angle));
cos_pitch = (int32_t)(c_cos_8192(angle));
 
angle = (IntegralRoll/div_factor);
sin_roll = (int32_t)(c_sin_8192(angle));
cos_roll = (int32_t)(c_cos_8192(angle));
 
Hx_corr = Hx * cos_pitch;
Hx_corr -= Hz * sin_pitch;
Hx_corr /= 8192;
 
Hy_corr = Hy * cos_roll;
Hy_corr += Hz * sin_roll;
Hy_corr /= 8192;
 
// calculate Heading
heading = c_atan2(Hy_corr, Hx_corr);
 
// atan returns angular range from -180 deg to 180 deg in counter clockwise notation
// but the compass course is defined in a range from 0 deg to 360 deg clockwise notation.
if (heading < 0) heading = -heading;
else heading = 360 - heading;
}
else // MM3_Timeout = 0 i.e now new data from external board
{
if(!BeepTime) BeepTime = 100; // make noise to signal the compass problem
heading = -1;
}
// update compass values in fc variables
CompassHeading = heading;
if (CompassHeading < 0) CompassOffCourse = 0;
else CompassOffCourse = ((540 + CompassHeading - CompassCourse) % 360) - 180;
}
/branches/V0.69k Code Redesign killagreg/mm3.h
0,0 → 1,29
#ifndef _MM3_H
#define _MM3_H
 
typedef struct
{
int8_t X_off;
int8_t Y_off;
int8_t Z_off;
int16_t X_range;
int16_t Y_range;
int16_t Z_range;
} MM3_calib_t;
 
extern MM3_calib_t MM3_calib;
 
// Initialization of the MM3 communication
void MM3_Init(void);
 
// should be called cyclic to get actual compass axis readings
void MM3_Update(void);
// this function calibrates the MM3
// and returns immediately if the communication to the MM3-Board is broken.
void MM3_Calibrate(void);
 
// update compass heading
void MM3_Heading(void);
 
#endif //_MM3_H
 
/branches/V0.69k Code Redesign killagreg/mymath.c
0,0 → 1,100
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "mymath.h"
 
// discrete mathematics
 
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192};
 
int16_t c_sin_8192(int16_t angle)
{
int8_t m,n;
int16_t sinus;
 
// avoid negative angles
if (angle < 0)
{
m = -1;
angle = abs(angle);
}
else m = +1;
 
// fold angle to intervall 0 to 359
angle %= 360;
 
// check quadrant
if (angle <= 90) n=1; // first quadrant
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant
else {angle = 360 - angle; n = -1;} //fourth quadrant
// get lookup value
sinus = pgm_read_word(&pgm_sinlookup[angle]);
// calculate sinus value
return (sinus * m * n);
}
 
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
int16_t c_cos_8192(int16_t angle)
{
return (c_sin_8192(90 - angle));
}
 
 
// Arcustangens returns degree in a range of +/. 180 deg
const uint8_t pgm_atanlookup[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79};
 
int16_t c_atan2(int16_t y, int16_t x)
{
int16_t index, angle;
int8_t m;
 
if (!x && !y) return 0; //atan2(0, 0) is undefined
 
if (y < 0) m = -1;
else m = 1;
 
if (!x) return (90 * m); // atan2(y,0) = +/- 90 deg
 
index = (int16_t)(((int32_t)y * 64) / x);// calculate index for lookup table
if (index < 0) index = -index;
 
if (index < 346) angle = pgm_read_byte(&pgm_atanlookup[index]); // lookup for 0 deg to 79 deg
else if (index > 7334) angle = 90; // limit is 90 deg
else if (index > 2444) angle = 89; // 89 deg to 80 deg is mapped via intervalls
else if (index > 1465) angle = 88;
else if (index > 1046) angle = 87;
else if (index > 813) angle = 86;
else if (index > 664) angle = 85;
else if (index > 561) angle = 84;
else if (index > 486) angle = 83;
else if (index > 428) angle = 82;
else if (index > 382) angle = 81;
else angle = 80; // (index>345)
 
if (x > 0) return (angle * m); // 1st and 4th quadrant
else if ((x < 0) && (m > 0)) return (180 - angle); // 2nd quadrant
else return (angle - 180); // ( (x < 0) && (y < 0)) 3rd quadrant
}
 
 
 
// integer square root
uint32_t c_sqrt(uint32_t number)
{
if(!number) return 0;
uint32_t s1, s2;
uint8_t iter = 0;
// initialization of iteration
s2 = number;
do // iterative formula to solve x^2 - n = 0
{
s1 = s2;
s2 = number / s1;
s2 += s1;
s2 /= 2;
iter++;
//if(iter > 40) break;
}while( ( (s1-s2) > 1) && (iter < 40));
return s2;
}
/branches/V0.69k Code Redesign killagreg/mymath.h
0,0 → 1,11
#ifndef _MYMATH_H
#define _MYMATH_H
 
#include <inttypes.h>
 
extern int16_t c_sin_8192(int16_t angle);
extern int16_t c_cos_8192(int16_t angle);
extern int16_t c_atan2(int16_t y, int16_t x);
extern uint32_t c_sqrt(uint32_t number);
 
#endif // _MYMATH_H
/branches/V0.69k Code Redesign killagreg/printf_P.c
1,6 → 1,6
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt
 
/*
/*
Copyright (C) 1993 Free Software Foundation
 
This file is part of the GNU IO Library. This library is free
86,7 → 86,10
#include <varargs.h>
#endif
 
#include "main.h"
#include "old_macros.h"
#include "printf_P.h"
#include "menu.h"
#include "uart.h"
 
 
//#define LIGHTPRINTF
100,22 → 103,22
}
 
 
void PRINT(const char * ptr, unsigned int len)
void PRINT(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(*ptr++);
}
void PRINTP(const char * ptr, unsigned int len)
 
void PRINTP(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(pgm_read_byte(ptr++));
}
 
void PAD_SP(signed char howmany)
void PAD_SP(signed char howmany)
{
for(;howmany>0;howmany--) Putchar(' ');
}
 
void PAD_0(signed char howmany)
void PAD_0(signed char howmany)
{
for(;howmany>0;howmany--) Putchar('0');
}
169,7 → 172,7
 
PrintZiel = ziel; // bestimmt, LCD oder UART
va_start(ap, fmt0);
 
fmt = fmt0;
 
/*
206,7 → 209,7
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d;
}
}
 
#ifndef LIGHTPRINTF
if(ch==' ') {
/*
290,7 → 293,7
_d=va_arg(ap, int);
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d;
}
 
if ((long)_ulong < 0) {
_ulong = -_ulong;
sign = '-';
298,7 → 301,7
base = DEC;
goto number;
} else
/*
/*
if (ch=='n') {
if (flags & LONGINT)
*va_arg(ap, long *) = ret;
306,10 → 309,10
*va_arg(ap, short *) = ret;
else
*va_arg(ap, int *) = ret;
continue; // no output
continue; // no output
} else
*/
#ifndef LIGHTPRINTF
#ifndef LIGHTPRINTF
if (ch=='O'||ch=='o') {
if (ch=='O')
flags |= LONGINT;
357,7 → 360,7
size = strlen(cp);
sign = '\0';
} else
#endif /* LIGHTPRINTF */
#endif /* LIGHTPRINTF */
if(ch=='U'||ch=='u') {
if (ch=='U')
flags |= LONGINT;
401,7 → 404,7
_ulong /= base;
} while (notlastdigit);
#ifndef LIGHTPRINTF
// handle octal leading 0
// handle octal leading 0
if (base==OCT && flags & ALT && *cp != '0')
*--cp = '0';
#endif
/branches/V0.69k Code Redesign killagreg/rc.c
1,5 → 1,5
/*#######################################################################################
Decodieren eines RC Summen Signals
Decodieren eines RC Summen Signals
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
8,75 → 8,170
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "rc.h"
#include "main.h"
 
volatile int PPM_in[11];
volatile int PPM_diff[11]; // das diffenzierte Stick-Signal
volatile unsigned char NewPpmData = 1;
volatile int16_t PPM_in[15]; //PPM24 supports 12 channels per frame
volatile int16_t PPM_diff[15];
volatile uint8_t NewPpmData = 1;
volatile int16_t RC_Quality = 0;
 
//############################################################################
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input
//Capture Funktion benutzt:
void rc_sum_init (void)
//############################################################################
volatile uint8_t NewRCFrames = 0;
 
 
/***************************************************************/
/* 16bit timer 1 is used to decode the PPM-Signal */
/***************************************************************/
void RC_Init (void)
{
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64
uint8_t sreg = SREG;
 
// PWM
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10);
//TCCR1B |= (1 << WGM12);
//OCR1B = 55;
TIMSK1 |= _BV(ICIE1);
AdNeutralGier = 0;
AdNeutralRoll = 0;
AdNeutralNick = 0;
return;
// disable all interrupts before reconfiguration
cli();
 
// PPM-signal is connected to the Input Capture Pin (PD6) of timer 1
DDRD &= ~(1<<DDD6);
PORTD |= (1<<PORTD6);
 
// Channel 5,6,7 is decoded to servo signals at pin PD5 (J3), PD4(J4), PD3(J5)
// set as output
DDRD |= (1<<DDD5)|(1<<DDD4);
// low level
PORTD &= ~((1<<PORTD5)|(1<<PORTD4));
 
// PD3 can't be used in FC 1.1 if 2nd UART is activated
// because TXD1 is at that port
if(BoardRelease == 10)
{
DDRD |= (1<<PORTD3);
PORTD &= ~(1<<PORTD3);
}
 
// Timer/Counter1 Control Register A, B, C
 
// Normal Mode (bits: WGM13=0, WGM12=0, WGM11=0, WGM10=0)
// Compare output pin A & B is disabled (bits: COM1A1=0, COM1A0=0, COM1B1=0, COM1B0=0)
// Set clock source to SYSCLK/64 (bit: CS12=0, CS11=1, CS10=1)
// Enable input capture noise cancler (bit: ICNC1=1)
// Trigger on positive edge of the input capture pin (bit: ICES1=1),
// Therefore the counter incremets at a clock of 20 MHz/64 = 312.5 kHz or 3.2µs
// The longest period is 0xFFFF / 312.5 kHz = 0.209712 s.
TCCR1A &= ~((1<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM11)|(1<<WGM10));
TCCR1B &= ~((1<<WGM13)|(1<<WGM12)|(1<<CS12));
TCCR1B |= (1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);
TCCR1C &= ~((1<<FOC1A)|(1<<FOC1B));
 
// Timer/Counter1 Interrupt Mask Register
 
// Enable Input Capture Interrupt (bit: ICIE1=1)
// Disable Output Compare A & B Match Interrupts (bit: OCIE1B=0, OICIE1A=0)
// Enable Overflow Interrupt (bit: TOIE1=0)
TIMSK1 &= ~((1<<OCIE1B)|(1<<OCIE1A));
TIMSK1 |= (1<<ICIE1)|(1<<TOIE1);
 
RC_Quality = 0;
 
SREG = sreg;
}
 
//############################################################################
//Diese Routine startet und inizialisiert den Timer für RC
SIGNAL(SIG_INPUT_CAPTURE1)
//############################################################################
 
// happens every 0.209712 s.
// check for at least one new frame per timer overflow (timeout)
ISR(TIMER1_OVF_vect)
{
static unsigned int AltICR=0;
signed int signal = 0,tmp;
static int index;
signal = (unsigned int) ICR1 - AltICR;
AltICR = ICR1;
//Syncronisationspause?
// if((signal > (int) Parameter_UserParam2 * 10) && (signal < 8000))
if((signal > 1100) && (signal < 8000))
if (NewRCFrames == 0) RC_Quality -= RC_Quality/8;
NewRCFrames = 0;
}
 
 
/********************************************************************/
/* Every time a positive edge is detected at PD6 */
/********************************************************************/
/* t-Frame
<----------------------------------------------------------------------->
____ ______ _____ ________ ______ sync gap ____
| | | | | | | | | | |
| | | | | | | | | | |
___| |_| |_| |_| |_.............| |________________|
<-----><-------><------><--------> <------> <---
t0 t1 t2 t4 tn t0
 
The PPM-Frame length is 22.5 ms.
Channel high pulse width range is 0.7 ms to 1.7 ms completed by an 0.3 ms low pulse.
The mininimum time delay of two events coding a channel is ( 0.7 + 0.3) ms = 1 ms.
The maximum time delay of two events coding a chanel is ( 1.7 + 0.3) ms = 2 ms.
The minimum duration of all channels at minimum value is 8 * 1 ms = 8 ms.
The maximum duration of all channels at maximum value is 8 * 2 ms = 16 ms.
The remaining time of (22.5 - 8 ms) ms = 14.5 ms to (22.5 - 16 ms) ms = 6.5 ms is
the syncronization gap.
*/
ISR(TIMER1_CAPT_vect) // typical rate of 1 ms to 2 ms
{
int16_t signal = 0, tmp;
static int16_t index;
static uint16_t oldICR1 = 0;
 
// 16bit Input Capture Register ICR1 contains the timer value TCNT1
// at the time the edge was detected
 
// calculate the time delay to the previous event time which is stored in oldICR1
// calculatiing the difference of the two uint16_t and converting the result to an int16_t
// implicit handles a timer overflow 65535 -> 0 the right way.
signal = (uint16_t) ICR1 - oldICR1;
oldICR1 = ICR1;
 
//sync gap? (3.52 ms < signal < 25.6 ms)
if((signal > 1100) && (signal < 8000))
{
// if a sync gap happens and there where at least 4 channels decoded before
// then the NewPpmData flag is reset indicating valid data in the PPM_in[] array.
if(index >= 4)
{
NewPpmData = 0; // Null means NewData for the first 4 channels
NewRCFrames++;
}
// synchronize channel index
index = 1;
}
else // within the PPM frame
{
if(index < 14) // PPM24 supports 12 channels
{
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten
index = 1;
}
else
{
if(index < 10)
// check for valid signal length (0.8 ms < signal < 2.1984 ms)
// signal range is from 1.0ms/3.2us = 312 to 2.0ms/3.2us = 625
if((signal > 250) && (signal < 687))
{
if((signal > 250) && (signal < 687))
{
signal -= 466;
// Stabiles Signal
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;}
// tmp = (7 * (PPM_in[index]) + signal) / 8;
tmp = (3 * (PPM_in[index]) + signal) / 4;
// shift signal to zero symmetric range -154 to 159
signal -= 466; // offset of 1.4912 ms ??? (469 * 3.2µs = 1.5008 ms)
// check for stable signal
if(abs(signal-PPM_in[index]) < 6)
{
if(RC_Quality < 200) RC_Quality +=10;
}
// calculate exponential history for signal
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
if(SenderOkay >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3;
if(tmp < signal-1) tmp++;
// calculate signal difference on good signal level
if(RC_Quality >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; // cut off lower 3 bit for nois reduction
else PPM_diff[index] = 0;
PPM_in[index] = tmp;
}
index++;
if(index == 5) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen
PPM_in[index] = tmp; // update channel value
}
index++; // next channel
// demux sum signal for channels 5 to 7 to J3, J4, J5
if(index == 5) PORTD |= (1<<PORTD5); else PORTD &= ~(1<<PORTD5);
if(index == 6) PORTD |= (1<<PORTD4); else PORTD &= ~(1<<PORTD4);
if(BoardRelease == 10)
{
if(index == 7) PORTD |= (1<<PORTD3); else PORTD &= ~(1<<PORTD3);
}
}
}
if(RC_Quality) RC_Quality--;
}
 
 
/branches/V0.69k Code Redesign killagreg/rc.h
1,29 → 1,11
/*#######################################################################################
Derkodieren eines RC Summen Signals
#######################################################################################*/
 
#ifndef _RC_H
#define _RC_H
 
#if defined (__AVR_ATmega32__)
#define TIMER_TEILER CK64
#define TIMER_RELOAD_VALUE 250
#endif
#include <inttypes.h>
 
#if defined (__AVR_ATmega644__)
//#define TIMER_TEILER CK64
#define TIMER_RELOAD_VALUE 250
//#define TIMER_TEILER CK256 // bei 20MHz
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz
#endif
 
#define GAS PPM_in[2]
 
 
extern void rc_sum_init (void);
 
extern volatile int PPM_in[11];
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal
extern volatile unsigned char NewPpmData;
 
extern void RC_Init (void);
extern volatile int16_t PPM_in[15]; // the RC-Signal
extern volatile int16_t PPM_diff[15]; // the differentiated RC-Signal
extern volatile uint8_t NewPpmData; // 0 indicates a new recieved PPM Frame
extern volatile int16_t RC_Quality; // rc signal quality indicator (0 to 200)
#endif //_RC_H
/branches/V0.69k Code Redesign killagreg/spi.c
1,251 → 1,313
// ######################## SPI - FlightCtrl ###################
#include "main.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdlib.h>
#include "_Settings.h"
#include "spi.h"
#include "fc.h"
#include "rc.h"
#include "eeprom.h"
#include "uart.h"
#include "timer0.h"
 
#define SPI_TXSYNCBYTE1 0xAA
#define SPI_TXSYNCBYTE2 0x83
#define SPI_RXSYNCBYTE1 0x81
#define SPI_RXSYNCBYTE2 0x55
 
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version;
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version;
struct str_ToNaviCtrl ToNaviCtrl;
struct str_FromNaviCtrl FromNaviCtrl;
typedef enum
{
SPI_SYNC1,
SPI_SYNC2,
SPI_DATA
} SPI_RXState_t;
 
unsigned char SPI_BufferIndex;
unsigned char SPI_RxBufferIndex;
 
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)];
unsigned char *SPI_TX_Buffer;
// data exchange packets to and From NaviCtrl
ToNaviCtrl_t ToNaviCtrl;
FromNaviCtrl_t FromNaviCtrl;
 
unsigned char SPITransferCompleted, SPI_ChkSum;
unsigned char SPI_RxDataValid;
// rx packet buffer
#define SPI_RXBUFFER_LEN sizeof(FromNaviCtrl)
uint8_t SPI_RxBuffer[SPI_RXBUFFER_LEN];
uint8_t SPI_RxBufferIndex = 0;
uint8_t SPI_RxBuffer_Request = 0;
 
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_CAL_COMPASS };
unsigned char SPI_CommandCounter = 0;
// tx packet buffer
#define SPI_TXBUFFER_LEN sizeof(ToNaviCtrl)
uint8_t *SPI_TxBuffer;
uint8_t SPI_TxBufferIndex = 0;
 
uint8_t SPITransferCompleted, SPI_ChkSum;
uint8_t SPI_RxDataValid;
 
uint8_t SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_CAL_COMPASS };
uint8_t SPI_CommandCounter = 0;
 
#ifdef USE_SPI_COMMUNICATION
 
//------------------------------------------------------
/*********************************************/
/* Initialize SPI interface to NaviCtrl */
/*********************************************/
void SPI_MasterInit(void)
{
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT);
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64
SPSR = 0;//(1<<SPI2X);
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT);
SPITransferCompleted = 1;
//SPDR = 0x00; // dummy write
ToNaviCtrl.Sync1 = 0xAA;
ToNaviCtrl.Sync2 = 0x83;
ToNaviCtrl.Command = SPI_CMD_USER;
ToNaviCtrl.IntegralNick = 0;
ToNaviCtrl.IntegralRoll = 0;
SPI_RxDataValid = 0;
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT); // set Slave select port as output port
 
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64
SPSR = 0;//(1<<SPI2X);
 
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // Deselect Slave
 
SPI_TxBuffer = (uint8_t *) &ToNaviCtrl; // set pointer to tx-buffer
SPITransferCompleted = 1;
// initialize data packet to NaviControl
ToNaviCtrl.Sync1 = SPI_TXSYNCBYTE1;
ToNaviCtrl.Sync2 = SPI_TXSYNCBYTE2;
 
ToNaviCtrl.Command = SPI_CMD_USER;
ToNaviCtrl.IntegralPitch = 0;
ToNaviCtrl.IntegralRoll = 0;
SPI_RxDataValid = 0;
}
 
//------------------------------------------------------
void SPI_StartTransmitPacket(void)
 
/**********************************************************/
/* Update Data transferd by the SPI from/to NaviCtrl */
/**********************************************************/
void UpdateSPI_Buffer(void)
{
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed
if (!SPITransferCompleted) return;
// _delay_us(30);
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++];
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0;
SPITransferCompleted = 0;
UpdateSPI_Buffer(); // update buffer
int16_t tmp;
cli(); // stop all interrupts to avoid writing of new data during update of that packet.
 
SPI_BufferIndex = 1;
//ebugOut.Analog[16]++;
// -- Debug-Output ---
//----
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
SPDR = ToNaviCtrl.Sync1; // Start transmission
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
// update content of packet to NaviCtrl
ToNaviCtrl.IntegralPitch = (int16_t) (IntegralPitch / 108);
ToNaviCtrl.IntegralRoll = (int16_t) (IntegralRoll / 108);
ToNaviCtrl.GyroHeading = YawGyroHeading / YAW_GYRO_DEG_FACTOR;
ToNaviCtrl.GyroPitch = Reading_GyroPitch;
ToNaviCtrl.GyroRoll = Reading_GyroRoll;
ToNaviCtrl.GyroYaw = Reading_GyroYaw;
ToNaviCtrl.AccPitch = (int16_t) ACC_AMPLIFY * (NaviAccPitch / NaviCntAcc);
ToNaviCtrl.AccRoll = (int16_t) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc);
NaviCntAcc = 0; NaviAccPitch = 0; NaviAccRoll = 0;
 
switch(ToNaviCtrl.Command)
{
case SPI_CMD_USER:
ToNaviCtrl.Param.Byte[0] = FCParam.UserParam1;
ToNaviCtrl.Param.Byte[1] = FCParam.UserParam2;
ToNaviCtrl.Param.Byte[2] = FCParam.UserParam3;
ToNaviCtrl.Param.Byte[3] = FCParam.UserParam4;
ToNaviCtrl.Param.Byte[4] = FCParam.UserParam5;
ToNaviCtrl.Param.Byte[5] = FCParam.UserParam6;
ToNaviCtrl.Param.Byte[6] = FCParam.UserParam7;
ToNaviCtrl.Param.Byte[7] = FCParam.UserParam8;
break;
 
case SPI_CMD_STICK:
tmp = PPM_in[ParamSet.ChannelAssignment[CH_THRUST]]; if(tmp > 127) tmp = 127; else if(tmp < -128) tmp = -128;
ToNaviCtrl.Param.Byte[0] = (int8_t) tmp;
tmp = PPM_in[ParamSet.ChannelAssignment[CH_YAW]]; if(tmp > 127) tmp = 127; else if(tmp < -128) tmp = -128;
ToNaviCtrl.Param.Byte[1] = (int8_t) tmp;
tmp = PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -128) tmp = -128;
ToNaviCtrl.Param.Byte[2] = (int8_t) tmp;
tmp = PPM_in[ParamSet.ChannelAssignment[CH_PITCH]]; if(tmp > 127) tmp = 127; else if(tmp < -128) tmp = -128;
ToNaviCtrl.Param.Byte[3] = (int8_t) tmp;
ToNaviCtrl.Param.Byte[4] = (uint8_t) Poti1;
ToNaviCtrl.Param.Byte[5] = (uint8_t) Poti2;
ToNaviCtrl.Param.Byte[6] = (uint8_t) Poti3;
ToNaviCtrl.Param.Byte[7] = (uint8_t) Poti4;
ToNaviCtrl.Param.Byte[8] = (uint8_t) RC_Quality;
break;
 
case SPI_CMD_CAL_COMPASS:
if(CompassCalState > 5)
{
CompassCalState = 0;
ToNaviCtrl.Param.Byte[0] = 5;
}
else
{
ToNaviCtrl.Param.Byte[0] = CompassCalState;
}
break;
}
 
 
sei(); // enable all interrupts
 
// analyze content of packet from NaviCtrl if valid
if (SPI_RxDataValid)
{
// update gps controls
if(abs(FromNaviCtrl.GPS_Pitch) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (ParamSet.GlobalConfig & CFG_GPS_ACTIVE))
{
GPS_Pitch = FromNaviCtrl.GPS_Pitch;
GPS_Roll = FromNaviCtrl.GPS_Roll;
}
// update compass readings
if(FromNaviCtrl.CompassHeading <= 360)
{
CompassHeading = FromNaviCtrl.CompassHeading;
}
if(CompassHeading < 0) CompassOffCourse = 0;
else CompassOffCourse = ((540 + CompassHeading - CompassCourse) % 360) - 180;
// NaviCtrl wants to beep?
if (FromNaviCtrl.BeepTime > BeepTime && !CompassCalState) BeepTime = FromNaviCtrl.BeepTime;
 
switch (FromNaviCtrl.Command)
{
case SPI_CMD_OSD_DATA:
// ToFlightCtrl.Param.Byte[0] = OsdBar;
// ToFlightCtrl.Param.Int[1] = Distance;
break;
 
case SPI_CMD_GPS_POS:
// ToFlightCtrl.Param.Long[0] = GPS_Data.Longitude;
// ToFlightCtrl.Param.Long[1] = GPS_Data.Latitude;
break;
 
case SPI_CMD_GPS_TARGET:
// ToFlightCtrl.Param.Long[0] = GPS_Data.TargetLongitude;
// ToFlightCtrl.Param.Long[1] = GPS_Data.TargetLatitude;
break;
 
default:
break;
}
}
else // no valid data from NaviCtrl
{
// disable GPS control
GPS_Pitch = 0;
GPS_Roll = 0;
}
}
 
//------------------------------------------------------
//SIGNAL(SIG_SPI)
void SPI_TransmitByte(void)
 
 
/*********************************************/
/* Start Transmission of packet to NaviCtrl */
/*********************************************/
void SPI_StartTransmitPacket(void)
{
static unsigned char SPI_RXState = 0;
unsigned char rxdata;
static unsigned char rxchksum;
if (SPITransferCompleted) return;
if (!(SPSR & (1 << SPIF))) return;
SendSPI = 4;
// _delay_us(30);
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
rxdata = SPDR;
switch ( SPI_RXState)
{
case 0:
SPI_RxBufferIndex = 0;
//DebugOut.Analog[17]++;
rxchksum = rxdata;
if (rxdata == 0x81 ) { SPI_RXState = 1; } // 1. Syncbyte ok
break;
 
case 1:
if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState = 2; } // 2. Syncbyte ok
else SPI_RXState = 0;
//DebugOut.Analog[18]++;
break;
case 2:
SPI_Buffer[SPI_RxBufferIndex++]= rxdata; // get data
//DebugOut.Analog[19]++;
if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl))
{
if (rxdata == rxchksum)
{
unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer));
SPI_RxDataValid = 1;
}
else SPI_RxDataValid = 0;
SPI_RXState = 0;
}
else rxchksum += rxdata;
break;
}
if (SPI_BufferIndex < sizeof(ToNaviCtrl))
{
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
SPDR = SPI_TX_Buffer[SPI_BufferIndex];
ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex];
// SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
if (!SPITransferCompleted) return; // return immediately if transfer is in progress
else // transmission was completed
{
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // Select slave
 
}
else SPITransferCompleted = 1;
SPI_BufferIndex++;
// cyclic commands
ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++];
if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0;
 
SPITransferCompleted = 0; // tranfer is in progress
UpdateSPI_Buffer(); // update data in ToNaviCtrl
 
SPI_TxBufferIndex = 1; //proceed with 2nd byte
 
// -- Debug-Output ---
//----
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
ToNaviCtrl.Chksum = ToNaviCtrl.Sync1; // init checksum
SPDR = ToNaviCtrl.Sync1; // send first byte
}
}
 
//------------------------------------------------------
// This is the spi data transfer between FlightCtrl and NaviCtrl
// Every time this routine is called within the mainloop one byte of the packet to
// the NaviCtrl and one byte of the packet from the NaviCtrl is possible transfered
 
//------------------------------------------------------
void UpdateSPI_Buffer(void)
void SPI_TransmitByte(void)
{
static unsigned char i =0;
signed int tmp;
cli();
ToNaviCtrl.IntegralNick = (int) (IntegralNick / 108);
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / 108);
ToNaviCtrl.GyroCompass = ErsatzKompass / GIER_GRAD_FAKTOR;
ToNaviCtrl.AccNick = (int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc);
ToNaviCtrl.AccRoll = (int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc);
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0;
// ToNaviCtrl.User8 = Parameter_UserParam8;
// ToNaviCtrl.CalState = WinkelOut.CalcState;
static SPI_RXState_t SPI_RXState = SPI_SYNC1;
uint8_t rxdata;
static uint8_t rxchksum;
 
switch(ToNaviCtrl.Command) //
{
case SPI_CMD_USER:
ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1;
ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2;
ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3;
ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4;
ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5;
ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6;
ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7;
break;
if (SPITransferCompleted) return; // return immediatly if transfer was completed
if (!(SPSR & (1 << SPIF))) return; // return if no SPI-IRQ pending
SendSPI = 4; // mait 4 * 0.102 ms for the next call of SPI_TransmitByte() in the main loop
 
case SPI_CMD_STICK:
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[0] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[1] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[2] = (char) tmp;
tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
ToNaviCtrl.Param.Byte[3] = (char) tmp;
ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1;
ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2;
ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3;
ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4;
ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay;
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
break;
case SPI_CMD_CAL_COMPASS:
if(WinkelOut.CalcState > 5)
{
WinkelOut.CalcState = 0;
ToNaviCtrl.Param.Byte[0] = 5;
}
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState;
break;
}
sei();
if (SPI_RxDataValid)
{
if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV))
{
GPS_Nick = FromNaviCtrl.GPS_Nick;
GPS_Roll = FromNaviCtrl.GPS_Roll;
}
if(FromNaviCtrl.CompassValue <= 360) KompassValue = FromNaviCtrl.CompassValue;
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime;
switch (FromNaviCtrl.Command)
{
case SPI_CMD_OSD_DATA:
// ToFlightCtrl.Param.Byte[0] = OsdBar;
// ToFlightCtrl.Param.Int[1] = Distance;
break;
rxdata = SPDR; // save spi data register
 
case SPI_CMD_GPS_POS:
// ToFlightCtrl.Param.Long[0] = GPS_Data.Longitude;
// ToFlightCtrl.Param.Long[1] = GPS_Data.Latitude;
break;
switch (SPI_RXState)
{
case SPI_SYNC1: // first sync byte
SPI_RxBufferIndex = 0; // set pointer to start of rx buffer
rxchksum = rxdata; // initialize checksum
if (rxdata == SPI_RXSYNCBYTE1 )
{ // 1st Syncbyte found
SPI_RXState = SPI_SYNC2; // trigger to state for second sync byte
}
break;
 
case SPI_CMD_GPS_TARGET:
// ToFlightCtrl.Param.Long[0] = GPS_Data.TargetLongitude;
// ToFlightCtrl.Param.Long[1] = GPS_Data.TargetLatitude;
break;
case SPI_SYNC2: // second sync byte
if (rxdata == SPI_RXSYNCBYTE2)
{ // 2nd Syncbyte found
rxchksum += rxdata; // update checksum
SPI_RXState = SPI_DATA; // trigger to state for second sync byte
}
else // 2nd Syncbyte not found
{
SPI_RXState = SPI_SYNC1; // jump back to 1st sync byte
}
break;
 
default:
break;
}
}
else
{
// KompassValue = 0;
// KompassRichtung = 0;
GPS_Nick = 0;
GPS_Roll = 0;
}
case SPI_DATA: // data bytes
SPI_RxBuffer[SPI_RxBufferIndex++] = rxdata; // copy data byte to spi buffer
// if all bytes are received of a packet from the NaviCtrl
if (SPI_RxBufferIndex >= SPI_RXBUFFER_LEN)
{ // last byte transfered is the checksum of the packet
if (rxdata == rxchksum) // checksum matching?
{
// copy SPI_RxBuffer -> FromFlightCtrl
uint8_t *ptr = (uint8_t *)&FromNaviCtrl;
cli();
memcpy(ptr, (uint8_t *) SPI_RxBuffer, sizeof(FromNaviCtrl));
sei();
SPI_RxDataValid = 1;
DebugOut.Analog[18]++;
}
else
{ // checksum does not match
DebugOut.Analog[17]++;
SPI_RxDataValid = 0; // reset valid flag
}
SPI_RXState = SPI_SYNC1; // reset state sync
}
else // not all bytes transfered
{
rxchksum += rxdata; // update checksum
}
break;
}// eof switch(SPI_RXState)
 
// if still some bytes left for transmission to NaviCtrl
if (SPI_TxBufferIndex < SPI_TXBUFFER_LEN)
{
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
 
SPDR = SPI_TxBuffer[SPI_TxBufferIndex]; // transmit byte
ToNaviCtrl.Chksum += SPI_TxBuffer[SPI_TxBufferIndex]; // update checksum for everey byte that was sent
SPI_TxBufferIndex++;
}
else
{
//Transfer of all bytes of the packet to NaviCtrl completed
SPITransferCompleted = 1;
}
}
 
#endif
 
#endif //USE_SPI_COMMUNICATION
 
 
/branches/V0.69k Code Redesign killagreg/spi.h
2,9 → 2,10
#ifndef _SPI_H
#define _SPI_H
 
#include <util/delay.h>
//#include <util/delay.h>
#include <inttypes.h>
 
#define USE_SPI_COMMUNICATION
#define USE_SPI_COMMUNICATION
 
#define SPI_PROTOCOL_COMP 1
 
13,36 → 14,36
#define DD_SS PB4
#define DD_SCK PB7
#define DD_MOSI PB5
#define DD_MISO PB6
#define DD_MISO PB6
 
// for compatibility reasons gcc3.x <-> gcc4.x
#ifndef SPCR
// for compatibility reasons gcc3.x <-> gcc4.x
#ifndef SPCR
#define SPCR SPCR0
#endif
#ifndef SPE
#endif
#ifndef SPE
#define SPE SPE0
#endif
#ifndef MSTR
#endif
#ifndef MSTR
#define MSTR MSTR0
#endif
#ifndef SPR1
#endif
#ifndef SPR1
#define SPR1 SPR01
#endif
#ifndef SPR0
#endif
#ifndef SPR0
#define SPR0 SPR00
#endif
#ifndef SPIE
#endif
#ifndef SPIE
#define SPIE SPIE0
#endif
#ifndef SPDR
#endif
#ifndef SPDR
#define SPDR SPDR0
#endif
#ifndef SPIF
#endif
#ifndef SPIF
#define SPIF SPIF0
#endif
#ifndef SPSR
#endif
#ifndef SPSR
#define SPSR SPSR0
#endif
#endif
// -------------------------
 
#define SLAVE_SELECT_DDR_PORT DDRC
53,65 → 54,69
#define SPI_CMD_USER 10
#define SPI_CMD_STICK 11
#define SPI_CMD_CAL_COMPASS 12
struct str_ToNaviCtrl
 
typedef struct
{
unsigned char Sync1, Sync2;
unsigned char Command;
signed int IntegralNick;
signed int IntegralRoll;
signed int AccNick;
signed int AccRoll;
signed int GyroCompass;
signed int GyroNick;
signed int GyroRoll;
signed int GyroGier;
union
{ char Byte[12];
int Int[6];
long Long[3];
float Float[3];
} Param;
unsigned char Chksum;
};
uint8_t Sync1;
uint8_t Sync2;
uint8_t Command;
int16_t IntegralPitch;
int16_t IntegralRoll;
int16_t AccPitch;
int16_t AccRoll;
int16_t GyroHeading;
int16_t GyroPitch;
int16_t GyroRoll;
int16_t GyroYaw;
union
{
int8_t sByte[12];
uint8_t Byte[12];
int16_t Int[6];
int32_t Long[3];
float Float[3];
} Param;
uint8_t Chksum;
} ToNaviCtrl_t;
 
 
 
#define SPI_CMD_OSD_DATA 100
#define SPI_CMD_GPS_POS 101
#define SPI_CMD_GPS_TARGET 102
struct str_FromNaviCtrl
#define SPI_CMD_GPS_TARGET 102
 
typedef struct
{
unsigned char Command;
signed int GPS_Nick;
signed int GPS_Roll;
signed int GPS_Gier;
signed int CompassValue;
signed int Status;
unsigned char BeepTime;
union
{ char Byte[12];
int Int[6];
long Long[3];
float Float[3];
} Param;
unsigned char Chksum;
};
uint8_t Command;
int16_t GPS_Pitch;
int16_t GPS_Roll;
int16_t GPS_Yaw;
int16_t CompassHeading;
int16_t Status;
uint8_t BeepTime;
union
{
int8_t Byte[12];
int16_t Int[6];
int32_t Long[3];
float Float[3];
} Param;
uint8_t Chksum;
} FromNaviCtrl_t;
 
 
#ifdef USE_SPI_COMMUNICATION
 
extern struct str_ToNaviCtrl ToNaviCtrl;
extern struct str_FromNaviCtrl FromNaviCtrl;
extern ToNaviCtrl_t ToNaviCtrl;
extern FromNaviCtrl_t FromNaviCtrl;
 
//#define SPI_CMD_VALUE 0x03
 
extern void SPI_MasterInit(void);
extern void SPI_StartTransmitPacket(void);
extern void UpdateSPI_Buffer(void);
extern void SPI_TransmitByte(void);
#else
 
 
// -------------------------------- Dummy -----------------------------------------
#define SPI_MasterInit() ;
#define SPI_MasterInit() ;
#define SPI_StartTransmitPacket() ;
#define UpdateSPI_Buffer() ;
#define SPI_TransmitByte() ;
118,4 → 123,4
#endif
 
 
#endif
#endif //_SPI_H
/branches/V0.69k Code Redesign killagreg/timer0.c
1,168 → 1,192
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "eeprom.h"
#include "analog.h"
#include "main.h"
#include "fc.h"
#ifdef USE_KILLAGREG
#include "mm3.h"
#endif
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
#include "mk3mag.h"
#endif
 
volatile unsigned int CountMilliseconds = 0;
volatile static unsigned int tim_main;
volatile unsigned char UpdateMotor = 0;
volatile unsigned int cntKompass = 0;
volatile unsigned int beeptime = 0;
volatile unsigned char SendSPI = 0;
volatile uint16_t CountMilliseconds = 0;
volatile uint8_t UpdateMotor = 0;
volatile uint16_t cntKompass = 0;
volatile uint16_t BeepTime = 0;
volatile uint16_t BeepModulation = 0xFFFF;
 
unsigned int BeepMuster = 0xffff;
int ServoValue = 0;
#ifdef USE_NAVICTRL
volatile uint8_t SendSPI = 0;
#endif
 
enum {
STOP = 0,
CK = 1,
CK8 = 2,
CK64 = 3,
CK256 = 4,
CK1024 = 5,
T0_FALLING_EDGE = 6,
T0_RISING_EDGE = 7
};
 
 
SIGNAL (SIG_OVERFLOW0) // 8kHz
/*****************************************************/
/* Initialize Timer 0 */
/*****************************************************/
// timer 0 is used for the PWM generation to control the offset voltage at the air pressure sensor
// Its overflow interrupt routine is used to generate the beep signal and the flight control motor update rate
void TIMER0_Init(void)
{
static unsigned char cnt_1ms = 1,cnt = 0;
unsigned char pieper_ein = 0;
// TCNT0 -= 250;//TIMER_RELOAD_VALUE;
if(SendSPI) SendSPI--;
if(!cnt--)
{
cnt = 9;
cnt_1ms++;
cnt_1ms %= 2;
if(!cnt_1ms) UpdateMotor = 1;
CountMilliseconds++;
}
uint8_t sreg = SREG;
 
if(beeptime > 1)
{
beeptime--;
if(beeptime & BeepMuster)
{
pieper_ein = 1;
}
else pieper_ein = 0;
}
else
{
pieper_ein = 0;
BeepMuster = 0xffff;
}
// disable all interrupts before reconfiguration
cli();
 
// configure speaker port as output
if(BoardRelease == 10)
{ // Speaker at PD2
DDRD |= (1<<DDD2);
PORTD &= ~(1<<PORTD2);
}
else
{ // Speaker at PC7
DDRC |= (1<<DDC7);
PORTC &= ~(1<<PORTC7);
}
 
if(pieper_ein)
{
if(PlatinenVersion == 10) PORTD |= (1<<2); // Speaker an PORTD.2
else PORTC |= (1<<7); // Speaker an PORTC.7
}
else
{
if(PlatinenVersion == 10) PORTD &= ~(1<<2);
else PORTC &= ~(1<<7);
}
if(EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)
{
if(PINC & 0x10)
{
cntKompass++;
}
else
{
if((cntKompass) && (cntKompass < 362))
{
cntKompass += cntKompass / 41;
if(cntKompass > 10) KompassValue = cntKompass - 10; else KompassValue = 0;
}
// if(cntKompass < 10) cntKompass = 10;
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L;
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
cntKompass = 0;
}
}
// set PB3 and PB4 as output for the PWM used as aoffset for the pressure sensor
DDRB |= (1<<DDB4)|(1<<DDB3);
PORTB &= ~((1<<PORTB4)|(1<<PORTB3));
 
if(BoardRelease == 10)
{
DDRD |= (1<<DDD2);
PORTD &= ~(1<<PORTD2);
 
}
else
{
DDRC |= (1<<DDC7);
PORTC &= ~(1<<PORTC7);
}
 
// Timer/Counter 0 Control Register A
 
// Waveform Generation Mode is Fast PWM (Bits WGM02 = 0, WGM01 = 1, WGM00 = 1)
// Clear OC0A on Compare Match, set OC0A at BOTTOM, noninverting PWM (Bits COM0A1 = 1, COM0A0 = 0)
// Clear OC0B on Compare Match, set OC0B at BOTTOM, (Bits COM0B1 = 1, COM0B0 = 0)
TCCR0A &= ~((1<<COM0A0)|(1<<COM0B0));
TCCR0A |= (1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00);
 
// Timer/Counter 0 Control Register B
 
// set clock devider for timer 0 to SYSKLOCK/8 = 20MHz / 8 = 2.5MHz
// i.e. the timer increments from 0x00 to 0xFF with an update rate of 2.5 MHz
// hence the timer overflow interrupt frequency is 2.5 MHz / 256 = 9.765 kHz
 
// divider 8 (Bits CS02 = 0, CS01 = 1, CS00 = 0)
TCCR0B &= ~((1<<FOC0A)|(1<<FOC0B)|(1<<WGM02));
TCCR0B = (TCCR0B & 0xF8)|(0<<CS02)|(1<<CS01)|(0<<CS00);
 
// initialize the Output Compare Register A & B used for PWM generation on port PB3 & PB4
OCR0A = 0; // for PB3
OCR0B = 120; // for PB4
 
// init Timer/Counter 0 Register
TCNT0 = 0;
 
// Timer/Counter 0 Interrupt Mask Register
// enable timer overflow interrupt only
TIMSK0 &= ~((1<<OCIE0B)|(1<<OCIE0A));
TIMSK0 |= (1<<TOIE0);
 
SREG = sreg;
}
 
 
void Timer_Init(void)
 
/*****************************************************/
/* Interrupt Routine of Timer 0 */
/*****************************************************/
ISR(TIMER0_OVF_vect) // 9.765 kHz
{
tim_main = SetDelay(10);
TCCR0B = CK8;
TCCR0A = (1<<COM0A1)|(1<<COM0B1)|3;//fast PWM
OCR0A = 0;
OCR0B = 120;
TCNT0 = (unsigned char)-TIMER_RELOAD_VALUE; // reload
//OCR1 = 0x00;
static uint8_t cnt_1ms = 1,cnt = 0;
uint8_t Beeper_On = 0;
 
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3;
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22);
// TIMSK2 |= _BV(TOIE2);
TIMSK2 |= _BV(OCIE2A);
#ifdef USE_NAVICTRL
if(SendSPI) SendSPI--; // if SendSPI is 0, the transmit of a byte via SPI bus to and from The Navicontrol is done
#endif
 
TIMSK0 |= _BV(TOIE0);
OCR2A = 10;
TCNT2 = 0;
if(!cnt--) // every 10th run (9.765kHz/10 = 976Hz)
{
cnt = 9;
cnt_1ms++;
cnt_1ms %= 2;
if(!cnt_1ms) UpdateMotor = 1; // every 2nd run (976Hz/2 = 488 Hz)
CountMilliseconds++; // increment millisecond counter
}
 
 
// beeper on if duration is not over
if(BeepTime)
{
BeepTime--; // decrement BeepTime
if(BeepTime & BeepModulation) Beeper_On = 1;
else Beeper_On = 0;
}
else // beeper off if duration is over
{
Beeper_On = 0;
BeepModulation = 0xFFFF;
}
 
// if beeper is on
if(Beeper_On)
{
// set speaker port to high
if(BoardRelease == 10) PORTD |= (1<<PORTD2); // Speaker at PD2
else PORTC |= (1<<PORTC7); // Speaker at PC7
}
else // beeper is off
{
// set speaker port to low
if(BoardRelease == 10) PORTD &= ~(1<<PORTD2);// Speaker at PD2
else PORTC &= ~(1<<PORTC7);// Speaker at PC7
}
 
// update compass value if this option is enabled in the settings
if(ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE)
{
#ifdef USE_KILLAGREG
MM3_Update(); // read out mm3 board
#endif
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
MK3MAG_Update(); // read out mk3mag pwm
#endif
}
}
 
 
 
// -----------------------------------------------------------------------
 
unsigned int SetDelay (unsigned int t)
uint16_t SetDelay (uint16_t t)
{
// TIMSK0 &= ~_BV(TOIE0);
return(CountMilliseconds + t + 1);
// TIMSK0 |= _BV(TOIE0);
return(CountMilliseconds + t + 1);
}
 
// -----------------------------------------------------------------------
char CheckDelay(unsigned int t)
int8_t CheckDelay(uint16_t t)
{
// TIMSK0 &= ~_BV(TOIE0);
return(((t - CountMilliseconds) & 0x8000) >> 9);
// TIMSK0 |= _BV(TOIE0);
return(((t - CountMilliseconds) & 0x8000) >> 9); // check sign bit
}
 
// -----------------------------------------------------------------------
void Delay_ms(unsigned int w)
void Delay_ms(uint16_t w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt));
unsigned int t_stop;
t_stop = SetDelay(w);
while (!CheckDelay(t_stop));
}
 
void Delay_ms_Mess(unsigned int w)
// -----------------------------------------------------------------------
void Delay_ms_Mess(uint16_t w)
{
unsigned int akt;
akt = SetDelay(w);
while (!CheckDelay(akt)) ANALOG_ON;
uint16_t t_stop;
t_stop = SetDelay(w);
while (!CheckDelay(t_stop)) ADC_Enable();
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Servo ansteuern
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(SIG_OUTPUT_COMPARE2A)
{
static unsigned char timer = 10;
if(!timer--)
{
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3;
ServoValue = Parameter_ServoNickControl;
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512;
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512;
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin;
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax;
 
OCR2A = ServoValue;// + 75;
timer = EE_Parameter.ServoNickRefresh;
}
else
{
TCCR2A =3;
PORTD&=~0x80;
}
}
/branches/V0.69k Code Redesign killagreg/timer0.h
1,17 → 1,21
#ifndef _TIMER0_H
#define _TIMER0_H
 
#define TIMER_TEILER CK8
#define TIMER_RELOAD_VALUE 250
#include <inttypes.h>
 
void Timer_Init(void);
void Delay_ms(unsigned int);
void Delay_ms_Mess(unsigned int);
unsigned int SetDelay (unsigned int t);
char CheckDelay (unsigned int t);
extern volatile uint16_t CountMilliseconds;
extern volatile uint8_t UpdateMotor;
extern volatile uint16_t cntKompass;
extern volatile uint16_t BeepModulation;
extern volatile uint16_t BeepTime;
#ifdef USE_NAVICTRL
extern volatile uint8_t SendSPI;
#endif
 
extern volatile unsigned int CountMilliseconds;
extern volatile unsigned char UpdateMotor;
extern volatile unsigned int beeptime;
extern volatile unsigned int cntKompass;
extern int ServoValue;
extern unsigned int BeepMuster;
extern volatile unsigned char SendSPI;
extern void TIMER0_Init(void);
extern void Delay_ms(uint16_t w);
extern void Delay_ms_Mess(uint16_t w);
extern uint16_t SetDelay (uint16_t t);
extern int8_t CheckDelay (uint16_t t);
 
#endif //_TIMER0_H
/branches/V0.69k Code Redesign killagreg/timer2.c
0,0 → 1,104
#include <avr/io.h>
#include <avr/interrupt.h>
#include "fc.h"
#include "eeprom.h"
 
volatile int16_t ServoValue = 0;
 
 
/*****************************************************/
/* Initialize Timer 2 */
/*****************************************************/
// The timer 2 is used to generate the PWM at PD7 (J7)
// to control a camera servo for pitch compensation.
void TIMER2_Init(void)
{
uint8_t sreg = SREG;
 
// disable all interrupts before reconfiguration
cli();
 
// set PD7 as output of the PWM for pitch servo
DDRD |=(1<<DDD7);
PORTD |= (1<<PORTD7);
 
 
// Timer/Counter 2 Control Register A
 
// Waveform Generation Mode is Fast PWM (Bits: WGM22 = 0, WGM21 = 1, WGM20 = 1)
// PD7: Clear OC2B on Compare Match, set OC2B at BOTTOM, non inverting PWM (Bits: COM2A1 = 1, COM2A0 = 0)
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0)
TCCR2A &= ~((1<<COM2B1)|(1<<COM2B0)|(1<<COM2A0));
TCCR2A |= (1<<COM2A1)|(1<<WGM21)|(1<<WGM20);
 
// Timer/Counter 2 Control Register B
 
// Set clock divider for timer 2 to SYSKLOCK/256 = 20MHz / 256 = 78.128 kHz
// The timer increments from 0x00 to 0xFF with an update rate of 78.128 kHz or 12.8 us
// hence the timer overflow interrupt frequency is 78.128 kHz / 256 = 305.176 Hz or 3.276 ms
 
// divider 256 (Bits: CS022 = 1, CS21 = 1, CS20 = 0)
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS20)|(1<<WGM22));
TCCR2B |= (1<<CS22)|(1<<CS21);
 
// Initialize the Output Compare Register A used for PWM generation on port PD7.
OCR2A = 10; //10 * 12.8us = 1.28 ms high time
 
// Initialize the Timer/Counter 2 Register
TCNT2 = 0;
 
// Timer/Counter 2 Interrupt Mask Register
// Enable timer output compare match A Interrupt only
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2));
TIMSK2 |= (1<<OCIE2A);
 
SREG = sreg;
}
 
 
/*****************************************************/
/* Control Servo Position */
/*****************************************************/
ISR(TIMER2_COMPA_vect) // every OCR2A * 12.8 us (compare match)
{
static uint8_t timer = 10;
 
if(!timer--)
{
// enable PWM on PD7 in non inverting mode
TCCR2A &= ~(0<<COM2A0);
TCCR2A |= (1<<COM2A1);
 
ServoValue = FCParam.ServoPitchControl;
// inverting movment of servo
if(ParamSet.ServoPitchCompInvert & 0x01)
{
ServoValue += ((int32_t) ParamSet.ServoPitchComp * (IntegralPitch / 128)) / 512;
}
else // non inverting movement of servo
{
ServoValue -= ((int32_t) ParamSet.ServoPitchComp * (IntegralPitch / 128)) / 512;
}
 
// limit servo value to its parameter range definition
if(ServoValue < ParamSet.ServoPitchMin)
{
ServoValue = ParamSet.ServoPitchMin;
}
else if(ServoValue > ParamSet.ServoPitchMax)
{
ServoValue = ParamSet.ServoPitchMax;
}
 
// update PWM
OCR2A = ServoValue;
timer = ParamSet.ServoPitchRefresh;
}
else
{
// disable PWM at PD7
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0));
// set PD7 to low
PORTD &= ~(1<<PORTD7);
}
}
/branches/V0.69k Code Redesign killagreg/timer2.h
0,0 → 1,12
#ifndef _TIMER2_H
#define _TIMER2_H
 
#include <inttypes.h>
 
extern volatile int16_t ServoValue;
extern void TIMER2_Init(void);
 
 
 
#endif //_TIMER2_H
 
/branches/V0.69k Code Redesign killagreg/twimaster.c
1,152 → 1,184
/*############################################################################
############################################################################*/
 
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "main.h"
#include "twimaster.h"
#include "fc.h"
 
unsigned char twi_state = 0;
unsigned char motor = 0;
unsigned char motorread = 0;
unsigned char motor_rx[8];
volatile uint8_t twi_state = 0;
volatile uint8_t motor = 0;
volatile uint8_t motor_rx[8];
 
//############################################################################
//Initzialisieren der I2C (TWI) Schnittstelle
void i2c_init(void)
//############################################################################
/**************************************************/
/* Initialize I2C (TWI) */
/**************************************************/
void I2C_Init(void)
{
TWSR = 0;
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2;
uint8_t sreg = SREG;
cli();
 
// SDA is INPUT
DDRC &= ~(1<<DDC1);
// SCL is output
DDRC |= (1<<DDC0);
// pull up SDA
PORTC |= (1<<PORTC0)|(1<<PORTC1);
 
// TWI Status Register
// prescaler 1 (TWPS1 = 0, TWPS0 = 0)
TWSR &= ~((1<<TWPS1)|(1<<TWPS0));
 
// set TWI Bit Rate Register
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2;
 
SREG = sreg;
}
 
//############################################################################
//Start I2C
char i2c_start(void)
//############################################################################
/****************************************/
/* Start I2C */
/****************************************/
void I2C_Start(void)
{
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE);
return(0);
// TWI Control Register
// clear TWI interrupt flag (TWINT=1)
// disable TWI Acknowledge Bit (TWEA = 0)
// enable TWI START Condition Bit (TWSTA = 1), MASTER
// disable TWI STOP Condition Bit (TWSTO = 0)
// disable TWI Write Collision Flag (TWWC = 0)
// enable i2c (TWIE = 1)
// enable TWI Interrupt (TWIE = 1)
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN) | (1<<TWIE);
}
 
//############################################################################
//Start I2C
void i2c_stop(void)
//############################################################################
/****************************************/
/* Stop I2C */
/****************************************/
void I2C_Stop(void)
{
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT);
// TWI Control Register
// clear TWI interrupt flag (TWINT=1)
// disable TWI Acknowledge Bit (TWEA = 0)
// diable TWI START Condition Bit (TWSTA = 1), no MASTER
// enable TWI STOP Condition Bit (TWSTO = 1)
// disable TWI Write Collision Flag (TWWC = 0)
// enable i2c (TWIE = 1)
// disable TWI Interrupt (TWIE = 0)
TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
}
 
void i2c_reset(void)
//############################################################################
/****************************************/
/* Reset I2C */
/****************************************/
void I2C_Reset(void)
{
i2c_stop();
twi_state = 0;
motor = TWDR;
motor = 0;
TWCR = 0x80;
TWAMR = 0;
TWAR = 0;
TWDR = 0;
TWSR = 0;
TWBR = 0;
i2c_init();
i2c_start();
i2c_write_byte(0);
// stop i2c bus
I2C_Stop();
twi_state = 0;
motor = TWDR; // ??
motor = 0;
TWCR = (1<<TWINT); // reset to original state incl. interrupt flag reset
TWAMR = 0;
TWAR = 0;
TWDR = 0;
TWSR = 0;
TWBR = 0;
I2C_Init();
I2C_Start();
I2C_WriteByte(0);
}
 
//############################################################################
//Start I2C
char i2c_write_byte(char byte)
//############################################################################
{
TWSR = 0x00;
/****************************************/
/* Write to I2C */
/****************************************/
void I2C_WriteByte(int8_t byte)
{
// move byte to send into TWI Data Register
TWDR = byte;
// clear interrupt flag (TWINT = 1)
// enable i2c bus (TWEN = 1)
// enable intterupt (TWIW = 1)
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
return(0);
}
 
//############################################################################
//Start I2C
SIGNAL (TWI_vect)
//############################################################################
 
/****************************************/
/* Receive byte and send ACK */
/****************************************/
void I2C_ReceiveByte(void)
{
switch (twi_state++)
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);
}
 
/****************************************/
/* I2C receive last byte and send no ACK*/
/****************************************/
void I2C_ReceiveLastByte(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
 
 
/****************************************/
/* I2C ISR */
/****************************************/
ISR (TWI_vect)
 
{
static uint8_t motorread = 0;
 
switch (twi_state++) // First i2s_start from SendMotorData()
{
case 0:
i2c_write_byte(0x52+(motor*2));
// Master Transmit
case 0: // Send SLA-W
I2C_WriteByte(0x52+(motor*2));
break;
case 1:
case 1: // Send Data to Salve
switch(motor++)
{
case 0:
i2c_write_byte(Motor_Vorne);
I2C_WriteByte(Motor_Front);
break;
case 1:
i2c_write_byte(Motor_Hinten);
case 1:
I2C_WriteByte(Motor_Rear);
break;
case 2:
i2c_write_byte(Motor_Rechts);
I2C_WriteByte(Motor_Right);
break;
case 3:
i2c_write_byte(Motor_Links);
I2C_WriteByte(Motor_Left);
break;
}
break;
case 2:
i2c_stop();
case 2: // repeat case 0+1 for all Slaves
if (motor<4) twi_state = 0;
else motor = 0;
i2c_start();
break;
//Liest Daten von Motor
case 3:
i2c_write_byte(0x53+(motorread*2));
I2C_Start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive
break;
 
// Master Receive
case 3: // Send SLA-R
I2C_WriteByte(0x53+(motorread*2));
break;
case 4:
switch(motorread)
{
case 0:
i2c_write_byte(Motor_Vorne);
break;
case 1:
i2c_write_byte(Motor_Hinten);
break;
case 2:
i2c_write_byte(Motor_Rechts);
break;
case 3:
i2c_write_byte(Motor_Links);
break;
}
//Transmit 1st byte
I2C_ReceiveByte();
break;
case 5: //1 Byte vom Motor lesen
case 5: //Read 1st byte and transmit 2nd Byte
motor_rx[motorread] = TWDR;
I2C_ReceiveLastByte();
break;
case 6:
//Read 2nd byte
motor_rx[motorread+4] = TWDR;
motorread++;
if (motorread > 3) motorread=0;
 
case 6:
switch(motorread)
{
case 0:
i2c_write_byte(Motor_Vorne);
break;
case 1:
i2c_write_byte(Motor_Hinten);
break;
case 2:
i2c_write_byte(Motor_Rechts);
break;
case 3:
i2c_write_byte(Motor_Links);
break;
}
break;
case 7: //2 Byte vom Motor lesen
motor_rx[motorread+4] = TWDR;
motorread++;
if (motorread>3) motorread=0;
i2c_stop();
default:
I2C_Stop();
twi_state = 0;
I2CTimeout = 10;
twi_state = 0;
motor = 0;
}
TWCR |= 0x80;
}
/branches/V0.69k Code Redesign killagreg/twimaster.h
1,9 → 1,10
/*############################################################################
############################################################################*/
 
#ifndef _I2C_MASTER_H
#define _I2C_MASTER_H
+#include <inttypes.h>
+
//############################################################################
// I2C Konstanten
@@ -18,16 +19,15 @@
//############################################################################
-extern unsigned char twi_state;
-extern unsigned char motor;
-extern unsigned char motorread;
-extern unsigned char motor_rx[8];
+extern volatile uint8_t twi_state;
+extern volatile uint8_t motor;
+extern volatile uint8_t motorread;
+extern volatile uint8_t motor_rx[8];
-void i2c_reset(void);
-extern void i2c_init (void); // I2C initialisieren
-extern char i2c_start (void); // Start I2C
-extern void i2c_stop (void); // Stop I2C
-extern char i2c_write_byte (char byte); // 1 Byte schreiben
-extern void i2c_reset(void);
+extern void I2C_Init (void); // Initialize I2C
+extern void I2C_Start (void); // Start I2C
+extern void I2C_Stop (void); // Stop I2C
+extern void I2C_WriteByte (int8_t byte); // Write 1 Byte
+extern void I2C_Reset(void); // Reset I2C
#endif
/branches/V0.69k Code Redesign killagreg/uart.c
1,4 → 1,4
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + only for non-profit use
// + www.MikroKopter.com
5,60 → 5,88
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
 
#include "eeprom.h"
#include "main.h"
#include "menu.h"
#include "timer0.h"
#include "uart.h"
#include "fc.h"
#include "_Settings.h"
#include "rc.h"
#ifdef USE_KILLAGREG
#include "ubx.h"
#endif
#if !defined(USE_KILLAGREG) && !defined (USE_NAVICTRL)
#include "mk3mag.h"
#endif
 
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0;
unsigned volatile char SioTmp = 0;
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF];
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF];
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF];
unsigned volatile char NeuerDatensatzEmpfangen = 0;
unsigned volatile char NeueKoordinateEmpfangen = 0;
unsigned volatile char UebertragungAbgeschlossen = 1;
unsigned volatile char CntCrcError = 0;
unsigned volatile char AnzahlEmpfangsBytes = 0;
unsigned volatile char PC_DebugTimeout = 0;
unsigned char RemotePollDisplayLine = 0;
unsigned char NurKanalAnforderung = 0;
unsigned char DebugTextAnforderung = 255;
unsigned char PcZugriff = 100;
unsigned char MotorTest[4] = {0,0,0,0};
unsigned char DubWiseKeys[4] = {0,0,0,0};
unsigned char MeineSlaveAdresse;
unsigned char ConfirmFrame;
struct str_DebugOut DebugOut;
struct str_ExternControl ExternControl;
struct str_VersionInfo VersionInfo;
struct str_WinkelOut WinkelOut;
 
int Debug_Timer,Kompass_Timer;
 
const unsigned char ANALOG_TEXT[32][16] =
#define FALSE 0
#define TRUE 1
 
//int8_t test __attribute__ ((section (".noinit")));
uint8_t RequestVerInfo = FALSE;
uint8_t RequestExternalControl = FALSE;
uint8_t RequestDisplay = FALSE;
uint8_t RequestDebugData = FALSE;
uint8_t RequestDebugLabel = 255;
uint8_t RequestChannelOnly = FALSE;
uint8_t RemotePollDisplayLine = 0;
 
volatile uint8_t txd_buffer[TXD_BUFFER_LEN];
volatile uint8_t rxd_buffer_locked = FALSE;
volatile uint8_t rxd_buffer[RXD_BUFFER_LEN];
volatile uint8_t txd_complete = TRUE;
volatile uint8_t ReceivedBytes = 0;
 
 
uint8_t PcAccess = 100;
uint8_t MotorTest[4] = {0,0,0,0};
uint8_t DubWiseKeys[4] = {0,0,0,0};
uint8_t MySlaveAddr = 0;
uint8_t ConfirmFrame;
 
DebugOut_t DebugOut;
ExternControl_t ExternControl;
VersionInfo_t VersionInfo;
 
int16_t Debug_Timer;
 
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
int16_t Compass_Timer;
#endif
 
 
const uint8_t ANALOG_LABEL[32][16] =
{
//1234567890123456
"IntegralNick ", //0
//1234567890123456
"IntegralPitch ", //0
"IntegralRoll ",
"AccNick ",
"AccPitch ",
"AccRoll ",
"GyroGier ",
"HoehenWert ", //5
"GyroYaw ",
"ReadingHeight ", //5
"AccZ ",
"Gas ",
"KompassValue ",
"Spannung ",
"Empfang ", //10
"Ersatzkompass ",
"Motor_Vorne ",
"Motor_Hinten ",
"Motor_Links ",
"Motor_Rechts ", //15
"Thrust ",
"CompassHeading ",
"Voltage ",
"Receiver Level ", //10
"YawGyroHeading ",
"Motor_Front ",
"Motor_Rear ",
"Motor_Right ",
"Motor_Left ", //15
"Acc_Z ",
"Distance ",
"OsdBar ",
"MK3Mag CalState ",
"SPI Error ",
"SPI Ok ",
" ",
"Servo ", //20
"Nick ",
"Pitch ",
"Roll ",
" ",
" ",
67,355 → 95,422
" ",
" ",
" ",
"GPS_Nick ", //30
"GPS_Pitch ", //30
"GPS_Roll "
};
 
 
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Sende-Part der Datenübertragung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(INT_VEC_TX)
/****************************************************************/
/* Initialization of the USART0 */
/****************************************************************/
void USART0_Init (void)
{
static unsigned int ptr = 0;
unsigned char tmp_tx;
if(!UebertragungAbgeschlossen)
{
ptr++; // die [0] wurde schon gesendet
tmp_tx = SendeBuffer[ptr];
if((tmp_tx == '\r') || (ptr == MAX_SENDE_BUFF))
{
ptr = 0;
UebertragungAbgeschlossen = 1;
}
UDR = tmp_tx;
}
else ptr = 0;
uint8_t sreg = SREG;
uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * USART0_BAUD) - 1);
 
// disable all interrupts before configuration
cli();
 
// disable RX-Interrupt
UCSR0B &= ~(1 << RXCIE0);
// disable TX-Interrupt
UCSR0B &= ~(1 << TXCIE0);
 
// set direction of RXD0 and TXD0 pins
// set RXD0 (PD0) as an input pin
PORTD |= (1 << PORTD0);
DDRD &= ~(1 << DDD0);
// set TXD0 (PD1) as an output pin
PORTD |= (1 << PORTD1);
DDRD |= (1 << DDD1);
 
// USART0 Baud Rate Register
// set clock divider
UBRR0H = (uint8_t)(ubrr >> 8);
UBRR0L = (uint8_t)ubrr;
 
// USART0 Control and Status Register A, B, C
 
// enable double speed operation in
UCSR0A |= (1 << U2X0);
// enable receiver and transmitter in
UCSR0B = (1 << TXEN0) | (1 << RXEN0);
// set asynchronous mode
UCSR0C &= ~(1 << UMSEL01);
UCSR0C &= ~(1 << UMSEL00);
// no parity
UCSR0C &= ~(1 << UPM01);
UCSR0C &= ~(1 << UPM00);
// 1 stop bit
UCSR0C &= ~(1 << USBS0);
// 8-bit
UCSR0B &= ~(1 << UCSZ02);
UCSR0C |= (1 << UCSZ01);
UCSR0C |= (1 << UCSZ00);
 
// flush receive buffer
while ( UCSR0A & (1<<RXC0) ) UDR0;
 
// enable interrupts at the end
// enable RX-Interrupt
UCSR0B |= (1 << RXCIE0);
// enable TX-Interrupt
UCSR0B |= (1 << TXCIE0);
 
rxd_buffer_locked = FALSE;
txd_complete = TRUE;
 
Debug_Timer = SetDelay(200);
 
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
Compass_Timer = SetDelay(220);
#endif
 
// restore global interrupt flags
SREG = sreg;
}
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(INT_VEC_RX)
/****************************************************************/
/* USART0 transmitter ISR */
/****************************************************************/
ISR(USART0_TX_vect)
{
static unsigned int crc;
static unsigned char crc1,crc2,buf_ptr;
static unsigned char UartState = 0;
unsigned char CrcOkay = 0;
static uint16_t ptr_txd_buffer = 0;
uint8_t tmp_tx;
if(!txd_complete) // transmission not completed
{
ptr_txd_buffer++; // die [0] wurde schon gesendet
tmp_tx = txd_buffer[ptr_txd_buffer];
// if terminating character or end of txd buffer was reached
if((tmp_tx == '\r') || (ptr_txd_buffer == TXD_BUFFER_LEN))
{
ptr_txd_buffer = 0; // reset txd pointer
txd_complete = 1; // stop transmission
}
UDR0 = tmp_tx; // send current byte will trigger this ISR again
}
// transmission completed
else ptr_txd_buffer = 0;
}
 
SioTmp = UDR;
if(buf_ptr >= MAX_EMPFANGS_BUFF) UartState = 0;
if(SioTmp == '\r' && UartState == 2)
{
UartState = 0;
crc -= RxdBuffer[buf_ptr-2];
crc -= RxdBuffer[buf_ptr-1];
crc %= 4096;
crc1 = '=' + crc / 64;
crc2 = '=' + crc % 64;
CrcOkay = 0;
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; CntCrcError++;};
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet
{
NeuerDatensatzEmpfangen = 1;
AnzahlEmpfangsBytes = buf_ptr;
RxdBuffer[buf_ptr] = '\r';
if(RxdBuffer[2] == 'R') wdt_enable(WDTO_250MS); // Reset-Commando
}
}
else
switch(UartState)
{
case 0:
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet
buf_ptr = 0;
RxdBuffer[buf_ptr++] = SioTmp;
crc = SioTmp;
break;
case 1: // Adresse auswerten
UartState++;
RxdBuffer[buf_ptr++] = SioTmp;
crc += SioTmp;
break;
case 2: // Eingangsdaten sammeln
RxdBuffer[buf_ptr] = SioTmp;
if(buf_ptr < MAX_EMPFANGS_BUFF) buf_ptr++;
else UartState = 0;
crc += SioTmp;
break;
default:
UartState = 0;
break;
}
/****************************************************************/
/* USART0 receiver ISR */
/****************************************************************/
ISR(USART0_RX_vect)
{
static uint16_t crc;
static uint8_t ptr_rxd_buffer = 0;
uint8_t crc1, crc2;
uint8_t c;
 
c = UDR0; // catch the received byte
 
#ifdef USE_KILLAGREG
// If the FC 1.0 cpu is used the ublox module should be conneced to rxd of the 1st uart.
// The FC 1.1 /1.2 has the ATMEGA644p cpu with a 2nd uart to which the ublox should be connected.
#if defined (__AVR_ATmega644P__)
if(BoardRelease == 10) ubx_parser(c);
#else
ubx_parser(c);
#endif
#endif // USE_KILLAGREG
 
if(rxd_buffer_locked) return; // if rxd buffer is locked immediately return
 
// the rxd buffer is unlocked
if((ptr_rxd_buffer == 0) && (c == '#')) // if rxd buffer is empty and syncronisation character is received
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy 1st byte to buffer
crc = c; // init crc
}
#if 0
else if (ptr_rxd_buffer == 1) // handle address
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy byte to rxd buffer
crc += c; // update crc
}
#endif
else if (ptr_rxd_buffer < RXD_BUFFER_LEN) // collect incomming bytes
{
if(c != '\r') // no termination character
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy byte to rxd buffer
crc += c; // update crc
}
else // termination character was received
{
// the last 2 bytes are no subject for checksum calculation
// they are the checksum itself
crc -= rxd_buffer[ptr_rxd_buffer-2];
crc -= rxd_buffer[ptr_rxd_buffer-1];
// calculate checksum from transmitted data
crc %= 4096;
crc1 = '=' + crc / 64;
crc2 = '=' + crc % 64;
// compare checksum to transmitted checksum bytes
if((crc1 == rxd_buffer[ptr_rxd_buffer-2]) && (crc2 == rxd_buffer[ptr_rxd_buffer-1]))
{ // checksum valid
rxd_buffer_locked = TRUE; // lock the rxd buffer
ReceivedBytes = ptr_rxd_buffer; // store number of received bytes
rxd_buffer[ptr_rxd_buffer] = '\r'; // set termination character
// if 2nd byte is an 'R' enable watchdog that will result in an reset
if(rxd_buffer[2] == 'R') {wdt_enable(WDTO_250MS);} // Reset-Commando
}
else
{ // checksum invalid
rxd_buffer_locked = FALSE; // unlock rxd buffer
}
ptr_rxd_buffer = 0; // reset rxd buffer pointer
}
}
else // rxd buffer overrun
{
ptr_rxd_buffer = 0; // reset rxd buffer
rxd_buffer_locked = FALSE; // unlock rxd buffer
}
 
}
 
 
// --------------------------------------------------------------------------
void AddCRC(unsigned int wieviele)
void AddCRC(uint16_t datalen)
{
unsigned int tmpCRC = 0,i;
for(i = 0; i < wieviele;i++)
{
tmpCRC += SendeBuffer[i];
}
tmpCRC %= 4096;
SendeBuffer[i++] = '=' + tmpCRC / 64;
SendeBuffer[i++] = '=' + tmpCRC % 64;
SendeBuffer[i++] = '\r';
UebertragungAbgeschlossen = 0;
UDR = SendeBuffer[0];
uint16_t tmpCRC = 0, i;
for(i = 0; i < datalen; i++)
{
tmpCRC += txd_buffer[i];
}
tmpCRC %= 4096;
txd_buffer[i++] = '=' + tmpCRC / 64;
txd_buffer[i++] = '=' + tmpCRC % 64;
txd_buffer[i++] = '\r';
txd_complete = FALSE;
UDR0 = txd_buffer[0]; // initiates the transmittion (continued in the TXD ISR)
}
 
 
 
// --------------------------------------------------------------------------
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len)
void SendOutData(uint8_t cmd,uint8_t module, uint8_t *snd, uint8_t len)
{
unsigned int pt = 0;
unsigned char a,b,c;
unsigned char ptr = 0;
uint16_t pt = 0;
uint8_t a,b,c;
uint8_t ptr = 0;
 
SendeBuffer[pt++] = '#'; // Startzeichen
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...)
SendeBuffer[pt++] = cmd; // Commando
txd_buffer[pt++] = '#'; // Start character
txd_buffer[pt++] = module; // Address (a=0; b=1,...)
txd_buffer[pt++] = cmd; // Command
 
while(len)
{
if(len) { a = snd[ptr++]; len--;} else a = 0;
if(len) { b = snd[ptr++]; len--;} else b = 0;
if(len) { c = snd[ptr++]; len--;} else c = 0;
SendeBuffer[pt++] = '=' + (a >> 2);
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
SendeBuffer[pt++] = '=' + ( c & 0x3f);
}
AddCRC(pt);
while(len)
{
if(len) { a = snd[ptr++]; len--;} else a = 0;
if(len) { b = snd[ptr++]; len--;} else b = 0;
if(len) { c = snd[ptr++]; len--;} else c = 0;
txd_buffer[pt++] = '=' + (a >> 2);
txd_buffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
txd_buffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
txd_buffer[pt++] = '=' + ( c & 0x3f);
}
AddCRC(pt); // add checksum after data block and initates the transmission
}
 
 
// --------------------------------------------------------------------------
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer
void Decode64(uint8_t *ptrOut, uint8_t len, uint8_t ptrIn, uint8_t max)
{
unsigned char a,b,c,d;
unsigned char ptr = 0;
unsigned char x,y,z;
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d = RxdBuffer[ptrIn++] - '=';
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden
uint8_t a,b,c,d;
uint8_t ptr = 0;
uint8_t x,y,z;
while(len)
{
a = rxd_buffer[ptrIn++] - '=';
b = rxd_buffer[ptrIn++] - '=';
c = rxd_buffer[ptrIn++] - '=';
d = rxd_buffer[ptrIn++] - '=';
if(ptrIn > max - 2) break;
 
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
if(len--) ptrOut[ptr++] = z; else break;
}
 
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
if(len--) ptrOut[ptr++] = z; else break;
}
}
 
 
// --------------------------------------------------------------------------
void BearbeiteRxDaten(void)
void USART0_ProcessRxData(void)
{
if(!NeuerDatensatzEmpfangen) return;
// if data in the rxd buffer are not locked immediately return
if(!rxd_buffer_locked) return;
 
unsigned int tmp_int_arr1[1];
// unsigned int tmp_int_arr2[2];
// unsigned int tmp_int_arr3[3];
unsigned char tmp_char_arr2[2];
// unsigned char tmp_char_arr3[3];
// unsigned char tmp_char_arr4[4];
//if(!MotorenEin)
switch(RxdBuffer[2])
{
case 'K':// Kompasswert
Decode64((unsigned char *) &tmp_int_arr1[0],sizeof(tmp_int_arr1),3,AnzahlEmpfangsBytes);
KompassValue = tmp_int_arr1[0];
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
uint16_t tmp_int_arr1[1]; // local int buffer
#endif
uint8_t tmp_char_arr2[2]; // local char buffer
 
 
switch(rxd_buffer[2])
{
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
case 'K':// Compass value
Decode64((uint8_t *) &tmp_int_arr1[0], sizeof(tmp_int_arr1), 3, ReceivedBytes);
CompassHeading = tmp_int_arr1[0];
CompassOffCourse = ((540 + CompassHeading - CompassCourse) % 360) - 180;
break;
case 'a':// Texte der Analogwerte
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes);
DebugTextAnforderung = tmp_char_arr2[0];
PcZugriff = 255;
#endif
case 'a':// Labels of the Analog Debug outputs
Decode64((uint8_t *) &tmp_char_arr2[0], sizeof(tmp_char_arr2), 3, ReceivedBytes);
RequestDebugLabel = tmp_char_arr2[0];
PcAccess = 255;
break;
case 'b':
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes);
RemoteTasten |= ExternControl.RemoteTasten;
ConfirmFrame = ExternControl.Frame;
break;
case 'c':
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes);
RemoteTasten |= ExternControl.RemoteTasten;
ConfirmFrame = ExternControl.Frame;
DebugDataAnforderung = 1;
PcZugriff = 255;
break;
case 'h':// x-1 Displayzeilen
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes);
RemoteTasten |= tmp_char_arr2[0];
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten
DebugDisplayAnforderung = 1;
case 'b': // extern control
Decode64((uint8_t *) &ExternControl,sizeof(ExternControl), 3, ReceivedBytes);
RemoteButtons |= ExternControl.RemoteButtons;
ConfirmFrame = ExternControl.Frame;
break;
case 't':// Motortest
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes);
PcZugriff = 255;
case 'c': // extern control with debug request
Decode64((uint8_t *) &ExternControl,sizeof(ExternControl),3,ReceivedBytes);
RemoteButtons |= ExternControl.RemoteButtons;
ConfirmFrame = ExternControl.Frame;
RequestDebugData = TRUE;
PcAccess = 255;
break;
case 'k':// Keys von DubWise
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,AnzahlEmpfangsBytes);
case 'h':// x-1 display columns
Decode64((uint8_t *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,ReceivedBytes);
RemoteButtons |= tmp_char_arr2[0];
if(tmp_char_arr2[1] == 255) RequestChannelOnly = TRUE;
else RequestChannelOnly = FALSE; // keine Displaydaten
RequestDisplay = TRUE;
break;
case 't':// motor test
Decode64((uint8_t *) &MotorTest[0],sizeof(MotorTest),3,ReceivedBytes);
PcAccess = 255;
break;
case 'k':// keys from DubWise
Decode64((uint8_t *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,ReceivedBytes);
ConfirmFrame = DubWiseKeys[3];
PcZugriff = 255;
PcAccess = 255;
break;
case 'v': // Version-Anforderung und Ausbaustufe
GetVersionAnforderung = 1;
break;
case 'g':// "Get"-Anforderung für Debug-Daten
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
DebugGetAnforderung = 1;
break;
case 'q':// "Get"-Anforderung für Settings
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes);
while(!UebertragungAbgeschlossen);
if(tmp_char_arr2[0] != 0xff)
{
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5;
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE);
}
else
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE);
break;
case 'l':
case 'm':
case 'n':
case 'o':
case 'p': // Parametersatz speichern
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes);
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE);
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
Piep(GetActiveParamSetNumber());
break;
}
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall;
NeuerDatensatzEmpfangen = 0;
case 'v': // get version and board release
RequestVerInfo = TRUE;
break;
case 'g':// get external control data
RequestExternalControl = TRUE;
break;
case 'q':// get settings
Decode64((uint8_t *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,ReceivedBytes);
while(!txd_complete);
if(tmp_char_arr2[0] != 0xff)
{
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; // limit to 5
// load requested parameter set
ParamSet_ReadFromEEProm(tmp_char_arr2[0]);
SendOutData('L' + tmp_char_arr2[0] -1,MySlaveAddr,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN);
}
else // send active parameter set
SendOutData('L' + GetParamByte(PID_ACTIVE_SET)-1,MySlaveAddr,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN);
 
break;
 
case 'l':
case 'm':
case 'n':
case 'o':
case 'p': // save parameterset
Decode64((uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN,3,ReceivedBytes);
ParamSet_WriteToEEProm(rxd_buffer[2] - 'l' + 1);
TurnOver180Pitch = (int32_t) ParamSet.AngleTurnOverPitch * 2500L;
TurnOver180Roll = (int32_t) ParamSet.AngleTurnOverRoll * 2500L;
Beep(GetActiveParamSet());
break;
 
 
}
// unlock the rxd buffer after processing
rxd_buffer_locked = FALSE;
}
 
//############################################################################
//Routine für die Serielle Ausgabe
int uart_putchar (char c)
int16_t uart_putchar (int8_t c)
//############################################################################
{
if (c == '\n')
uart_putchar('\r');
//Warten solange bis Zeichen gesendet wurde
loop_until_bit_is_set(USR, UDRE);
// wait until previous character was send
loop_until_bit_is_set(UCSR0A, UDRE0);
//Ausgabe des Zeichens
UDR = c;
UDR0 = c;
return (0);
}
 
// --------------------------------------------------------------------------
void WriteProgramData(unsigned int pos, unsigned char wert)
{
//if (ProgramLocation == IN_RAM) Buffer[pos] = wert;
// else eeprom_write_byte(&EE_Buffer[pos], wert);
// Buffer[pos] = wert;
}
 
//############################################################################
//INstallation der Seriellen Schnittstelle
void UART_Init (void)
//############################################################################
//---------------------------------------------------------------------------------------------
void USART0_TransmitTxData(void)
{
//Enable TXEN im Register UCR TX-Data Enable & RX Enable
if(!txd_complete) return;
 
UCR=(1 << TXEN) | (1 << RXEN);
// UART Double Speed (U2X)
USR |= (1<<U2X);
// RX-Interrupt Freigabe
UCSRB |= (1<<RXCIE);
// TX-Interrupt Freigabe
UCSRB |= (1<<TXCIE);
if(RequestExternalControl && txd_complete) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
{
SendOutData('G',MySlaveAddr,(uint8_t *) &ExternControl,sizeof(ExternControl));
RequestExternalControl = FALSE;
}
 
//Teiler wird gesetzt
UBRR=(SYSCLK / (BAUD_RATE * 8L) - 1);
//UBRR = 33;
//öffnet einen Kanal für printf (STDOUT)
//fdevopen (uart_putchar, 0);
//sbi(PORTD,4);
Debug_Timer = SetDelay(200);
Kompass_Timer = SetDelay(220);
}
#if !defined (USE_KILLAGREG) && !defined (USE_NAVICTRL)
if((CheckDelay(Compass_Timer)) && txd_complete)
{
ToMk3Mag.Attitude[0] = (int16_t) (IntegralPitch / 108); // approx. 0,1 Deg
ToMk3Mag.Attitude[1] = (int16_t) (IntegralRoll / 108); // approx. 0,1 Deg
ToMk3Mag.UserParam[0] = FCParam.UserParam1;
ToMk3Mag.UserParam[1] = FCParam.UserParam2;
ToMk3Mag.CalState = CompassCalState;
SendOutData('w',MySlaveAddr,(uint8_t *) &ToMk3Mag,sizeof(ToMk3Mag));
// the last state is 5 and should be send only once to avoid multiple flash writing
if(CompassCalState > 4) CompassCalState = 0;
Compass_Timer = SetDelay(99);
}
#endif
 
//---------------------------------------------------------------------------------------------
void DatenUebertragung(void)
{
if(!UebertragungAbgeschlossen) return;
if((CheckDelay(Debug_Timer) || RequestDebugData) && txd_complete)
{
SendOutData('D',MySlaveAddr,(uint8_t *) &DebugOut,sizeof(DebugOut));
RequestDebugData = FALSE;
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL);
}
 
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
{
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &ExternControl,sizeof(ExternControl));
DebugGetAnforderung = 0;
}
 
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen)
{
WinkelOut.Winkel[0] = (int) (IntegralNick / 108); // etwa in 0,1 Grad
WinkelOut.Winkel[1] = (int) (IntegralRoll / 108); // etwa in 0,1 Grad
WinkelOut.UserParameter[0] = Parameter_UserParam1;
WinkelOut.UserParameter[1] = Parameter_UserParam2;
SendOutData('w',MeineSlaveAdresse,(unsigned char *) &WinkelOut,sizeof(WinkelOut));
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt
Kompass_Timer = SetDelay(99);
}
 
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen)
{
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut));
DebugDataAnforderung = 0;
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL);
}
if(DebugTextAnforderung != 255) // Texte für die Analogdaten
if(RequestDebugLabel != 255) // Texte für die Analogdaten
{
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16);
DebugTextAnforderung = 255;
SendOutData('A',RequestDebugLabel + '0',(uint8_t *) ANALOG_LABEL[RequestDebugLabel],16);
RequestDebugLabel = 255;
}
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz ohne CRC bestätigen
if(ConfirmFrame && txd_complete) // Datensatz ohne CRC bestätigen
{
SendeBuffer[0] = '#';
SendeBuffer[1] = ConfirmFrame;
SendeBuffer[2] = '\r';
UebertragungAbgeschlossen = 0;
txd_buffer[0] = '#';
txd_buffer[1] = ConfirmFrame;
txd_buffer[2] = '\r';
txd_complete = 0;
ConfirmFrame = 0;
UDR = SendeBuffer[0];
UDR0 = txd_buffer[0];
}
if(DebugDisplayAnforderung && UebertragungAbgeschlossen)
if(RequestDisplay && txd_complete)
{
Menu();
DebugDisplayAnforderung = 0;
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung)
LCD_PrintMenu();
RequestDisplay = FALSE;
if(++RemotePollDisplayLine == 4 || RequestChannelOnly)
{
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen
SendOutData('4',0,(uint8_t *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen
RemotePollDisplayLine = -1;
}
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen
}
if(GetVersionAnforderung && UebertragungAbgeschlossen)
{
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo));
GetVersionAnforderung = 0;
}
else SendOutData('0' + RemotePollDisplayLine,0,(uint8_t *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen
}
if(RequestVerInfo && txd_complete)
{
SendOutData('V',MySlaveAddr,(uint8_t *) &VersionInfo,sizeof(VersionInfo));
RequestVerInfo = FALSE;
}
 
}
/branches/V0.69k Code Redesign killagreg/uart.h
1,116 → 1,63
#ifndef _UART_H
#define _UART_H
#ifndef _UART_H
#define _UART_H
 
#define MAX_SENDE_BUFF 150
#define MAX_EMPFANGS_BUFF 150
#define TXD_BUFFER_LEN 150
#define RXD_BUFFER_LEN 150
 
#define DUB_KEY_UP 4
#define DUB_KEY_DOWN 8
#define DUB_KEY_LEFT 16
#define DUB_KEY_RIGHT 32
#define DUB_KEY_LEFT 16
#define DUB_KEY_FIRE 64
 
void BearbeiteRxDaten(void);
#include <inttypes.h>
 
extern unsigned char DebugGetAnforderung;
extern unsigned volatile char SendeBuffer[MAX_SENDE_BUFF];
extern unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF];
extern unsigned volatile char UebertragungAbgeschlossen;
extern unsigned volatile char PC_DebugTimeout;
extern unsigned volatile char NeueKoordinateEmpfangen;
extern unsigned char MeineSlaveAdresse;
extern unsigned char PcZugriff;
extern unsigned char RemotePollDisplayLine;
extern int Debug_Timer,Kompass_Timer;
extern void UART_Init (void);
extern int uart_putchar (char c);
extern void boot_program_page (uint32_t page, uint8_t *buf);
extern void DatenUebertragung(void);
extern void DecodeNMEA(void);
extern void BearbeiteRxDaten(void);
extern unsigned char MotorTest[4];
extern unsigned char DubWiseKeys[4];
struct str_DebugOut
{
unsigned char Digital[2];
signed int Analog[32]; // Debugwerte
};
//Baud rate of the USART
#define USART0_BAUD 57600
 
extern struct str_DebugOut DebugOut;
 
struct str_WinkelOut
{
signed int Winkel[2];
unsigned char UserParameter[2];
unsigned char CalcState;
unsigned char Orientation;
};
extern struct str_WinkelOut WinkelOut;
extern void USART0_Init (void);
extern void USART0_TransmitTxData(void);
extern void USART0_ProcessRxData(void);
extern int16_t uart_putchar(int8_t c);
 
struct str_ExternControl
{
unsigned char Digital[2];
unsigned char RemoteTasten;
signed char Nick;
signed char Roll;
signed char Gier;
unsigned char Gas;
signed char Hight;
unsigned char free;
unsigned char Frame;
unsigned char Config;
};
extern struct str_ExternControl ExternControl;
extern uint8_t PcAccess;
extern uint8_t RemotePollDisplayLine;
extern uint8_t MotorTest[4];
extern uint8_t DubWiseKeys[4];
 
struct str_VersionInfo
typedef struct
{
unsigned char Hauptversion;
unsigned char Nebenversion;
unsigned char PCKompatibel;
unsigned char Rserved[7];
};
extern struct str_VersionInfo VersionInfo;
uint8_t Digital[2];
uint16_t Analog[32]; // Debugvalues
} DebugOut_t;
 
//Die Baud_Rate der Seriellen Schnittstelle ist 9600 Baud
//#define BAUD_RATE 9600 //Baud Rate für die Serielle Schnittstelle
//#define BAUD_RATE 14400 //Baud Rate für die Serielle Schnittstelle
//#define BAUD_RATE 28800 //Baud Rate für die Serielle Schnittstelle
//#define BAUD_RATE 38400 //Baud Rate für die Serielle Schnittstelle
#define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle
extern DebugOut_t DebugOut;
 
//Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird
#if defined (__AVR_ATmega128__)
# define USR UCSR0A
# define UCR UCSR0B
# define UDR UDR0
# define UBRR UBRR0L
# define EICR EICRB
#endif
typedef struct
{
uint8_t Digital[2];
uint8_t RemoteButtons;
int8_t Pitch;
int8_t Roll;
int8_t Yaw;
uint8_t Thrust;
int8_t Height;
uint8_t free;
uint8_t Frame;
uint8_t Config;
} ExternControl_t;
 
#if defined (__AVR_ATmega32__)
# define USR UCSRA
# define UCR UCSRB
# define UBRR UBRRL
# define EICR EICRB
# define INT_VEC_RX SIG_UART_RECV
# define INT_VEC_TX SIG_UART_TRANS
#endif
extern ExternControl_t ExternControl;
 
#if defined (__AVR_ATmega644__)
# define USR UCSR0A
# define UCR UCSR0B
# define UDR UDR0
# define UBRR UBRR0L
# define EICR EICR0B
# define TXEN TXEN0
# define RXEN RXEN0
# define RXCIE RXCIE0
# define TXCIE TXCIE0
# define U2X U2X0
# define UCSRB UCSR0B
# define UDRE UDRE0
# define INT_VEC_RX SIG_USART_RECV
# define INT_VEC_TX SIG_USART_TRANS
#endif
typedef struct
{
uint8_t Major;
uint8_t Minor;
uint8_t PCCompatible;
uint8_t Reserved[7];
} VersionInfo_t;
 
extern VersionInfo_t VersionInfo;
 
#endif //_UART_H
/branches/V0.69k Code Redesign killagreg/uart1.c
0,0 → 1,148
#include <avr/io.h>
#include <avr/interrupt.h>
 
 
#include "main.h"
#include "uart1.h"
#include "fifo.h"
#ifdef USE_KILLAGREG
#include "ubx.h"
#endif
 
 
 
// FIFO-objects and buffers for input and output
 
//#define BUFSIZE_IN 0x96
//volatile uint8_t inbuf[BUFSIZE_IN];
//fifo_t infifo;
 
#define BUFSIZE_OUT 0x96
volatile uint8_t outbuf[BUFSIZE_OUT];
fifo_t outfifo;
 
/****************************************************************/
/* Initialization of the USART1 */
/****************************************************************/
void USART1_Init (void)
{
// USART1 Control and Status Register A, B, C and baud rate register
uint8_t sreg = SREG;
uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * USART1_BAUD) - 1);
 
// disable all interrupts before reconfiguration
cli();
 
// disable RX-Interrupt
UCSR1B &= ~(1 << RXCIE1);
// disable TX-Interrupt
UCSR1B &= ~(1 << TXCIE1);
// disable DRE-Interrupt
UCSR1B &= ~(1 << UDRIE1);
 
// set direction of RXD1 and TXD1 pins
// set RXD1 (PD2) as an input pin
PORTD |= (1 << PORTD2);
DDRD &= ~(1 << DDD2);
 
// set TXD1 (PD3) as an output pin
PORTD |= (1 << PORTD3);
DDRD |= (1 << DDD3);
 
// USART0 Baud Rate Register
// set clock divider
UBRR1H = (uint8_t)(ubrr>>8);
UBRR1L = (uint8_t)ubrr;
 
// enable double speed operation
UCSR1A |= (1 << U2X1);
// enable receiver and transmitter
UCSR1B = (1 << TXEN1) | (1 << RXEN1);
// set asynchronous mode
UCSR1C &= ~(1 << UMSEL11);
UCSR1C &= ~(1 << UMSEL10);
// no parity
UCSR1C &= ~(1 << UPM11);
UCSR1C &= ~(1 << UPM10);
// 1 stop bit
UCSR1C &= ~(1 << USBS1);
// 8-bit
UCSR1B &= ~(1 << UCSZ12);
UCSR1C |= (1 << UCSZ11);
UCSR1C |= (1 << UCSZ10);
 
// flush receive buffer explicit
while ( UCSR1A & (1<<RXC1) ) UDR1;
 
// enable interrupts at the end
// enable RX-Interrupt
UCSR1B |= (1 << RXCIE1);
// enable TX-Interrupt
UCSR1B |= (1 << TXCIE1);
// enable DRE interrupt
//UCSR1B |= (1 << UDRIE1);
 
 
// restore global interrupt flags
SREG = sreg;
 
// inint FIFO buffer
//fifo_init (&infifo, inbuf, BUFSIZE_IN);
//fifo_init (&outfifo, outbuf, BUFSIZE_OUT);
}
 
/*int16_t USART1_putc (const uint8_t c)
{
int16_t ret = fifo_put (&outfifo, c);
// create an data register empty interrupt
UCSR1B |= (1 << UDRIE1);
 
return ret;
}
*/
/*int16_t USART1_getc_nowait ()
{
return fifo_get_nowait (&infifo);
}
 
 
uint8_t USART1_getc_wait ()
{
return fifo_get_wait (&infifo);
}
*/
 
/****************************************************************/
/* USART1 data register empty ISR */
/****************************************************************/
/*ISR(USART1_UDRE_vect)
{
// Move a character from the output buffer to the data register.
// When the character was processed the next interrupt is generated.
// If the output buffer is empty the DRE-interrupt is disabled.
if (outfifo.count > 0)
UDR1 = _inline_fifo_get (&outfifo);
else
UCSR1B &= ~(1 << UDRIE1);
}
*/
 
/****************************************************************/
/* USART1 transmitter ISR */
/****************************************************************/
/*ISR(USART1_TX_vect)
{
 
}
*/
/****************************************************************/
/* USART1 receiver ISR */
/****************************************************************/
ISR(USART1_RX_vect)
{
uint8_t c;
c = UDR1; // get data byte
#ifdef USE_KILLAGREG
if (BoardRelease == 11) ubx_parser(c); // and put it into the ubx protocol parser
#endif
}
/branches/V0.69k Code Redesign killagreg/uart1.h
0,0 → 1,25
#ifndef _UART1_H
#define _UART1_H
 
#define USART1_BAUD 57600
 
/*
Initialize the USART und activate the receiver and transmitter
as well as the receive-interrupt. The IO-FIFOs are initialized.
The global interrupt-enable-flag (I-Bit in SREG) is not changed
*/
extern void USART1_Init (void);
 
/*
The character c is stored in the output buffer. If the character was pushed sucessfully to
the output buffer then the return value is 1. In case of an output buffer overflow the return value is 0.
The isr is activated, which will send the data from the outbut buffer to the UART.
*/
extern int USART1_putc (const uint8_t c);
 
/*
extern uint8_t USART1_getc_wait(void);
extern int16_t USART1_getc_nowait(void);
*/
 
#endif //_UART1_H
/branches/V0.69k Code Redesign killagreg/ubx.c
0,0 → 1,233
#include <inttypes.h>
#include "ubx.h"
#include "main.h"
#include <avr/io.h>
 
#include "uart.h"
 
// ubx protocol parser state machine
#define UBXSTATE_IDLE 0
#define UBXSTATE_SYNC1 1
#define UBXSTATE_SYNC2 2
#define UBXSTATE_CLASS 3
#define UBXSTATE_LEN1 4
#define UBXSTATE_LEN2 5
#define UBXSTATE_DATA 6
#define UBXSTATE_CKA 7
#define UBXSTATE_CKB 8
 
// ublox protocoll identifier
#define UBX_CLASS_NAV 0x01
 
#define UBX_ID_POSLLH 0x02
#define UBX_ID_SOL 0x06
#define UBX_ID_VELNED 0x12
 
#define UBX_SYNC1_CHAR 0xB5
#define UBX_SYNC2_CHAR 0x62
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t Frac; // ns remainder of rounded ms above
int16_t week; // GPS week
uint8_t GPSfix; // GPSfix Type, range 0..6
uint8_t Flags; // Navigation Status Flags
int32_t ECEF_X; // cm ECEF X coordinate
int32_t ECEF_Y; // cm ECEF Y coordinate
int32_t ECEF_Z; // cm ECEF Z coordinate
uint32_t PAcc; // cm 3D Position Accuracy Estimate
int32_t ECEFVX; // cm/s ECEF X velocity
int32_t ECEFVY; // cm/s ECEF Y velocity
int32_t ECEFVZ; // cm/s ECEF Z velocity
uint32_t SAcc; // cm/s Speed Accuracy Estimate
uint16_t PDOP; // 0.01 Position DOP
uint8_t res1; // reserved
uint8_t numSV; // Number of SVs used in navigation solution
uint32_t res2; // reserved
uint8_t Status;
} GPS_SOL_t;
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t LON; // 1e-07 deg Longitude
int32_t LAT; // 1e-07 deg Latitude
int32_t HEIGHT; // mm Height above Ellipsoid
int32_t HMSL; // mm Height above mean sea level
uint32_t Hacc; // mm Horizontal Accuracy Estimate
uint32_t Vacc; // mm Vertical Accuracy Estimate
uint8_t Status;
} GPS_POSLLH_t;
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t VEL_N; // cm/s NED north velocity
int32_t VEL_E; // cm/s NED east velocity
int32_t VEL_D; // cm/s NED down velocity
uint32_t Speed; // cm/s Speed (3-D)
uint32_t GSpeed; // cm/s Ground Speed (2-D)
int32_t Heading; // 1e-05 deg Heading 2-D
uint32_t SAcc; // cm/s Speed Accuracy Estimate
uint32_t CAcc; // deg Course / Heading Accuracy Estimate
uint8_t Status;
} GPS_VELNED_t;
 
GPS_SOL_t GpsSol = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, INVALID};
GPS_POSLLH_t GpsPosLlh = {0,0,0,0,0,0,0, INVALID};
GPS_VELNED_t GpsVelNed = {0,0,0,0,0,0,0,0,0, INVALID};
GPS_INFO_t GPSInfo = {0,0,0,0,0,0,0,0,0,0, INVALID};
 
volatile uint8_t GPSTimeout = 0;
 
void UpdateGPSInfo (void)
{
static uint32_t lasttime;
if (GpsSol.Status == VALID) // valid packet
{
GPSInfo.satfix = GpsSol.GPSfix;
GPSInfo.satnum = GpsSol.numSV;
GPSInfo.PAcc = GpsSol.PAcc;
GPSInfo.VAcc = GpsSol.SAcc;
GpsSol.Status = PROCESSED; // never update old data
}
if (GpsPosLlh.Status == VALID) // valid packet
{
GPSInfo.updatetime = GpsPosLlh.ITOW - lasttime;
lasttime = GpsPosLlh.ITOW;
GPSInfo.longitude = GpsPosLlh.LON;
GPSInfo.latitude = GpsPosLlh.LAT;
GPSInfo.altitude = GpsPosLlh.HEIGHT;
GpsPosLlh.Status = PROCESSED; // never update old data
}
if (GpsVelNed.Status == VALID) // valid packet
{
GPSInfo.veleast = GpsVelNed.VEL_E;
GPSInfo.velnorth = GpsVelNed.VEL_N;
GPSInfo.veltop = -GpsVelNed.VEL_D;
GPSInfo.velground = GpsVelNed.GSpeed;
GpsVelNed.Status = PROCESSED; // never update old data
}
if ((GpsSol.Status != INVALID) && (GpsPosLlh.Status != INVALID) && (GpsVelNed.Status != INVALID))
{
GPSInfo.status = VALID; // set valid if data are updated
}
}
 
 
// this function should be called within the UART RX ISR
void ubx_parser(uint8_t c)
{
static uint8_t ubxstate = UBXSTATE_IDLE;
static uint8_t cka, ckb;
static uint16_t msglen;
static int8_t *ubxP, *ubxEp, *ubxSp; // pointers to data currently transfered
 
switch(ubxstate)
{
case UBXSTATE_IDLE: // check 1st sync byte
if (c == UBX_SYNC1_CHAR) ubxstate = UBXSTATE_SYNC1;
else ubxstate = UBXSTATE_IDLE; // out of synchronization
break;
 
case UBXSTATE_SYNC1: // check 2nd sync byte
if (c == UBX_SYNC2_CHAR) ubxstate = UBXSTATE_SYNC2;
else ubxstate = UBXSTATE_IDLE; // out of synchronization
break;
 
case UBXSTATE_SYNC2: // check msg class to be NAV
if (c == UBX_CLASS_NAV) ubxstate = UBXSTATE_CLASS;
else ubxstate = UBXSTATE_IDLE; // unsupported message class
break;
 
case UBXSTATE_CLASS: // check message identifier
switch(c)
{
case UBX_ID_POSLLH: // geodetic position
ubxP = (int8_t *)&GpsPosLlh; // data start pointer
ubxEp = (int8_t *)(&GpsPosLlh + 1); // data end pointer
ubxSp = (int8_t *)&GpsPosLlh.Status; // status pointer
break;
 
case UBX_ID_SOL: // navigation solution
ubxP = (int8_t *)&GpsSol; // data start pointer
ubxEp = (int8_t *)(&GpsSol + 1); // data end pointer
ubxSp = (int8_t *)&GpsSol.Status; // status pointer
break;
 
case UBX_ID_VELNED: // velocity vector in tangent plane
ubxP = (int8_t *)&GpsVelNed; // data start pointer
ubxEp = (int8_t *)(&GpsVelNed + 1); // data end pointer
ubxSp = (int8_t *)&GpsVelNed.Status; // status pointer
break;
 
default: // unsupported identifier
ubxstate = UBXSTATE_IDLE;
break;
}
if (ubxstate != UBXSTATE_IDLE)
{
ubxstate = UBXSTATE_LEN1;
cka = UBX_CLASS_NAV + c;
ckb = UBX_CLASS_NAV + cka;
}
break;
 
case UBXSTATE_LEN1: // 1st message length byte
msglen = c;
cka += c;
ckb += cka;
ubxstate = UBXSTATE_LEN2;
break;
 
case UBXSTATE_LEN2: // 2nd message length byte
msglen += ((uint16_t)c)<<8;
cka += c;
ckb += cka;
// if the old data are not processed so far then break parsing now
// to avoid writing new data in ISR during reading by another function
if ( *ubxSp == VALID ) ubxstate = UBXSTATE_IDLE;
else // data invalid or allready processd
{
*ubxSp = INVALID;
ubxstate = UBXSTATE_DATA;
}
break;
 
case UBXSTATE_DATA:
if (ubxP < ubxEp) *ubxP++ = c; // copy curent data byte if any space is left
cka += c;
ckb += cka;
if (--msglen == 0) ubxstate = UBXSTATE_CKA; // switch to next state if all data was read
break;
 
case UBXSTATE_CKA:
if (c == cka) ubxstate = UBXSTATE_CKB;
else
{
*ubxSp = INVALID;
ubxstate = UBXSTATE_IDLE;
}
break;
 
case UBXSTATE_CKB:
if (c == ckb)
{
*ubxSp = VALID; // new data are valid
ROT_FLASH;
UpdateGPSInfo(); //update GPS info respectively
GPSTimeout = 255;
}
else
{ // if checksum not fit then set data invalid
*ubxSp = INVALID;
}
ubxstate = UBXSTATE_IDLE; // ready to parse new data
break;
 
default: // unknown ubx state
ubxstate = UBXSTATE_IDLE;
break;
}
 
}
 
 
/branches/V0.69k Code Redesign killagreg/ubx.h
0,0 → 1,50
#ifndef _UBX_H
#define _UBX_H
 
#include <inttypes.h>
 
#define INVALID 0x00
#define VALID 0x01
#define PROCESSED 0x02
 
 
#define SATFIX_NONE 0x00
#define SATFIX_DEADRECKOING 0x01
#define SATFIX_2D 0x02
#define SATFIX_3D 0x03
#define SATFIX_GPS_DEADRECKOING 0x04
#define SATFIX_TIMEONLY 0x05
 
 
/* enable the UBX protocol at the gps receiver with the following messages enabled
01-02 NAV - POSLLH
01-06 Nav - SOL
01-12 NAV - VELNED */
 
typedef struct
{
uint8_t status; // status of data: invalid | valid
uint8_t satnum; // number of satelites
uint8_t satfix; // type of satfix
int32_t longitude; // in 1e-07 deg
int32_t latitude; // in 1e-07 deg
int32_t altitude; // in mm
uint32_t PAcc; // in cm 3d position accuracy
int32_t velnorth; // in cm/s
int32_t veleast; // in cm/s
int32_t veltop; // in cm/s
uint32_t velground; // 2D ground speed in cm/s
uint32_t VAcc; // in cm/s 3d velocity accuracy
uint32_t updatetime; // ms
} GPS_INFO_t;
 
//here you will find the current gps info
extern GPS_INFO_t GPSInfo; // measured position (last gps record)
 
// this variable should be decremted by the application
extern volatile uint8_t GPSTimeout; // is reset to 255 if a new UBX msg was received
 
// this function should be called within the UART RX ISR
extern void ubx_parser(uint8_t c);
 
#endif //_UBX_H
/branches/V0.69k Code Redesign killagreg/version.txt
112,8 → 112,8
V0.68c H.Buss 05.01.2008
- Stickauswertung verbessert -> träger und präziser
- Alle Settings angepasst
 
V0.69e H.Buss 05.05.2008
V0.69g H.Buss 05.05.2008
- kleinere Bugs beseitigt
- Schneller Sinkflug jetzt möglich
- Min- und Maxgas in den Settings geändert
125,13 → 125,37
- STICK_GAIN = 4 eingeführt. Das erhöht die Auflösung der Sollwerte. Stick_P und Stick_I müssen nun um Faktor 4 erhöht werden
- SenderOkay auch an das Naviboard übertragen
- Bessere Parameter bei Senderausfall
 
V0.69j H.Buss 30.05.2008
- Höhere Auflösung der Achsenkopplung
V0.69j H.Buss 30.05.2008
- Höhere Präzision der Achsenkopplung
 
V0.69k H.Buss 31.05.2008
- Bug in SPI.C behoben
- in 0.69h war ein Bug, der zu ungewollten Loopings führen konnte
 
 
Anpassungen bzgl. V0.69k
G.Stobrawa 01.06.2008:
 
- Code stärker modularisiert und restrukturiert
- viele Kommentare zur Erklärug eingefügt
- konsequent englische Variablennamen
- PPM24 Support für bis zu 12 RC-Kanäle.
- 2. Uart wird nun unterstützt (MCU = atmega644p im Makefile)
- Makefile: EXT nicht definiert Unerstützung des MK3MAG direct an FC
- Makefile: EXT=NAVICTRL Unterstützung der SPI Communikation zum Naviboard
- Makefile: EXT=KILLAGREG Unterstützung vom KillagregBoard mit MM3 und Conrad UBLOX Modul
- Ausertung des UBX-Pprotocols an 1. oder 2. Uart
- GPS-Hold-Funktion hinzugefügt
- GPS-Home-Funktion hinzugefügt (wird beim Motorstart gelernt, und bei Motorenstop wieder gelöscht)
- Poti3 steuert die GPS Funktionen (Poti3 < 70:GPS inaktiv, 70<=Poti3<160: GPS Hold, 160<=Poti3: GPS Home)
- LED Steuerung an J16, parametrierbar durch die User Parameter 7 & 8. UserParam7 legt die LEDOnTime in Vielfachen von 2ms fest
und UserParam 8 die LEDOffTime.
- Zusätzliche Punkte im Menü des KopterTool zur Anzeige des GPS-Status und der MM3-Kalibierparameter