/branches/V0.72p HexaLotte/FlightCtrl.aps |
---|
0,0 → 1,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> |
/branches/V0.72p HexaLotte/GPS.c |
---|
0,0 → 1,32 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
signed int GPS_Nick = 0; |
signed int GPS_Roll = 0; |
signed int GPS_Nick2 = 0; |
signed int GPS_Roll2 = 0; |
long GpsAktuell_X = 0; |
long GpsAktuell_Y = 0; |
long GpsZiel_X = 0; |
long GpsZiel_Y = 0; |
void GPS_Neutral(void) |
{ |
GpsZiel_X = GpsAktuell_X; |
GpsZiel_Y = GpsAktuell_Y; |
} |
void GPS_BerechneZielrichtung(void) |
{ |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
/branches/V0.72p HexaLotte/Hex-Files/Flight-Ctrl_MEGA644_HEXA1_V0_72p.hex |
---|
0,0 → 1,2816 |
:100000000C9493020C94B0020C94B0020C94B002C5 |
:100010000C94B0020C94B0020C94B0020C94B00298 |
:100020000C94B0020C94FF120C94B0020C94B00229 |
:100030000C94F1220C94B0020C94B0020C94B00217 |
:100040000C94B0020C94B0020C94B1110C94B00258 |
:100050000C94C0060C94B0020C9488060C94B00268 |
:100060000C9401160C94B0020C94E6210C94B0028E |
:100070000C9402530C94B0020C94B00272197E19C5 |
:1000800013181F1839183416E217F4172F175F16B4 |
:100090003416531864187E189E18BE181819501676 |
:1000A00067227E2253228B2272220B229F22382229 |
:1000B00025226E22622229222D2225229722922297 |
:1000C00029222D2225229B225D22292248220A0A4A |
:1000D0000D004E65757472616C0048656164696EEF |
:1000E00067486F6C64000A0D537465756572756EB0 |
:1000F000673A20004F4B0A0D000A0D4162676C659C |
:10010000696368204C756674647275636B73656EA1 |
:10011000736F722E2E000A0D42656E75747A65201B |
:10012000506172616D657465727361747A202564C3 |
:10013000000A0D414343206E696368742061626761 |
:1001400065676C696368656E21003A2047656E6576 |
:10015000726174696E672044656661756C742D50B8 |
:100160006172616D65746572207573696E67206F69 |
:100170006C6420537469636B2053657474696E6793 |
:1001800073000A0D496E69742E20454550524F4D3B |
:10019000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D2F |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F |
:1001B0003D000A0D466C69676874436F6E74726F18 |
:1001C0006C0A0D48617264776172653A25642E2568 |
:1001D000640A0D536F6674776172653A5625642E12 |
:1001E0002564256320002E0048693A2534692020C3 |
:1001F00043663A253469200047733A253469202044 |
:1002000047693A25346920004E693A25346920202F |
:10021000526F3A253469200045787465726E436FD9 |
:100220006E74726F6C20200052616E67653A2533E0 |
:10023000692D253369005374656C6C756E673A20BF |
:1002400025336900536574706F696E7420202533FF |
:100250006900536572766F202000506F7469343ADC |
:10026000202025336900506F7469333A20202533EC |
:100270006900506F7469323A202025336900506F4D |
:100280007469313A20202533690053746172743ADD |
:100290002020202020253569004D65737377657215 |
:1002A000743A2020253569005269636874756E6759 |
:1002B0003A2020253569004B6F6D706173732020E3 |
:1002C000202020202000456D70662E506567656CEB |
:1002D0003A253569005370616E6E756E673A20205D |
:1002E00025356900486F6368202534692028253347 |
:1002F000692900526F6C6C202534692028253369E8 |
:1003000029004E69636B202534692028253369292B |
:1003100000414343202D2053656E736F720047697F |
:1003200065722025346920282533692928253369F9 |
:100330002900526F6C6C20253469202825336929E7 |
:100340002825336929004E69636B202534692028EC |
:1003500025336929282533692900476965722025D5 |
:10036000346920282533692900526F6C6C202534AC |
:100370006920282533692E257829004E69636B2072 |
:1003800025346920282533692E2578290047696599 |
:10039000722025346920282533692900526F6C6C3E |
:1003A0002025346920282533692E256929004E69C6 |
:1003B000636B2025346920282533692E256929009F |
:1003C0004779726F202D2053656E736F7200503322 |
:1003D0003A253469202050343A25346920005031C0 |
:1003E0003A253469202050323A2534692000477379 |
:1003F0003A253469202047693A25346920004E693E |
:100400003A2534692020526F3A25346920004B3751 |
:100410003A25346920204B383A25346920004B3581 |
:100420003A25346920204B363A25346920004B3375 |
:100430003A25346920204B343A25346920004B3169 |
:100440003A25346920204B323A25346920004B6F1D |
:100450006D706173733A20202025356900526F6CEE |
:100460006C3A202020202020253569004E69636BDE |
:100470003A20202020202025356900616B742E2031 |
:100480004C6167650048F668656E726567656C75F6 |
:100490006E67004B65696E6520004F666620202000 |
:1004A0002020203A20253569004C756674647275E9 |
:1004B000636B3A2025356900536F6C6C486F656833 |
:1004C000653A2025356900486F6568653A20202027 |
:1004D00020202535690028632920486F6C676572E4 |
:1004E00020427573730053657474696E673A2025F2 |
:1004F00064200048575625642E25642053572564F0 |
:100500002E256425632048455841002B204D696BFA |
:10051000726F4B6F70746572202B005B25695D00F4 |
:100520005B25695D000011241FBECFEFD0E1DEBF67 |
:10053000CDBF13E0A0E0B1E0EAE1FDEA02C0059022 |
:100540000D92A23CB107D9F718E0A2ECB3E001C0CC |
:100550001D92A33EB107E1F70E945B030C948C56F9 |
:100560000C940000863038F085E0A2E0B0E0082E60 |
:100570000E947B5608958823C1F70895A2E0B0E059 |
:100580000E947356902D892F8150853018F4892F41 |
:1005900090E0089583E00E94B20283E090E0089525 |
:1005A0008091CF07E82FF0E0EE0FFF1FE356F84FE2 |
:1005B000808191818D5E9F4F14F0109202018081A5 |
:1005C00091818A5B9F4FACF480910201882389F46A |
:1005D00081E080930201209192062F5F2093920682 |
:1005E000253050F088EE93E09093E6038093E50386 |
:1005F00008C02091920605C0822F0E9401352091EB |
:100600009206822F90E09093600780935F07089591 |
:10061000582F9B01863060F5882349F1A82FB0E060 |
:100620001197842F90E0BD01689FD001699FB00DA4 |
:10063000789FB00D1124AC59BF4FF901019724F0F8 |
:1006400001900E947B56FACF62E670E0DB01042E37 |
:100650000E947B5688E062517040DB01F901182E40 |
:100660000E948756852F0E94B2020E94215208954F |
:1006700055E0A4E0B0E0D5CFA82FFB018150853034 |
:1006800018F0A2E0B0E002C0B0E01197842F90E033 |
:100690009D01289FD001299FB00D389FB00D1124D6 |
:1006A000AC59BF4F019724F00E9473560192FACFC4 |
:1006B0000E94215208952F923F924F925F926F9223 |
:1006C0007F928F929F92AF92BF92CF92DF92EF92E2 |
:1006D000FF920F931F93CF93DF93CDB7DEB722978F |
:1006E0000FB6F894DEBF0FBECDBF14B815B8189B77 |
:1006F000F8C2199BF2C28DE08093000181E887B9AE |
:100700003E9A8FEF88B98BE184B981E085B98EE399 |
:100710008AB9579A87E48BB9469A84B7877F84BF92 |
:10072000809160008861809360001092600080ED8D |
:1007300097E09093E6038093E50310929A04109259 |
:1007400099041092A2071092A10710929804109297 |
:100750009704109296041092950420910001243180 |
:1007600008F4C5C288E894E0A0E0B0E08093B30349 |
:100770009093B403A093B503B093B6032A3009F461 |
:100780008BC2243109F488C2289A0E94E8120E9480 |
:10079000C0120E9467080E94DC220E94FB150E9482 |
:1007A000AF210E94EB4E789420910001822F6AE0E5 |
:1007B0000E940356492F50E0822F0E94035690E07A |
:1007C00020E730E03F932F9328E430E03F932F93CE |
:1007D0001F921F925F934F939F938F9382EB91E0B1 |
:1007E0009F938F931F920E94C50E8091C8002DB7D2 |
:1007F0003EB7235F3F4F0FB6F8943EBF0FBE2DBFED |
:10080000803209F420C281E991E09F938F931F9277 |
:100810000E94C50E0F900F900F90809100018C30B8 |
:1008200008F00FC2299A49E06FEC77E083E00E945C |
:100830003C0371E0C72E70E0D72ED6010E9473569C |
:10084000802D8A3409F4B2C00E947D3682E891E09E |
:100850009F938F931F920E94C50E1A8219820F9048 |
:100860000F900F9060E5A62E60E0B62E51E5852E24 |
:1008700050E0952E42E5642E40E0742E33E5432E81 |
:1008800030E0532E24E5222E20E0322E97E5E92E8B |
:1008900090E0F92E0981102F1F5F123009F4C1C1B9 |
:1008A000133009F4FBC1143008F0BBC18091000182 |
:1008B000843168F085E08093E7071092FF078BE1B1 |
:1008C0008093E3078EE48093FC078093FD07D501B6 |
:1008D0000E947356802D8C3008F05DC0D4010E94B8 |
:1008E0007356802D8C3008F056C0D3010E94735689 |
:1008F000802D8C3008F04FC0D2010E947356802D9D |
:100900008C3008F048C0A0E5B0E00E947356802DFE |
:100910008093CF07A1E5B0E00E947356802D8093AD |
:10092000D007A2E5B0E00E947356802D8093D107D6 |
:10093000A3E5B0E00E947356802D8093D207D101C9 |
:100940000E947356802D8093D307A5E5B0E00E94E6 |
:100950007356802D8093D407A6E5B0E00E947356AD |
:10096000802D8093D507D7010E947356802D8093E8 |
:10097000D607113009F495C14CE56FEC77E0812F73 |
:100980000E9408030E5F063048F489819A8101961F |
:100990009A8389837FCF0E94DE23EECF83E00E947B |
:1009A000B2028AE4D601082E0E947B56A4E0B0E091 |
:1009B0000E947356802D853008F084C10E94BE02CB |
:1009C0004CE56FEC77E00E943C030E94BE0290E091 |
:1009D0009F938F9386E191E09F938F931F920E9444 |
:1009E000C50E8091D7070F900F900F900F900F902A |
:1009F00080FD31C108EE13E00E9484328091000135 |
:100A00008A3009F41CC1843109F419C1289A80ED97 |
:100A100097E09093E6038093E50385E58093940641 |
:100A200086EE90E09F938F931F920E94C50E809157 |
:100A3000D7070F900F900F9082FFF6C08AED90E0DD |
:100A40009F938F931F920E94C50E0F900F900F904F |
:100A50008EEC90E09F938F931F920E94C50E0E9490 |
:100A60005A1B88E893E1909394038093930381E069 |
:100A7000809393060F900F900F908091E20388234C |
:100A800009F471C080911D03882309F46CC0109291 |
:100A9000E20380919206882309F471C00E94D0027B |
:100AA0000E94BA30209100012A3009F471C024312B |
:100AB00009F46EC0289A80910501882309F46EC05C |
:100AC00081508093050180919404882329F08091BE |
:100AD00094048150809394048091930390919403A3 |
:100AE000892B09F46CC08091930390919403019732 |
:100AF00090939403809393032A3009F45EC02431C9 |
:100B000009F45BC0289A8091E203882329F0809140 |
:100B10009D04882309F075C00E94A6090E94370C25 |
:100B2000C8010E9490128823E1F020910E033091B9 |
:100B30000F038091E80790E02817390744F480916B |
:100B4000090390910A038F5F9F4F09F45DC00E94D3 |
:100B5000565184E08093E70384E190E00E9487127D |
:100B60008C010E9430528091E703882309F085CFE1 |
:100B70000E9497518091E2038823A9F383CF0E94BA |
:100B80002C370E94BA30209100012A3009F08FCF13 |
:100B9000289880910501882309F092CF10929E0633 |
:100BA0001092B5041092B4041092B7041092B604D7 |
:100BB0001092B9041092B80486CF2898A4CF85E08B |
:100BC00090E090939403809393030E94C9218091B5 |
:100BD000090390910A038F5F9F4F09F094CF809192 |
:100BE0009D04882309F48FCF80E197E29093E60378 |
:100BF0008093E50380E890E090930A0380930903D3 |
:100C000082CF0E94370C8CCF80E797E19093E60368 |
:100C10008093E50380E093E090930A0380930903B7 |
:100C200096CF0E94CC3542CE82ED90E09F938F9379 |
:100C30001F920E94C50E0F900F900F9009CF289819 |
:100C4000E6CE2998F0CD8091CA00863009F0DBCD40 |
:100C50000E94AC52D8CD89EF90E09F938F931F9262 |
:100C60000E94C50E88EE93E00E9487128C010E94BC |
:100C7000FE1A0F900F900F90C8010E9490128823C7 |
:100C8000D9F384EF90E09F938F931F920E94C50E3B |
:100C90000F900F900F90B0CE289877CD0E941D3501 |
:100CA00005CEEAE4F1E0FF93EF931F920E94C50E98 |
:100CB0004CE56FEC77E081E00E9408030F900F9005 |
:100CC0000F9063CE81E391E09F938F931F920E94D8 |
:100CD000C50E0F900F900F9071CE8BE080930001A6 |
:100CE0000DCD199B11C084E18093000107CD8BE0ED |
:100CF00095E0A0E0B0E08093B3039093B403A09399 |
:100D0000B503B093B6033ACD8AE080930001F6CCE8 |
:100D10001F920F920FB60F9211248F939F93EF9310 |
:100D2000FF93809103018823A9F48091DE039091C1 |
:100D3000DF0301969093DF038093DE03FC01EC5AFE |
:100D4000FA4FE081ED3059F08639910541F0E0939A |
:100D5000C6000DC01092DF031092DE0308C010928F |
:100D6000DF031092DE0381E080930301F0CFFF9157 |
:100D7000EF919F918F910F900FBE0F901F9018953C |
:100D80001F920F920FB60F9211242F933F934F9300 |
:100D90008F939F93AF93BF93CF93DF93EF93FF9383 |
:100DA0008091C6008093C9034091D903463910F061 |
:100DB0001092D8038091C9038D3009F18091D80336 |
:100DC000813009F490C0813030F0823009F473C072 |
:100DD0001092D803B5C08091C903833209F4A1C031 |
:100DE0008091C9038093A10681E08093D90380910B |
:100DF000C90390E09093DD038093DC03A1C0809150 |
:100E0000D8038230E9F61092D803A42FB0E0FD0198 |
:100E1000E156F94F3081ED01C056D94F28818091BC |
:100E2000DC039091DD03831B9109821B91099F7064 |
:100E30009093DD038093DC039C010024220F331F79 |
:100E4000001C220F331F001C232F302D235C209306 |
:100E5000DB03982F9F73935C9093DA0380812817AC |
:100E600009F468C08091CC038F5F8093CC0390E03D |
:100E70008091CA03882309F063C0992309F460C0F4 |
:100E800081E08093CA034F5F4093CD03AF55B94FC4 |
:100E90008DE08C938091A306823509F051C088E1E2 |
:100EA00090E02CE00FB6F894A895809360000FBEF8 |
:100EB0002093600045C0E42FF0E08091C903EF5516 |
:100EC000F94F8083463948F11092D8032091C90325 |
:100ED0008091DC039091DD03820F911D9093DD03DF |
:100EE0008093DC032DC082E08093D803E42FF0E0F0 |
:100EF0008091C903EF55F94F80834F5F4093D90329 |
:100F00002091C9038091DC039091DD03820F911D34 |
:100F10009093DD038093DC0313C04F5F4093D903AC |
:100F2000D5CF8091CA03882309F05ACF81E08093FE |
:100F3000D80356CF8881981709F094CF91E098CFC5 |
:100F4000FF91EF91DF91CF91BF91AF919F918F91E1 |
:100F50004F913F912F910F900FBE0F901F901895BA |
:100F6000CF93DF93BC01892B19F120E030E040E002 |
:100F700050E0FA01EC5AFA4F8081280F311D4F5F83 |
:100F80005F4F46175707A9F73F70C9010024880F24 |
:100F9000991F001C880F991F001C892F902D835CBE |
:100FA000DB0111962F73235CED012196FB0108C034 |
:100FB000E0E0F0E08DE3A1E0B0E02DE3C2E0D0E0BE |
:100FC000EC5AFA4F8083AC5ABA4F2C93CC5ADA4F72 |
:100FD0008DE0888310920301809154058093C600B0 |
:100FE000DF91CF9108954091CD03465009F451C04F |
:100FF00033E063E030C0282F2D53E62FF0E0822F3E |
:1010000082958F709D53990F990F982BEF55F94F3B |
:101010009083E62FEF5F4130D1F1972F9D53F0E0A1 |
:101020002295207F892F86958695282BEF55F94F9D |
:101030002083E62FEE5F43504F3F49F1F0E0929559 |
:10104000990F990F907C5D53952BEF55F94F908335 |
:101050006D5F4423D9F0E32FF0E0EF55F94F908115 |
:101060003F5FE32FF0E0EF55F94F80813F5FE32FC3 |
:10107000F0E0EF55F94F70813F5FE32FF0E0EF555F |
:10108000F94F50813F5F442309F0B5CFE62FE3507D |
:1010900001C0E0E084EA96E09093CF038093CE0312 |
:1010A000E093D00308951F93182F8A3029F0809180 |
:1010B000C00085FFFCCF04C08DE00E945308F7CF2D |
:1010C0001093C60080E090E01F9108950895E1EC30 |
:1010D000F0E088E18083A0ECB0E08C9182608C939A |
:1010E0008081806880838081806480838AE28093AD |
:1010F000C40080910701909108010E94871290938B |
:101100008106809380068CED90E00E948712909378 |
:10111000A00680939F061092820688E4809383063F |
:101120008FE0809386068AE080938406109285067D |
:101130001092CF031092CE031092D0030895EF9235 |
:10114000FF920F931F93CF93DF93CDB7DEB7229714 |
:101150000FB6F894DEBF0FBECDBF9C854D8583E2F0 |
:10116000809354059F59909355058B858093560520 |
:10117000CE010E969A838983442319F463E070E0CC |
:10118000D5C00E851F85CE0142969A838983288912 |
:1011900039892115310591F3F42EFA9463E070E05A |
:1011A000A0E05EC0EA2FF0E0AF5FC901E00FF11FE1 |
:1011B00040819C012150304009F473C0EA2FF0E0D7 |
:1011C000AF5FE00FF11FB0812150304009F079C0CE |
:1011D000FF2009F476C0E981FA81008111813496FB |
:1011E000FA83E983349722813381FA94842F90E043 |
:1011F00042954F708F7090705B2F52955695569513 |
:101200005370880F991F880F991F582B535CBF7319 |
:10121000B35CA0E08E2D86958695835CFB01EC5A2D |
:10122000FA4F80838E2D90E0837090708295929516 |
:10123000907F9827807F9827482B435CFB01EB5ACF |
:10124000FA4F4083FB01EA5AFA4F5083FB01E95AF7 |
:10125000FA4FB0836C5F7F4F2115310509F466C0EA |
:10126000F801EA0FF11DE080AF5F2150304009F036 |
:1012700099CFFF2091F0E981FA81008111813496A4 |
:10128000FA83E983349782819381FA94009721F05D |
:10129000E0E0F0E0A1E08ACFA0E040E05DE3BDE364 |
:1012A000B9CFFF2011F5842F90E042954F708F70D9 |
:1012B0009070880F991F880F991F582F535CBDE3BA |
:1012C000A9CF842F90E042954F708F7090705B2F64 |
:1012D0005295569556955370880F991F880F991FF0 |
:1012E000582B535CBF73B35C95CFE981FA810081C1 |
:1012F00011813496FA83E983349722813381FA94F9 |
:101300002115310579F4842F90E042954F708F704C |
:101310009070880F991F880F991F582F535CA0E079 |
:10132000BDE378CFE0E0F0E0A1E04BCFCB010E943D |
:10133000B00722960FB6F894DEBF0FBECDBFDF9187 |
:10134000CF911F910F91FF90EF900895EF92FF9230 |
:101350000F931F9380910301882309F483C2809126 |
:10136000C403882329F080910301882309F04AC12E |
:101370008091C303882329F080910301882309F019 |
:101380007BC18091C603882329F0809103018823C3 |
:1013900009F0A2C18091C203882329F08091030142 |
:1013A000882309F0B9C180919F069091A0060E9400 |
:1013B0009012882329F080910301882309F0D1C17C |
:1013C0008091070190910801892B09F06DC08091EF |
:1013D000C503882329F080910301882309F0EAC01E |
:1013E0008091D6039091D703892B09F06CC080912E |
:1013F00004018F3F59F190E082959295907F982754 |
:10140000807F9827875F9E4F20E130E03F932F93A6 |
:101410009F938F9381E090E09F938F9384E091E07E |
:101420009F938F9382E08F9381E08F9381E48F93DA |
:101430000E949F088FEF809304012DB73EB7255F70 |
:101440003F4F0FB6F8943EBF0FBE2DBF8091790776 |
:10145000882329F080910301882309F0E5C1809158 |
:10146000C703882309F4FEC180910301882309F48E |
:10147000F9C186E190E09F938F938DE997E09F9368 |
:101480008F9381E08F938F9380E58F930E949F08C5 |
:101490001092C7032DB73EB7295F3F4F0FB6F894A0 |
:1014A0003EBF0FBE2DBFDEC18091800690918106A8 |
:1014B0000E949012882309F48ACF80910301882327 |
:1014C00009F48ECF77C080915205909153050E9408 |
:1014D0009012882309F48BCF80910301882309F4AB |
:1014E00086CFE090E307FF24EE0CFF1CEE0CFF1C00 |
:1014F0000027F7FC0095102F609145047091460479 |
:101500008091470490914804A80197010E94585681 |
:10151000309345052093440560914D0470914E042D |
:1015200080914F0490915004A80197010E94585651 |
:1015300030934705209346056091760870917708AF |
:1015400080917808909179082AE030E040E050E0FE |
:101550000E94E4552091B3033091B4034091B50348 |
:101560005091B6030E945856309349052093480580 |
:101570008EE090E09F938F9384E495E09F938F9308 |
:1015800081E08F938F9383E48F930E949F088091D3 |
:10159000D6039091D7030E948712909353058093AE |
:1015A00052058DB79EB707960FB6F8949EBF0FBE33 |
:1015B0008DBF1DCF82E490E09F938F9387E397E0E8 |
:1015C0009F938F9381E08F938F9384E48F930E94F6 |
:1015D0009F081092C50380910701909108012DB7D3 |
:1015E0003EB7295F3F4F0FB6F8943EBF0FBE2DBFE9 |
:1015F000009709F4F5CE0E9487129093810680939C |
:101600008006EECE0E94631B8091C80324E1829F76 |
:10161000C0011124885D9C4F24E130E03F932F935B |
:101620009F938F9381E090E09F938F9388EC93E05A |
:101630009F938F9382E08F9381E08F9388E48F93C1 |
:101640000E949F088091C8038F5F8093C8032DB7C5 |
:101650003EB7255F3F4F0FB6F8943EBF0FBE2DBF7C |
:10166000843010F01092C8031092C4038091C30319 |
:10167000882309F486CE80CE0E94631B80E590E02B |
:101680009F938F9388E293E09F938F9321E030E0C4 |
:101690003F932F9388E793E09F938F933F932F93EC |
:1016A00086E294E09F938F9383E08F9381E08F9302 |
:1016B0008CE48F930E949F081092C3038DB79EB74E |
:1016C0000F960FB6F8949EBF0FBE8DBF8091C603D4 |
:1016D000882309F45FCE59CE8AE090E09F938F93E0 |
:1016E00082E896E09F938F9381E08F938F9386E5B6 |
:1016F0008F930E949F081092C6032DB73EB7295FB3 |
:101700003F4F0FB6F8943EBF0FBE2DBF8091C2036E |
:10171000882309F448CE42CE209106018BE090E068 |
:101720009F938F9384E996E09F938F9381E08F93AB |
:101730002F9387E48F930E949F081092C2038DB766 |
:101740009EB707960FB6F8949EBF0FBE8DBF8091CF |
:101750009F069091A0060E949012882309F430CE33 |
:101760002ACEE090E307FF24EE0CFF1CEE0CFF1CDA |
:101770000027F7FC0095102F6091450470914604F6 |
:101780008091470490914804A80197010E945856FF |
:1017900030938D0620938C0660914D0470914E0419 |
:1017A00080914F0490915004A80197010E945856CF |
:1017B00030938F0620938E068091AC048093900620 |
:1017C0008091AD048093910688E090E09F938F9381 |
:1017D0008CE896E09F938F9381E08F9383E08F93C3 |
:1017E00087E78F930E949F082DB73EB7295F3F4F31 |
:1017F0000FB6F8943EBF0FBE2DBF80919206853084 |
:1018000018F086E08093920683E690E00E948712AB |
:101810009093A00680939F06809107019091080104 |
:10182000892B09F4D4CD40CE81E090E09F938F9333 |
:1018300089E797E09F938F9381E08F938F9382E462 |
:101840008F930E949F08109279078DB79EB70796D5 |
:101850000FB6F8949EBF0FBE8DBF8091C70388233B |
:1018600009F002CE1F910F91FF90EF900895EF9233 |
:10187000FF920F931F93CF93DF93CDB7DEB72297DD |
:101880000FB6F894DEBF0FBECDBF8091CA03882388 |
:1018900009F415C20E94F3078091A206823679F1FD |
:1018A0008091A306843609F449C18536C0F18C368F |
:1018B00009F429C18D3608F072C0873609F4E9C0F1 |
:1018C0008836A1F48FEF8093050180912704E09181 |
:1018D000CE03F091CF039081892B80932704882336 |
:1018E00011F01092C80381E08093C4031092CA03E0 |
:1018F0001092CF031092CE031092D003E0C18091DA |
:10190000A306813709F476C0823770F58B3409F469 |
:1019100029C1803729F681E08093C703C1CF813682 |
:1019200009F4FFC0823608F044C08B34F9F6E09128 |
:10193000CE03F091CF0380819181909382048093B4 |
:101940008104845E9D4F2091830430918404821B26 |
:10195000930B68E671E00E942356845B904090935D |
:10196000860480938504C2CF833709F419C1843774 |
:1019700009F096CF0091CE031091CF03F80180813A |
:101980009181A281B3818093D2039093D303A093DA |
:10199000D403B093D5038FEF8093050181CF8437B3 |
:1019A00009F48EC0863709F0A1CF81E08093C60389 |
:1019B0009DCF823609F471C0833609F097CF8091AC |
:1019C000D6039091D703892B09F051C10091CE0322 |
:1019D0001091CF03F8019081992309F058C1F801C3 |
:1019E00080812AE0829FC00111249093D7038093C5 |
:1019F000D6037CCF0091CE031091CF03F8018081F4 |
:101A00008F3F09F453C1F8018081882309F034C164 |
:101A100081E080830091CE031091CF039FECE92EEB |
:101A200097E0F92E4CE5B701F80180810E943C0354 |
:101A3000809103018823E1F3E091CE03F091CF037D |
:101A4000808189838AE48A838CE590E09F938F93D9 |
:101A5000FF92EF9221E030E03F932F93CE01029668 |
:101A60009F938F933F932F93CE0101969F938F93D4 |
:101A700083E08F9381E08F9381E58F930E949F088D |
:101A80008DB79EB70F960FB6F8949EBF0FBE8DBF51 |
:101A900007CF81E08093C20329CFA4E9B6E0E091AB |
:101AA000CE03F091CF038BE001900D928150E1F7CE |
:101AB00080919D06809379078FEF8093050116CF63 |
:101AC000E091CE03F091CF0380819181A281B38117 |
:101AD0008093D2039093D303A093D403B093D50300 |
:101AE000809103018823E1F3809106011F928F9377 |
:101AF00084E58F930E949F088FEF809305010F90DC |
:101B00000F900F90F3CE8FEF80930501E091CE03FD |
:101B1000F091CF0380818093260481E08093C303FA |
:101B2000E5CEE091CE03F091CF0380818093040154 |
:101B3000803210F28FE180930401BECFE091CE039A |
:101B4000F091CF0380812AE0829FC00111249093FD |
:101B5000080180930701892B09F4C8CE81E08093A6 |
:101B6000C503C4CE0091CE031091CF03F80180814C |
:101B700091819093820480938104845E9D4F209193 |
:101B8000830430918404821B930B68E671E00E9409 |
:101B90002356845B9040909386048093850480CE86 |
:101BA0000091CE031091CF03F801808181508530E0 |
:101BB00018F481818A34E9F0198280910301882325 |
:101BC000E1F381E090E09F938F93CE0101969F9384 |
:101BD0008F9381E08F938F9383E58F930E949F086B |
:101BE0008DB79EB707960FB6F8949EBF0FBE8DBFF8 |
:101BF00057CEAFECB7E032968CE501900D92815054 |
:101C0000E1F74CE56FEC77E0F80180810E94080372 |
:101C10006091FC0770E080E090E024EC39E040E067 |
:101C200050E00E94E455609397037093980380936B |
:101C3000990390939A036091FD0770E080E090E033 |
:101C40000E94E45560939B0370939C0380939D03D3 |
:101C500090939E03E091CE03F091CF0380810E9488 |
:101C6000B2020E94BE0289830E940135A6CF009174 |
:101C7000CE031091CF03B3CE863008F4CFCE85E0EB |
:101C8000F80180830091CE031091CF03C7CE8AE084 |
:101C9000989FC00111240E9487129093530580934E |
:101CA00052050091CE031091CF0399CE0E94BE023F |
:101CB000F80180830091CE031091CF03A4CE229629 |
:101CC0000FB6F894DEBF0FBECDBFDF91CF911F914D |
:101CD0000F91FF90EF900895982F80917A078130AF |
:101CE00031F0892F0E945308282F30E00CC08091DA |
:101CF0002504E82FF0E0E85DFC4F90838F5F809330 |
:101D0000250421E030E0C90108951F93182F18160B |
:101D10002CF480E30E946C0E1150D9F71F910895A6 |
:101D20001F93182F18162CF480E20E946C0E11508D |
:101D3000D9F71F9108950F931F93CF93DF938C01D1 |
:101D4000EB01672B49F0F8010F5F1F4FE4918E2FD5 |
:101D50000E946C0E2197B9F7DF91CF911F910F91DF |
:101D600008950F931F93CF93DF938C01EB01672BA3 |
:101D700039F0F80181918F010E946C0E2197C9F70B |
:101D8000DF91CF911F910F9108952F923F924F9223 |
:101D90005F926F927F928F929F92AF92BF92CF92FB |
:101DA000DF92EF92FF920F931F93CF93DF93CDB704 |
:101DB000DEB7E5970FB6F894DEBF0FBECDBF2B960A |
:101DC0008FAD2B9780937A07CE01835B9F4F9B83C8 |
:101DD0008A832D960EAD1FAD2D971FA618AA19AA9E |
:101DE0001AAAF8018491882309F4A2C2853209F461 |
:101DF0001BC2680103C0F5E2FF1639F00894C11C4C |
:101E0000D11CF601F490FF20B1F7B601601B710BF5 |
:101E100019F0C8010E949B0EFF2009F489C28601B7 |
:101E20000F5F1F4F1982AA81BB818FA498A8A9A810 |
:101E3000BAA8332422248FEF8BABF8010F5F1F4F1A |
:101E4000F490C32CDD2491E0C922DD24E5E7FE16E1 |
:101E500009F443C08F2D8062883709F43EC0F0E258 |
:101E6000FF1609F448C083E2F81609F48FC0EAE2CD |
:101E7000FE1609F480C0FDE2FF1609F482C0EBE211 |
:101E8000FE1609F43CC0FEE2FF16D9F180E3F81615 |
:101E900009F47FC08F2D8153893008F07FC020E086 |
:101EA00030E0C901880F991F880F991F880F991F6B |
:101EB000220F331F280F391F2F0D311D20533040A3 |
:101EC000F8010F5F1F4FF4908F2D80538A3048F335 |
:101ED000222EE5E7FE1609F0BDCFC114D10409F4A6 |
:101EE0003CC08D909D90AD90BC9013971496F0E2FD |
:101EF000FF1609F0B8CF8981882309F09ECFF982B7 |
:101F00009CCFF8010F5F1F4F94919A3209F44FC094 |
:101F1000892F80538A3060F5492F20E030E0C901D5 |
:101F2000880F991F880F991F880F991F220F331F41 |
:101F3000280F391F240F311D20533040F8010F5F47 |
:101F40001F4F6491462F862F80538A3040F3A9019A |
:101F500037FD0BC04BABF62E79CF8D919C9111972D |
:101F60004C01AA24BB2412967ACF4FEF5FEFF2CF39 |
:101F7000F92E1BAA6BCFFD011296208027FE5DCFA4 |
:101F8000219480E1382A9FED392257CF98E0392AF1 |
:101F900054CF34FC52CF90E2392A4FCFE8E6FE16F8 |
:101FA00079F08CE6F81679F491E0392A46CFCD0124 |
:101FB00002964D915C9157FD77C04BABDC013DCF54 |
:101FC000F4E03F2A3ACFBB83AA83E3E6FE1609F486 |
:101FD0000BC1F4E4FF1609F46AC084E6F81609F4AC |
:101FE00068C099E6F91609F464C09FE4F91609F48B |
:101FF00007C1EFE6FE1609F4FFC0E0E7FE1609F49C |
:102000005DC193E7F91609F419C185E5F81609F4DD |
:1020100010C195E7F91609F409C198E5F91609F414 |
:1020200069C1E8E7FE1609F465C1FF2009F480C123 |
:10203000FE821982632C77248FA698AAA9AABAAA2D |
:10204000EE2436E0C32ED12CCC0EDD1E81E0E1E083 |
:1020500090E021E0A22EB12C2981222309F4A0C016 |
:102060008F5F582E590E40E3842E912C86209720A6 |
:102070008114910409F438C1222309F02EC166FCB1 |
:10208000C9C0F0E28F16910409F4BFC08E2D0E94E2 |
:10209000850EB501C6010E94B10E64FEA2CE822D4E |
:1020A00085190E94900E9DCE4FEF5FEF86CFE1E045 |
:1020B0003E2A30FE8EC01496BB83AA83BE90AE909B |
:1020C0009E908E90B7FC78C0FAE0FEA7EBA9E7FDE2 |
:1020D00002C0FFED3F2281149104A104B104A9F1D3 |
:1020E0008EA5482E552466247724EEE2CE2ED12CE0 |
:1020F000CC0EDD1EDDAACCAA17C070E3E72EE60EDB |
:10210000F601E2926F01C501B401A30192010E94A0 |
:1021100036562FA738AB49AB5AAB84149504A604A6 |
:10212000B704A0F149015A01C501B401A30192010C |
:102130000E9436566A3008F357E5E52EE60EF8E5BC |
:10214000FF16F1F68FEDE822DBCF9BA99923C1F4AE |
:10215000632C77241FA618AA19AA1AAAFEE2CF2E6A |
:10216000D12CCC0EDD1E80E0E0E04BA9E42EEE1A6F |
:10217000E7FC1BC09E2DA82EBB24A7FCB0946CCFFF |
:10218000EEA54E2E552466247724AFCFFEA5F83059 |
:1021900009F4BCC0ECA9EC198E2F632C7724E5CF91 |
:1021A00066FE5FCF8E2F8E5F5CCFA82EBB24A7FC70 |
:1021B000B094EE2490E050CFB094A094909480948A |
:1021C000811C911CA11CB11C2DE229838AE08EA7E1 |
:1021D0007DCF1296BB83AA839E918E914C01AA2437 |
:1021E00097FCA094BA2C6ECF1296BB83AA83129749 |
:1021F0008C918E8319821ECFF8E0FEA7198266CFDC |
:1022000081E0382A98E09EA7F9CF822D85190E9497 |
:10221000850E3CCF80E38C83FD8262E070E0CE01CE |
:1022200004960E94B10E2DCF6801F9CDEAE0EEA729 |
:10223000E5CFF1E03F2A8AE08EA7E0CF1296BB837C |
:10224000AA83DE90CE90C114D10489F488E28E83F3 |
:102250008EE68F8385E788878CE689878A8789E27F |
:102260008B871C86A6E0CA2ED12CCC0EDD1EEBA9D6 |
:10227000E7FD1CC04E2F552747FD509560E070E0EC |
:10228000C6010E948754009779F08C19FBA9F817B2 |
:102290000CF48F2F1982E82F632C77248FA698AA2D |
:1022A000A9AABAAA40E062CF8BA9F4CFF6010190A7 |
:1022B0000020E9F731978E2F8C19ECCF1296BB8353 |
:1022C000AA839E918E914C01AA24BB24F0E43F2A5C |
:1022D000B8E7FB2E80E18EA791CF61E070E0CE01E0 |
:1022E00001960E94B10ECDCE822D85190E94900ECE |
:1022F0002981C2CE33FE19C081149104A104B10416 |
:10230000A1F0F0E43F2A80E18EA778CF632C7724F8 |
:1023100033FE07C080E3E81621F080E3F6018293E4 |
:102320006F01ECA9EC198E2F20CF90E19EA766CF0C |
:10233000E5960FB6F894DEBF0FBECDBFDF91CF910B |
:102340001F910F91FF90EF90DF90CF90BF90AF90D3 |
:102350009F908F907F906F905F904F903F902F90C5 |
:1023600008951F920F920FB60F9211242F933F934F |
:102370005F936F937F938F939F93AF93BF9380915E |
:10238000E703882329F08091E70381508093E703D6 |
:102390008091F50381508093F5038F3F09F488C045 |
:1023A0008091E5039091E6030297E0F08091E503C8 |
:1023B0009091E60301979093E6038093E503809163 |
:1023C000E5039091E6032091090330910A038223EB |
:1023D0009323892B69F0809100018A3009F482C02F |
:1023E000479A0CC08FEF9FEF90930A0380930903E5 |
:1023F000809100018A3009F473C047988091D70713 |
:1024000083FF77C0349B0AC08091E3039091E4037B |
:1024100001969093E4038093E3036BC08091E30300 |
:102420009091E403892B49F18091E3039091E403B7 |
:102430008A56914010F58091E3039091E403209136 |
:10244000E3033091E40369E270E00E940F56260F27 |
:10245000371F3093E4032093E3038091E3039091CB |
:10246000E4030B9708F440C08091E3039091E403E8 |
:102470000A979093820480938104809181049091C3 |
:102480008204845E9D4F2091830430918404821BDA |
:10249000930B68E671E00E942356845B9040909312 |
:1024A0008604809385041092E4031092E30321C014 |
:1024B00089E08093F50380910D038F5F8170809395 |
:1024C0000D03882319F481E08093E2038091E003F7 |
:1024D0009091E10301969093E1038093E00360CF34 |
:1024E0005A988CCF5A9A8ACF109282041092810403 |
:1024F000C4CFBF91AF919F918F917F916F915F9169 |
:102500003F912F910F900FBE0F901F901895209123 |
:10251000E0033091E1032F5F3F4F820F931F089537 |
:102520002091E0033091E103821B930B892F9927BF |
:102530008695807490E00895CF93DF930E94871270 |
:10254000EC01CE010E9490128823D9F3DF91CF9144 |
:102550000895CF93DF930E948712EC0109C0809108 |
:102560001D03882329F010921D038FEC80937A00BD |
:10257000CE010E949012882391F3DF91CF910895AC |
:102580009FB7F894579A5F983E9A469AA0EBB0E0AE |
:102590008C918F708C938C9183608C93E1EBF0E045 |
:1025A00080818B73808380818B6080831092B200E6 |
:1025B0008FEF8093B3008C9180688C93E0E7F0E01C |
:1025C00080818A7F80838081826080839FBF08951D |
:1025D0008AE090E00E9487129093F7038093F603BD |
:1025E00082E085BD83EA84BD17BC88E788BD86E0AC |
:1025F00086BDEEE6F0E080818160808308951F92C1 |
:102600000F920FB60F921124CF92DF92EF92FF92AA |
:102610000F931F932F933F934F935F936F937F93EA |
:102620008F939F93AF93BF93EF93FF93809100019C |
:102630008431B8F48091F403882309F45DC02091BB |
:10264000F2033091F30341E02F373407C8F18FEFE5 |
:102650008093B3002F5F30403093F3032093F20355 |
:10266000B3C28091F403882351F78091B00086FFB4 |
:1026700015C18091B0008F7B8093B000E091EF0393 |
:10268000EE2309F049C18091F50790E02DED36E089 |
:10269000A901849F9001859F300D949F300D1124D6 |
:1026A0008091F0039091F103281B390B3093F303D1 |
:1026B0002093F2031092F1031092F003469AEAC0BD |
:1026C0002F3F310581F078F051E02E37350709F4BE |
:1026D00014C180E88093B300205830403093F30356 |
:1026E0002093F20371C22093B3001092F30310926F |
:1026F000F2031092F40368C28091B00086FFAEC06E |
:102700008091B0008F7B8093B0008091AB03482F05 |
:1027100050E0440F551F440F551F20910B0330917B |
:102720000C03C901880F991F820F931F480F591F6F |
:1027300057FD10C2CA0195958795959587959093F9 |
:102740000C0380930B039093EC038093EB03809135 |
:102750001B0880FF24C1C090EB03D090EC03E090F5 |
:10276000F207FF2400E010E06091450470914604F8 |
:10277000809147049091480420E830E040E050E028 |
:102780000E945856C801B7010E94E455660F771F92 |
:10279000881F991F660F771F881F991F20E031E05F |
:1027A00040E050E00E945856C20ED31ED092EC0377 |
:1027B000C092EB038091F307282F30E0220F331FE4 |
:1027C000220F331F8091EB039091EC038217930744 |
:1027D0000CF49DC08091F407282F30E0220F331FA6 |
:1027E000220F331F8091EB039091EC0328173907D8 |
:1027F0000CF48DC02091EB033091EC0327553E4F34 |
:102800003093F3032093F2038091EB039091EC0358 |
:1028100097FDA3C195958795959587959093EC0322 |
:102820008093EB038091EB039091EC03909362070C |
:102830008093610745E02D3D340708F4A5C02CEDD9 |
:1028400035E03093F3032093F2032091F2033091AB |
:10285000F3033093F1032093F0031CC08091B00088 |
:1028600080648093B0008091F50790E02DED36E014 |
:10287000A901849F9001859F300D949F300D1124F4 |
:102880008091F0039091F103281B390B3093F303EF |
:102890002093F20381E08093F403D5CE8091B000C1 |
:1028A00080648093B0002CEB30E03093F3032093EE |
:1028B000F2038091F0039091F10384549F4F909321 |
:1028C000F1038093F0038091E803882329F080913D |
:1028D0009404853B08F098C08091EF038F5F80934C |
:1028E000EF039091F507981708F089C01092EF0355 |
:1028F0002091F2033091F303CDCF8FEF8093B3009B |
:102900002FE730E03093F3032093F2035DC130935F |
:10291000EC032093EB036ECF29EA33E03093F3030B |
:102920002093F203E13009F471C0F0E0EE0FFF1FD5 |
:10293000E356F84F80819181880F991F87559C4FEE |
:102940009093F3038093F2032091F2033091F30309 |
:1029500055E02D3D350708F4F1C02CED35E03093FE |
:10296000F3032093F2032C5B30403093F303209366 |
:10297000F2038091F0039091F103820F931F9093E3 |
:10298000F1038093F00386CF2757314008F05DCFE5 |
:1029900027E731E03093F3032093F20356CFC09042 |
:1029A000EB03D090EC03E090F207FF2400E010E08E |
:1029B00060914504709146048091470490914804C9 |
:1029C00020E830E040E050E00E945856C801B701CE |
:1029D0000E94E455660F771F881F991F660F771FA7 |
:1029E000881F991F20E031E040E050E00E945856D7 |
:1029F000C21AD30AD092EC03C092EB03DBCE209133 |
:102A0000F2033091F30346CF469866CF8091AB0333 |
:102A1000482F50E0440F551F440F551F20910B03C2 |
:102A200030910C03C901880F991F820F931F480F23 |
:102A3000591F57FDC6C0CA019595879595958795ED |
:102A400090930C0380930B039093EC038093EB0320 |
:102A500080911B0880FF83C0C090EB03D090EC03F3 |
:102A6000E090F207FF2400E010E0609145047091CF |
:102A70004604809147049091480420E830E040E00B |
:102A800050E00E945856C801B7010E94E455660FF5 |
:102A9000771F881F991F660F771F881F991F20E0D7 |
:102AA00031E040E050E00E945856C20ED31ED09252 |
:102AB000EC03C092EB038091F307282F30E0220F44 |
:102AC000331F220F331F8091EB039091EC03821789 |
:102AD00093077CF08091F407282F30E0220F331FFA |
:102AE000220F331F8091EB039091EC0328173907D5 |
:102AF00024F43093EC032093EB038091EB0390914B |
:102B0000EC0387559E4F9093F3038093F2038091DB |
:102B1000EB039091EC0397FD52C0959587959595A1 |
:102B200087959093EC038093EB038091EB03909156 |
:102B3000EC03909362078093610706CF81E027370B |
:102B4000380708F010CF27E731E03093F3032093E4 |
:102B5000F20309CF4D5F5F4FEDCD03965BCEC09082 |
:102B6000EB03D090EC03E090F207FF2400E010E0CC |
:102B70006091450470914604809147049091480407 |
:102B800020E830E040E050E00E945856C801B7010C |
:102B90000E94E455660F771F881F991F660F771FE5 |
:102BA000881F991F20E031E040E050E00E94585615 |
:102BB000C21AD30AD092EC03C092EB037CCF0396E7 |
:102BC000ACCF4D5F5F4F37CFFF91EF91BF91AF918A |
:102BD0009F918F917F916F915F914F913F912F9135 |
:102BE0001F910F91FF90EF90DF90CF900F900FBE4D |
:102BF0000F901F90189510927C008FEC80937A00B4 |
:102C000008951F920F920FB60F921124DF92EF9248 |
:102C1000FF920F931F932F933F934F935F936F9365 |
:102C20007F938F939F93AF93BF93CF93DF93EF9354 |
:102C3000FF93D09021048D2DD394D0922104E82FBE |
:102C4000F0E0E231F10540F01092210482E080933F |
:102C5000220480937C00F3C3E25CFF4FEE0FFF1F62 |
:102C60000590F491E02D099480917800909179007D |
:102C700020911B0430911C04280F391F30931C0431 |
:102C800020931B0481E0809322048091220480938E |
:102C90007C00DD2009F4D3C38FEC80937A00CFC38E |
:102CA000DD241092210481E080931D0380910E04A5 |
:102CB00090910F04019690930F0480930E0420913D |
:102CC00078003091790080918B0790918C07820F6A |
:102CD000931F90938C0780938B07809183078F5F5E |
:102CE0008093830780918307853008F4B4C0809176 |
:102CF0008B0790918C0797FD7FC39595879590934F |
:102D00008C0780938B078091780090917900909345 |
:102D10001903809318031092830760910C0470913B |
:102D20000D0480910B04992787FD9095D82FCC270F |
:102D3000C81BD90B20917F073091800780918B07AA |
:102D400090918C0740919E0450919F04281B390B51 |
:102D5000241B350B2C0F3D1F8091A10390E0A9018E |
:102D6000489F9001499F300D589F300D11248FE1ED |
:102D700090E0AC01649FC001659F900D749F900D21 |
:102D80001124280F391F37FDE6C235952795359553 |
:102D90002795359527953595279535952795309322 |
:102DA0000D0420930C0460918B0770918C07E090C8 |
:102DB0001403F09015030091160310911703882750 |
:102DC00077FD8095982FA8019701220F331F441F8C |
:102DD000551F220F331F441F551F220F331F441F3F |
:102DE000551F2E193F09400B510B620F731F841F93 |
:102DF000951F6C5F7F4F8F4F9F4F28E030E040E082 |
:102E000050E00E94585620931403309315034093CA |
:102E100016035093170320917F073091800780910C |
:102E2000140390911503A0911603B0911703C20FDC |
:102E3000D31FC81BD90BD0939F04C0939E048091CD |
:102E40008B0790918C0797FD84C2959587959093F9 |
:102E50008C0780938B0782E08093220416CF6091C9 |
:102E6000780070917900E0903F04F0904004009168 |
:102E7000410410914204882777FD8095982F0E9485 |
:102E80002C55A80197010E9494540E94F954709304 |
:102E90000904609308048091080490910904029742 |
:102EA0000CF45CC260913F04709140048091410435 |
:102EB0009091420420E030E84BE354E40E946755CF |
:102EC00088239CF560913F047091400480914104F7 |
:102ED000909142042AE037ED43EA5CE30E94955466 |
:102EE00060933F04709340048093410490934204A4 |
:102EF0008091BE049091BF04845F9140B0F46091D2 |
:102F00003F047091400480914104909142042DEC63 |
:102F10003CEC4CEC5DE30E94955460933F0470934D |
:102F20004004809341049093420481E080930A041A |
:102F3000809178009091790090937E0780937D072F |
:102F4000809108049091090420917D0430917E04C1 |
:102F500040917F0450918004AA2797FDA095BA2F35 |
:102F6000820F931FA41FB51F80937D0490937E044E |
:102F7000A0937F04B0938004E0907D04F0907E04E1 |
:102F800000917F041091800460917D0470917E0413 |
:102F900080917F049091800420E034E040E050E094 |
:102FA0000E945856E21AF30A040B150BE0927D04B6 |
:102FB000F0927E0400937F041093800483E080935A |
:102FC000220463CE809178009091790020911D04B5 |
:102FD00030911E04280F391F30931E0420931D04C6 |
:102FE00084E08093220451CE40910E0350910F0350 |
:102FF00080917800909179009A01220F331F240F5D |
:10300000351F63E070E00E940F56260F371F36957C |
:1030100027953695279530930F0320930E0385E06F |
:103020008093220432CE8091780090917900909321 |
:10303000200480931F0486E08093220426CE2091F2 |
:1030400078003091790080913B0490913C04821B80 |
:10305000930B90937C0780937B0780917B079091E3 |
:103060007C07909316048093150487E080932204D4 |
:103070000CCE8091780090917900209139043091A4 |
:103080003A04821B930B9093870780938607809165 |
:10309000860790918707909314048093130482E02D |
:1030A00080932204F2CD20917800309179008091B4 |
:1030B0001D0490911E04820F931F90931E04809311 |
:1030C0001D0410922204E1CD809100018A3009F4A0 |
:1030D00020C1843109F4A0C18091780090917900D9 |
:1030E00020911F0430912004820F931F90930304BA |
:1030F0008093020486E080932204C7CD209178005B |
:103100003091790080913B0490913C04821B930B99 |
:1031100090937C0780937B0780917B0790917C073D |
:103120002091150430911604820F931F909305048B |
:103130008093040487E080932204A7CD80917800D7 |
:10314000909179002091390430913A04821B930BBD |
:1031500090938707809386078091860790918707D1 |
:103160002091130430911404820F931F909307044D |
:103170008093060482E08093220487CD209178001A |
:103180003091790080911B0490911C04280F391F05 |
:1031900030931C0420931B04809100018A3009F4B1 |
:1031A000D1C0220F331F220F331F30931C042093F2 |
:1031B0001B0420911B0430911C04C90137FD2AC156 |
:1031C0009595879595958795959587959093FF0308 |
:1031D0008093FE038091190490911A04820F931F2B |
:1031E00097FD16C19595879590931A0480931904BD |
:1031F00020912F0430913004821B930B9093110384 |
:10320000809310038091F8039091F90320911003AB |
:1032100030911103280F391F37FDF7C035952795D9 |
:103220003093F9032093F80381E0809322042DCD9D |
:10323000209178003091790080911D0490911E04B6 |
:10324000280F391F30931E0420931D048091000124 |
:103250008A3009F470C0220F331F220F331F3093BE |
:103260001E0420931D0420911D0430911E04C901E9 |
:1032700037FDC9C0959587959595879595958795BF |
:103280009093010480930004809117049091180496 |
:10329000820F931F97FDB5C095958795909318045D |
:1032A000809317042091310430913204821B930BD8 |
:1032B00090931303809312038091FA039091FB0380 |
:1032C0002091120330911303280F391F37FD96C048 |
:1032D000359527953093FB032093FA0383E0809381 |
:1032E0002204D3CC809178009091790090931C04B3 |
:1032F00080931B0481E080932204C7CC80917800E6 |
:103300009091790090931E0480931D0410922204E2 |
:10331000BCCC8091780090917900019620911F0497 |
:1033200030912004820F931F969587959093030404 |
:1033300080930204DFCE220F331F30931E042093AC |
:103340001D0491CF220F331F30931C0420931B04C4 |
:1033500030CF01967ACD215E3F4F17CD8091080482 |
:10336000909109048F5F9F4F0CF0DFCD60913F0477 |
:1033700070914004809141049091420420E030E833 |
:1033800049E054E40E946B5518160CF0CECD6091C4 |
:103390003F047091400480914104909142042AE0DE |
:1033A00037ED43EA5CE30E94945460933F047093CA |
:1033B000400480934104909342048091BE04909114 |
:1033C000BF04845F914008F0B0CD60913F047091DC |
:1033D000400480914104909142042DEC3CEC4CEC73 |
:1033E0005DE30E94945460933F0470934004809383 |
:1033F00041049093420499CD01967FCC2F5F3F4FBB |
:1034000067CF019649CF079635CF2F5F3F4F06CF45 |
:103410000196E8CE0796D4CE8091780090917900FD |
:103420002FEF37E0281B390B80911F049091200467 |
:10343000281B390B30930304209302045BCEFF91C9 |
:10344000EF91DF91CF91BF91AF919F918F917F913C |
:103450006F915F914F913F912F911F910F91FF902D |
:10346000EF90DF900F900FBE0F901F9018950F9365 |
:103470001F931092100410921104109212041CE871 |
:1034800000E0033009F4A3C08091FE039091FF0394 |
:103490008C5F93400CF08DC080911A038150809313 |
:1034A0001A0300E080910004909101048C5F934026 |
:1034B0000CF072C080911B03815080931B0380919C |
:1034C0000204909103048C5F93400CF058C08091EB |
:1034D0001C03815080931C0388E0809328040E9481 |
:1034E000B52180911A038A3008F040C081E08093B2 |
:1034F00010048AE080931A0380911B038A3068F5D8 |
:1035000081E0809311048AE080931B0380911C0367 |
:103510008A30D0F481E0809312048AE080931C0307 |
:10352000809128048823E1F7109283078FEC809321 |
:103530007A00809183078823E1F31A3008F442C0AF |
:10354000115009F09ECF53C0863F50F381E0809325 |
:10355000120485EF80931C03E3CF863FB8F281E02D |
:103560008093110485EF80931B03D0CF863F20F218 |
:1035700081E08093100485EF80931A03BDCF809182 |
:103580000204909103048750944044F180911C03FD |
:103590008F5F80931C03A0CF809100049091010461 |
:1035A00087509440CCF080911B038F5F80931B0366 |
:1035B00086CF8091FE039091FF038750944084F45E |
:1035C00001E070CF8AE090E00E94A912B9CF1B30D1 |
:1035D00008F45ACF19E058CF0F5F71CF0F5F7CCF3F |
:1035E00080911A038F5F80931A0300E05BCF86E41B |
:1035F00090E00E94A9121F910F910895CF92DF923F |
:10360000EF92FF921F93CF93DF93F3E0EF2EF0E062 |
:10361000FF2ED7010E947356802DC82FD0E0C531F0 |
:10362000D10508F02A97C7BD10920B0484E690E0FC |
:103630000E94A9128091180390911903825593401A |
:1036400008F5C0E0D0E0E6EECE2EE1E0DE2E04C0CC |
:103650002196CA3FD105D8F41C2FC7BD82E390E064 |
:103660000E94A912DF92CF921F920E94C50E8091F4 |
:103670001803909119030F900F900F90825593406B |
:1036800038F706C076EEC72E71E0D72EE5CF1C2F97 |
:10369000D701012E0E947B56109388078CE291E09F |
:1036A0000E94A912DF91CF911F91FF90EF90DF90C0 |
:1036B000CF900895E8E2F3E080E2819383E0E83779 |
:1036C000F807D1F708951F9340917803809126045D |
:1036D000481710F44093260480912704282F30E0E7 |
:1036E000C90181709070582F882341F08091260481 |
:1036F000882309F4EAC0815080932604B9016270DE |
:10370000707021FF08C080912604481709F4E0C0BA |
:103710008F5F80932604552319F0672B09F0D2C0E0 |
:103720000E945A1B909126049A3068F581E180939B |
:103730002504892F90E09F938F9380E295E09F93DB |
:103740008F9381E08F930E94C50E0F900F900F9082 |
:103750000F900F9010912604153009F4D7C316303E |
:10376000E0F0183009F4EDC2193008F0B4C016309A |
:1037700009F48BC2173009F45EC21150109378031C |
:1037800010922604E8C580E180932504892F90E0FB |
:103790009F938F938BE195E0D2CF123009F45BC3F6 |
:1037A000133008F4F9C0133009F492C1143029F72A |
:1037B00010922504E091D007F0E0EE0FFF1FE356D2 |
:1037C000F84F20813181E091CF07F0E0EE0FFF1F2D |
:1037D000E356F84F808191813F932F939F938F936E |
:1037E0008EEF93E09F938F9311E01F930E94C50E7D |
:1037F00084E180932504E091D207F0E0EE0FFF1FF3 |
:10380000E356F84F20813181E091D107F0E0EE0FCF |
:10381000FF1FE356F84F808191813F932F939F9331 |
:103820008F938EEE93E09F938F931F930E94C50E0C |
:1038300088E280932504E091D407F0E0EE0FFF1FAB |
:10384000E356F84F20813181E091D307F0E0EE0F8D |
:10385000FF1FE356F84F808191813F932F939F93F1 |
:103860008F938EED93E09F938F931F930E94C50ECD |
:103870008CE380932504E091D607F0E0EE0FFF1F64 |
:10388000E356F84F20813181E091D507F0E0EE0F4B |
:10389000FF1FE356F84F808191813F932F939F93B1 |
:1038A0008F938EEC93E09F938F931F930E94C50E8E |
:1038B0004DB75EB7445E5F4F0FB6F8945EBF0FBE64 |
:1038C0004DBF49C5109226042BCF4093260416CF36 |
:1038D0001092260420CF1A3009F476C21A3008F468 |
:1038E000ADC01B3009F049CF1092250488E192E069 |
:1038F0009F938F9311E01F930E94C50E84E18093E4 |
:10390000250420919806332727FD3095809197064E |
:10391000992787FD90953F932F939F938F9388E0EE |
:1039200092E09F938F931F930E94C50E88E280932D |
:10393000250420919906332727FD309580919A061A |
:1039400090E03F932F939F938F9388EF91E09F9305 |
:103950008F931F930E94C50E8CE3809325042091C2 |
:103960009E0630E080919B06992787FD90953F93B6 |
:103970002F939F938F9388EE91E09F938F931F9344 |
:103980000E94C50E6DB77EB7685E7F4F0FB6F89484 |
:103990007EBF0FBE6DBFDFC4112309F4FBC0113021 |
:1039A00009F0EBCE8091D70780FF6BC310922504FE |
:1039B00080919E0490919F049F938F9387EC94E055 |
:1039C0009F938F931F930E94C50E84E180932504DB |
:1039D0008091A0049091A1049F938F9388EB94E031 |
:1039E0009F938F931F930E94C50E88E280932504B6 |
:1039F00080911803909119039F938F9389EA94E023 |
:103A00009F938F931F930E94C50E8CE38093250490 |
:103A10008091880790E09F938F938AE994E09F9329 |
:103A20008F931F930E94C50E4DB75EB74C5E5F4FDC |
:103A30000FB6F8945EBF0FBE4DBF8DC41092250423 |
:103A400080918C0490918D049F938F938EE792E0E8 |
:103A50009F938F9311E01F930E94C50E84E1809382 |
:103A6000250480918E0490918F049F938F9382E719 |
:103A700092E09F938F931F930E94C50E88E28093DC |
:103A8000250480919004909191049F938F9386E6F2 |
:103A900092E09F938F931F930E94C50E8CE38093B7 |
:103AA000250480919204909193049F938F938AE5CB |
:103AB00092E09F938F931F930E94C50E2DB73EB740 |
:103AC0002C5E3F4F0FB6F8943EBF0FBE2DBF43C4D0 |
:103AD000109225048091A1079091A20720919F0741 |
:103AE0003091A0079F938F933F932F938EE394E0A1 |
:103AF0009F938F9311E01F930E94C50E84E18093E2 |
:103B000025048091A5079091A6072091A3073091E5 |
:103B1000A4079F938F933F932F938EE294E09F93FC |
:103B20008F931F930E94C50E88E280932504809195 |
:103B3000A9079091AA072091A7073091A8079F9302 |
:103B40008F933F932F938EE194E09F938F931F93D6 |
:103B50000E94C50E8CE3809325048091AD0790915F |
:103B6000AE072091AB073091AC079F938F933F93A3 |
:103B70002F938EE094E09F938F931F930E94C50E26 |
:103B80002DB73EB7245E3F4F0FB6F8943EBF0FBE31 |
:103B90002DBFE1C3109225048BE095E09F938F9396 |
:103BA00011E01F930E94C50E84E1809325042091AB |
:103BB0000001822F6AE00E940356492F50E0822FB5 |
:103BC0000E94035690E020E730E03F932F9328E4D3 |
:103BD00030E03F932F931F921F925F934F939F93D9 |
:103BE0008F9383EF94E09F938F931F930E94C50E52 |
:103BF00088E2809325040E94BE0290E09F938F93F9 |
:103C000086EE94E09F938F931F930E94C50E8CE3E2 |
:103C10008093250486ED94E09F938F931F930E94D9 |
:103C2000C50E2DB73EB7285E3F4F0FB6F8943EBF86 |
:103C30000FBE2DBF90C384E18093250480910E03B5 |
:103C400090910F039F938F9385ED92E09F938F93B5 |
:103C500011E01F930E94C50E88E280932504809195 |
:103C6000940490E09F938F9386EC92E09F938F93C0 |
:103C70001F930E94C50E6DB77EB7665F7F4F0FB66C |
:103C8000F8947EBF0FBE6DBF66C31092250481E11C |
:103C900093E09F938F9311E01F930E94C50E84E1E0 |
:103CA000809325048091390490913A042091060470 |
:103CB000309107049F938F933F932F9382E093E07B |
:103CC0009F938F931F930E94C50E88E280932504D3 |
:103CD00080913B0490913C042091040430910504B0 |
:103CE0009F938F933F932F9383EF92E09F938F93B4 |
:103CF0001F930E94C50E8CE38093250460913F04BE |
:103D00007091400480914104909142040E94F954C2 |
:103D100020914C0830914D087F936F933F932F93E0 |
:103D200084EE92E09F938F931F930E94C50E4DB730 |
:103D30005EB7485E5F4F0FB6F8945EBF0FBE4DBFD3 |
:103D40000AC31092250487EB92E09F938F9311E0B2 |
:103D50001F930E94C50E84E1809325048091850401 |
:103D6000909186049F938F9388EA92E09F938F931C |
:103D70001F930E94C50E88E28093250480918104E0 |
:103D8000909182049F938F9389E992E09F938F9300 |
:103D90001F930E94C50E8CE38093250480918304B9 |
:103DA000909184049F938F938AE892E09F938F93DE |
:103DB0001F930E94C50E8DB79EB742960FB6F8941A |
:103DC0009EBF0FBE8DBFC7C21092250482E592E050 |
:103DD0009F938F9311E01F930E94C50E84E18093FF |
:103DE00025048091AB0390E09F938F9384E492E04D |
:103DF0009F938F931F930E94C50E88E280932504A2 |
:103E00008091E9039091EA039F938F9386E392E078 |
:103E10009F938F931F930E94C50E8CE3809325047C |
:103E20002091F40730E08091F30790E03F932F93C7 |
:103E30009F938F9388E292E09F938F931F930E94AA |
:103E4000C50E4DB75EB74C5E5F4F0FB6F8945EBFC0 |
:103E50000FBE4DBF80C2109225048BE794E09F9364 |
:103E60008F9311E01F930E94C50E84E18093250477 |
:103E700060914504709146048091470490914804F4 |
:103E800020E034E040E050E00E9458565F934F93AA |
:103E90003F932F938CE694E09F938F931F930E9400 |
:103EA000C50E88E28093250460914D0470914E0404 |
:103EB00080914F049091500420E034E040E050E0C5 |
:103EC0000E9458565F934F933F932F938DE594E054 |
:103ED0009F938F931F930E94C50E8CE380932504BC |
:103EE00080918104909182049F938F938EE494E05B |
:103EF0009F938F931F930E94C50E8DB79EB74696D2 |
:103F00000FB6F8949EBF0FBE8DBF25C21092250438 |
:103F100080EC93E09F938F9311E01F930E94C50E56 |
:103F2000809100010F900F900F908A3009F471C1B9 |
:103F30008B3009F4C4C0843109F4C1C08D3009F05C |
:103F40000AC284E18093250480911A0390E02091B5 |
:103F50002F0430913004A90137FDFAC1BA017595DB |
:103F60006795759567957595679575956795409172 |
:103F7000FE035091FF0337FDE8C135952795359530 |
:103F8000279535952795421B530B9F938F937F93CE |
:103F90006F935F934F9386E493E09F938F931F9368 |
:103FA0000E94C50E88E28093250480911B0390E057 |
:103FB0002091310430913204A9016DB77EB7675F5B |
:103FC0007F4F0FB6F8947EBF0FBE6DBF37FDBAC1ED |
:103FD000BA0175956795759567957595679575950A |
:103FE0006795409100045091010437FDA8C13595B3 |
:103FF00027953595279535952795421B530B9F930C |
:104000008F937F936F935F934F9382E393E09F939C |
:104010008F931F930E94C50E8CE38093250480919B |
:104020001C03682F70E02091330430913404A901FF |
:104030008DB79EB709960FB6F8949EBF0FBE8DBF81 |
:1040400037FD7AC1559547958091020490910304FC |
:10405000281B390B7F936F935F934F933F932F935D |
:104060008EE193E09F938F931F930E94C50E2DB70F |
:104070003EB7275F3F4F0FB6F8943EBF0FBE2DBF30 |
:104080006AC184E18093250483E994E09F938F9330 |
:104090001F930E94C50E88E28093250485E894E072 |
:1040A0009F938F931F930E94C50E6DB77EB76A5F73 |
:1040B0007F4F0FB6F8947EBF0FBE6DBF4CC184E139 |
:1040C00080932504E0912F04F0913004CF0160E14A |
:1040D00070E00E94235697FD27C1BC017595679536 |
:1040E0009F01F7FD1EC1A901559547955595479527 |
:1040F00055954795559547952091FE033091FF03BF |
:10410000CF01F7FD0CC19595879595958795959568 |
:104110008795281B390B7F936F935F934F933F9342 |
:104120002F938BE793E09F938F931F930E94C50E6D |
:1041300088E280932504E0913104F0913204CF01AC |
:1041400060E170E00E9423562DB73EB7275F3F4FD6 |
:104150000FB6F8943EBF0FBE2DBF97FDDEC0BC0169 |
:10416000759567959F01F7FDD5C0A90155954795B0 |
:104170005595479555954795559547952091000438 |
:1041800030910104CF01F7FDC3C0959587959595B2 |
:10419000879595958795281B390B7F936F935F9330 |
:1041A0004F933F932F9389E693E09F938F931F93B1 |
:1041B0000E94C50E8CE38093250420913304309136 |
:1041C0003404A9016DB77EB7675F7F4F0FB6F894CF |
:1041D0007EBF0FBE6DBF37FD98C055954795809146 |
:1041E000020490910304281B390B5F934F933F9374 |
:1041F0002F938AE593E09F938F931F930E94C50EA0 |
:104200008DB79EB707960FB6F8949EBF0FBE8DBFB1 |
:10421000A2C084E18093250420912F0430913004C2 |
:10422000C90168E070E00E942356AC0137FD81C0EF |
:104230003595279535952795359527958091FE03DA |
:104240009091FF03821B930B5F934F933F932F93A8 |
:104250009F938F938EEA93E09F938F931F930E9477 |
:10426000C50E88E2809325042091310430913204F8 |
:10427000C90168E070E00E942356AC016DB77EB7BB |
:10428000675F7F4F0FB6F8947EBF0FBE6DBF37FDDF |
:104290004DC035952795359527953595279580916E |
:1042A000000490910104821B930B5F934F933F9303 |
:1042B0002F939F938F938CE993E09F938F931F93FA |
:1042C0000E94C50E8CE38093250420913304309125 |
:1042D00034048091020490910304A901481B590BF6 |
:1042E0003F932F935F934F938DE893E09F938F932A |
:1042F0001F930E94C50E6DB77EB7605F7F4F0FB6EC |
:10430000F8947EBF0FBE6DBF26C04F5F5F4F65CF75 |
:1043100007963BCF215F3F4F28CF019620CF0796CE |
:10432000F2CE215F3F4FDFCE0196D7CE295F3F4FC0 |
:10433000B0CF295F3F4F7CCF4F5F5F4F83CE295F68 |
:104340003F4F55CE415F5F4F43CE295F3F4F15CE64 |
:10435000415F5F4F03CE109227041F910895109282 |
:10436000B9008AE28093B800089585EA8093BC0082 |
:1043700080E090E0089584E98093BC000895109255 |
:10438000B9008093BB0085E88093BC0080E090E09A |
:1043900008950E94BB2110922804EBEBF0E080818D |
:1043A0001092290480E88093BC001092BD00109206 |
:1043B000BA0010821092B9001092B8000E94AF218A |
:1043C0000E94B52180E00E94BF2108951F920F92A4 |
:1043D0000FB60F9211242F933F934F935F936F93D8 |
:1043E0007F938F939F93AF93BF93EF93FF938091AE |
:1043F00028048F5F809328048150E82FF0E0E73194 |
:10440000F10508F0C3C0E05BFF4FEE0FFF1F059002 |
:10441000F491E02D09948091BB0090912A04E92F3A |
:10442000F0E0E357F84F8083923009F46FC0933087 |
:1044300008F093C0992309F497C0913009F0A6C001 |
:10444000809150080E94BF21A1C088E90E94BF212D |
:104450009DC080E80E94BF2199C00E94BB218AE0D4 |
:1044600090E090939403809393030E94B5218EC0B3 |
:1044700090912A048091BB00E92FF0E0E357F84FB8 |
:1044800086839F5F90932A04963010F010922A043E |
:104490000E94BB218AE090E0909394038093930361 |
:1044A0001092280473C00E94BB2180912904863099 |
:1044B00008F069C010922804D8CF80911C030E9494 |
:1044C000BF2164C080911A030E94BF215FC0809108 |
:1044D0002904880F8E5A0E94BF2158C080E10E9493 |
:1044E000BF2154C080912A04823081F0833050F57E |
:1044F0008823D1F1813009F049C0A2CF80912904ED |
:104500008F5F809329048150823081F78091630806 |
:104510000E94BF213BC080912A04880F8D5A0E94BF |
:10452000BF2134C080911B030E94BF212FC082E1B4 |
:104530000E94BF212BC084E10E94BF2127C090911F |
:104540002A0472CF8430D1F0843098F08530F1F4B1 |
:10455000809165080E94BF2119C0943079F0943091 |
:1045600040F0953099F4F4CF80917D080E94BF21EE |
:104570000DC080914A080E94BF2108C080914B085D |
:104580000E94BF2103C0109229046FCF8091BC000C |
:1045900080688093BC00FF91EF91BF91AF919F9194 |
:1045A0008F917F916F915F914F913F912F910F90DC |
:1045B0000FBE0F901F90189583EC80938100EFE65B |
:1045C000F0E0808180628083109234041092330482 |
:1045D00010923204109231041092300410922F0481 |
:1045E00008951F920F920FB60F9211240F931F93ED |
:1045F0002F933F934F935F936F937F938F939F93EB |
:10460000AF93BF93CF93DF93EF93FF9320918600F7 |
:104610003091870080912D0490912E04281B390B36 |
:10462000809186009091870090932E0480932D04B2 |
:10463000C9018D549440835F9A4170F480912B049A |
:1046400090912C0404970CF07EC081E090E0909350 |
:104650002C0480932B049DC000912B0410912C04FA |
:104660000A3011050CF095C0C9018B5F9040845B46 |
:10467000914008F056C0A901425D5140E801CC0FBD |
:10468000DD1FFE01E356F84F808191819A01281BBE |
:10469000390BC90137FD79C0069754F48091940411 |
:1046A000883C08F06BC080919404865F80939404EA |
:1046B000FE01E356F84F808191819C01220F331F48 |
:1046C000280F391F240F351F37FD5CC035952795FE |
:1046D00035952795CA010196821793070CF045C0BE |
:1046E0002150304080919404833CC8F1FE01E35690 |
:1046F000F84F80819181A901481B590BCA0163E0E1 |
:1047000070E00E942356CB01880F991F860F971FD8 |
:10471000FE01ED54F84F91838083C356D84F3983FF |
:104720002883C801019690932C0480932B04853034 |
:10473000910589F05D988630910551F05C98079756 |
:1047400029F05B9826C0109279037FCF5B9A21C035 |
:104750005C9A5B981EC05D9A5C985B981AC0FE01DB |
:10476000ED54F84F11821082D8CF41505040241799 |
:1047700035070CF0B7CF2F5F3F4FB4CF88EC809355 |
:10478000940496CF2D5F3F4FA1CF909581959F4F79 |
:1047900083CFFF91EF91DF91CF91BF91AF919F9127 |
:1047A0008F917F916F915F914F913F912F911F91C9 |
:1047B0000F910F900FBE0F901F90189581E080937E |
:1047C000CF0782E08093D00783E08093D10784E015 |
:1047D0008093D20785E08093D30786E08093D40747 |
:1047E00087E08093D50788E08093D60708956817FF |
:1047F000790744F4680F791F77FD09C0CB019595BF |
:1048000087950895681B790B861B970B08956F5F3A |
:104810007F4FCB019595879508952F923F924F92A8 |
:104820005F926F927F928F929F92AF92BF92CF9240 |
:10483000DF92EF92FF920F931F93CF93DF93CDB749 |
:10484000DEB76B970FB6F894DEBF0FBECDBF809179 |
:104850000204909103044090330450903404481AA9 |
:10486000590A5092700840926F082091F8033091D5 |
:10487000F90337FF02C00C942B2C359527953595FD |
:104880002795359527953B8F2A8F2091FA033091F4 |
:10489000FB0337FDDDC7359527953595279535956C |
:1048A00027953C8B2B8B2A8D3B8D30934F08209383 |
:1048B0004E088B899C8990934308809342086091AD |
:1048C000060470910704882777FD8095982F26E0CD |
:1048D00030E040E050E00E94E4557B018C012091E3 |
:1048E0006A0830916B08442737FD4095542FCA0160 |
:1048F000B901660F771F881F991F620F731F841FEE |
:10490000951F6E0D7F1D801F911F24E030E040E059 |
:1049100050E00E94585630936B0820936A086091CB |
:10492000040470910504882777FD8095982F26E070 |
:1049300030E040E050E00E94E4557B018C01209182 |
:104940007A0830917B08442737FD4095542FCA01DF |
:10495000B901660F771F881F991F620F731F841F8D |
:10496000951F6E0D7F1D801F911F24E030E040E0F9 |
:1049700050E00E94585630937B0820937A08E090CC |
:104980000804F090090420914C0830914D08442708 |
:1049900037FD4095542FCA01B901660F771F881F54 |
:1049A000991F620F731F841F951F0027F7FC009546 |
:1049B000102F6E0D7F1D801F911F24E030E040E01E |
:1049C00050E00E94585630934D0820934C08209197 |
:1049D000060430910704C901880F991F820F931FA5 |
:1049E000880F991FAA2797FDA095BA2F20915504EB |
:1049F000309156044091570450915804280F391FA4 |
:104A00004A1F5B1F2093550430935604409357046C |
:104A1000509358042091040430910504C901880F73 |
:104A2000991F820F931F880F991FAA2797FDA095A2 |
:104A3000BA2F2091590430915A0440915B0450914F |
:104A40005C04280F391F4A1F5B1F209359043093C1 |
:104A50005A0440935B0450935C0420910604309107 |
:104A600007048091570890915808820F931F9093E4 |
:104A700058088093570820910404309105048091D0 |
:104A8000720890917308820F931F9093730880931C |
:104A9000720880913D0490913E04019690933E04EB |
:104AA00080933D04E0907D07F0907E07A0903F0446 |
:104AB000B0904004C0904104D090420460915D04E5 |
:104AC00070915E0480915F04909160040E942C5567 |
:104AD0003B014C010027F7FC0095102FC801B701DE |
:104AE0000E942C55A60195010E9494549B01AC0193 |
:104AF000C401B3010E9495540E94F95460935D046F |
:104B000070935E0480935F04909360048FEC8093B5 |
:104B10007A0010921D0380916D0490916E04A09113 |
:104B20006F04B09170048F87988BA98BBA8B80919A |
:104B3000650490916604A0916704B09168048B8726 |
:104B40009C87AD87BE873201882477FC8094982C9F |
:104B50008091750490917604A0917704B0917804C7 |
:104B6000860D971DA81DB91D8E8B9F8BA88FB98FA1 |
:104B70008093750490937604A0937704B09378049F |
:104B80002090760830907708409078085090790807 |
:104B9000260C371C481C591C209276083092770846 |
:104BA00040927808509279089091A6049A879923A8 |
:104BB00029F48091A704882309F474C4A091D7072D |
:104BC000A9831092CE071092CD071092CA071092B7 |
:104BD000C90710921005109211051092120510923B |
:104BE00013051092140510921505109216051092D7 |
:104BF0001705B091AF03BD8BE0901405F09015053B |
:104C00000091160510911705A0901005B0901105A0 |
:104C1000C0901205D0901305C601B50124E630E01E |
:104C200040E050E00E9458564701821A930A909241 |
:104C30003C0880923B08C801B70124E630E040E020 |
:104C400050E00E94585639016A187B087092320869 |
:104C5000609231086091B3037091B4038091B50301 |
:104C60009091B60328E631E040E050E00E94E45520 |
:104C7000261637064806590664F0261A370A480AE7 |
:104C8000590A20927608309277084092780850921C |
:104C9000790857FC56C56B897C89680D791D9B0185 |
:104CA000442737FD4095542F8091710490917204F0 |
:104CB000A0917304B0917404820F931FA41FB51FB9 |
:104CC0008093710490937204A0937304B09374045E |
:104CD0008091A2049091A304681B790B7B010027AB |
:104CE000F7FC0095102F8F859889A989BA89E80E5D |
:104CF000F91E0A1F1B1FE0926D04F0926E040093D0 |
:104D00006F041093700420919B0330919C03409199 |
:104D10009D0350919E032E153F0540075107D4F483 |
:104D200078EAE72E71E6F72E012D112DE21AF30A2B |
:104D3000040B150BE0926D04F0926E0400936F0467 |
:104D400010937004E0927104F09272040093730463 |
:104D50001093740488279927DC01821B930BA40B02 |
:104D6000B50BE0906D04F0906E0400916F0410910B |
:104D70007004E816F9060A071B07E4F468E5E62E56 |
:104D80006EE9F62E6FEF062F6FEF162FE20EF31E71 |
:104D9000041F151FE0926D04F0926E0400936F04DF |
:104DA00010937004E0927104F09272040093730403 |
:104DB000109374046A8D7B8D660D771D9B014427CB |
:104DC00037FD4095542F8091690490916A04A09119 |
:104DD0006B04B0916C04820F931FA41FB51F8093C6 |
:104DE000690490936A04A0936B04B0936C0480915F |
:104DF000A4049091A504681B790B9B01442737FDFF |
:104E00004095542F8B859C85AD85BE85280F391F15 |
:104E10004A1F5B1F20936504309366044093670428 |
:104E200050936804A0909703B0909803C0909903A2 |
:104E3000D0909A03A216B306C406D506C4F428EA95 |
:104E400031E640E050E02A193B094C095D09209306 |
:104E5000650430936604409367045093680420937C |
:104E6000690430936A0440936B0450936C04882760 |
:104E70009927DC018A199B09AC09BD0920916504B9 |
:104E800030916604409167045091680428173907EF |
:104E90004A075B07B4F4A6019501285A3146404001 |
:104EA0005040209365043093660440936704509308 |
:104EB00068042093690430936A0440936B04509310 |
:104EC0006C048E899F89A88DB98D8093610490931D |
:104ED0006204A0936304B093640420934504309368 |
:104EE00046044093470450934804E0924D04F092E6 |
:104EF0004E0400934F0410935004809169049091E4 |
:104F00006A04A0916B04B0916C048093490490935F |
:104F10004A04A0934B04B0934C0480917104909187 |
:104F20007204A0917304B09174048093510490931F |
:104F30005204A0935304B0935404809110039091B1 |
:104F4000110397FDFCC39595879595958795959544 |
:104F5000879590933F0880933E088091120390912B |
:104F6000130397FD73C495958795959587959595AA |
:104F7000879590932F0880932E088091FE0390913F |
:104F8000FF030F9734F488E19CEF90933F088093E0 |
:104F90003E088091FE039091FF03079734F480E36D |
:104FA00098EF90933F0880933E08209100012A30AB |
:104FB00009F4DAC18091FE039091FF03815D97406F |
:104FC00034F088EE93E090933F0880933E08809100 |
:104FD000FE039091FF03805E97400CF0DAC1809150 |
:104FE0000004909101040F9734F488E19CEF9093B2 |
:104FF0002F0880932E088091000490910104079758 |
:1050000034F480E398EF90932F0880932E082A3091 |
:1050100009F48EC18091000490910104815D974054 |
:1050200034F088EE93E090932F0880932E088091BF |
:10503000000490910104805E97400CF08EC1609155 |
:10504000A603662309F4A2C04091100350911103F6 |
:105050008091060590910705481B590B5093010557 |
:10506000409300052091100330911103280F391F40 |
:1050700037FDF5C335952795309307052093060531 |
:10508000413851050CF403C280E890E0909301058B |
:1050900080930005E62FF0E08091000590910105D6 |
:1050A000E89FB001E99F700DF89F700D11249B01DE |
:1050B00077FDE0C335952795359527953595279547 |
:1050C0003595279580913E0890913F08820F931F58 |
:1050D00090933F0880933E08409112035091130330 |
:1050E0008091040590910505481B590B50930305C9 |
:1050F000409302052091120330911303280F391FAA |
:1051000037FDBEC3359527953093050520930405DB |
:10511000413851050CF408C380E890E090930305F2 |
:10512000809302058091020590910305E89FA001FC |
:10513000E99F500DF89F500D11249A0157FD9DC312 |
:105140003595279535952795359527953595279547 |
:1051500080912E0890912F08820F931F90932F0813 |
:1051600080932E088091100390911103680F791F8E |
:1051700070931103609310038091120390911303B5 |
:10518000480F591F50931303409312038B899C8936 |
:10519000181619060CF0E2C29D89E92EFF2400E0E2 |
:1051A00010E06091C9077091CA0777FD5FC3882737 |
:1051B00077FD8095982FA80197010E94E45520E47F |
:1051C00030E040E050E00E945856820E931E9092CC |
:1051D0003C0880923B08EA8DFB8D1E161F060CF0E2 |
:1051E000E2C22091CD073091CE0737FD3BC3442763 |
:1051F00037FD4095542FC801B7010E94E45520E4C3 |
:1052000030E040E050E00E945856620E731E7092EB |
:10521000320860923108F981F7FDE2C28091D3072C |
:10522000E82FF0E0EE0FFF1FE356F84F80819181E9 |
:10523000A0918C04B0918D0482599F4FA817B90793 |
:105240000CF0FFC01196B0938D04A0938C04809154 |
:10525000D407E82FF0E0EE0FFF1FE356F84F8081F0 |
:10526000918160918E0470918F0482599F4F6817CD |
:1052700079070CF0D3C06F5F7F4F70938F046093FA |
:105280008E048091D507E82FF0E0EE0FFF1FE35664 |
:10529000F84F8081918140919004509191048259FE |
:1052A0009F4F481759070CF0A6C04F5F5F4F5093B0 |
:1052B0009104409390048091D607E82FF0E0EE0F20 |
:1052C000FF1FE356F84F8081918120919204309125 |
:1052D000930482599F4F281739070CF061C02F5F44 |
:1052E0003F4F3093930420939204B7FD6DC0AF3FBE |
:1052F000B10511F00CF0C4C077FD6CC06F3F7105B3 |
:1053000011F00CF0B6C057FD6BC04F3F510511F0C6 |
:105310000CF0A8C037FD6AC02F3F310509F00CF42E |
:10532000EEC28FEF90E09093930480939204E7C2D3 |
:105330008091000490910104835F934034F088EEE3 |
:1053400093E090932F0880932E0880910004909111 |
:1053500001048A5F93400CF472CE80ED97E0909345 |
:105360002F0880932E086BCE8091FE039091FF034F |
:10537000835F934034F088EE93E090933F088093EE |
:105380003E088091FE039091FF038A5F93400CF4E6 |
:1053900026CE80ED97E090933F0880933E081FCE85 |
:1053A0008081918182599F4F821793070CF09DCF86 |
:1053B0002115310509F499CF2150304030939304E1 |
:1053C00020939204B7FF93CF10928D0410928C0417 |
:1053D00077FF94CF10928F0410928E0457FF95CFD1 |
:1053E000109291041092900437FF96CF109293047C |
:1053F0001092920484C28081918182599F4F8417B8 |
:1054000095070CF058CF4115510509F454CF415080 |
:10541000504050939104409390044DCF80819181EE |
:1054200082599F4F861797070CF02BCF6115710596 |
:1054300009F427CF6150704070938F0460938E04FD |
:1054400020CF8081918182599F4F8A179B070CF052 |
:10545000FECE109709F4FBCE1197B0938D04A09364 |
:105460008C04F5CE8FEF90E090939104809390049C |
:1054700051CF8FEF90E090938F0480938E0443CFB1 |
:105480008FEF90E090938D0480938C0435CF40583B |
:105490005F4F0CF0FFCD80E89FEF90930105809364 |
:1054A0000005F8CDB091D707B983B6FF8ACB2F8519 |
:1054B000388949895A89283BE4E93E07EEEF4E07CF |
:1054C000EFEF5E0724F428EB34E94EEF5FEF2A8319 |
:1054D0003B834C835D8329543B464140504044F01C |
:1054E00088E49BE6A1E0B0E08A839B83AC83BD8324 |
:1054F0002B853C854D855E85283B94E939079EEFD9 |
:1055000049079FEF590724F428EB34E94EEF5FEF8A |
:105510002E833F834887598729543B46414050405A |
:1055200044F088E49BE6A1E0B0E08E839F83A887E7 |
:10553000B987A090AE03BB24CC24DD24AB89BC8901 |
:105540009D01442737FD4095542F6E817F818885CA |
:1055500099850E94E45520E038E040E050E00E9448 |
:105560005856CA01B901A60195010E94E45520E0F0 |
:1055700030E140E050E00E94585679018A012093C2 |
:105580000C0530930D0540930E0550930F05EA8DE1 |
:10559000FB8D9F01442737FD4095542F6A817B8105 |
:1055A0008C819D810E94E45520E038E040E050E08D |
:1055B0000E945856CA01B901A60195010E94E455FE |
:1055C00020E030E140E050E00E945856F092CA07D7 |
:1055D000E092C9073093CE072093CD072E193F09DB |
:1055E000400B510B79018A0120930805309309057E |
:1055F00040930A0550930B05220E331E441E551E80 |
:105600002092760830927708409278085092790874 |
:10561000F091AF03FD8BFF23E1F4CA01B90122E051 |
:1056200030E040E050E00E9458568E899F89A88D56 |
:10563000B98D821B930BA40BB50B8E8B9F8BA88F00 |
:10564000B98F8093750490937604A0937704B093F8 |
:1056500078046E0C7F1C801E911EE090AD03FF2429 |
:1056600000E010E0C401B3012E813F8148855985D7 |
:105670000E94E45520E038E040E050E00E94585697 |
:10568000CA01B901A80197010E94E45520E030E168 |
:1056900040E050E00E94585659016A0120931405D9 |
:1056A000309315054093160550931705C401B301B7 |
:1056B0002A813B814C815D810E94E45520E038E0E5 |
:1056C00040E050E00E945856CA01B901A801970174 |
:1056D0000E94E45520E030E140E050E00E9458563E |
:1056E0002093100530931105409312055093130534 |
:1056F000D7FCE8C091E8A916B104C104D10444F470 |
:1057000057FDD8C021383105410551050CF474CA44 |
:1057100081E080938904209076083090770840904B |
:1057200078085090790868CA40585F4F0CF0FACC5E |
:1057300080E89FEF9093030580930205F3CC0796D2 |
:1057400002CC260E371E481E591E20927608309233 |
:10575000770840927808509279089DCAAD89EA2E60 |
:10576000FF2400E010E06091C9077091CA0777FD3F |
:105770008AC0882777FD8095982FA80197010E94FD |
:10578000E45520E430E040E050E00E945856821A90 |
:10579000930A90923C0880923B08EA8DFB8D1E167E |
:1057A0001F060CF41ECD2091CD073091CE0737FD9A |
:1057B0006EC0442737FD4095542FC801B7010E94A1 |
:1057C000E45520E430E040E050E00E945856621A70 |
:1057D000730A7092320860923108F981F7FF1ECD8A |
:1057E0002A85222309F01ACD8091A704882309F085 |
:1057F00015CD8A8D9B8D815091400CF04CC02A8D27 |
:105800003B8D6FEF2030360764F480913E08909115 |
:105810003F0880509F4F820F931F90933F088093C3 |
:105820003E088B899C89815091400CF454C0809132 |
:105830002E0890912F0880509140EB89FC898E0FA3 |
:105840009F1F90932F0880932E08E8CC07968BCB50 |
:10585000295F3F4F20C8295F3F4F0C943D242F5FA5 |
:105860003F4F08CC309521953F4FC1CC7095619545 |
:105870007F4F9DCC215F3F4F1DCC215F3F4F60CCC0 |
:105880002F5F3F4F3FCC709561957F4F72CF309522 |
:1058900021953F4F8ECF80913E0890913F088050D8 |
:1058A0009140EA8DFB8D8E0F9F1F90933F08809350 |
:1058B0003E08B7CF50954095309521953F4F4F4FBB |
:1058C0005F4F20CFD094C094B094A094A11CB11C81 |
:1058D000C11CD11C0FCF2B893C896FEF20303607BC |
:1058E0000CF09CCC80912E0890912F0880509F4FF7 |
:1058F000820F931F90932F0880932E088FCC6B9666 |
:105900000FB6F894DEBF0FBECDBFDF91CF911F91D0 |
:105910000F91FF90EF90DF90CF90BF90AF909F904E |
:105920008F907F906F905F904F903F902F90089551 |
:105930008091DA078B3F80F08B3F09F4EDC28C3FFA |
:1059400009F4C1C38D3F09F428C38E3F39F4809117 |
:1059500092048093A20302C08093A2038091D9078E |
:105960008B3F80F08B3F09F4C8C28C3F09F4D8C349 |
:105970008D3F09F403C38E3F39F4809192048093E4 |
:10598000A10302C08093A1038091A1038823B1F4F5 |
:105990001092A1038091DB078B3FC8F08B3F09F485 |
:1059A000B1C28C3F09F4C1C38D3F09F4ECC28E3FF4 |
:1059B00081F4809192048093A3030BC0843650F34A |
:1059C00084E68093A1038091DB078B3F38F78093B7 |
:1059D000A3038091A3038823B1F41092A3038091C1 |
:1059E000DD078B3FC8F08B3F09F491C28C3F09F46F |
:1059F00065C38D3F09F4CCC28E3F81F4809192043F |
:105A00008093A4030BC0843650F384E68093A303F1 |
:105A10008091DD078B3F38F78093A4038091E407E2 |
:105A20008B3F80F08B3F09F486C28C3F09F469C339 |
:105A30008D3F09F494C28E3F39F480919204809393 |
:105A4000A50302C08093A5038091E5078B3F80F0FA |
:105A50008B3F09F466C28C3F09F46CC38D3F09F497 |
:105A600083C28E3F39F4809192048093A70302C0D1 |
:105A70008093A7038091A7038B30B8F48AE08093CA |
:105A8000A7038091E6078B3FC0F08B3F09F44EC21D |
:105A90008C3F09F454C38D3F09F46BC28E3F79F4F7 |
:105AA000809192048093A8030AC08F3F51F780939E |
:105AB000A7038091E6078B3F40F78093A80380916E |
:105AC000E7078B3F80F08B3F09F4F4C18C3F09F46A |
:105AD00013C38D3F09F43EC28E3F39F48091920486 |
:105AE0008093A60302C08093A6038091EC078B3FAE |
:105AF00080F08B3F09F4E3C18C3F09F4D0C28D3FA5 |
:105B000009F487C28E3F39F4809192048093AA03EE |
:105B100002C08093AA038091ED078B3F80F08B3FFA |
:105B200009F4D2C18C3F09F497C28D3F09F462C2D7 |
:105B30008E3F39F4809192048093AC0402C080932C |
:105B4000AC048091EE078B3F80F08B3F09F49EC13F |
:105B50008C3F09F486C28D3F09F451C28E3F39F45F |
:105B6000809192048093AD0402C08093AD04809133 |
:105B7000EF078B3F80F08B3F09F48DC18C3F09F418 |
:105B800089C28D3F09F440C28E3F39F4809192045E |
:105B90008093AE0402C08093AE048091F0078B3FE7 |
:105BA00080F08B3F09F47CC18C3F09F46EC28D3FBD |
:105BB00009F439C28E3F39F4809192048093AF0486 |
:105BC00002C08093AF04809101088B3F80F08B3F2F |
:105BD00009F46BC18C3F09F435C28D3F09F428C22A |
:105BE0008E3F39F4809192048093B00402C0809378 |
:105BF000B004809102088B3F80F08B3F09F41EC1F6 |
:105C00008C3F09F424C28D3F09F417C28E3F39F44A |
:105C1000809192048093B10402C08093B10480917A |
:105C200003088B3F80F08B3F09F40DC18C3F09F4D2 |
:105C300027C28D3F09F4F2C18E3F39F4809192045E |
:105C40008093B20402C08093B204809104088B3F19 |
:105C500080F08B3F09F4FCC08C3F09F40CC28D3FEF |
:105C600009F4C3C18E3F39F4809192048093B30448 |
:105C700002C08093B3048091F1078B3F80F08B3F8B |
:105C800009F4EBC08C3F09F423C28D3F09F49EC197 |
:105C90008E3F39F4809192048093AB0302C08093CD |
:105CA000AB038091F6078B3F80F08B3F09F4DAC09D |
:105CB0008C3F09F412C28D3F09F48DC18E3F39F437 |
:105CC000809192048093AC0302C08093AC038091D6 |
:105CD000F9078B3F80F08B3F09F4C9C08C3F09F472 |
:105CE000C5C18D3F09F47CC18E3F39F48091920487 |
:105CF0008093AD0302C08093AD038091FA078B3F80 |
:105D000080F08B3F09F4B8C08C3F09F4D2C18D3FBD |
:105D100009F44DC18E3F39F4809192048093AE0313 |
:105D200002C08093AE038091FB078B3F80F08B3FD6 |
:105D300009F4A7C08C3F09F4D5C18D3F09F43CC1DB |
:105D40008E3F39F4809192048093AF0302C0809318 |
:105D5000AF03809100088B3F80F08B3F09F4B9C0FE |
:105D60008C3F09F4C4C18D3F09F42BC18E3F39F437 |
:105D7000809192048093B00302C08093B00380911D |
:105D800006088B3F80F08B3F09F4A8C08C3F09F4D4 |
:105D90008BC18D3F09F406C18E3F39F48091920486 |
:105DA0008093590802C08093590880915908823025 |
:105DB00008F440C08F3FB9F1809108088B3F80F014 |
:105DC0008B3F09F490C08C3F09F4A0C18D3F09F4CA |
:105DD000B7C08E3F39F48091920480936D0802C061 |
:105DE00080936D0880916D08823000F18F3FC1F083 |
:105DF000809119088B3F88F08B3F09F479C08C3F64 |
:105E000009F489C18D3F09F4A0C08E3F09F09CC1FF |
:105E10008091920480937E0897C180937E0894C1FC |
:105E200080936D08E5CF80935908C6CF81E08093B9 |
:105E30006D08DECF81E080935908BECF80918C043D |
:105E40008093B104ECCE80918C048093B204FDCE9B |
:105E500080918C048093B3040ECF80918C04809346 |
:105E6000AB031FCF80918C048093AC0330CF809123 |
:105E70008C048093AD0341CF80918C048093AE035A |
:105E800052CF80918C048093AF0363CF80918C04B8 |
:105E90008093AD046CCE80918C048093AE047DCE53 |
:105EA00080918C048093AF048ECE80918C0480937B |
:105EB000B0049FCE80918C048093A60316CE80916F |
:105EC0008C048093AA0327CE80918C048093AC0429 |
:105ED00038CE80918C048093B00351CF80918C0494 |
:105EE0008093590862CF80918C0480936D087ACF9B |
:105EF00080918C0480937E0827C180918C048093CC |
:105F0000A10342CD80918C048093A30362CD809144 |
:105F10008C048093A40382CD80918C048093A2038F |
:105F20001DCD80918C048093A703A4CD80918C0417 |
:105F30008093A803C4CD80918C048093A50384CD65 |
:105F40008091900480936D084DCF80919004809350 |
:105F50007E08FAC0809190048093A603C6CD8091FC |
:105F600090048093A50370CD809190048093A70343 |
:105F700081CD809190048093A803A1CD809190045D |
:105F80008093A10301CD809190048093A30321CD40 |
:105F9000809190048093A40341CD809190048093DC |
:105FA000A203DCCC8091900480935908FECE8091AE |
:105FB00090048093AE03B7CE809190048093AF039A |
:105FC000C8CE809190048093B003D9CE8091900484 |
:105FD0008093AB0366CE809190048093AC0377CE20 |
:105FE000809190048093AD0388CE8091900480933B |
:105FF000B30441CE809190048093AC04A2CD8091F3 |
:1060000090048093AD04B3CD809190048093AE044E |
:10601000C4CD809190048093AA037DCD809190049B |
:106020008093B20412CE809190048093AF04CBCDC4 |
:10603000809190048093B004DCCD80919004809393 |
:10604000B104EDCD80918E048093B004D2CD8091C7 |
:106050008E048093B104E3CD80918E048093AC04D0 |
:1060600070CD80918E048093AD0481CD80918E049B |
:106070008093AD0342CE80918E048093B304FBCD18 |
:1060800080918E048093B204E0CD80918E04809341 |
:10609000AF0499CD80918E048093AE047ECD809123 |
:1060A0008E048093AA0337CD80918E048093590883 |
:1060B0007CCE80918E048093AE0335CE80918E0489 |
:1060C0008093A403ABCC80918E048093A20346CC32 |
:1060D00080918E048093AB03E4CD80918E048093F5 |
:1060E000AC03F5CD80918E048093AF0332CE8091C6 |
:1060F0008E048093B00343CE80918E048093A603D8 |
:10610000F4CC80918E048093A5039ECC80918E0464 |
:1061100080936D0867CE80918E0480937E0814C0B2 |
:1061200080918E048093A1032FCC80918E04809364 |
:10613000A3034FCC80918E048093A7039BCC8091C6 |
:106140008E048093A803BBCC6091AA0370E06F5FBC |
:106150007F4F8CE398E20E9423567093A0036093D4 |
:106160009F038091E20780936E088091E1078093FE |
:106170004408089580919D04882361F510927D085C |
:10618000109250081092630810924A0810924B081F |
:10619000109265088091D203882321F080937D08B6 |
:1061A000809363088091D503882311F080934B0876 |
:1061B0008091D303882321F08093500880934A086C |
:1061C0008091D403882361F48091C0048C7F8093F4 |
:1061D000C00409C08091C00481608093C00403C0E2 |
:1061E00080936508F1CF8091300890E0909352073A |
:1061F0008093510780913D0890E0909354078093DD |
:1062000053078091660890E0909356078093550756 |
:106210008091610890E090935807809357071092FF |
:106220002804109229040E94B5210895809100014C |
:106230008D3009F443C110927A008091FE03909151 |
:10624000FF0390933F0880933E0880910004909153 |
:10625000010490932F0880932E088091020490915E |
:1062600003049093700880936F0860910604709106 |
:106270000704882777FD8095982F26E030E040E0DE |
:1062800050E00E94E45570936B0860936A08609137 |
:10629000040470910504882777FD8095982F0E944B |
:1062A000E45570937B0860937A088091080490917C |
:1062B000090490934D0880934C088FEC80937A00EA |
:1062C0008091D307E82FF0E0EE0FFF1FE356F84F61 |
:1062D00080819181A0918C04B0918D0482599F4F4F |
:1062E000A817B9070CF0C4C01196B0938D04A09301 |
:1062F0008C048091D407E82FF0E0EE0FFF1FE356E7 |
:10630000F84F8081918160918E0470918F04825941 |
:106310009F4F681779070CF098C06F5F7F4F70939D |
:106320008F0460938E048091D507E82FF0E0EE0F84 |
:10633000FF1FE356F84F8081918140919004509166 |
:10634000910482599F4F481759070CF06BC04F5F5B |
:106350005F4F50939104409390048091D607E82FAB |
:10636000F0E0EE0FFF1FE356F84F808191812091FE |
:1063700092043091930482599F4F281739074CF5A6 |
:106380002F5F3F4F3093930420939204B7FD33C0A7 |
:10639000AF3FB10511F00CF08AC077FD32C06F3FFE |
:1063A000710511F00CF07CC057FD31C04F3F510515 |
:1063B00011F00CF06EC037FD30C02F3F310509F0F1 |
:1063C0000CF47FC08FEF90E090939304809392043D |
:1063D00078C08081918182599F4F82179307B4F6CC |
:1063E0002115310599F221503040309393042093C8 |
:1063F0009204B7FFCDCF10928D0410928C0477FFDA |
:10640000CECF10928F0410928E0457FFCFCF1092F0 |
:1064100091041092900437FFD0CF10929304109201 |
:1064200092044FC08081918182599F4F84179507B4 |
:106430000CF093CF4115510509F48FCF41505040D6 |
:10644000509391044093900488CF80819181825928 |
:106450009F4F861797070CF066CF6115710509F4F9 |
:1064600062CF6150704070938F0460938E045BCF55 |
:106470008081918182599F4F8A179B070CF039CFF9 |
:10648000109709F436CF1197B0938D04A0938C0424 |
:1064900030CF8FEF90E090939104809390048BCF56 |
:1064A0008FEF90E090938F0480938E047DCF8FEFD9 |
:1064B00090E090938D0480938C046FCF0E94371AE4 |
:1064C000BACE6091FC0770E080E090E024EC39E007 |
:1064D00040E050E00E94E455609397037093980366 |
:1064E0008093990390939A036091FD0770E080E098 |
:1064F00090E00E94E45560939B0370939C0380930B |
:106500009D0390939E0308956F927F928F929F9226 |
:10651000AF92BF92CF92DF92EF92FF920F931F93B1 |
:10652000CF93DF931092E803469A10923A041092A8 |
:10653000390410923C0410923B0480E090E0A0E00B |
:10654000B0E080933F0490934004A0934104B09343 |
:1065500042041092300410922F04109232041092D0 |
:106560003104109234041092330410925F08109298 |
:106570005E081092AD031092AE0310920B040E94BD |
:10658000163184E690E00E94A9120E941631809193 |
:10659000D70780FF10C08091180390911903875B83 |
:1065A000934008F0D8C080911803909119038E5E33 |
:1065B000924008F4D0C0EE24CC24DD24C0E0D0E02A |
:1065C00000E010E08AE090E00E94A91280910204AD |
:1065D00090910304C80ED91E8091FE039091FF0391 |
:1065E000C80FD91F8091000490910104080F191F52 |
:1065F000E39480E2E81631F7AE01405F5F4F5695B5 |
:106600004795569547955093300440932F04980131 |
:10661000205F3F4F36952795369527953093320466 |
:1066200020933104C6014096969587959295829560 |
:106630008F7089279F708927909334048093330447 |
:1066400090935F0880935E0830933604209335045E |
:10665000509338044093370444E050E0DA010E943C |
:106660007356802D853078F180917A0890917B085F |
:1066700097FD78C06CE070E00E94235670933C0454 |
:1066800060933B0480916A0890916B0897FD66C007 |
:106690006CE070E00E94235670933A0460933904D2 |
:1066A00060917D0770917E07882777FD8095982FF0 |
:1066B0000E942C5560933F047093400480934104E2 |
:1066C0009093420453C0DA010E947356802D4F5FAD |
:1066D0005F4FDA010E947356202D90E0982F882793 |
:1066E000820F911D90933A04809339044F5F5F4F5E |
:1066F000DA010E947356802D4F5F5F4FDA010E94CE |
:106700007356202D90E0982F8827820F911D90932B |
:106710003C0480933B044F5F5F4FDA010E94735645 |
:10672000602D4F5F5F4FDA010E947356202D70E09D |
:10673000762F6627620F711D882777FD8095982F29 |
:106740000E942C5560933F04709340048093410451 |
:10675000909342040BC00E94FE1A2DCF9095819514 |
:106760009F4F96CF909581959F4F84CF10923F0871 |
:1067700010923E0810922F0810922E081092700866 |
:1067800010926F0884E690E00E94A91260910604BE |
:1067900070910704882777FD8095982F26E030E0D8 |
:1067A00040E050E00E94E4553B014C0170936B08BF |
:1067B00060936A086091040470910504882777FD4E |
:1067C0008095982F0E94E4555B016C0170937B08C3 |
:1067D00060937A08E090E307FF2400E010E088244B |
:1067E00077FC8094982CC401B301A80197010E9402 |
:1067F000E4553B014C01609345047093460480933B |
:10680000470490934804CC24B7FCC094DC2CC60108 |
:10681000B5010E94E45560934D0470934E0480933B |
:106820004F04909350046092690470926A048092BD |
:106830006B0490926C046093710470937204809363 |
:10684000730490937404109275041092760410925D |
:106850007704109278048091140390911503A0910D |
:106860001603B09117039093800780937F071092CF |
:106870000D0410920C0410927D0410927E0410926C |
:106880007F041092800480918104909182049093FF |
:106890008404809383040E94C14E82E390E090932D |
:1068A000E6038093E5036091FC0770E080E090E0F0 |
:1068B00024EC39E040E050E00E94E4556856754C05 |
:1068C0008F4F9F4F60939703709398038093990322 |
:1068D00090939A036091FD0770E080E090E00E9441 |
:1068E000E4556856754C8F4F9F4F60939B03709390 |
:1068F0009C0380939D0390939E031092B203109289 |
:10690000B1036091810470918204882777FD80959E |
:10691000982F2091B3033091B4034091B503509167 |
:10692000B6030E94E45560937608709377088093CD |
:1069300078089093790810928B0410928A0411E0E1 |
:10694000109301010E9421528091C00484608093C1 |
:10695000C0048FEF8093E0081092E10880E28093FA |
:10696000E208E091D307F0E0EE0FFF1FE356F84F87 |
:106970008081918182599F4F90938D0480938C04E4 |
:10698000E091D407F0E0EE0FFF1FE356F84F80814F |
:10699000918182599F4F90938F0480938E04E09150 |
:1069A000D507F0E0EE0FFF1FE356F84F808191818D |
:1069B00082599F4F9093910480939004E091D60761 |
:1069C000F0E0EE0FFF1FE356F84F8081918182596E |
:1069D0009F4F90939304809392041093E80384E66E |
:1069E00080939404DF91CF911F910F91FF90EF90CE |
:1069F000DF90CF90BF90AF909F908F907F906F90DF |
:106A000008951F93182F11501F3FA9F080919D04E6 |
:106A1000882329F010C080919D04882361F484E6C6 |
:106A200090E09093E6038093E5038AEF90E00E9464 |
:106A30009C12115080F71F91089588EE8093D7071C |
:106A40003EE13093D8078BEF8093DA078AE080939A |
:106A5000DB073093D9073093DD0793E09093DC0791 |
:106A600058E05093DE0720E12093DF0766E0609353 |
:106A7000E0075093E10786EE8093E2073093E30747 |
:106A800080E88093E40744E64093E50788E7809335 |
:106A9000E6079093E7078EE58093E80783E280930B |
:106AA000E90784E18093EA071092EB072093EC0753 |
:106AB0001092ED071092EE071092EF071092F00778 |
:106AC0001092010810920208109203081092040814 |
:106AD0004093F10788E28093F20710921B0892E33B |
:106AE0009093F30786E98093F40785E08093F50798 |
:106AF0009093F6072AE52093F7079093F8071092F2 |
:106B00001A082093F90783E48093FA0786E48093B8 |
:106B1000FB0785E58093FC078093FD0780E2809367 |
:106B2000FE078093FF07909300088FE58093050888 |
:106B300083EF8093070830930608309308088DEFA1 |
:106B40008093090840930A0820930B0820930C08AF |
:106B500020930D088BE480930E0880930F08809398 |
:106B60001008109211086093120850931308209394 |
:106B7000140830931508409316084093170884E0D2 |
:106B800080931808A0E2B8E0EAE7F3E08CE0019017 |
:106B90000D928150E1F7089588E68093D7075EE172 |
:106BA0005093D8078BEF8093DA078AE08093DB0756 |
:106BB0005093D9075093DD0793E09093DC078CE066 |
:106BC0008093DE0780E18093DF0776E07093E00733 |
:106BD00068E06093E10786EE8093E2075093E30755 |
:106BE00080E88093E40780E58093E50788E7809359 |
:106BF000E6079093E7078EE58093E80783E28093AA |
:106C0000E9075093EA071092EB0730E23093EC0764 |
:106C10001092ED071092EE071092EF071092F00716 |
:106C200010920108109202081092030810920408B2 |
:106C300044E64093F10788E28093F20710921B0824 |
:106C400092E39093F30786E98093F40785E08093BD |
:106C5000F5079093F6072AE52093F7079093F80736 |
:106C600010921A082093F90783E48093FA078CE3C3 |
:106C70008093FB0785E58093FC078093FD073093A5 |
:106C8000FE073093FF079BE4909300088FE5809305 |
:106C9000050883EF8093070884E1809306088093BA |
:106CA00008088DEF8093090840930A0820930B0889 |
:106CB00020930C0820930D0890930E0890930F08D2 |
:106CC00090931008109211087093120860931308A3 |
:106CD0002093140850931508409316084093170802 |
:106CE00084E080931808A0E2B8E0E4E8F3E08CE0E8 |
:106CF00001900D928150E1F7089588E68093D707BF |
:106D00003EE13093D8078BEF8093DA078AE08093D7 |
:106D1000DB073093D9073093DD07E4E0E093DC072D |
:106D20005FE05093DE073093DF078CE08093E0074D |
:106D300078E07093E10786EE8093E2073093E307F3 |
:106D400080E88093E40780E58093E50726E92093B7 |
:106D5000E60783E08093E7078EE58093E80783E208 |
:106D60008093E9073093EA071092EB0760E26093A3 |
:106D7000EC071092ED071092EE071092EF071092B9 |
:106D8000F007109201081092020810920308109266 |
:106D9000040844E64093F10788E28093F2071092DA |
:106DA0001B0892E39093F3072093F40785E0809308 |
:106DB000F5079093F6072AE52093F7079093F807D5 |
:106DC00010921A082093F90783E48093FA0710922F |
:106DD000FB0785E58093FC078093FD0780E18093A6 |
:106DE000FE076093FF07409300088FE58093050836 |
:106DF00083EF8093070850930608509308088DEF9F |
:106E00008093090840930A0820930B0820930C08EC |
:106E100020930D088BE480930E0880930F088093D5 |
:106E200010081092110886E08093120870931308DE |
:106E300020931408309315084093160840931708C0 |
:106E4000E0931808A0E2B8E0ECE8F3E08CE00190F1 |
:106E50000D928150E1F708952F923F924F925F92E9 |
:106E60006F927F928F929F92AF92BF92CF92DF925A |
:106E7000EF92FF920F931F93CF93DF93CDB7DEB7BF |
:106E8000E0970FB6F894DEBF0FBECDBF0E940D2471 |
:106E9000409100014C3008F054C7299A20919B047E |
:106EA00030919C0480914408682F70E0665F7F4FAA |
:106EB000798B688B6217730714F4398B288B809158 |
:106EC0009404843608F0EFC380910501882349F4C7 |
:106ED0008091090390910A038F5F9F4F11F40C94E6 |
:106EE00093498091E2049091E304009709F436C736 |
:106EF00001979093E3048093E2044A3009F435C784 |
:106F0000443109F432C728988091BE049091BF049F |
:106F1000895E934010F40C94E0458091E907E82FD6 |
:106F2000F0E0F98BE88BF1E0F0938704A091CF07B4 |
:106F3000B0E0AA0FBB1FFD01ED54F84F1182108283 |
:106F4000E091D0072E2F30E0220F331FC9018D545E |
:106F5000984FFC0111821082A356B84F11961C92D3 |
:106F60001E922356384FD90111961C921E92E09121 |
:106F7000D207F0E0EE0FFF1FE356F84F11821082A8 |
:106F800080917903815080937903809179038F3FB9 |
:106F900009F4D0C4B0918704BFA3BB2309F0CAC4CD |
:106FA000B091D7072091A704222311F40C94EF4944 |
:106FB0008091F60790E0688979898617970714F41D |
:106FC000998B888B71E0709389048B2F90E09B875D |
:106FD0008A879FA19923B1F010929A041092990484 |
:106FE00010929604109295041092980410929704AF |
:106FF0008AE580937408A8E7A09360081092A7041C |
:107000001092A60420914504309146044091470413 |
:107010005091480429833A834B835C834091530801 |
:107020005091540860915508709156084BA75CA781 |
:107030006DA77EA789819A81AB81BC81480F591FBA |
:107040006A1F7B1F40935308509354086093550860 |
:107050007093560820914D0430914E0440914F0496 |
:10706000509150042D833E834F83588720905A08B7 |
:1070700030905B0840905C0850905D08220E331EF3 |
:10708000441E551E20925A0830925B0840925C08BC |
:1070900050925D084091490450914A0460914B041C |
:1070A00070914C044BA35CA36DA37EA38091460812 |
:1070B00090914708A0914808B0914908840F951F06 |
:1070C000A61FB71F8093460890934708A0934808CF |
:1070D000B093490860915104709152048091530417 |
:1070E000909154046F8F78A389A39AA38091360856 |
:1070F00090913708A0913808B09139082F8D38A1A8 |
:1071000049A15AA1820F931FA41FB51F809336086F |
:1071100090933708A0933808B09339083091A604AB |
:107120003987332311F40C94CE43109255041092F6 |
:107130005604109257041092580410925904109259 |
:107140005A0410925B0410925C041092530810923F |
:107150005408109255081092560810925A0810922E |
:107160005B0810925C0810925D081092460810921D |
:107170004708109248081092490810923608109259 |
:107180003708109238081092390880916504909160 |
:107190006604A0916704B091680480936904909399 |
:1071A0006A04A0936B04B0936C0480916D04909179 |
:1071B0006E04A0916F04B091700480937104909359 |
:1071C0007204A0937304B093740410920F0410928D |
:1071D0000E041092A5041092A4041092A30410921D |
:1071E000A2045091A70458A780910E0490910F0417 |
:1071F0008F3F910509F010F40C94B943B985BB2376 |
:1072000029F4E8A5EE2311F40C9486461092A30409 |
:107210001092A2041092A5041092A40419A6109230 |
:107220008904209153083091540840915508509199 |
:1072300056082BA73CA74DA75EA720905A08309070 |
:107240005B0840905C0850905D08309160083AA758 |
:10725000332341F41092A3041092A2041092A504C7 |
:107260001092A4044BA55CA56DA57EA54093C50412 |
:107270005093C6046093C7047093C8042092C1045D |
:107280003092C2044092C3045092C4041092550438 |
:1072900010925604109257041092580410925904F8 |
:1072A00010925A0410925B0410925C0410925D04D8 |
:1072B00010925E0410925F041092600410925308C2 |
:1072C00010925408109255081092560810925A08BD |
:1072D00010925B0810925C0810925D0810924608AC |
:1072E00010924708109248081092490810923608E8 |
:1072F00010923708109238081092390810920F0433 |
:1073000010920E04E0909904F0909A046701F7FE41 |
:1073100002C00C94C84370E1C716D10464F088EE33 |
:1073200093E090939603809395038A8584FD03C030 |
:1073300081E08093DB040091E007B701882777FDA7 |
:107340008095982F202F30E040E050E00E94E455D7 |
:107350009601442737FD4095542F0E94E45520E0C4 |
:1073600032E040E050E00E94585610E00E9DB0011F |
:107370000F9D700D1E9D700D112477FF02C00C949F |
:10738000ED457595679575956795260F371FA9018A |
:10739000662757FD6095762F4A8F5B8F6C8F7D8FA8 |
:1073A0004093F4045093F5046093F6047093F7044B |
:1073B0008091750490917604A0917704B09178043F |
:1073C000841B950BA60BB70B8093750490937604E2 |
:1073D000A0937704B0937804813553EC950750E07F |
:1073E000A50750E0B50714F40C94A44380E593EC92 |
:1073F000A0E0B0E08093750490937604A0937704A6 |
:10740000B0937804209081043090820421143104D8 |
:1074100009F4ADC47A8573FFAAC469817A818B812E |
:107420009C8120E032E040E050E00E945856890103 |
:1074300037FF02C00C94B0496D817E818F819885A1 |
:1074400020E032E040E050E00E945856690137FFEA |
:1074500002C00C94AA49C016D10614F40C945149E8 |
:10746000409076085090770860907808709079087E |
:107470008091B3039091B403A091B503B091B6038A |
:107480008E8B9F8BA88FB98F80906F08909070081B |
:10749000C40197FE02C00C94A1498138910514F0F3 |
:1074A0000C943649ACE1B2E02A0E3B1E7101002774 |
:1074B000F7FC0095102FE4EEFDEF2E0E3F1EC301EA |
:1074C000B2012E893F89488D598D0E945856E21A83 |
:1074D000F30A040B150BC801B70128E631E040E0C0 |
:1074E00050E00E945856645B70408B01000F111FE2 |
:1074F000000F111F000F111F2091DB04E090950376 |
:10750000F0909603E114F10491F4F9E1CF16D1045F |
:1075100074F480918A0490918B04860F971F909346 |
:107520008B0480938A04222311F00C94684BB601DB |
:10753000D7FE02C00C942A4A759567957595679594 |
:10754000759567956F5F7F4FC8010E9423569B0119 |
:10755000A901662757FD6095762F440D551D661DC0 |
:10756000771D40937608509377086093780870935E |
:1075700079088091A503A82EBB24CA9C9001CB9CBE |
:10758000300DDA9C300D112437FF02C00C94264ACE |
:1075900035952795359527953595279535952795D3 |
:1075A000359527956501C21AD30AD7FE02C00C94FF |
:1075B0001E4AE114F10411F00C94E6496090BC04F9 |
:1075C0007090BD048091BA049091BB04680E791E3E |
:1075D00077FE02C00C94434D75946794759467943C |
:1075E00075946794A0E4B0E06A0E7B1E80918304DA |
:1075F00090918404AA2797FDA095BA2F1CE1E12E53 |
:1076000012E0F12E012D112DE81AF90A0A0B1B0BBD |
:10761000CB01BA012E893F89488D598D0E94585659 |
:10762000E20EF31E041F151FC801B70128E631E062 |
:1076300040E050E00E945856645B70406C9DC00171 |
:107640006D9D900D7C9D900D1124B3010E942356D9 |
:107650009501220F331F2A0D3B1D2617370714F4FF |
:107660000C942E4A309521953F4F621773070CF406 |
:10767000B9019B01442737FD4095542F8091750433 |
:1076800090917604A0917704B0917804820F931FB3 |
:10769000A41FB51F8093750490937604A09377047C |
:1076A000B093780468C3809194048D3808F468CC52 |
:1076B000109287048091EA0722E3829FC00111247F |
:1076C0009093E3048093E204E889F989B9978CF0F8 |
:1076D00080919D04882369F08091BE049091BF043D |
:1076E000FFEF8F3F9F0779F001969093BF0480933F |
:1076F000BE048091BE049091BF048F3F910509F0B4 |
:1077000010F40C945C498091C00482608093C004A2 |
:107710008091D107A82FB0E0AA0FBB1FFD01E3564F |
:10772000F84F80819181813591050CF4C4C080911E |
:107730009D04882309F0BFC08091D207E82FF0E0B4 |
:10774000EE0FFF1FE356F84F808191818C34910535 |
:1077500014F40C94CE4A8091E1048F5F8093E1048D |
:10776000893C08F4A8C04C3010F00C94754E299850 |
:1077700010929D041092E1041092BF041092BE0476 |
:107780008091CF07282F30E0220F331FF901E356F5 |
:10779000F84F808191818734910514F40C94604EE8 |
:1077A0008091D007A82FB0E0AA0FBB1FAD014356B0 |
:1077B000584FFA0180819181873491052CF0F901AD |
:1077C000E356F84F80819181FA018081918187345D |
:1077D000910514F40C944A4EF901E356F84F808158 |
:1077E00091818734910514F40C944A4E42E0FD01D6 |
:1077F000E356F84F80819181863491054CF4F9016C |
:10780000E356F84F80819181873491050CF043E075 |
:10781000FD01E356F84F808191818A5B9F4F4CF4C4 |
:10782000F901E356F84F80819181873491050CF07E |
:1078300044E0A356B84F8D919C918A5B9F4F4CF4C6 |
:107840002356384FD9018D919C91863491050CF4C3 |
:1078500045E0842F0E94B2028091D007A82FB0E0AB |
:10786000AA0FBB1FA356B84F8D919C9197FF02C0E2 |
:107870000C94824E4E9714F00C94154EE091CF0765 |
:10788000F0E0EE0FFF1FE356F84F808191818A5B95 |
:107890009F4F14F00C94154E81E08093920688EE71 |
:1078A00093E09093E6038093E5038091D107A82F9E |
:1078B000B0E0AA0FBB1FA356B84F8D919C918B5A75 |
:1078C0009F4F0CF05DCB8091D207C82EDD24CC0CED |
:1078D000DD1CF601E356F84F80819181855B9F4F57 |
:1078E00014F00C94024A8091E0048F5F8093E004CE |
:1078F000893C10F00C94484A6DE977E0C60ED71E1B |
:10790000D6018D919C918C34910514F40C94064A07 |
:107910008091DF048F5F8093DF04893C08F430CBD3 |
:1079200010929D0488EC8093DF041092BF041092A3 |
:10793000BE0426CB0E94982C8091CF07A82EBB2492 |
:10794000AA0CBB1CF501E356F84F208131818091D0 |
:10795000DE07882E9924F501ED54F84F0190F0814F |
:10796000E02D8091DF07682F70E0289DA001299D00 |
:10797000500D389D500D11242091D1043091D20426 |
:10798000C901880F991F820F931F480F591F57FF76 |
:1079900002C00C9454499A01359527953595279541 |
:1079A000E69FC001E79F900DF69F900D1124280FD0 |
:1079B000391F3093D2042093D10480911C059091FB |
:1079C0001D0540911805509119056901C81AD90A79 |
:1079D000C41AD50AD0929604C09295048091D0071B |
:1079E000E82EFF24EE0CFF1CF701E356F84F8081D0 |
:1079F0009181F701ED54F84F0190F081E02D889DC1 |
:107A0000A001899D500D989D500D11242091CF0407 |
:107A10003091D004C901880F991F820F931F480F1E |
:107A2000591F57FF02C00C9458499A013595279564 |
:107A300035952795E69FC001E79F900DF69F900D25 |
:107A40001124280F391F3093D0042093CF04809144 |
:107A50001E0590911F0540911A0550911B05890143 |
:107A6000081B190B041B150B109398040093970423 |
:107A7000E091D207F0E0EE0FFF1FE356F84F808150 |
:107A80009181909581959F4F90939A04809399044A |
:107A9000833091050CF457C1029790939A04809318 |
:107AA0009904E091D107F0E0EE0FFF1FE356F84F85 |
:107AB0006080718028E730E0620E731E70929C0433 |
:107AC00060929B046091A70370E0882777FD809502 |
:107AD000982F0E942C5520E030E040E251E40E94B3 |
:107AE00095540E94FE54609374083091A80330931B |
:107AF000600880919E0680FF06C080917E088138D4 |
:107B000010F00C94294680919B0490919C0497FF5F |
:107B100002C00C94CA49B091D707B2FF02C01092BC |
:107B2000600820919504309196044091BA045091D8 |
:107B3000BB04C90137FF02C00C94D54995958795C0 |
:107B40009595879597FF02C00C94D049481759071F |
:107B500014F00C94D845C90137FF02C00C94194A9F |
:107B600097FF02C00C94164A959587959595879531 |
:107B70009093BB048093BA048536910514F00C945D |
:107B8000214620919704309198044091BC04509173 |
:107B9000BD04C90137FF02C00C94D849959587955B |
:107BA0009595879597FF02C00C94E14948175907AE |
:107BB00014F00C94D145C90137FF02C00C94114A4E |
:107BC00097FF02C00C940E4A9595879595958795D9 |
:107BD0009093BD048093BC048536910514F00C94F9 |
:107BE0001946E0918704EFA3EE2341F01092BB0405 |
:107BF0001092BA041092BD041092BC04F701E3562F |
:107C0000F84F208131818091F707482F50E04217CB |
:107C1000530734F480911A0882FF02C00C94144672 |
:107C2000F701E356F84F208131818091F807BA01BE |
:107C3000681B71092617370714F41092A804F7017E |
:107C4000E356F84F8081918166277727641B750B77 |
:107C50008617970724F480911A0883FDE1C7809165 |
:107C6000A904882389F08DE997E0E80EF91EF70151 |
:107C7000208131818091F80790E0841B950B821759 |
:107C8000930714F40C948F49F501E356F84F808163 |
:107C900091814817590724F480911A0880FDBCC7C8 |
:107CA000A091AB04AA2379F0F501E356F84F2081A7 |
:107CB00031818091F807FA01E81BF1092E173F077F |
:107CC00014F40C948649F501E356F84F80819181B4 |
:107CD0008617970724F480911A0881FD99C780912F |
:107CE000AA04882389F02DE937E0A20EB31EF5011E |
:107CF000208131818091F80790E0841B950B8217D9 |
:107D0000930714F40C948B498091A804882329F4D8 |
:107D10008091A904882309F478C7F1E0F093A704BF |
:107D2000AA2329F48091AA04882309F46AC781E070 |
:107D30008093A6041092A7041092A8041092A9049C |
:107D400037C92998ABC8EFEF8E3F9E070CF0D8C714 |
:107D5000029690939A0480939904A3CE10929D0466 |
:107D6000109287044A3009F0CBC8289ACDC8809079 |
:107D70006F08909070088091DC0481508093DC043F |
:107D80008F3F09F45CC6B9A5BB2381F01092F804BB |
:107D90001092F9041092FA041092FB041092FC0461 |
:107DA0001092FD041092FE041092FF04E985EE2368 |
:107DB00009F4B5C41F861E864424552428A5222311 |
:107DC00009F498C41D861C8622243324809131082E |
:107DD00090913208893C91050CF480C488EC90E0C5 |
:107DE000909332088093310860913B0870913C0871 |
:107DF00078AB6FA7693C71050CF461C4A8ECB0E0E6 |
:107E0000B8ABAFA7B0933C08A0933B08A090740810 |
:107E1000BB24CC24DD247C010027F7FC0095102F27 |
:107E2000EE0CFF1C001F111FEE0CFF1C001F111F8A |
:107E3000EE0CFF1C001F111FEE0CFF1C001F111F7A |
:107E4000EE0CFF1C001F111FEE0CFF1C001F111F6A |
:107E5000EE0CFF1C001F111F60903E0870903F0841 |
:107E60009301442737FD4095542FC601B5010E9468 |
:107E7000E455E60EF71E081F191FC801B70120E4DC |
:107E800030E040E050E00E9458563201620E731E0E |
:107E900070923F0860923E086FA578A97B01002789 |
:107EA000F7FC0095102FEE0CFF1C001F111FEE0CAD |
:107EB000FF1C001F111FEE0CFF1C001F111FEE0CFA |
:107EC000FF1C001F111FEE0CFF1C001F111FEE0CEA |
:107ED000FF1C001F111FEE0CFF1C001F111F8091C3 |
:107EE0002E0890912F08DC01BD01882777FD809531 |
:107EF000982FA60195010E94E455E60EF71E081F73 |
:107F0000191FC801B70120E430E040E050E00E94B2 |
:107F10005856220E331E38AA2FA630922F082092D0 |
:107F20002E08880C991C880C991CB401882777FDB1 |
:107F30008095982FA60195010E94E45520E430E039 |
:107F400040E050E00E94585679018A01BAA56B2F93 |
:107F500070E080E090E020916104309162044091F3 |
:107F60006304509164040E94E45520EE3BEA40E033 |
:107F700050E00E9458564701820E931E909270085E |
:107F800080926F08E1E06E16E0E47E060CF489C38F |
:107F9000612C10E4712E70923F0860923E082FA56C |
:107FA00038A9215030440CF46DC360E070E478AB24 |
:107FB0006FA770932F0860932E08F1E08F16F0E4FE |
:107FC0009F060CF451C3812CA0E49A2E9092700865 |
:107FD00080926F08C888D988CC0CDD1CCC0CDD1CC5 |
:107FE0003A8530FFDFC031FF1BC080911A0884FD45 |
:107FF00002C00C943F498091A20381558B3310F04D |
:108000000C9445498091B70381508093B7038F3F0B |
:1080100011F40C94354C20919E0430919F041FC0A4 |
:108020008091A2032091B1033091B203280F311D3A |
:108030008091DC0790E0BC01269FC001279F900D36 |
:10804000369F900D112444979093A1048093A0042F |
:1080500081E08093880420919E0430919F047FA149 |
:10806000772321F01092A1041092A0044091A00463 |
:108070005091A104421753070CF094C080918804DA |
:10808000882309F48FC08091A30390E0241B350B53 |
:10809000DC01A29FC001A39F900DB29F900D1124FF |
:1080A00097FF02C00C945D4C2C0155944794559455 |
:1080B0004794A0900C04B0900D0460917D047091E1 |
:1080C0007E0480917F0490918004E090A403FF24BB |
:1080D00000E010E020E830E040E050E00E94585618 |
:1080E000C801B7010E94E45520E230E040E050E0D2 |
:1080F0000E945856A901285E3E4F14F448EE5EEFE8 |
:108100002091DD043091DE04C901880F991F820F90 |
:10811000931FBC01660F771F660F771F680F791FCB |
:108120009501B7FE02C00C94594C35952795CB01AB |
:10813000821B930B9A014951514014F028E131E020 |
:10814000821B930B9C01C60184199509280F391FC6 |
:1081500037FF02C00C94554C3595279535952795DA |
:1081600035952795359527953093DE042093DD04CA |
:108170008091D807682F70E0660F771F660F771F12 |
:108180002617370714F00C94FB49C616D70614F0CF |
:108190000C948D4BD092DE04C092DD04C090DD04BF |
:1081A000D090DE0480916E08282F30E03D8B2C8B20 |
:1081B000A901440F551F440F551FCA018055904017 |
:1081C0008C159D050CF46C01D0924807C0924707AE |
:1081D0006A8D7B8D8C8D9D8D660F771F881F991FF3 |
:1081E000660F771F881F991F7401E61AF70A71EA54 |
:1081F000C716D1040CF42AC29601359527952E1581 |
:108200003F0584F0F601D7FE02C00C94A749F5950E |
:10821000E795222733272E1B3F0B2E153F0514F41D |
:108220000C943C49CA018C199D09821793070CF4E0 |
:108230009C01C601841B950B4901281739070CF4D2 |
:108240004C018091950490919604681A790A7B8A72 |
:108250006A8A7092520860925108AAA5AA2309F46A |
:10826000D9C1EE85FF85E81BF90BCF01AA2797FD41 |
:10827000A095BA2FE090FC04F090FD040091FE045C |
:108280001091FF04E80EF91E0A1F1B1FE092FC0468 |
:10829000F092FD040093FE041093FF0431E0E31616 |
:1082A0003AEFF30630E0030730E013070CF498C10F |
:1082B000E12C2AEFF22E012D112DE092FC04F09218 |
:1082C000FD040093FE041093FF0480919F0390919E |
:1082D000A0031C01442437FC4094542CB40197FCA7 |
:1082E00073C477FD77C4759567956C0D7D1D8827E0 |
:1082F00077FD8095982F2091B00330E040E050E06A |
:108300000E94E45520E430E040E050E00E945856DE |
:10831000590166247724621A730A80919704909118 |
:1083200098046FA578A9681B790B78AB6FA7709339 |
:108330002D0860932C087AA5772309F435C1AC8504 |
:10834000BD85A81BB90BFD01CF01AA2797FDA095FC |
:10835000BA2F2091F8043091F9044091FA04509119 |
:10836000FB04280F391F4A1F5B1F2093F80430932A |
:10837000F9044093FA045093FB0421306AEF360766 |
:1083800060E0460760E056070CF4F8C020E03AEFE2 |
:1083900040E050E02093F8043093F9044093FA044D |
:1083A0005093FB04CA01B901A20191010E945856E1 |
:1083B0006FA578A9620F731FB8AAAFA66A157B05CF |
:1083C00014F478AB6FA7C801B701A20191010E9414 |
:1083D00058568A899B89820F931F95018A159B05A0 |
:1083E0000CF49C01C301621673060CF4C90163E02E |
:1083F00070E00E9423568B01C301AFA5B8A96A168D |
:108400007B060CF4CD01880F991F880F991F67E038 |
:1084100070E00E942356C80117FDF1C3AC015595C9 |
:108420004795DA01AC0DBD1DCD01861B970B881950 |
:10843000990997FDE2C39C013595279535952795B8 |
:108440008091440890E0281739070CF08FC09C01F8 |
:1084500020937D089601241B350BA9019B01280D53 |
:10846000391D240F351F37FDC5C335952795359523 |
:108470002795281739070CF071C09C0120935008EC |
:108480009A01261B370B280D391D37FDB0C33595D2 |
:10849000279535952795281739070CF04DC09C0175 |
:1084A00020936308681979096A0F7B1F77FD53C011 |
:1084B000759567957595679568177907B4F5BC014B |
:1084C00060934A089601201B310B2819390937FDA2 |
:1084D0008BC3359527953595279528173907F4F4DB |
:1084E0009C0120934B0894012C0D3D1D200F311F42 |
:1084F00037FD77C335952795359527952817390783 |
:1085000014F40C94A64EC9012C893D89281739070B |
:1085100014F00C94A64EC9010C94A64EEC89FD896A |
:10852000E217F307F4F69F01DCCFAC89BD89A617EB |
:10853000B70734F6BD01C4CF4C895D894217530794 |
:108540000CF0AECF9A0120936308681979096A0F7D |
:108550007B1F77FFADCF6D5F7F4FAACFEC89FD8981 |
:10856000E217F3070CF08ACF9F0188CFEC89FD89D1 |
:10857000E217F3070CF06CCF9F016ACF203076E052 |
:1085800037077FEF47077FEF57070CF00BCF20E04F |
:1085900036E04FEF5FEF2093F8043093F9044093F7 |
:1085A000FA045093FB04FECE2FA538A9C901AA27CF |
:1085B00097FDA095BA2F2091F8043091F9044091CD |
:1085C000FA045091FB04280F391F4A1F5B1F2093A8 |
:1085D000F8043093F9044093FA045093FB04CDCE91 |
:1085E00040E0E41646E0F4064FEF04074FEF1407AF |
:1085F0000CF06BCEE12C96E0F92E9FEF092F9FEF48 |
:10860000192FE092FC04F092FD040093FE041093F5 |
:10861000FF045BCE2A893B89C901AA2797FDA09553 |
:10862000BA2FE090FC04F090FD040091FE0410913C |
:10863000FF04E80EF91E0A1F1B1FE092FC04F092D3 |
:10864000FD040093FE041093FF0428CE97018FEFE2 |
:10865000203B380714F420EB3FEF213531050CF4B3 |
:10866000E1CD20E530E0DECD20E0821620EC920660 |
:108670000CF0B0CC812CF0EC9F2E90927008809280 |
:108680006F08A8CC8FA598A98050904C0CF095CC81 |
:10869000E0E0F0ECF8ABEFA7F0932F08E0932E08A2 |
:1086A0008CCCF0E06F16F0EC7F060CF078CC612CEF |
:1086B000B0EC7B2E70923F0860923E0870CCEFA524 |
:1086C000F8A9E853FF4F0CF0A1CB48E35FEF58AB9C |
:1086D0004FA750933C0840933B0898CB4FEF88330B |
:1086E00094070CF081CB88E39FEF9093320880933E |
:1086F00031087ACB3AA5632F70E080E090E02D81BD |
:108700003E814F8158850E94E45528EF3AE240E0CF |
:1087100050E00E9458563D872C87190157CBFAA587 |
:108720006F2F70E080E090E029813A814B815C817D |
:108730000E94E45528EF3AE240E050E00E9458568B |
:108740003F872E8729013ACB805B9C43AF4FBF4FB9 |
:1087500014F00C94023A80EB9CE3AFEFBFEF8093F0 |
:10876000750490937604A0937704B09378040C94E6 |
:10877000023A5091890459A7609160086AA7E09075 |
:108780009904F0909A046701F7FC02C00C948B39AD |
:10879000CC24DD24CE18DF080C948B394091A7043B |
:1087A00048A7442309F45EC0109255041092560461 |
:1087B00010925704109258041092590410925A04BF |
:1087C00010925B0410925C041092530810925408AB |
:1087D000109255081092560810925A0810925B0891 |
:1087E00010925C0810925D0810924608109247089B |
:1087F00010924808109249081092360810923708D3 |
:10880000109238081092390880916504909166049E |
:10881000A0916704B09168048093690490936A04FE |
:10882000A0936B04B0936C0480916D0490916E04DE |
:10883000A0916F04B09170048093710490937204BE |
:10884000A0937304B093740410920F0410920E045A |
:108850001092A5041092A4041092A3041092A204F2 |
:108860000C94F43880917D0790917E07815092405E |
:1088700014F40C94F4388091E0088F3F09F453C746 |
:10888000E090E307FF2400E010E0A82EBB24A7FC43 |
:10889000B094CB2CDB2C69817A818B819C81A801DF |
:1088A00097010E94585680916A0890916B08AA27F8 |
:1088B00097FDA095BA2F281B390B4A0B5B0BCA01F9 |
:1088C000B901A60195010E94E45520E032E040E0A4 |
:1088D00050E00E94585639014A016D817E818F8196 |
:1088E0009885A80197010E94585680917A08909126 |
:1088F0007B08AA2797FDA095BA2F281B390B4A0B96 |
:108900005B0BCA01B901A60195010E94E45520E064 |
:1089100032E040E050E00E94585659016A018091CF |
:10892000BA049091BB04813491050CF01EC580916E |
:10893000BC049091BD04813491050CF016C5E09102 |
:10894000D207F0E0EE0FFF1FE356F84F0190F081E1 |
:10895000E02DF7FF02C00C94164D7A97A4F0C401E5 |
:10896000B30123E030E040E050E00E945856390166 |
:108970004A01C601B50123E030E040E050E00E942A |
:10898000585659016A018091E208E82EFF24E7FC5D |
:10899000F0940F2D1F2DA4019301E614F704080590 |
:1089A000190514F4A8019701992787FD90959095D2 |
:1089B00081959F4FAA2797FDA095BA2F39014A01AB |
:1089C000281739074A075B0714F43C014D01EA14E4 |
:1089D000FB040C051D0514F457016801A816B9061F |
:1089E000CA06DB0614F45C016D0180916504909168 |
:1089F0006604A0916704B091680486199709A809D4 |
:108A0000B9098093650490936604A0936704B093BA |
:108A1000680480916D0490916E04A0916F04B091F0 |
:108A200070048A199B09AC09BD0980936D04909369 |
:108A30006E04A0936F04B09370040C94F43888E132 |
:108A40008093DC04E090E307FF24EE0CFF1CEE0CA7 |
:108A5000FF1C0027F7FC0095102F69817A818B811C |
:108A60009C81A80197010E94585630933A072093A1 |
:108A700039076D817E818F819885A80197010E94B9 |
:108A8000585630933C0720933B0780916A08909199 |
:108A90006B0897FDC1C4959587959595879590939B |
:108AA0003E0780933D0780917A0890917B0897FD5F |
:108AB000B1C4959587959595879590934007809338 |
:108AC0003F07909242078092410720919E04309187 |
:108AD0009F04309344072093430760917D04709175 |
:108AE0007E0480917F049091800420E032E040E099 |
:108AF00050E00E9458563093460720934507309225 |
:108B00004A072092490780910E0390910F0390939A |
:108B10004C0780934B07609176087091770880919D |
:108B20007808909179082091B3033091B403409173 |
:108B3000B5035091B6030E945856309350072093C6 |
:108B40004F078091940490E090934E0780934D07D7 |
:108B50008091920690E09093600780935F078091E8 |
:108B6000E9039091EA0390936207809361078091F3 |
:108B7000E108992787FD90959093700780936F0780 |
:108B80008091180590911905909376078093750749 |
:108B900080911A0590911B05909378078093770731 |
:108BA000F2C8415050405093BD044093BC0419C8D2 |
:108BB000415050405093BB044093BA040C94C13DC3 |
:108BC00010929D040C94C03766277727681979099D |
:108BD00077FF89CB6F5F7F4F86CB6D5F7F4F0C94A4 |
:108BE000C1392D5F3F4F86CC2D5F3F4F72CC2D5F3B |
:108BF0003F4F4DCC2D5F3F4F38CC03961CCC019698 |
:108C00000DCC1092A6040C94D2371092A70488C8F9 |
:108C100081E08093AA0478C8A1E0A093AB0453C874 |
:108C200081E08093A90430C881E08093A8040C946B |
:108C30001F3E84E690E09093BD048093BC040C94A6 |
:108C4000F13D84E690E09093BB048093BA040C94C9 |
:108C5000C13D80919706992787FD9095AC01489D6D |
:108C6000C001499D900D589D900D1124C80ED91E2C |
:108C7000D0929604C092950480919806992787FD1A |
:108C80009095BC01689DC001699D900D789D900DE7 |
:108C90001124080F191F1093980400939704209132 |
:108CA0009906332727FD30958091990490919A0475 |
:108CB000820F931F90939A04809399042091DC076C |
:108CC00030E080919B06992787FD9095DC012A9FD3 |
:108CD000C0012B9F900D3A9F900D11249093B203E9 |
:108CE0008093B10380919A0690E08615970514F061 |
:108CF0000C94833D90939C0480939B040C94833D3F |
:108D000010929A04109299040C94513DF0918904A8 |
:108D1000F9A7FF2311F00C9406392091FF072E8F3D |
:108D2000222311F40C9406394091530850915408B1 |
:108D30006091550870915608CB01BA0120E031E0EE |
:108D400040E050E00E9458562BA73CA74DA75EA7D5 |
:108D50002093530830935408409355085093560875 |
:108D600020905A0830905B0840905C0850905D0855 |
:108D7000C201B10120E031E040E050E00E945856CD |
:108D800019012A0120935A0830935B0840935C082C |
:108D900050935D08E090E307FF2400E010E020918D |
:108DA0005504309156044091570450915804C8011D |
:108DB000B7010E94E45520E031E040E050E00E941D |
:108DC000585659016A012093550430935604409334 |
:108DD0005704509358042091590430915A044091FB |
:108DE0005B0450915C04C801B7010E94E45520E087 |
:108DF00031E040E050E00E94585639014A0120938A |
:108E0000590430935A0440935B0450935C0460917E |
:108E10005D0470915E0480915F049091600420E095 |
:108E200031E040E050E00E94585620935D043093BA |
:108E30005E0440935F0450936004E090FE07FF24BB |
:108E400000E010E06BA57CA58DA59EA56A197B09A5 |
:108E50008C099D09A80197010E9458562093D704B8 |
:108E60003093D8044093D9045093DA04CA01B9016D |
:108E700020E031E040E050E00E9458566901309314 |
:108E8000A5042093A404C201B101661977098809D9 |
:108E90009909A80197010E945856CA01B90120E01A |
:108EA00031E040E050E00E945856B9013093A304ED |
:108EB0002093A2048091BA049091BB04813491055F |
:108EC000ACF48091BC049091BD048134910574F49C |
:108ED000E091D207F0E0EE0FFF1FE356F84F01904C |
:108EE000F081E02DF7FD21C77A972CF08091E00802 |
:108EF0008F3F09F4D2C6609146087091470880916F |
:108F000048089091490820E031E040E050E00E949C |
:108F1000585620934608309347084093480850938A |
:108F2000490860913608709137088091380890910F |
:108F3000390820E031E040E050E00E94585620938C |
:108F40003608309337084093380850933908EBA01F |
:108F5000FCA00DA11EA169817A818B819C81E61AFA |
:108F6000F70A080B190BE092F004F092F104009359 |
:108F7000F2041093F304AF8CB8A0C9A0DAA08D81DD |
:108F80009E81AF81B885A81AB90ACA0ADB0AA092E5 |
:108F9000EC04B092ED04C092EE04D092EF04E092A3 |
:108FA000E804F092E9040093EA041093EB04A09221 |
:108FB000E404B092E504C092E604D092E704809104 |
:108FC000690490916A04A0916B04B0916C048E19AD |
:108FD0009F09A00BB10B8093690490936A04A0933E |
:108FE0006B04B0936C048091710490917204A09111 |
:108FF0007304B09174048A199B09AC09BD0980936C |
:10900000710490937204A0937304B093740420913C |
:109010008A0430918B042138310594F08091330417 |
:10902000909134040196909334048093330480919A |
:109030005E0890915F08019690935F0880935E08A8 |
:1090400020583F4F94F48091330490913404019759 |
:10905000909334048093330480915E0890915F086C |
:10906000019790935F0880935E0810928B04109292 |
:109070008A0481E090E09093CE048093CD048091A7 |
:10908000C5049091C604A091C704B091C8042BA553 |
:109090003CA54DA55EA5821B930BA40BB50B815E71 |
:1090A000914BAF4FBF4F8F539C49A040B04008F445 |
:1090B00061C49090E10848E149150CF45DC4109238 |
:1090C000CE041092CD0488EE93E0909396038093A3 |
:1090D00095039E8D692E77248091CD049091CE04C6 |
:1090E0006816790624F47092CE046092CD0499201B |
:1090F00079F0292D332727FD30958091CD0490916B |
:10910000CE042817390724F43093CE042093CD04DD |
:10911000A1E0EA16A4E0FA06A0E00A07A0E01A0718 |
:1091200074F080912F04909130042091CD043091FF |
:10913000CE04820F931F9093300480932F04B0E0ED |
:10914000EB16BCEFFB06BFEF0B07BFEF1B0774F47A |
:1091500080912F04909130042091CD043091CE0461 |
:10916000821B930B9093300480932F0481E090E056 |
:109170009093CE048093CD041092D3041092D40423 |
:109180001092D5041092D6048091C1049091C2042B |
:10919000A091C304B091C40482199309A409B5092C |
:1091A000815E914BAF4FBF4F8F539C49A040B04061 |
:1091B00008F486C3F8E1F9150CF482C31092CE04CA |
:1091C0001092CD0488EE93E09093960380939503DC |
:1091D0008091CD049091CE046816790624F47092A3 |
:1091E000CE046092CD04992079F0292D332727FDF4 |
:1091F00030958091CD049091CE042817390724F43E |
:109200003093CE042093CD0471E0A71674E0B70626 |
:1092100070E0C70670E0D70674F080913104909139 |
:1092200032042091CD043091CE04820F931F90938D |
:1092300032048093310480E0A8168CEFB8068FEFDB |
:10924000C8068FEFD80614F00C94253980913104AC |
:10925000909132042091CD043091CE04821B930B67 |
:1092600090933204809331040C94253960E070E0CF |
:1092700000E010E00C947C3A97010C94124180912C |
:10928000A203823310F40C94024081E0809388049E |
:1092900088EC8093B70320919E0430919F040C9436 |
:1092A0002F4068010C94303A4D5F5F4F0C94CB3CDB |
:1092B0004D5F5F4F0C94153D1092FC041092FD041D |
:1092C0001092FE041092FF041092F8041092F90418 |
:1092D0001092FA041092FB048A3F910511F00C944D |
:1092E000883B81E08093DB041092F4041092F50433 |
:1092F0001092F6041092F7041092750410927604FE |
:1093000010927704109278040C94883BA0E010929D |
:10931000AB040C94633E1092AA040C94843E109209 |
:10932000A9040C94443E88E99AE39093E603809361 |
:10933000E50380E09CE090930A03809309030C947A |
:10934000713788279927881999090C944D3A3196D5 |
:109350000C940741D094C194D108D3940C942B3A27 |
:10936000109501951F4F0C941C3AC401B30122E0E3 |
:1093700030E040E050E00E94585639014A01C601F1 |
:10938000B50122E030E040E050E00E94585659011B |
:109390006A01D5CA10929C0410929B040C948B3DD8 |
:1093A000909581959F4F0C94A63D03960C949E3DFD |
:1093B0000396959587959595879597FD02C00C9492 |
:1093C000D63D909581959F4F0C94D63D0894E10829 |
:1093D000F108F0929603E09295030C94BB3E4B2F5C |
:1093E00050E05B874A878091A604882311F40C948F |
:1093F000E9370C94D837C216D30614F00C94CE403B |
:109400000C94CA401092E0040C947C3C1092DF044F |
:109410000C94C03703964DCB03963DCB03960C942A |
:10942000E43D909581959F4F0C94E03D03960C94FC |
:10943000B43D909581959F4F0C94B03D84EF91E0A1 |
:1094400090939603809395030C94BB3E215E3F4F0F |
:109450000C94C83A695F7F4F0C949C3A442737FDBF |
:109460004095542F8091750490917604A0917704D3 |
:10947000B0917804820F931FA41FB51F80937504C9 |
:1094800090937604A0937704B09378040C94BB3E39 |
:1094900088EC8093E00481E090E09093BF04809397 |
:1094A000BE0481E080939D041092F4041092F504B0 |
:1094B0001092F6041092F70410927504109276043C |
:1094C00010927704109278041092790410927A0422 |
:1094D00010927B0410927C04E090E307FF2400E0EC |
:1094E00010E060916A0870916B08882777FD80957D |
:1094F000982FA80197010E94E4556093650470932A |
:109500006604809367049093680460917A08709170 |
:109510007B08882777FD8095982F0E94E4556093FB |
:109520006D0470936E0480936F0490937004809127 |
:10953000450490914604A0914704B091480480935B |
:10954000690490936A04A0936B04B0936C048091B7 |
:109550004D0490914E04A0914F04B091500480931B |
:10956000710490937204A0937304B09374041092E6 |
:10957000FC041092FD041092FE041092FF0410925D |
:10958000F8041092F9041092FA041092FB048091EE |
:10959000C00488608093C0040C947C3C80819181DD |
:1095A000855B9F4F0CF081C28091E1048F5F8093B7 |
:1095B000E104893C10F40C945B3C4C3008F0A0C3EF |
:1095C00029988FEF04E010E0D801082E0E947B5606 |
:1095D00010929D041092E1041092BF041092BE04F8 |
:1095E0000E9484328091390490913A0497FDA4C37B |
:1095F000892F990F990BD801082E0E947B568091D4 |
:10960000390490913A0460E071E00E9423560F5FA4 |
:109610001F4FD801082E0E947B5601501040209108 |
:109620003B0430913C0437FD84C3832F992787FD89 |
:109630009A950E5F1F4FD801082E0E947B5680918D |
:109640003B0490913C0460E071E00E9423560F5F60 |
:109650001F4FD801082E0E947B5603501040609186 |
:109660003F047091400480914104909142040E9413 |
:10967000F9549B0177FD63C3832F992787FD9A9542 |
:109680000C5F1F4FD801082E0E947B5660913F044B |
:109690007091400480914104909142040E94F954D9 |
:1096A000DC01CB0160E071E00E9423560F5F1F4F89 |
:1096B000D801082E0E947B560E94BE020E940135EE |
:1096C0008091D107A82FB0E0AA0FBB1F0C945B3C80 |
:1096D00088EC90E09093E6038093E503B10188273E |
:1096E00077FD8095982F2E893F89488D598D0E944E |
:1096F000E4552B013C0160937608709377088093C2 |
:109700007808909379080E945856309384042093E7 |
:1097100083041092DB040C94973A7093DE046093F8 |
:10972000DD040C94CE40E090E307FF2400E010E05D |
:1097300069817A818B819C81A80197010E9458568A |
:1097400059016A0180916A0890916B08AA2797FDD8 |
:10975000A095BA2FA81AB90ACA0ADB0A6D817E81C0 |
:109760008F819885A80197010E94585679018A0136 |
:1097700080917A0890917B08AA2797FDA095BA2F2F |
:10978000E81AF90A0A0B1B0BC601B50120E130E00B |
:1097900040E050E00E94585639014A01C801B70123 |
:1097A00020E130E040E050E00E94585659016A0143 |
:1097B0008091BA049091BB04813491053CF480916E |
:1097C000BC049091BD0481349105A4F0C401B3019F |
:1097D00023E030E040E050E00E94585639014A0151 |
:1097E000C601B50123E030E040E050E00E94585649 |
:1097F00059016A01E091D207F0E0EE0FFF1FE35636 |
:10980000F84F0190F081E02DF7FD2DC27A97A4F07A |
:10981000C401B30123E030E040E050E00E9458561C |
:1098200039014A01C601B50123E030E040E050E0D3 |
:109830000E94585659016A0171E267167104810449 |
:1098400091040CF40DC180E2682E712C812C912CB6 |
:1098500091E2A916B104C104D1040CF4ECC010E2E9 |
:10986000A12EB12CC12CD12CC0C88091180390918D |
:109870001903895E934008F40CC190910B049A502F |
:1098800090930B0480918807891B87BD8CE291E03F |
:109890009093E6038093E5038AEF8093B7032091CA |
:1098A0009E0430919F040C942F40215F3F4F0C94F5 |
:1098B000AC402F5F3F4F0C94954003960C9454405E |
:1098C00021E0A21620E1B20620E0C20620E0D20686 |
:1098D0000CF4EFC08091CA04882309F409C2D601B0 |
:1098E000C50179E0B595A795979587957A95D1F7B4 |
:1098F00001969093CE048093CD04D601C50163E018 |
:10990000B595A795979587956A95D1F78093D304D8 |
:109910009093D404A093D504B093D604895893416E |
:10992000A040B04064F088E893E1A0E0B0E080930C |
:10993000D3049093D404A093D504B093D60460913B |
:10994000D3047091D4048091D5049091D60420E082 |
:1099500031E040E050E00E9458568091A20490917E |
:10996000A304820F931F9093A3048093A2041092E8 |
:10997000C9042ECC9090E10851E0E51650E1F506BF |
:1099800050E0050750E015070CF4F1C08091CC04BD |
:10999000882309F4B1C1D801C70129E0B595A7957D |
:1099A000979587952A95D1F701969093CE04809349 |
:1099B000CD04D801C701F3E0B595A7959795879594 |
:1099C000FA95D1F78093D7049093D804A093D90443 |
:1099D000B093DA0489589341A040B04064F088E81D |
:1099E00093E1A0E0B0E08093D7049093D804A093D3 |
:1099F000D904B093DA046091D7047091D8048091AF |
:109A0000D9049091DA0420E031E040E050E00E9477 |
:109A100058568091A4049091A504820F931F9093AF |
:109A2000A5048093A4041092CB0453CBF095E19548 |
:109A3000FF4F0C94AD44A0EEAA16AFEFBA06AFEFFD |
:109A4000CA06AFEFDA0614F00C94F544B0EEAB2E74 |
:109A5000BFEFBB2EBFEFCB2EBFEFDB2E0C94F54438 |
:109A600080EE68168FEF78068FEF88068FEF9806E6 |
:109A70000CF0EECE00EE602E0FEF702E0FEF802E6A |
:109A80000FEF902EE5CE87E090E0680E791E0C94E3 |
:109A9000EC3A80911803909119038436910508F0EF |
:109AA000E6C090910B04965FEBCE1092E1040C940B |
:109AB0005B3C1092CA0440E0A41640EFB4064FEF9E |
:109AC000C4064FEFD4060CF052CF8091C90488230E |
:109AD00009F421C188279927DC018A199B09AC095F |
:109AE000BD0959E0B595A795979587955A95D1F7F2 |
:109AF00001969093CE048093CD04C601B50128E071 |
:109B000030E040E050E00E9458562093D304309358 |
:109B1000D4044093D5045093D60428573C4E4F4F5D |
:109B20005F4F64F488E79CEEAFEFBFEF8093D30400 |
:109B30009093D404A093D504B093D6046091D30439 |
:109B40007091D4048091D5049091D60420E031E046 |
:109B500040E050E00E9458568091A2049091A304E6 |
:109B6000820F931F9093A3048093A20431CB109291 |
:109B7000CC0470E0E71670EFF7067FEF07077FEF82 |
:109B800017070CF050CF8091CB04882309F4BFC095 |
:109B900088279927DC018E199F09A00BB10BE9E0FA |
:109BA000B595A79597958795EA95D1F701969093E6 |
:109BB000CE048093CD04C801B70128E030E040E036 |
:109BC00050E00E9458562093D7043093D804409315 |
:109BD000D9045093DA0428573C4E4F4F5F4F64F43A |
:109BE00088E79CEEAFEFBFEF8093D7049093D80443 |
:109BF000A093D904B093DA046091D7047091D8048B |
:109C00008091D9049091DA0420E031E040E050E006 |
:109C10000E9458568091A4049091A504820F931F2E |
:109C20009093A5048093A40454CA0E94BE024CE5FC |
:109C30006FEC77E00E943C038091D70780FF10C053 |
:109C40008091180390911903875B934038F48091B9 |
:109C50001803909119038E5E924010F40E94FE1A30 |
:109C60000E94843229CDF095E195FF4FCFCD209110 |
:109C70009E0430919F04245130403093A1042093DE |
:109C8000A0042C5E3F4F1092880481E08093B703BC |
:109C90000C942F4041E00C94F73B9601D7FC42C056 |
:109CA000359527953093A5042093A4049B0177FD57 |
:109CB00036C0359527953093A3042093A2041BC981 |
:109CC0008091D007A82FB0E0AA0FBB1FFD01E3567B |
:109CD000F84F0190F081E02DF7FD34C0E734F10535 |
:109CE00014F40C94323C0C94D63B299A0C94B83B57 |
:109CF00081E08093CA043BCE81E08093CC0493CE74 |
:109D0000299A5FCC909581959F4F0C943A3C81E0C5 |
:109D10008093CB04DEC981E08093C90459CA2F5FC8 |
:109D20003F4FC7CF2F5F3F4FBBCFF095E195FF4F20 |
:109D3000DBC821503F4F79CC81509F4F59CC2150E7 |
:109D40003F4F9ACCF095E195FF4FC8CF80936508BF |
:109D5000E0960FB6F894DEBF0FBECDBFDF91CF9176 |
:109D60001F910F91FF90EF90DF90CF90BF90AF9039 |
:109D70009F908F907F906F905F904F903F902F902B |
:109D800008958091200590912105A0912205B09120 |
:109D900023058093280590932905A0932A05B09365 |
:109DA0002B058091240590912505A0912605B09161 |
:109DB000270580932C0590932D05A0932E05B09335 |
:109DC0002F050895109219051092180510921B0581 |
:109DD00010921A05089584B1806A84B93D9A82E58B |
:109DE0008CBD1DBC459A81E0809381088AEA8093EE |
:109DF000850883E8809386088AE08093870810921C |
:109E000089081092880810928B0810928A08109284 |
:109E1000A7081092A80888E48093A9088FE080938F |
:109E2000AA0885E08093AB080895EF92FF920F9304 |
:109E30001F93F894E090E307FF24EE0CFF1CEE0C58 |
:109E4000FF1C0027F7FC0095102F609145047091CE |
:109E500046048091470490914804A80197010E940C |
:109E60005856309389082093880860914D0470916A |
:109E70004E0480914F0490915004A80197010E94D4 |
:109E8000585630938B0820938A0860917608709119 |
:109E9000770880917808909179082AE030E040E0D6 |
:109EA00050E00E94E4552091B3033091B4034091F7 |
:109EB000B5035091B6030E945856309391082093F1 |
:109EC0009008E0913D04F0913E04809157089091F4 |
:109ED0005808BF010E942356CB01880F991F860F97 |
:109EE000971F9C01220F331F96FD22C135952795A0 |
:109EF0003595279530938D0820938C0880917208B2 |
:109F000090917308BF010E942356CB01880F991FBF |
:109F1000860F971F9C01220F331F96FD06C13595B2 |
:109F200027953595279530938F0820938E081092AA |
:109F30003E0410923D041092580810925708109257 |
:109F4000730810927208809187088C3009F484C1DC |
:109F50008D3008F465C08D3009F414C18E3009F4D9 |
:109F6000FCC078948091A708882309F4D5C020917B |
:109F7000AD083091AE08C90181509E4F8F5F93406C |
:109F800058F44091AF085091B008CA0181509E4FDB |
:109F90008F5F934008F4D4C08091B3089091B408C7 |
:109FA00021E08936920724F49093820480938104FF |
:109FB0008091810490918204845E9D4F209183045E |
:109FC00030918404821B930B68E671E00E94235653 |
:109FD000845B904090938604809385042091B70819 |
:109FE0003091B8088091E5039091E60382179307BA |
:109FF00028F480919206882309F49DC08091AC08D2 |
:10A00000873609F04EC18091B9088093E0088091AD |
:10A01000BA088093E2088091BB088093E10841C1AF |
:10A020008A3009F4E0C08B3009F09BCFE091D10772 |
:10A03000F0E0EE0FFF1FE356F84F0190F081E02DA6 |
:10A040002FEFE138F20714F4E1E8FFEFE038F10513 |
:10A0500014F0EFE7F0E0E0939808E091D207F0E029 |
:10A06000EE0FFF1FE356F84F0190F081E02D4FEF08 |
:10A07000E138F40714F4E1E8FFEFE038F10514F0FB |
:10A08000EFE7F0E0E0939908E091D007F0E0EE0F01 |
:10A09000FF1FE356F84F0190F081E02D6FEFE1389C |
:10A0A000F60714F4E1E8FFEFE038F10514F0EFE70C |
:10A0B000F0E0E0939A08E091CF07F0E0EE0FFF1F89 |
:10A0C000E356F84F0190F081E02D8FEFE138F8076B |
:10A0D00014F4E1E8FFEFE038F10514F0EFE7F0E009 |
:10A0E000E0939B0880918C0480939C0880918E045F |
:10A0F00080939D088091900480939E0880919204A3 |
:10A1000080939F08809194048093A0087894809114 |
:10A11000A708882309F02BCF109219051092180573 |
:10A1200010921B0510921A05BCC02D5F3F4FF7CE51 |
:10A130002D5F3F4FDBCE3093E6032093E5035ECFE8 |
:10A140008091D70785FF28CF3093190520931805F4 |
:10A1500050931B0540931A051FCF8091A808809348 |
:10A1600098088091A908809399088091AA08809303 |
:10A170009A088091AB0880939B088091000180939E |
:10A180009C08EFCE809109088093980880910A0876 |
:10A190008093990880910B0880939A0880910C080D |
:10A1A00080939B0880910D0880939C0880911108F2 |
:10A1B00080939D088091120880939E0880911308D7 |
:10A1C00080939F08809116088093A00880911408BE |
:10A1D0008093A108809115088093A20880911708A8 |
:10A1E0008093A308BECE8091AC04809398088091A0 |
:10A1F000AD04809399088091AE0480939A08809171 |
:10A20000AF0480939B088091B00480939C08809158 |
:10A21000B10480939D088091B20480939E08809140 |
:10A22000B30480939F088091C0048093A008837F2B |
:10A230008093C00480910E0390910F038093A10836 |
:10A240008091E8078093A208A2E0B0E00E947356D4 |
:10A25000802D8093A30885CE809192068630F0F001 |
:10A260001092920685E08093980880919E049091C8 |
:10A270009F0490939B0880939A088091180880937C |
:10A28000990880910E0880939C0880910F08809314 |
:10A290009D088091100880939E0863CE8093980853 |
:10A2A000E4CF1F910F91FF90EF9008958091810866 |
:10A2B000882309F43BC0459885E898E0909383088B |
:10A2C0008093820890913005E92FF0E0E854FC4F2C |
:10A2D0008081809387089F5F90933005963010F0BF |
:10A2E00010923005109281080E94154F81E08093F2 |
:10A2F00084080000000000000000000000000000D2 |
:10A30000000000000000000000000000000000004D |
:10A31000000000000000000000000000000000003D |
:10A320000000809185088093A4088EBD08958091D7 |
:10A330008108882311F40DB407FE089584E080930A |
:10A34000E703459A9EB580913205813009F43AC001 |
:10A35000813008F040C01092A608909331059138E2 |
:10A3600009F45EC020918408203208F030C045987E |
:10A3700000000000000000000000000000000000DD |
:10A3800000000000000000000000000000000000CD |
:10A3900000000000000000000000000000000000BD |
:10A3A000E0918208F0918308E20FF11D80818EBD5B |
:10A3B00080819091A408890F8093A4082F5F209337 |
:10A3C00084080895953519F110923205CBCF81E0BC |
:10A3D00080938108F3CF823009F0C4CF8091A60822 |
:10A3E000E82FF0E0EA53F74F90838F5F8093A60841 |
:10A3F0008A3138F0809131059817B1F01092A70892 |
:10A40000E3CF80913105890F80933105ABCF8091E7 |
:10A4100031058B5A8093310582E080933205A2CFBB |
:10A4200081E0809332059ECFACEAB8E0E6ECF8E03C |
:10A430008AE101900D928150E1F781E08093A708B5 |
:10A44000C3CF87B18C6087B9429843981092370583 |
:10A4500080E88093BE03109238058093BF0308956F |
:10A46000809139058150809339058F3F09F0089517 |
:10A4700084E080933905809106088B3F68F18091D4 |
:10A480005908873E08F045C08A3030F580910508AC |
:10A4900088230CF443C0429A809108088B3F38F51A |
:10A4A000809138058150809338058F3F01F7809166 |
:10A4B0006D088150809338058091BF03813009F485 |
:10A4C00043C086958093BF038091BF039091070896 |
:10A4D0008923B9F44398089580913705815080937A |
:10A4E00037058F3FE9F0809108088B3FC8F28091D3 |
:10A4F0006D08873E40F48A3098F68091070887FD02 |
:10A5000006C0439A0895809107088823D4F343989E |
:10A5100008958091050888230CF4BDCF4298E3CFBD |
:10A52000809159088150809337058091BE03813016 |
:10A5300079F086958093BE038091BE0390910508C3 |
:10A54000892361F3429AA8CF80E88093BF03BCCFF0 |
:10A5500080E88093BE03F0CF8091C9008F7780930D |
:10A56000C9008091C9008F7B8093C9008091C90088 |
:10A570008F7D8093C9005A9A52981092CD0084E141 |
:10A580008093CC008091C80082608093C80080E1F5 |
:10A590008093C9008091CA008F778093CA00809110 |
:10A5A000CA008F7B8093CA008091CA008F7D809300 |
:10A5B000CA008091CA008F7E8093CA008091CA0031 |
:10A5C000877F8093CA008091C9008B7F8093C900E8 |
:10A5D0008091CA0084608093CA008091CA00826022 |
:10A5E0008093CA008091C80087FF06C08091CE008A |
:10A5F0008091C80087FDFACF8091C9008068809360 |
:10A60000C90008951F920F920FB60F9211240F9355 |
:10A610001F932F933F934F935F936F937F938F93EA |
:10A620009F93AF93BF93CF93DF93EF93FF931091DB |
:10A63000CE008091C0039091C103019709F44DC0F1 |
:10A6400080913A0590913B050E949012209142051D |
:10A65000309143052115310519F12130310509F4F7 |
:10A66000EAC02230310509F4F9C02330310509F47C |
:10A670005DC081E090E09093C1038093C00310928D |
:10A6800041051092400510923D0510923C0587E06F |
:10A6900090E00E94871290933B0580933A0522C177 |
:10A6A0008823A1F5C0914005D0914105609778F3CA |
:10A6B00080913C0590913D05892B11F4109279030E |
:10A6C000109241051092400510923D0510923C05F4 |
:10A6D0001092430510924205DACF1092C1031092F6 |
:10A6E000C00387E090E00E94871290933B0580931F |
:10A6F0003A051092410510924005109243051092C0 |
:10A70000420510923F0510923E05ECC081E090E0BA |
:10A710009093430580934205C0914005D091410537 |
:10A720002196D0934105C0934005C0CF882309F0FE |
:10A73000A0CF82E090E09093430580934205C091C2 |
:10A740004005D09141052196D0934105C093400525 |
:10A7500020913E0530913F05F901F695E795F69574 |
:10A76000E795EF70F0703196EB30F10508F09ECF71 |
:10A77000812F90E0322F2227822B932B93708050D1 |
:10A78000924063E070E00E9423568F01000F111F7A |
:10A79000F801E356F84F808191819B01281B390B0A |
:10A7A000C90137FD9BC0069754F480919404883CFE |
:10A7B00008F08DC080919404865F80939404F80122 |
:10A7C000E356F84F808191819C01220F331F280F9F |
:10A7D000391F260F371F37FD7EC0359527953595D4 |
:10A7E0002795CB010196821793070CF067C0215083 |
:10A7F000304080919404843B08F45AC0F801E35639 |
:10A80000F84F80819181A901481B590BCA0163E06F |
:10A8100070E00E942356CB01880F991F860F971F67 |
:10A82000F801ED54F84F918380830356184FF801D7 |
:10A83000318320833BCF882309F013CF82E090E05F |
:10A840009093430580934205C0914005D091410506 |
:10A850002196D0934105C093400528CF882309F065 |
:10A8600004CF812F90E090933F0580933E05209187 |
:10A870004005309141052230310569F083E090E0D8 |
:10A880009093430580934205E9012196D0934105B9 |
:10A89000C09340050BCF10923D0510923C0517FF69 |
:10A8A000EDCF81E090E090933D0580933C05E6CFAD |
:10A8B000F801ED54F84F11821082B7CF615070400B |
:10A8C000261737070CF095CF2F5F3F4F92CF88ECBC |
:10A8D0008093940474CF2D5F3F4F7FCF90958195E7 |
:10A8E0009F4F61CFFF91EF91DF91CF91BF91AF91DA |
:10A8F0009F918F917F916F915F914F913F912F9198 |
:10A900001F910F910F900FBE0F901F901895FC0193 |
:10A910004150504030F001900616D1F73197CF01E9 |
:10A9200008958827992708955058BB27AA270ED045 |
:10A9300011C102D130F007D120F031F49F3F11F462 |
:10A940001EF4F7C00EF4E095E7FBEDC0E92F13D13C |
:10A9500080F3BA17620773078407950718F071F43C |
:10A960009EF52BC10EF4E0950B2EBA2FA02D0B01F6 |
:10A97000B90190010C01CA01A0011124FF27591B44 |
:10A9800099F0593F50F4503E68F11A16F040A22F4A |
:10A99000232F342F4427585FF3CF469537952795BB |
:10A9A000A795F0405395C9F77EF41F16BA0B620BBA |
:10A9B000730B840BBAF09150A1F0FF0FBB1F661F01 |
:10A9C000771F881FC2F70EC0BA0F621F731F841F44 |
:10A9D00048F4879577956795B795F7959E3F08F06A |
:10A9E000B3CF9395880F08F09927EE0F9795879529 |
:10A9F000089504D06894B111E1C00895C4D088F0DE |
:10AA00009F5790F0B92F9927B751A0F0D1F0660F5A |
:10AA1000771F881F991F1AF0BA95C9F712C0B13075 |
:10AA200081F0CBD0B1E00895C8C0672F782F882778 |
:10AA3000B85F39F0B93FCCF3869577956795B395B4 |
:10AA4000D9F73EF490958095709561957F4F8F4F23 |
:10AA50009F4F0895E89409C097FB3EF49095809528 |
:10AA6000709561957F4F8F4F9F4F9923A9F0F92FD4 |
:10AA700096E9BB279395F695879577956795B79552 |
:10AA8000F111F8CFFAF4BB0F11F460FF1BC06F5F38 |
:10AA90007F4F8F4F9F4F16C0882311F096E911C04A |
:10AAA000772321F09EE8872F762F05C0662371F06B |
:10AAB00096E8862F70E060E02AF09A95660F771F7F |
:10AAC000881FDAF7880F9695879597F9089507D02C |
:10AAD00008F481E0089503D008F48FEF0895990FEA |
:10AAE0000008550FAA0BE0E8FEEF16161706E80758 |
:10AAF000F907C0F012161306E407F50798F0621B79 |
:10AB0000730B840B950B39F40A2661F0232B242B4D |
:10AB1000252B21F408950A2609F4A140A6958FEF6C |
:10AB2000811D811D089597F99F6780E870E060E0BE |
:10AB300008959FEF80EC089500240A9416161706D6 |
:10AB400018060906089500240A941216130614061E |
:10AB500005060895092E0394000C11F4882352F081 |
:10AB6000BB0F40F4BF2B11F460FF04C06F5F7F4F39 |
:10AB70008F4F9F4F089557FD9058440F551F59F020 |
:10AB80005F3F71F04795880F97FB991F61F09F3FDA |
:10AB900079F087950895121613061406551FF2CF03 |
:10ABA0004695F1DF08C0161617061806991FF1CF53 |
:10ABB00086957105610508940895E894BB2766277A |
:10ABC0007727CB0197F90895629FD001739FF00119 |
:10ABD000829FE00DF11D649FE00DF11D929FF00D2D |
:10ABE000839FF00D749FF00D659FF00D9927729F64 |
:10ABF000B00DE11DF91F639FB00DE11DF91FBD01EF |
:10AC0000CF0111240895991B79E004C0991F96176C |
:10AC100008F0961B881F7A95C9F780950895AA1B9E |
:10AC2000BB1B51E107C0AA1FBB1FA617B70710F037 |
:10AC3000A61BB70B881F991F5A95A9F78095909569 |
:10AC4000BC01CD01089597FB092E07260AD077FD98 |
:10AC500004D0E5DF06D000201AF4709561957F4F8F |
:10AC60000895F6F7909581959F4F0895A1E21A2EC9 |
:10AC7000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA0 |
:10AC8000A217B307E407F50720F0A21BB30BE40BF0 |
:10AC9000F50B661F771F881F991F1A9469F7609537 |
:10ACA0007095809590959B01AC01BD01CF010895F1 |
:10ACB00097FB092E05260ED057FD04D0D7DF0AD00A |
:10ACC000001C38F450954095309521953F4F4F4FDB |
:10ACD0005F4F0895F6F790958095709561957F4F39 |
:10ACE0008F4F9F4F0895F999FECFB2BDA1BDF89A3D |
:10ACF000119600B40895F999FECFB2BDA1BD00BC74 |
:10AD000011960FB6F894FA9AF99A0FBE0895019029 |
:0AAD1000F2DF1A94E1F70895FFCF77 |
:10AD1A000A010101FF6401C800416E676C654E6952 |
:10AD2A00636B20202020202020416E676C65526FC3 |
:10AD3A006C6C202020202020204163634E69636BC5 |
:10AD4A00202020202020202020416363526F6C6C39 |
:10AD5A002020202020202020204779726F47696513 |
:10AD6A0072202020202020202048696768742056FD |
:10AD7A00616C756520202020204163635A202020C1 |
:10AD8A0020202020202020202047617320202020FE |
:10AD9A00202020202020202020436F6D70617373B3 |
:10ADAA002056616C7565202020566F6C746167654A |
:10ADBA00202020202020202020456D7066616E67AB |
:10ADCA002020202020202020204779726F204B6FDE |
:10ADDA006D70617373202020204D6F746F7220464E |
:10ADEA00726F6E7420202020204D6F746F72205273 |
:10ADFA006561722020202020204D6F746F72204CD4 |
:10AE0A006566742020202020204D6F746F722052B6 |
:10AE1A0069676874202020202020202020202020FC |
:10AE2A002020202020202020202020202020202018 |
:10AE3A002020202020202020202020202020202008 |
:10AE4A002020202020202020204D4B334D616720D8 |
:10AE5A0043616C537461746520536572766F202068 |
:10AE6A0020202020202020202020202020202020D8 |
:10AE7A0020202020202020202020202020202020C8 |
:10AE8A0020202020202020202020202020202020B8 |
:10AE9A0020202020202020202020202020202020A8 |
:10AEAA002020202020202020202020202020202098 |
:10AEBA002020202020202020202020202020202088 |
:10AECA002020202020202020204B616C6D616E5FA5 |
:10AEDA004D61784472696674202020202020202049 |
:10AEEA002020202020202020202020202020202058 |
:10AEFA002020202020202020204750535F4E6963C5 |
:10AF0A006B20202020202020204750535F526F6C56 |
:10AF1A006C2020202020202020FFFFFC010164005B |
:10AF2A00C409C409007D0000FF03737373010102A1 |
:10AF3A00030405060708090A48616C6C6F20576507 |
:10AF4A006C74000000000000000000000000000017 |
:10AF5A0000000000000000000000000000000000E7 |
:10AF6A0000000000000000000000000000000000D7 |
:10AF7A0000000000000000000000000000000000C7 |
:10AF8A0000000000000000000B01426567696E6E58 |
:10AF9A00657200004E6F726D616C000053706F72C3 |
:10AFAA007400006400F40190D0030090D0030038CC |
:10AFBA000130FB103A40089696020A64465A41400C |
:10AFCA0064ECFF0B050000640A0B0D0B0C0E01016B |
:02AFDA00010074 |
:00000001FF |
/branches/V0.72p HexaLotte/Hex-Files/Flight-Ctrl_MEGA644_HEXA2_V0_72p.hex |
---|
0,0 → 1,2816 |
:100000000C9493020C94B0020C94B0020C94B002C5 |
:100010000C94B0020C94B0020C94B0020C94B00298 |
:100020000C94B0020C94FF120C94B0020C94B00229 |
:100030000C94F1220C94B0020C94B0020C94B00217 |
:100040000C94B0020C94B0020C94B1110C94B00258 |
:100050000C94C0060C94B0020C9488060C94B00268 |
:100060000C9401160C94B0020C94E6210C94B0028E |
:100070000C9400530C94B0020C94B00272197E19C7 |
:1000800013181F1839183416E217F4172F175F16B4 |
:100090003416531864187E189E18BE181819501676 |
:1000A00067227E2253228B2272220B229F22382229 |
:1000B00025226E22622229222D2225229722922297 |
:1000C00029222D2225229B225D22292248220A0A4A |
:1000D0000D004E65757472616C0048656164696EEF |
:1000E00067486F6C64000A0D537465756572756EB0 |
:1000F000673A20004F4B0A0D000A0D4162676C659C |
:10010000696368204C756674647275636B73656EA1 |
:10011000736F722E2E000A0D42656E75747A65201B |
:10012000506172616D657465727361747A202564C3 |
:10013000000A0D414343206E696368742061626761 |
:1001400065676C696368656E21003A2047656E6576 |
:10015000726174696E672044656661756C742D50B8 |
:100160006172616D65746572207573696E67206F69 |
:100170006C6420537469636B2053657474696E6793 |
:1001800073000A0D496E69742E20454550524F4D3B |
:10019000000A0D3D3D3D3D3D3D3D3D3D3D3D3D3D2F |
:1001A0003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D7F |
:1001B0003D000A0D466C69676874436F6E74726F18 |
:1001C0006C0A0D48617264776172653A25642E2568 |
:1001D000640A0D536F6674776172653A5625642E12 |
:1001E0002564256320002E0048693A2534692020C3 |
:1001F00043663A253469200047733A253469202044 |
:1002000047693A25346920004E693A25346920202F |
:10021000526F3A253469200045787465726E436FD9 |
:100220006E74726F6C20200052616E67653A2533E0 |
:10023000692D253369005374656C6C756E673A20BF |
:1002400025336900536574706F696E7420202533FF |
:100250006900536572766F202000506F7469343ADC |
:10026000202025336900506F7469333A20202533EC |
:100270006900506F7469323A202025336900506F4D |
:100280007469313A20202533690053746172743ADD |
:100290002020202020253569004D65737377657215 |
:1002A000743A2020253569005269636874756E6759 |
:1002B0003A2020253569004B6F6D706173732020E3 |
:1002C000202020202000456D70662E506567656CEB |
:1002D0003A253569005370616E6E756E673A20205D |
:1002E00025356900486F6368202534692028253347 |
:1002F000692900526F6C6C202534692028253369E8 |
:1003000029004E69636B202534692028253369292B |
:1003100000414343202D2053656E736F720047697F |
:1003200065722025346920282533692928253369F9 |
:100330002900526F6C6C20253469202825336929E7 |
:100340002825336929004E69636B202534692028EC |
:1003500025336929282533692900476965722025D5 |
:10036000346920282533692900526F6C6C202534AC |
:100370006920282533692E257829004E69636B2072 |
:1003800025346920282533692E2578290047696599 |
:10039000722025346920282533692900526F6C6C3E |
:1003A0002025346920282533692E256929004E69C6 |
:1003B000636B2025346920282533692E256929009F |
:1003C0004779726F202D2053656E736F7200503322 |
:1003D0003A253469202050343A25346920005031C0 |
:1003E0003A253469202050323A2534692000477379 |
:1003F0003A253469202047693A25346920004E693E |
:100400003A2534692020526F3A25346920004B3751 |
:100410003A25346920204B383A25346920004B3581 |
:100420003A25346920204B363A25346920004B3375 |
:100430003A25346920204B343A25346920004B3169 |
:100440003A25346920204B323A25346920004B6F1D |
:100450006D706173733A20202025356900526F6CEE |
:100460006C3A202020202020253569004E69636BDE |
:100470003A20202020202025356900616B742E2031 |
:100480004C6167650048F668656E726567656C75F6 |
:100490006E67004B65696E6520004F666620202000 |
:1004A0002020203A20253569004C756674647275E9 |
:1004B000636B3A2025356900536F6C6C486F656833 |
:1004C000653A2025356900486F6568653A20202027 |
:1004D00020202535690028632920486F6C676572E4 |
:1004E00020427573730053657474696E673A2025F2 |
:1004F00064200048575625642E25642053572564F0 |
:100500002E256425632048455841002B204D696BFA |
:10051000726F4B6F70746572202B005B25695D00F4 |
:100520005B25695D000011241FBECFEFD0E1DEBF67 |
:10053000CDBF13E0A0E0B1E0E6E1FDEA02C0059026 |
:100540000D92A23CB107D9F718E0A2ECB3E001C0CC |
:100550001D92A33EB107E1F70E945B030C948A56FB |
:100560000C940000863038F085E0A2E0B0E0082E60 |
:100570000E94795608958823C1F70895A2E0B0E05B |
:100580000E947156902D892F8150853018F4892F43 |
:1005900090E0089583E00E94B20283E090E0089525 |
:1005A0008091CF07E82FF0E0EE0FFF1FE356F84FE2 |
:1005B000808191818D5E9F4F14F0109202018081A5 |
:1005C00091818A5B9F4FACF480910201882389F46A |
:1005D00081E080930201209192062F5F2093920682 |
:1005E000253050F088EE93E09093E6038093E50386 |
:1005F00008C02091920605C0822F0E9401352091EB |
:100600009206822F90E09093600780935F07089591 |
:10061000582F9B01863060F5882349F1A82FB0E060 |
:100620001197842F90E0BD01689FD001699FB00DA4 |
:10063000789FB00D1124AC59BF4FF901019724F0F8 |
:1006400001900E947956FACF62E670E0DB01042E39 |
:100650000E94795688E062517040DB01F901182E42 |
:100660000E948556852F0E94B2020E941F52089553 |
:1006700055E0A4E0B0E0D5CFA82FFB018150853034 |
:1006800018F0A2E0B0E002C0B0E01197842F90E033 |
:100690009D01289FD001299FB00D389FB00D1124D6 |
:1006A000AC59BF4F019724F00E9471560192FACFC6 |
:1006B0000E941F5208952F923F924F925F926F9225 |
:1006C0007F928F929F92AF92BF92CF92DF92EF92E2 |
:1006D000FF920F931F93CF93DF93CDB7DEB722978F |
:1006E0000FB6F894DEBF0FBECDBF14B815B8189B77 |
:1006F000F8C2199BF2C28DE08093000181E887B9AE |
:100700003E9A8FEF88B98BE184B981E085B98EE399 |
:100710008AB9579A87E48BB9469A84B7877F84BF92 |
:10072000809160008861809360001092600080ED8D |
:1007300097E09093E6038093E50310929A04109259 |
:1007400099041092A2071092A10710929804109297 |
:100750009704109296041092950420910001243180 |
:1007600008F4C5C288E894E0A0E0B0E08093B30349 |
:100770009093B403A093B503B093B6032A3009F461 |
:100780008BC2243109F488C2289A0E94E8120E9480 |
:10079000C0120E9467080E94DC220E94FB150E9482 |
:1007A000AF210E94E94E789420910001822F6AE0E7 |
:1007B0000E940156492F50E0822F0E94015690E07E |
:1007C00020E730E03F932F9328E430E03F932F93CE |
:1007D0001F921F925F934F939F938F9382EB91E0B1 |
:1007E0009F938F931F920E94C50E8091C8002DB7D2 |
:1007F0003EB7235F3F4F0FB6F8943EBF0FBE2DBFED |
:10080000803209F420C281E991E09F938F931F9277 |
:100810000E94C50E0F900F900F90809100018C30B8 |
:1008200008F00FC2299A49E06FEC77E083E00E945C |
:100830003C0371E0C72E70E0D72ED6010E9471569E |
:10084000802D8A3409F4B2C00E947D3682E891E09E |
:100850009F938F931F920E94C50E1A8219820F9048 |
:100860000F900F9060E5A62E60E0B62E51E5852E24 |
:1008700050E0952E42E5642E40E0742E33E5432E81 |
:1008800030E0532E24E5222E20E0322E97E5E92E8B |
:1008900090E0F92E0981102F1F5F123009F4C1C1B9 |
:1008A000133009F4FBC1143008F0BBC18091000182 |
:1008B000843168F085E08093E7071092FF078BE1B1 |
:1008C0008093E3078EE48093FC078093FD07D501B6 |
:1008D0000E947156802D8C3008F05DC0D4010E94BA |
:1008E0007156802D8C3008F056C0D3010E9471568D |
:1008F000802D8C3008F04FC0D2010E947156802D9F |
:100900008C3008F048C0A0E5B0E00E947156802D00 |
:100910008093CF07A1E5B0E00E947156802D8093AF |
:10092000D007A2E5B0E00E947156802D8093D107D8 |
:10093000A3E5B0E00E947156802D8093D207D101CB |
:100940000E947156802D8093D307A5E5B0E00E94E8 |
:100950007156802D8093D407A6E5B0E00E947156B1 |
:10096000802D8093D507D7010E947156802D8093EA |
:10097000D607113009F495C14CE56FEC77E0812F73 |
:100980000E9408030E5F063048F489819A8101961F |
:100990009A8389837FCF0E94DE23EECF83E00E947B |
:1009A000B2028AE4D601082E0E947956A4E0B0E093 |
:1009B0000E947156802D853008F084C10E94BE02CD |
:1009C0004CE56FEC77E00E943C030E94BE0290E091 |
:1009D0009F938F9386E191E09F938F931F920E9444 |
:1009E000C50E8091D7070F900F900F900F900F902A |
:1009F00080FD31C108EE13E00E9484328091000135 |
:100A00008A3009F41CC1843109F419C1289A80ED97 |
:100A100097E09093E6038093E50385E58093940641 |
:100A200086EE90E09F938F931F920E94C50E809157 |
:100A3000D7070F900F900F9082FFF6C08AED90E0DD |
:100A40009F938F931F920E94C50E0F900F900F904F |
:100A50008EEC90E09F938F931F920E94C50E0E9490 |
:100A60005A1B88E893E1909394038093930381E069 |
:100A7000809393060F900F900F908091E20388234C |
:100A800009F471C080911D03882309F46CC0109291 |
:100A9000E20380919206882309F471C00E94D0027B |
:100AA0000E94BA30209100012A3009F471C024312B |
:100AB00009F46EC0289A80910501882309F46EC05C |
:100AC00081508093050180919404882329F08091BE |
:100AD00094048150809394048091930390919403A3 |
:100AE000892B09F46CC08091930390919403019732 |
:100AF00090939403809393032A3009F45EC02431C9 |
:100B000009F45BC0289A8091E203882329F0809140 |
:100B10009D04882309F075C00E94A6090E94370C25 |
:100B2000C8010E9490128823E1F020910E033091B9 |
:100B30000F038091E80790E02817390744F480916B |
:100B4000090390910A038F5F9F4F09F45DC00E94D3 |
:100B5000545184E08093E70384E190E00E9487127F |
:100B60008C010E942E528091E703882309F085CFE3 |
:100B70000E9495518091E2038823A9F383CF0E94BC |
:100B80002C370E94BA30209100012A3009F08FCF13 |
:100B9000289880910501882309F092CF10929E0633 |
:100BA0001092B5041092B4041092B7041092B604D7 |
:100BB0001092B9041092B80486CF2898A4CF85E08B |
:100BC00090E090939403809393030E94C9218091B5 |
:100BD000090390910A038F5F9F4F09F094CF809192 |
:100BE0009D04882309F48FCF80E197E29093E60378 |
:100BF0008093E50380E890E090930A0380930903D3 |
:100C000082CF0E94370C8CCF80E797E19093E60368 |
:100C10008093E50380E093E090930A0380930903B7 |
:100C200096CF0E94CC3542CE82ED90E09F938F9379 |
:100C30001F920E94C50E0F900F900F9009CF289819 |
:100C4000E6CE2998F0CD8091CA00863009F0DBCD40 |
:100C50000E94AA52D8CD89EF90E09F938F931F9264 |
:100C60000E94C50E88EE93E00E9487128C010E94BC |
:100C7000FE1A0F900F900F90C8010E9490128823C7 |
:100C8000D9F384EF90E09F938F931F920E94C50E3B |
:100C90000F900F900F90B0CE289877CD0E941D3501 |
:100CA00005CEEAE4F1E0FF93EF931F920E94C50E98 |
:100CB0004CE56FEC77E081E00E9408030F900F9005 |
:100CC0000F9063CE81E391E09F938F931F920E94D8 |
:100CD000C50E0F900F900F9071CE8BE080930001A6 |
:100CE0000DCD199B11C084E18093000107CD8BE0ED |
:100CF00095E0A0E0B0E08093B3039093B403A09399 |
:100D0000B503B093B6033ACD8AE080930001F6CCE8 |
:100D10001F920F920FB60F9211248F939F93EF9310 |
:100D2000FF93809103018823A9F48091DE039091C1 |
:100D3000DF0301969093DF038093DE03FC01EC5AFE |
:100D4000FA4FE081ED3059F08639910541F0E0939A |
:100D5000C6000DC01092DF031092DE0308C010928F |
:100D6000DF031092DE0381E080930301F0CFFF9157 |
:100D7000EF919F918F910F900FBE0F901F9018953C |
:100D80001F920F920FB60F9211242F933F934F9300 |
:100D90008F939F93AF93BF93CF93DF93EF93FF9383 |
:100DA0008091C6008093C9034091D903463910F061 |
:100DB0001092D8038091C9038D3009F18091D80336 |
:100DC000813009F490C0813030F0823009F473C072 |
:100DD0001092D803B5C08091C903833209F4A1C031 |
:100DE0008091C9038093A10681E08093D90380910B |
:100DF000C90390E09093DD038093DC03A1C0809150 |
:100E0000D8038230E9F61092D803A42FB0E0FD0198 |
:100E1000E156F94F3081ED01C056D94F28818091BC |
:100E2000DC039091DD03831B9109821B91099F7064 |
:100E30009093DD038093DC039C010024220F331F79 |
:100E4000001C220F331F001C232F302D235C209306 |
:100E5000DB03982F9F73935C9093DA0380812817AC |
:100E600009F468C08091CC038F5F8093CC0390E03D |
:100E70008091CA03882309F063C0992309F460C0F4 |
:100E800081E08093CA034F5F4093CD03AF55B94FC4 |
:100E90008DE08C938091A306823509F051C088E1E2 |
:100EA00090E02CE00FB6F894A895809360000FBEF8 |
:100EB0002093600045C0E42FF0E08091C903EF5516 |
:100EC000F94F8083463948F11092D8032091C90325 |
:100ED0008091DC039091DD03820F911D9093DD03DF |
:100EE0008093DC032DC082E08093D803E42FF0E0F0 |
:100EF0008091C903EF55F94F80834F5F4093D90329 |
:100F00002091C9038091DC039091DD03820F911D34 |
:100F10009093DD038093DC0313C04F5F4093D903AC |
:100F2000D5CF8091CA03882309F05ACF81E08093FE |
:100F3000D80356CF8881981709F094CF91E098CFC5 |
:100F4000FF91EF91DF91CF91BF91AF919F918F91E1 |
:100F50004F913F912F910F900FBE0F901F901895BA |
:100F6000CF93DF93BC01892B19F120E030E040E002 |
:100F700050E0FA01EC5AFA4F8081280F311D4F5F83 |
:100F80005F4F46175707A9F73F70C9010024880F24 |
:100F9000991F001C880F991F001C892F902D835CBE |
:100FA000DB0111962F73235CED012196FB0108C034 |
:100FB000E0E0F0E08DE3A1E0B0E02DE3C2E0D0E0BE |
:100FC000EC5AFA4F8083AC5ABA4F2C93CC5ADA4F72 |
:100FD0008DE0888310920301809154058093C600B0 |
:100FE000DF91CF9108954091CD03465009F451C04F |
:100FF00033E063E030C0282F2D53E62FF0E0822F3E |
:1010000082958F709D53990F990F982BEF55F94F3B |
:101010009083E62FEF5F4130D1F1972F9D53F0E0A1 |
:101020002295207F892F86958695282BEF55F94F9D |
:101030002083E62FEE5F43504F3F49F1F0E0929559 |
:10104000990F990F907C5D53952BEF55F94F908335 |
:101050006D5F4423D9F0E32FF0E0EF55F94F908115 |
:101060003F5FE32FF0E0EF55F94F80813F5FE32FC3 |
:10107000F0E0EF55F94F70813F5FE32FF0E0EF555F |
:10108000F94F50813F5F442309F0B5CFE62FE3507D |
:1010900001C0E0E084EA96E09093CF038093CE0312 |
:1010A000E093D00308951F93182F8A3029F0809180 |
:1010B000C00085FFFCCF04C08DE00E945308F7CF2D |
:1010C0001093C60080E090E01F9108950895E1EC30 |
:1010D000F0E088E18083A0ECB0E08C9182608C939A |
:1010E0008081806880838081806480838AE28093AD |
:1010F000C40080910701909108010E94871290938B |
:101100008106809380068CED90E00E948712909378 |
:10111000A00680939F061092820688E4809383063F |
:101120008FE0809386068AE080938406109285067D |
:101130001092CF031092CE031092D0030895EF9235 |
:10114000FF920F931F93CF93DF93CDB7DEB7229714 |
:101150000FB6F894DEBF0FBECDBF9C854D8583E2F0 |
:10116000809354059F59909355058B858093560520 |
:10117000CE010E969A838983442319F463E070E0CC |
:10118000D5C00E851F85CE0142969A838983288912 |
:1011900039892115310591F3F42EFA9463E070E05A |
:1011A000A0E05EC0EA2FF0E0AF5FC901E00FF11FE1 |
:1011B00040819C012150304009F473C0EA2FF0E0D7 |
:1011C000AF5FE00FF11FB0812150304009F079C0CE |
:1011D000FF2009F476C0E981FA81008111813496FB |
:1011E000FA83E983349722813381FA94842F90E043 |
:1011F00042954F708F7090705B2F52955695569513 |
:101200005370880F991F880F991F582B535CBF7319 |
:10121000B35CA0E08E2D86958695835CFB01EC5A2D |
:10122000FA4F80838E2D90E0837090708295929516 |
:10123000907F9827807F9827482B435CFB01EB5ACF |
:10124000FA4F4083FB01EA5AFA4F5083FB01E95AF7 |
:10125000FA4FB0836C5F7F4F2115310509F466C0EA |
:10126000F801EA0FF11DE080AF5F2150304009F036 |
:1012700099CFFF2091F0E981FA81008111813496A4 |
:10128000FA83E983349782819381FA94009721F05D |
:10129000E0E0F0E0A1E08ACFA0E040E05DE3BDE364 |
:1012A000B9CFFF2011F5842F90E042954F708F70D9 |
:1012B0009070880F991F880F991F582F535CBDE3BA |
:1012C000A9CF842F90E042954F708F7090705B2F64 |
:1012D0005295569556955370880F991F880F991FF0 |
:1012E000582B535CBF73B35C95CFE981FA810081C1 |
:1012F00011813496FA83E983349722813381FA94F9 |
:101300002115310579F4842F90E042954F708F704C |
:101310009070880F991F880F991F582F535CA0E079 |
:10132000BDE378CFE0E0F0E0A1E04BCFCB010E943D |
:10133000B00722960FB6F894DEBF0FBECDBFDF9187 |
:10134000CF911F910F91FF90EF900895EF92FF9230 |
:101350000F931F9380910301882309F483C2809126 |
:10136000C403882329F080910301882309F04AC12E |
:101370008091C303882329F080910301882309F019 |
:101380007BC18091C603882329F0809103018823C3 |
:1013900009F0A2C18091C203882329F08091030142 |
:1013A000882309F0B9C180919F069091A0060E9400 |
:1013B0009012882329F080910301882309F0D1C17C |
:1013C0008091070190910801892B09F06DC08091EF |
:1013D000C503882329F080910301882309F0EAC01E |
:1013E0008091D6039091D703892B09F06CC080912E |
:1013F00004018F3F59F190E082959295907F982754 |
:10140000807F9827875F9E4F20E130E03F932F93A6 |
:101410009F938F9381E090E09F938F9384E091E07E |
:101420009F938F9382E08F9381E08F9381E48F93DA |
:101430000E949F088FEF809304012DB73EB7255F70 |
:101440003F4F0FB6F8943EBF0FBE2DBF8091790776 |
:10145000882329F080910301882309F0E5C1809158 |
:10146000C703882309F4FEC180910301882309F48E |
:10147000F9C186E190E09F938F938DE997E09F9368 |
:101480008F9381E08F938F9380E58F930E949F08C5 |
:101490001092C7032DB73EB7295F3F4F0FB6F894A0 |
:1014A0003EBF0FBE2DBFDEC18091800690918106A8 |
:1014B0000E949012882309F48ACF80910301882327 |
:1014C00009F48ECF77C080915205909153050E9408 |
:1014D0009012882309F48BCF80910301882309F4AB |
:1014E00086CFE090E307FF24EE0CFF1CEE0CFF1C00 |
:1014F0000027F7FC0095102F609145047091460479 |
:101500008091470490914804A80197010E94565683 |
:10151000309345052093440560914D0470914E042D |
:1015200080914F0490915004A80197010E94565653 |
:1015300030934705209346056091760870917708AF |
:1015400080917808909179082AE030E040E050E0FE |
:101550000E94E2552091B3033091B4034091B5034A |
:101560005091B6030E945656309349052093480582 |
:101570008EE090E09F938F9384E495E09F938F9308 |
:1015800081E08F938F9383E48F930E949F088091D3 |
:10159000D6039091D7030E948712909353058093AE |
:1015A00052058DB79EB707960FB6F8949EBF0FBE33 |
:1015B0008DBF1DCF82E490E09F938F9387E397E0E8 |
:1015C0009F938F9381E08F938F9384E48F930E94F6 |
:1015D0009F081092C50380910701909108012DB7D3 |
:1015E0003EB7295F3F4F0FB6F8943EBF0FBE2DBFE9 |
:1015F000009709F4F5CE0E9487129093810680939C |
:101600008006EECE0E94631B8091C80324E1829F76 |
:10161000C0011124885D9C4F24E130E03F932F935B |
:101620009F938F9381E090E09F938F9388EC93E05A |
:101630009F938F9382E08F9381E08F9388E48F93C1 |
:101640000E949F088091C8038F5F8093C8032DB7C5 |
:101650003EB7255F3F4F0FB6F8943EBF0FBE2DBF7C |
:10166000843010F01092C8031092C4038091C30319 |
:10167000882309F486CE80CE0E94631B80E590E02B |
:101680009F938F9388E293E09F938F9321E030E0C4 |
:101690003F932F9388E793E09F938F933F932F93EC |
:1016A00086E294E09F938F9383E08F9381E08F9302 |
:1016B0008CE48F930E949F081092C3038DB79EB74E |
:1016C0000F960FB6F8949EBF0FBE8DBF8091C603D4 |
:1016D000882309F45FCE59CE8AE090E09F938F93E0 |
:1016E00082E896E09F938F9381E08F938F9386E5B6 |
:1016F0008F930E949F081092C6032DB73EB7295FB3 |
:101700003F4F0FB6F8943EBF0FBE2DBF8091C2036E |
:10171000882309F448CE42CE209106018BE090E068 |
:101720009F938F9384E996E09F938F9381E08F93AB |
:101730002F9387E48F930E949F081092C2038DB766 |
:101740009EB707960FB6F8949EBF0FBE8DBF8091CF |
:101750009F069091A0060E949012882309F430CE33 |
:101760002ACEE090E307FF24EE0CFF1CEE0CFF1CDA |
:101770000027F7FC0095102F6091450470914604F6 |
:101780008091470490914804A80197010E94565601 |
:1017900030938D0620938C0660914D0470914E0419 |
:1017A00080914F0490915004A80197010E945656D1 |
:1017B00030938F0620938E068091AC048093900620 |
:1017C0008091AD048093910688E090E09F938F9381 |
:1017D0008CE896E09F938F9381E08F9383E08F93C3 |
:1017E00087E78F930E949F082DB73EB7295F3F4F31 |
:1017F0000FB6F8943EBF0FBE2DBF80919206853084 |
:1018000018F086E08093920683E690E00E948712AB |
:101810009093A00680939F06809107019091080104 |
:10182000892B09F4D4CD40CE81E090E09F938F9333 |
:1018300089E797E09F938F9381E08F938F9382E462 |
:101840008F930E949F08109279078DB79EB70796D5 |
:101850000FB6F8949EBF0FBE8DBF8091C70388233B |
:1018600009F002CE1F910F91FF90EF900895EF9233 |
:10187000FF920F931F93CF93DF93CDB7DEB72297DD |
:101880000FB6F894DEBF0FBECDBF8091CA03882388 |
:1018900009F415C20E94F3078091A206823679F1FD |
:1018A0008091A306843609F449C18536C0F18C368F |
:1018B00009F429C18D3608F072C0873609F4E9C0F1 |
:1018C0008836A1F48FEF8093050180912704E09181 |
:1018D000CE03F091CF039081892B80932704882336 |
:1018E00011F01092C80381E08093C4031092CA03E0 |
:1018F0001092CF031092CE031092D003E0C18091DA |
:10190000A306813709F476C0823770F58B3409F469 |
:1019100029C1803729F681E08093C703C1CF813682 |
:1019200009F4FFC0823608F044C08B34F9F6E09128 |
:10193000CE03F091CF0380819181909382048093B4 |
:101940008104845E9D4F2091830430918404821B26 |
:10195000930B68E671E00E942156845B904090935F |
:10196000860480938504C2CF833709F419C1843774 |
:1019700009F096CF0091CE031091CF03F80180813A |
:101980009181A281B3818093D2039093D303A093DA |
:10199000D403B093D5038FEF8093050181CF8437B3 |
:1019A00009F48EC0863709F0A1CF81E08093C60389 |
:1019B0009DCF823609F471C0833609F097CF8091AC |
:1019C000D6039091D703892B09F051C10091CE0322 |
:1019D0001091CF03F8019081992309F058C1F801C3 |
:1019E00080812AE0829FC00111249093D7038093C5 |
:1019F000D6037CCF0091CE031091CF03F8018081F4 |
:101A00008F3F09F453C1F8018081882309F034C164 |
:101A100081E080830091CE031091CF039FECE92EEB |
:101A200097E0F92E4CE5B701F80180810E943C0354 |
:101A3000809103018823E1F3E091CE03F091CF037D |
:101A4000808189838AE48A838CE590E09F938F93D9 |
:101A5000FF92EF9221E030E03F932F93CE01029668 |
:101A60009F938F933F932F93CE0101969F938F93D4 |
:101A700083E08F9381E08F9381E58F930E949F088D |
:101A80008DB79EB70F960FB6F8949EBF0FBE8DBF51 |
:101A900007CF81E08093C20329CFA4E9B6E0E091AB |
:101AA000CE03F091CF038BE001900D928150E1F7CE |
:101AB00080919D06809379078FEF8093050116CF63 |
:101AC000E091CE03F091CF0380819181A281B38117 |
:101AD0008093D2039093D303A093D403B093D50300 |
:101AE000809103018823E1F3809106011F928F9377 |
:101AF00084E58F930E949F088FEF809305010F90DC |
:101B00000F900F90F3CE8FEF80930501E091CE03FD |
:101B1000F091CF0380818093260481E08093C303FA |
:101B2000E5CEE091CE03F091CF0380818093040154 |
:101B3000803210F28FE180930401BECFE091CE039A |
:101B4000F091CF0380812AE0829FC00111249093FD |
:101B5000080180930701892B09F4C8CE81E08093A6 |
:101B6000C503C4CE0091CE031091CF03F80180814C |
:101B700091819093820480938104845E9D4F209193 |
:101B8000830430918404821B930B68E671E00E9409 |
:101B90002156845B9040909386048093850480CE88 |
:101BA0000091CE031091CF03F801808181508530E0 |
:101BB00018F481818A34E9F0198280910301882325 |
:101BC000E1F381E090E09F938F93CE0101969F9384 |
:101BD0008F9381E08F938F9383E58F930E949F086B |
:101BE0008DB79EB707960FB6F8949EBF0FBE8DBFF8 |
:101BF00057CEAFECB7E032968CE501900D92815054 |
:101C0000E1F74CE56FEC77E0F80180810E94080372 |
:101C10006091FC0770E080E090E024EC39E040E067 |
:101C200050E00E94E255609397037093980380936D |
:101C3000990390939A036091FD0770E080E090E033 |
:101C40000E94E25560939B0370939C0380939D03D5 |
:101C500090939E03E091CE03F091CF0380810E9488 |
:101C6000B2020E94BE0289830E940135A6CF009174 |
:101C7000CE031091CF03B3CE863008F4CFCE85E0EB |
:101C8000F80180830091CE031091CF03C7CE8AE084 |
:101C9000989FC00111240E9487129093530580934E |
:101CA00052050091CE031091CF0399CE0E94BE023F |
:101CB000F80180830091CE031091CF03A4CE229629 |
:101CC0000FB6F894DEBF0FBECDBFDF91CF911F914D |
:101CD0000F91FF90EF900895982F80917A078130AF |
:101CE00031F0892F0E945308282F30E00CC08091DA |
:101CF0002504E82FF0E0E85DFC4F90838F5F809330 |
:101D0000250421E030E0C90108951F93182F18160B |
:101D10002CF480E30E946C0E1150D9F71F910895A6 |
:101D20001F93182F18162CF480E20E946C0E11508D |
:101D3000D9F71F9108950F931F93CF93DF938C01D1 |
:101D4000EB01672B49F0F8010F5F1F4FE4918E2FD5 |
:101D50000E946C0E2197B9F7DF91CF911F910F91DF |
:101D600008950F931F93CF93DF938C01EB01672BA3 |
:101D700039F0F80181918F010E946C0E2197C9F70B |
:101D8000DF91CF911F910F9108952F923F924F9223 |
:101D90005F926F927F928F929F92AF92BF92CF92FB |
:101DA000DF92EF92FF920F931F93CF93DF93CDB704 |
:101DB000DEB7E5970FB6F894DEBF0FBECDBF2B960A |
:101DC0008FAD2B9780937A07CE01835B9F4F9B83C8 |
:101DD0008A832D960EAD1FAD2D971FA618AA19AA9E |
:101DE0001AAAF8018491882309F4A2C2853209F461 |
:101DF0001BC2680103C0F5E2FF1639F00894C11C4C |
:101E0000D11CF601F490FF20B1F7B601601B710BF5 |
:101E100019F0C8010E949B0EFF2009F489C28601B7 |
:101E20000F5F1F4F1982AA81BB818FA498A8A9A810 |
:101E3000BAA8332422248FEF8BABF8010F5F1F4F1A |
:101E4000F490C32CDD2491E0C922DD24E5E7FE16E1 |
:101E500009F443C08F2D8062883709F43EC0F0E258 |
:101E6000FF1609F448C083E2F81609F48FC0EAE2CD |
:101E7000FE1609F480C0FDE2FF1609F482C0EBE211 |
:101E8000FE1609F43CC0FEE2FF16D9F180E3F81615 |
:101E900009F47FC08F2D8153893008F07FC020E086 |
:101EA00030E0C901880F991F880F991F880F991F6B |
:101EB000220F331F280F391F2F0D311D20533040A3 |
:101EC000F8010F5F1F4FF4908F2D80538A3048F335 |
:101ED000222EE5E7FE1609F0BDCFC114D10409F4A6 |
:101EE0003CC08D909D90AD90BC9013971496F0E2FD |
:101EF000FF1609F0B8CF8981882309F09ECFF982B7 |
:101F00009CCFF8010F5F1F4F94919A3209F44FC094 |
:101F1000892F80538A3060F5492F20E030E0C901D5 |
:101F2000880F991F880F991F880F991F220F331F41 |
:101F3000280F391F240F311D20533040F8010F5F47 |
:101F40001F4F6491462F862F80538A3040F3A9019A |
:101F500037FD0BC04BABF62E79CF8D919C9111972D |
:101F60004C01AA24BB2412967ACF4FEF5FEFF2CF39 |
:101F7000F92E1BAA6BCFFD011296208027FE5DCFA4 |
:101F8000219480E1382A9FED392257CF98E0392AF1 |
:101F900054CF34FC52CF90E2392A4FCFE8E6FE16F8 |
:101FA00079F08CE6F81679F491E0392A46CFCD0124 |
:101FB00002964D915C9157FD77C04BABDC013DCF54 |
:101FC000F4E03F2A3ACFBB83AA83E3E6FE1609F486 |
:101FD0000BC1F4E4FF1609F46AC084E6F81609F4AC |
:101FE00068C099E6F91609F464C09FE4F91609F48B |
:101FF00007C1EFE6FE1609F4FFC0E0E7FE1609F49C |
:102000005DC193E7F91609F419C185E5F81609F4DD |
:1020100010C195E7F91609F409C198E5F91609F414 |
:1020200069C1E8E7FE1609F465C1FF2009F480C123 |
:10203000FE821982632C77248FA698AAA9AABAAA2D |
:10204000EE2436E0C32ED12CCC0EDD1E81E0E1E083 |
:1020500090E021E0A22EB12C2981222309F4A0C016 |
:102060008F5F582E590E40E3842E912C86209720A6 |
:102070008114910409F438C1222309F02EC166FCB1 |
:10208000C9C0F0E28F16910409F4BFC08E2D0E94E2 |
:10209000850EB501C6010E94B10E64FEA2CE822D4E |
:1020A00085190E94900E9DCE4FEF5FEF86CFE1E045 |
:1020B0003E2A30FE8EC01496BB83AA83BE90AE909B |
:1020C0009E908E90B7FC78C0FAE0FEA7EBA9E7FDE2 |
:1020D00002C0FFED3F2281149104A104B104A9F1D3 |
:1020E0008EA5482E552466247724EEE2CE2ED12CE0 |
:1020F000CC0EDD1EDDAACCAA17C070E3E72EE60EDB |
:10210000F601E2926F01C501B401A30192010E94A0 |
:1021100034562FA738AB49AB5AAB84149504A604A8 |
:10212000B704A0F149015A01C501B401A30192010C |
:102130000E9434566A3008F357E5E52EE60EF8E5BE |
:10214000FF16F1F68FEDE822DBCF9BA99923C1F4AE |
:10215000632C77241FA618AA19AA1AAAFEE2CF2E6A |
:10216000D12CCC0EDD1E80E0E0E04BA9E42EEE1A6F |
:10217000E7FC1BC09E2DA82EBB24A7FCB0946CCFFF |
:10218000EEA54E2E552466247724AFCFFEA5F83059 |
:1021900009F4BCC0ECA9EC198E2F632C7724E5CF91 |
:1021A00066FE5FCF8E2F8E5F5CCFA82EBB24A7FC70 |
:1021B000B094EE2490E050CFB094A094909480948A |
:1021C000811C911CA11CB11C2DE229838AE08EA7E1 |
:1021D0007DCF1296BB83AA839E918E914C01AA2437 |
:1021E00097FCA094BA2C6ECF1296BB83AA83129749 |
:1021F0008C918E8319821ECFF8E0FEA7198266CFDC |
:1022000081E0382A98E09EA7F9CF822D85190E9497 |
:10221000850E3CCF80E38C83FD8262E070E0CE01CE |
:1022200004960E94B10E2DCF6801F9CDEAE0EEA729 |
:10223000E5CFF1E03F2A8AE08EA7E0CF1296BB837C |
:10224000AA83DE90CE90C114D10489F488E28E83F3 |
:102250008EE68F8385E788878CE689878A8789E27F |
:102260008B871C86A6E0CA2ED12CCC0EDD1EEBA9D6 |
:10227000E7FD1CC04E2F552747FD509560E070E0EC |
:10228000C6010E948554009779F08C19FBA9F817B4 |
:102290000CF48F2F1982E82F632C77248FA698AA2D |
:1022A000A9AABAAA40E062CF8BA9F4CFF6010190A7 |
:1022B0000020E9F731978E2F8C19ECCF1296BB8353 |
:1022C000AA839E918E914C01AA24BB24F0E43F2A5C |
:1022D000B8E7FB2E80E18EA791CF61E070E0CE01E0 |
:1022E00001960E94B10ECDCE822D85190E94900ECE |
:1022F0002981C2CE33FE19C081149104A104B10416 |
:10230000A1F0F0E43F2A80E18EA778CF632C7724F8 |
:1023100033FE07C080E3E81621F080E3F6018293E4 |
:102320006F01ECA9EC198E2F20CF90E19EA766CF0C |
:10233000E5960FB6F894DEBF0FBECDBFDF91CF910B |
:102340001F910F91FF90EF90DF90CF90BF90AF90D3 |
:102350009F908F907F906F905F904F903F902F90C5 |
:1023600008951F920F920FB60F9211242F933F934F |
:102370005F936F937F938F939F93AF93BF9380915E |
:10238000E703882329F08091E70381508093E703D6 |
:102390008091F50381508093F5038F3F09F488C045 |
:1023A0008091E5039091E6030297E0F08091E503C8 |
:1023B0009091E60301979093E6038093E503809163 |
:1023C000E5039091E6032091090330910A038223EB |
:1023D0009323892B69F0809100018A3009F482C02F |
:1023E000479A0CC08FEF9FEF90930A0380930903E5 |
:1023F000809100018A3009F473C047988091D70713 |
:1024000083FF77C0349B0AC08091E3039091E4037B |
:1024100001969093E4038093E3036BC08091E30300 |
:102420009091E403892B49F18091E3039091E403B7 |
:102430008A56914010F58091E3039091E403209136 |
:10244000E3033091E40369E270E00E940D56260F29 |
:10245000371F3093E4032093E3038091E3039091CB |
:10246000E4030B9708F440C08091E3039091E403E8 |
:102470000A979093820480938104809181049091C3 |
:102480008204845E9D4F2091830430918404821BDA |
:10249000930B68E671E00E942156845B9040909314 |
:1024A0008604809385041092E4031092E30321C014 |
:1024B00089E08093F50380910D038F5F8170809395 |
:1024C0000D03882319F481E08093E2038091E003F7 |
:1024D0009091E10301969093E1038093E00360CF34 |
:1024E0005A988CCF5A9A8ACF109282041092810403 |
:1024F000C4CFBF91AF919F918F917F916F915F9169 |
:102500003F912F910F900FBE0F901F901895209123 |
:10251000E0033091E1032F5F3F4F820F931F089537 |
:102520002091E0033091E103821B930B892F9927BF |
:102530008695807490E00895CF93DF930E94871270 |
:10254000EC01CE010E9490128823D9F3DF91CF9144 |
:102550000895CF93DF930E948712EC0109C0809108 |
:102560001D03882329F010921D038FEC80937A00BD |
:10257000CE010E949012882391F3DF91CF910895AC |
:102580009FB7F894579A5F983E9A469AA0EBB0E0AE |
:102590008C918F708C938C9183608C93E1EBF0E045 |
:1025A00080818B73808380818B6080831092B200E6 |
:1025B0008FEF8093B3008C9180688C93E0E7F0E01C |
:1025C00080818A7F80838081826080839FBF08951D |
:1025D0008AE090E00E9487129093F7038093F603BD |
:1025E00082E085BD83EA84BD17BC88E788BD86E0AC |
:1025F00086BDEEE6F0E080818160808308951F92C1 |
:102600000F920FB60F921124CF92DF92EF92FF92AA |
:102610000F931F932F933F934F935F936F937F93EA |
:102620008F939F93AF93BF93EF93FF93809100019C |
:102630008431B8F48091F403882309F45DC02091BB |
:10264000F2033091F30341E02F373407C8F18FEFE5 |
:102650008093B3002F5F30403093F3032093F20355 |
:10266000B3C28091F403882351F78091B00086FFB4 |
:1026700015C18091B0008F7B8093B000E091EF0393 |
:10268000EE2309F049C18091F50790E02DED36E089 |
:10269000A901849F9001859F300D949F300D1124D6 |
:1026A0008091F0039091F103281B390B3093F303D1 |
:1026B0002093F2031092F1031092F003469AEAC0BD |
:1026C0002F3F310581F078F051E02E37350709F4BE |
:1026D00014C180E88093B300205830403093F30356 |
:1026E0002093F20371C22093B3001092F30310926F |
:1026F000F2031092F40368C28091B00086FFAEC06E |
:102700008091B0008F7B8093B0008091AB03482F05 |
:1027100050E0440F551F440F551F20910B0330917B |
:102720000C03C901880F991F820F931F480F591F6F |
:1027300057FD10C2CA0195958795959587959093F9 |
:102740000C0380930B039093EC038093EB03809135 |
:102750001B0880FF24C1C090EB03D090EC03E090F5 |
:10276000F207FF2400E010E06091450470914604F8 |
:10277000809147049091480420E830E040E050E028 |
:102780000E945656C801B7010E94E255660F771F96 |
:10279000881F991F660F771F881F991F20E031E05F |
:1027A00040E050E00E945656C20ED31ED092EC0379 |
:1027B000C092EB038091F307282F30E0220F331FE4 |
:1027C000220F331F8091EB039091EC038217930744 |
:1027D0000CF49DC08091F407282F30E0220F331FA6 |
:1027E000220F331F8091EB039091EC0328173907D8 |
:1027F0000CF48DC02091EB033091EC0327553E4F34 |
:102800003093F3032093F2038091EB039091EC0358 |
:1028100097FDA3C195958795959587959093EC0322 |
:102820008093EB038091EB039091EC03909362070C |
:102830008093610745E02D3D340708F4A5C02CEDD9 |
:1028400035E03093F3032093F2032091F2033091AB |
:10285000F3033093F1032093F0031CC08091B00088 |
:1028600080648093B0008091F50790E02DED36E014 |
:10287000A901849F9001859F300D949F300D1124F4 |
:102880008091F0039091F103281B390B3093F303EF |
:102890002093F20381E08093F403D5CE8091B000C1 |
:1028A00080648093B0002CEB30E03093F3032093EE |
:1028B000F2038091F0039091F10384549F4F909321 |
:1028C000F1038093F0038091E803882329F080913D |
:1028D0009404853B08F098C08091EF038F5F80934C |
:1028E000EF039091F507981708F089C01092EF0355 |
:1028F0002091F2033091F303CDCF8FEF8093B3009B |
:102900002FE730E03093F3032093F2035DC130935F |
:10291000EC032093EB036ECF29EA33E03093F3030B |
:102920002093F203E13009F471C0F0E0EE0FFF1FD5 |
:10293000E356F84F80819181880F991F87559C4FEE |
:102940009093F3038093F2032091F2033091F30309 |
:1029500055E02D3D350708F4F1C02CED35E03093FE |
:10296000F3032093F2032C5B30403093F303209366 |
:10297000F2038091F0039091F103820F931F9093E3 |
:10298000F1038093F00386CF2757314008F05DCFE5 |
:1029900027E731E03093F3032093F20356CFC09042 |
:1029A000EB03D090EC03E090F207FF2400E010E08E |
:1029B00060914504709146048091470490914804C9 |
:1029C00020E830E040E050E00E945656C801B701D0 |
:1029D0000E94E255660F771F881F991F660F771FA9 |
:1029E000881F991F20E031E040E050E00E945656D9 |
:1029F000C21AD30AD092EC03C092EB03DBCE209133 |
:102A0000F2033091F30346CF469866CF8091AB0333 |
:102A1000482F50E0440F551F440F551F20910B03C2 |
:102A200030910C03C901880F991F820F931F480F23 |
:102A3000591F57FDC6C0CA019595879595958795ED |
:102A400090930C0380930B039093EC038093EB0320 |
:102A500080911B0880FF83C0C090EB03D090EC03F3 |
:102A6000E090F207FF2400E010E0609145047091CF |
:102A70004604809147049091480420E830E040E00B |
:102A800050E00E945656C801B7010E94E255660FF9 |
:102A9000771F881F991F660F771F881F991F20E0D7 |
:102AA00031E040E050E00E945656C20ED31ED09254 |
:102AB000EC03C092EB038091F307282F30E0220F44 |
:102AC000331F220F331F8091EB039091EC03821789 |
:102AD00093077CF08091F407282F30E0220F331FFA |
:102AE000220F331F8091EB039091EC0328173907D5 |
:102AF00024F43093EC032093EB038091EB0390914B |
:102B0000EC0387559E4F9093F3038093F2038091DB |
:102B1000EB039091EC0397FD52C0959587959595A1 |
:102B200087959093EC038093EB038091EB03909156 |
:102B3000EC03909362078093610706CF81E027370B |
:102B4000380708F010CF27E731E03093F3032093E4 |
:102B5000F20309CF4D5F5F4FEDCD03965BCEC09082 |
:102B6000EB03D090EC03E090F207FF2400E010E0CC |
:102B70006091450470914604809147049091480407 |
:102B800020E830E040E050E00E945656C801B7010E |
:102B90000E94E255660F771F881F991F660F771FE7 |
:102BA000881F991F20E031E040E050E00E94565617 |
:102BB000C21AD30AD092EC03C092EB037CCF0396E7 |
:102BC000ACCF4D5F5F4F37CFFF91EF91BF91AF918A |
:102BD0009F918F917F916F915F914F913F912F9135 |
:102BE0001F910F91FF90EF90DF90CF900F900FBE4D |
:102BF0000F901F90189510927C008FEC80937A00B4 |
:102C000008951F920F920FB60F921124DF92EF9248 |
:102C1000FF920F931F932F933F934F935F936F9365 |
:102C20007F938F939F93AF93BF93CF93DF93EF9354 |
:102C3000FF93D09021048D2DD394D0922104E82FBE |
:102C4000F0E0E231F10540F01092210482E080933F |
:102C5000220480937C00F3C3E25CFF4FEE0FFF1F62 |
:102C60000590F491E02D099480917800909179007D |
:102C700020911B0430911C04280F391F30931C0431 |
:102C800020931B0481E0809322048091220480938E |
:102C90007C00DD2009F4D3C38FEC80937A00CFC38E |
:102CA000DD241092210481E080931D0380910E04A5 |
:102CB00090910F04019690930F0480930E0420913D |
:102CC00078003091790080918B0790918C07820F6A |
:102CD000931F90938C0780938B07809183078F5F5E |
:102CE0008093830780918307853008F4B4C0809176 |
:102CF0008B0790918C0797FD7FC39595879590934F |
:102D00008C0780938B078091780090917900909345 |
:102D10001903809318031092830760910C0470913B |
:102D20000D0480910B04992787FD9095D82FCC270F |
:102D3000C81BD90B20917F073091800780918B07AA |
:102D400090918C0740919E0450919F04281B390B51 |
:102D5000241B350B2C0F3D1F8091A10390E0A9018E |
:102D6000489F9001499F300D589F300D11248FE1ED |
:102D700090E0AC01649FC001659F900D749F900D21 |
:102D80001124280F391F37FDE6C235952795359553 |
:102D90002795359527953595279535952795309322 |
:102DA0000D0420930C0460918B0770918C07E090C8 |
:102DB0001403F09015030091160310911703882750 |
:102DC00077FD8095982FA8019701220F331F441F8C |
:102DD000551F220F331F441F551F220F331F441F3F |
:102DE000551F2E193F09400B510B620F731F841F93 |
:102DF000951F6C5F7F4F8F4F9F4F28E030E040E082 |
:102E000050E00E94565620931403309315034093CC |
:102E100016035093170320917F073091800780910C |
:102E2000140390911503A0911603B0911703C20FDC |
:102E3000D31FC81BD90BD0939F04C0939E048091CD |
:102E40008B0790918C0797FD84C2959587959093F9 |
:102E50008C0780938B0782E08093220416CF6091C9 |
:102E6000780070917900E0903F04F0904004009168 |
:102E7000410410914204882777FD8095982F0E9485 |
:102E80002A55A80197010E9492540E94F75470930A |
:102E90000904609308048091080490910904029742 |
:102EA0000CF45CC260913F04709140048091410435 |
:102EB0009091420420E030E84BE354E40E946555D1 |
:102EC00088239CF560913F047091400480914104F7 |
:102ED000909142042AE037ED43EA5CE30E94935468 |
:102EE00060933F04709340048093410490934204A4 |
:102EF0008091BE049091BF04845F9140B0F46091D2 |
:102F00003F047091400480914104909142042DEC63 |
:102F10003CEC4CEC5DE30E94935460933F0470934F |
:102F20004004809341049093420481E080930A041A |
:102F3000809178009091790090937E0780937D072F |
:102F4000809108049091090420917D0430917E04C1 |
:102F500040917F0450918004AA2797FDA095BA2F35 |
:102F6000820F931FA41FB51F80937D0490937E044E |
:102F7000A0937F04B0938004E0907D04F0907E04E1 |
:102F800000917F041091800460917D0470917E0413 |
:102F900080917F049091800420E034E040E050E094 |
:102FA0000E945656E21AF30A040B150BE0927D04B8 |
:102FB000F0927E0400937F041093800483E080935A |
:102FC000220463CE809178009091790020911D04B5 |
:102FD00030911E04280F391F30931E0420931D04C6 |
:102FE00084E08093220451CE40910E0350910F0350 |
:102FF00080917800909179009A01220F331F240F5D |
:10300000351F63E070E00E940D56260F371F36957E |
:1030100027953695279530930F0320930E0385E06F |
:103020008093220432CE8091780090917900909321 |
:10303000200480931F0486E08093220426CE2091F2 |
:1030400078003091790080913B0490913C04821B80 |
:10305000930B90937C0780937B0780917B079091E3 |
:103060007C07909316048093150487E080932204D4 |
:103070000CCE8091780090917900209139043091A4 |
:103080003A04821B930B9093870780938607809165 |
:10309000860790918707909314048093130482E02D |
:1030A00080932204F2CD20917800309179008091B4 |
:1030B0001D0490911E04820F931F90931E04809311 |
:1030C0001D0410922204E1CD809100018A3009F4A0 |
:1030D00020C1843109F4A0C18091780090917900D9 |
:1030E00020911F0430912004820F931F90930304BA |
:1030F0008093020486E080932204C7CD209178005B |
:103100003091790080913B0490913C04821B930B99 |
:1031100090937C0780937B0780917B0790917C073D |
:103120002091150430911604820F931F909305048B |
:103130008093040487E080932204A7CD80917800D7 |
:10314000909179002091390430913A04821B930BBD |
:1031500090938707809386078091860790918707D1 |
:103160002091130430911404820F931F909307044D |
:103170008093060482E08093220487CD209178001A |
:103180003091790080911B0490911C04280F391F05 |
:1031900030931C0420931B04809100018A3009F4B1 |
:1031A000D1C0220F331F220F331F30931C042093F2 |
:1031B0001B0420911B0430911C04C90137FD2AC156 |
:1031C0009595879595958795959587959093FF0308 |
:1031D0008093FE038091190490911A04820F931F2B |
:1031E00097FD16C19595879590931A0480931904BD |
:1031F00020912F0430913004821B930B9093110384 |
:10320000809310038091F8039091F90320911003AB |
:1032100030911103280F391F37FDF7C035952795D9 |
:103220003093F9032093F80381E0809322042DCD9D |
:10323000209178003091790080911D0490911E04B6 |
:10324000280F391F30931E0420931D048091000124 |
:103250008A3009F470C0220F331F220F331F3093BE |
:103260001E0420931D0420911D0430911E04C901E9 |
:1032700037FDC9C0959587959595879595958795BF |
:103280009093010480930004809117049091180496 |
:10329000820F931F97FDB5C095958795909318045D |
:1032A000809317042091310430913204821B930BD8 |
:1032B00090931303809312038091FA039091FB0380 |
:1032C0002091120330911303280F391F37FD96C048 |
:1032D000359527953093FB032093FA0383E0809381 |
:1032E0002204D3CC809178009091790090931C04B3 |
:1032F00080931B0481E080932204C7CC80917800E6 |
:103300009091790090931E0480931D0410922204E2 |
:10331000BCCC8091780090917900019620911F0497 |
:1033200030912004820F931F969587959093030404 |
:1033300080930204DFCE220F331F30931E042093AC |
:103340001D0491CF220F331F30931C0420931B04C4 |
:1033500030CF01967ACD215E3F4F17CD8091080482 |
:10336000909109048F5F9F4F0CF0DFCD60913F0477 |
:1033700070914004809141049091420420E030E833 |
:1033800049E054E40E94695518160CF0CECD6091C6 |
:103390003F047091400480914104909142042AE0DE |
:1033A00037ED43EA5CE30E94925460933F047093CC |
:1033B000400480934104909342048091BE04909114 |
:1033C000BF04845F914008F0B0CD60913F047091DC |
:1033D000400480914104909142042DEC3CEC4CEC73 |
:1033E0005DE30E94925460933F0470934004809385 |
:1033F00041049093420499CD01967FCC2F5F3F4FBB |
:1034000067CF019649CF079635CF2F5F3F4F06CF45 |
:103410000196E8CE0796D4CE8091780090917900FD |
:103420002FEF37E0281B390B80911F049091200467 |
:10343000281B390B30930304209302045BCEFF91C9 |
:10344000EF91DF91CF91BF91AF919F918F917F913C |
:103450006F915F914F913F912F911F910F91FF902D |
:10346000EF90DF900F900FBE0F901F9018950F9365 |
:103470001F931092100410921104109212041CE871 |
:1034800000E0033009F4A3C08091FE039091FF0394 |
:103490008C5F93400CF08DC080911A038150809313 |
:1034A0001A0300E080910004909101048C5F934026 |
:1034B0000CF072C080911B03815080931B0380919C |
:1034C0000204909103048C5F93400CF058C08091EB |
:1034D0001C03815080931C0388E0809328040E9481 |
:1034E000B52180911A038A3008F040C081E08093B2 |
:1034F00010048AE080931A0380911B038A3068F5D8 |
:1035000081E0809311048AE080931B0380911C0367 |
:103510008A30D0F481E0809312048AE080931C0307 |
:10352000809128048823E1F7109283078FEC809321 |
:103530007A00809183078823E1F31A3008F442C0AF |
:10354000115009F09ECF53C0863F50F381E0809325 |
:10355000120485EF80931C03E3CF863FB8F281E02D |
:103560008093110485EF80931B03D0CF863F20F218 |
:1035700081E08093100485EF80931A03BDCF809182 |
:103580000204909103048750944044F180911C03FD |
:103590008F5F80931C03A0CF809100049091010461 |
:1035A00087509440CCF080911B038F5F80931B0366 |
:1035B00086CF8091FE039091FF038750944084F45E |
:1035C00001E070CF8AE090E00E94A912B9CF1B30D1 |
:1035D00008F45ACF19E058CF0F5F71CF0F5F7CCF3F |
:1035E00080911A038F5F80931A0300E05BCF86E41B |
:1035F00090E00E94A9121F910F910895CF92DF923F |
:10360000EF92FF921F93CF93DF93F3E0EF2EF0E062 |
:10361000FF2ED7010E947156802DC82FD0E0C531F2 |
:10362000D10508F02A97C7BD10920B0484E690E0FC |
:103630000E94A9128091180390911903825593401A |
:1036400008F5C0E0D0E0E6EECE2EE1E0DE2E04C0CC |
:103650002196CA3FD105D8F41C2FC7BD82E390E064 |
:103660000E94A912DF92CF921F920E94C50E8091F4 |
:103670001803909119030F900F900F90825593406B |
:1036800038F706C076EEC72E71E0D72EE5CF1C2F97 |
:10369000D701012E0E947956109388078CE291E0A1 |
:1036A0000E94A912DF91CF911F91FF90EF90DF90C0 |
:1036B000CF900895E8E2F3E080E2819383E0E83779 |
:1036C000F807D1F708951F9340917803809126045D |
:1036D000481710F44093260480912704282F30E0E7 |
:1036E000C90181709070582F882341F08091260481 |
:1036F000882309F4EAC0815080932604B9016270DE |
:10370000707021FF08C080912604481709F4E0C0BA |
:103710008F5F80932604552319F0672B09F0D2C0E0 |
:103720000E945A1B909126049A3068F581E180939B |
:103730002504892F90E09F938F9380E295E09F93DB |
:103740008F9381E08F930E94C50E0F900F900F9082 |
:103750000F900F9010912604153009F4D7C316303E |
:10376000E0F0183009F4EDC2193008F0B4C016309A |
:1037700009F48BC2173009F45EC21150109378031C |
:1037800010922604E8C580E180932504892F90E0FB |
:103790009F938F938BE195E0D2CF123009F45BC3F6 |
:1037A000133008F4F9C0133009F492C1143029F72A |
:1037B00010922504E091D007F0E0EE0FFF1FE356D2 |
:1037C000F84F20813181E091CF07F0E0EE0FFF1F2D |
:1037D000E356F84F808191813F932F939F938F936E |
:1037E0008EEF93E09F938F9311E01F930E94C50E7D |
:1037F00084E180932504E091D207F0E0EE0FFF1FF3 |
:10380000E356F84F20813181E091D107F0E0EE0FCF |
:10381000FF1FE356F84F808191813F932F939F9331 |
:103820008F938EEE93E09F938F931F930E94C50E0C |
:1038300088E280932504E091D407F0E0EE0FFF1FAB |
:10384000E356F84F20813181E091D307F0E0EE0F8D |
:10385000FF1FE356F84F808191813F932F939F93F1 |
:103860008F938EED93E09F938F931F930E94C50ECD |
:103870008CE380932504E091D607F0E0EE0FFF1F64 |
:10388000E356F84F20813181E091D507F0E0EE0F4B |
:10389000FF1FE356F84F808191813F932F939F93B1 |
:1038A0008F938EEC93E09F938F931F930E94C50E8E |
:1038B0004DB75EB7445E5F4F0FB6F8945EBF0FBE64 |
:1038C0004DBF49C5109226042BCF4093260416CF36 |
:1038D0001092260420CF1A3009F476C21A3008F468 |
:1038E000ADC01B3009F049CF1092250488E192E069 |
:1038F0009F938F9311E01F930E94C50E84E18093E4 |
:10390000250420919806332727FD3095809197064E |
:10391000992787FD90953F932F939F938F9388E0EE |
:1039200092E09F938F931F930E94C50E88E280932D |
:10393000250420919906332727FD309580919A061A |
:1039400090E03F932F939F938F9388EF91E09F9305 |
:103950008F931F930E94C50E8CE3809325042091C2 |
:103960009E0630E080919B06992787FD90953F93B6 |
:103970002F939F938F9388EE91E09F938F931F9344 |
:103980000E94C50E6DB77EB7685E7F4F0FB6F89484 |
:103990007EBF0FBE6DBFDFC4112309F4FBC0113021 |
:1039A00009F0EBCE8091D70780FF6BC310922504FE |
:1039B00080919E0490919F049F938F9387EC94E055 |
:1039C0009F938F931F930E94C50E84E180932504DB |
:1039D0008091A0049091A1049F938F9388EB94E031 |
:1039E0009F938F931F930E94C50E88E280932504B6 |
:1039F00080911803909119039F938F9389EA94E023 |
:103A00009F938F931F930E94C50E8CE38093250490 |
:103A10008091880790E09F938F938AE994E09F9329 |
:103A20008F931F930E94C50E4DB75EB74C5E5F4FDC |
:103A30000FB6F8945EBF0FBE4DBF8DC41092250423 |
:103A400080918C0490918D049F938F938EE792E0E8 |
:103A50009F938F9311E01F930E94C50E84E1809382 |
:103A6000250480918E0490918F049F938F9382E719 |
:103A700092E09F938F931F930E94C50E88E28093DC |
:103A8000250480919004909191049F938F9386E6F2 |
:103A900092E09F938F931F930E94C50E8CE38093B7 |
:103AA000250480919204909193049F938F938AE5CB |
:103AB00092E09F938F931F930E94C50E2DB73EB740 |
:103AC0002C5E3F4F0FB6F8943EBF0FBE2DBF43C4D0 |
:103AD000109225048091A1079091A20720919F0741 |
:103AE0003091A0079F938F933F932F938EE394E0A1 |
:103AF0009F938F9311E01F930E94C50E84E18093E2 |
:103B000025048091A5079091A6072091A3073091E5 |
:103B1000A4079F938F933F932F938EE294E09F93FC |
:103B20008F931F930E94C50E88E280932504809195 |
:103B3000A9079091AA072091A7073091A8079F9302 |
:103B40008F933F932F938EE194E09F938F931F93D6 |
:103B50000E94C50E8CE3809325048091AD0790915F |
:103B6000AE072091AB073091AC079F938F933F93A3 |
:103B70002F938EE094E09F938F931F930E94C50E26 |
:103B80002DB73EB7245E3F4F0FB6F8943EBF0FBE31 |
:103B90002DBFE1C3109225048BE095E09F938F9396 |
:103BA00011E01F930E94C50E84E1809325042091AB |
:103BB0000001822F6AE00E940156492F50E0822FB7 |
:103BC0000E94015690E020E730E03F932F9328E4D5 |
:103BD00030E03F932F931F921F925F934F939F93D9 |
:103BE0008F9383EF94E09F938F931F930E94C50E52 |
:103BF00088E2809325040E94BE0290E09F938F93F9 |
:103C000086EE94E09F938F931F930E94C50E8CE3E2 |
:103C10008093250486ED94E09F938F931F930E94D9 |
:103C2000C50E2DB73EB7285E3F4F0FB6F8943EBF86 |
:103C30000FBE2DBF90C384E18093250480910E03B5 |
:103C400090910F039F938F9385ED92E09F938F93B5 |
:103C500011E01F930E94C50E88E280932504809195 |
:103C6000940490E09F938F9386EC92E09F938F93C0 |
:103C70001F930E94C50E6DB77EB7665F7F4F0FB66C |
:103C8000F8947EBF0FBE6DBF66C31092250481E11C |
:103C900093E09F938F9311E01F930E94C50E84E1E0 |
:103CA000809325048091390490913A042091060470 |
:103CB000309107049F938F933F932F9382E093E07B |
:103CC0009F938F931F930E94C50E88E280932504D3 |
:103CD00080913B0490913C042091040430910504B0 |
:103CE0009F938F933F932F9383EF92E09F938F93B4 |
:103CF0001F930E94C50E8CE38093250460913F04BE |
:103D00007091400480914104909142040E94F754C4 |
:103D100020914C0830914D087F936F933F932F93E0 |
:103D200084EE92E09F938F931F930E94C50E4DB730 |
:103D30005EB7485E5F4F0FB6F8945EBF0FBE4DBFD3 |
:103D40000AC31092250487EB92E09F938F9311E0B2 |
:103D50001F930E94C50E84E1809325048091850401 |
:103D6000909186049F938F9388EA92E09F938F931C |
:103D70001F930E94C50E88E28093250480918104E0 |
:103D8000909182049F938F9389E992E09F938F9300 |
:103D90001F930E94C50E8CE38093250480918304B9 |
:103DA000909184049F938F938AE892E09F938F93DE |
:103DB0001F930E94C50E8DB79EB742960FB6F8941A |
:103DC0009EBF0FBE8DBFC7C21092250482E592E050 |
:103DD0009F938F9311E01F930E94C50E84E18093FF |
:103DE00025048091AB0390E09F938F9384E492E04D |
:103DF0009F938F931F930E94C50E88E280932504A2 |
:103E00008091E9039091EA039F938F9386E392E078 |
:103E10009F938F931F930E94C50E8CE3809325047C |
:103E20002091F40730E08091F30790E03F932F93C7 |
:103E30009F938F9388E292E09F938F931F930E94AA |
:103E4000C50E4DB75EB74C5E5F4F0FB6F8945EBFC0 |
:103E50000FBE4DBF80C2109225048BE794E09F9364 |
:103E60008F9311E01F930E94C50E84E18093250477 |
:103E700060914504709146048091470490914804F4 |
:103E800020E034E040E050E00E9456565F934F93AC |
:103E90003F932F938CE694E09F938F931F930E9400 |
:103EA000C50E88E28093250460914D0470914E0404 |
:103EB00080914F049091500420E034E040E050E0C5 |
:103EC0000E9456565F934F933F932F938DE594E056 |
:103ED0009F938F931F930E94C50E8CE380932504BC |
:103EE00080918104909182049F938F938EE494E05B |
:103EF0009F938F931F930E94C50E8DB79EB74696D2 |
:103F00000FB6F8949EBF0FBE8DBF25C21092250438 |
:103F100080EC93E09F938F9311E01F930E94C50E56 |
:103F2000809100010F900F900F908A3009F471C1B9 |
:103F30008B3009F4C4C0843109F4C1C08D3009F05C |
:103F40000AC284E18093250480911A0390E02091B5 |
:103F50002F0430913004A90137FDFAC1BA017595DB |
:103F60006795759567957595679575956795409172 |
:103F7000FE035091FF0337FDE8C135952795359530 |
:103F8000279535952795421B530B9F938F937F93CE |
:103F90006F935F934F9386E493E09F938F931F9368 |
:103FA0000E94C50E88E28093250480911B0390E057 |
:103FB0002091310430913204A9016DB77EB7675F5B |
:103FC0007F4F0FB6F8947EBF0FBE6DBF37FDBAC1ED |
:103FD000BA0175956795759567957595679575950A |
:103FE0006795409100045091010437FDA8C13595B3 |
:103FF00027953595279535952795421B530B9F930C |
:104000008F937F936F935F934F9382E393E09F939C |
:104010008F931F930E94C50E8CE38093250480919B |
:104020001C03682F70E02091330430913404A901FF |
:104030008DB79EB709960FB6F8949EBF0FBE8DBF81 |
:1040400037FD7AC1559547958091020490910304FC |
:10405000281B390B7F936F935F934F933F932F935D |
:104060008EE193E09F938F931F930E94C50E2DB70F |
:104070003EB7275F3F4F0FB6F8943EBF0FBE2DBF30 |
:104080006AC184E18093250483E994E09F938F9330 |
:104090001F930E94C50E88E28093250485E894E072 |
:1040A0009F938F931F930E94C50E6DB77EB76A5F73 |
:1040B0007F4F0FB6F8947EBF0FBE6DBF4CC184E139 |
:1040C00080932504E0912F04F0913004CF0160E14A |
:1040D00070E00E94215697FD27C1BC017595679538 |
:1040E0009F01F7FD1EC1A901559547955595479527 |
:1040F00055954795559547952091FE033091FF03BF |
:10410000CF01F7FD0CC19595879595958795959568 |
:104110008795281B390B7F936F935F934F933F9342 |
:104120002F938BE793E09F938F931F930E94C50E6D |
:1041300088E280932504E0913104F0913204CF01AC |
:1041400060E170E00E9421562DB73EB7275F3F4FD8 |
:104150000FB6F8943EBF0FBE2DBF97FDDEC0BC0169 |
:10416000759567959F01F7FDD5C0A90155954795B0 |
:104170005595479555954795559547952091000438 |
:1041800030910104CF01F7FDC3C0959587959595B2 |
:10419000879595958795281B390B7F936F935F9330 |
:1041A0004F933F932F9389E693E09F938F931F93B1 |
:1041B0000E94C50E8CE38093250420913304309136 |
:1041C0003404A9016DB77EB7675F7F4F0FB6F894CF |
:1041D0007EBF0FBE6DBF37FD98C055954795809146 |
:1041E000020490910304281B390B5F934F933F9374 |
:1041F0002F938AE593E09F938F931F930E94C50EA0 |
:104200008DB79EB707960FB6F8949EBF0FBE8DBFB1 |
:10421000A2C084E18093250420912F0430913004C2 |
:10422000C90168E070E00E942156AC0137FD81C0F1 |
:104230003595279535952795359527958091FE03DA |
:104240009091FF03821B930B5F934F933F932F93A8 |
:104250009F938F938EEA93E09F938F931F930E9477 |
:10426000C50E88E2809325042091310430913204F8 |
:10427000C90168E070E00E942156AC016DB77EB7BD |
:10428000675F7F4F0FB6F8947EBF0FBE6DBF37FDDF |
:104290004DC035952795359527953595279580916E |
:1042A000000490910104821B930B5F934F933F9303 |
:1042B0002F939F938F938CE993E09F938F931F93FA |
:1042C0000E94C50E8CE38093250420913304309125 |
:1042D00034048091020490910304A901481B590BF6 |
:1042E0003F932F935F934F938DE893E09F938F932A |
:1042F0001F930E94C50E6DB77EB7605F7F4F0FB6EC |
:10430000F8947EBF0FBE6DBF26C04F5F5F4F65CF75 |
:1043100007963BCF215F3F4F28CF019620CF0796CE |
:10432000F2CE215F3F4FDFCE0196D7CE295F3F4FC0 |
:10433000B0CF295F3F4F7CCF4F5F5F4F83CE295F68 |
:104340003F4F55CE415F5F4F43CE295F3F4F15CE64 |
:10435000415F5F4F03CE109227041F910895109282 |
:10436000B9008AE28093B800089585EA8093BC0082 |
:1043700080E090E0089584E98093BC000895109255 |
:10438000B9008093BB0085E88093BC0080E090E09A |
:1043900008950E94BB2110922804EBEBF0E080818D |
:1043A0001092290480E88093BC001092BD00109206 |
:1043B000BA0010821092B9001092B8000E94AF218A |
:1043C0000E94B52180E00E94BF2108951F920F92A4 |
:1043D0000FB60F9211242F933F934F935F936F93D8 |
:1043E0007F938F939F93AF93BF93EF93FF938091AE |
:1043F00028048F5F809328048150E82FF0E0E73194 |
:10440000F10508F0C3C0E05BFF4FEE0FFF1F059002 |
:10441000F491E02D09948091BB0090912A04E92F3A |
:10442000F0E0E357F84F8083923009F46FC0933087 |
:1044300008F093C0992309F497C0913009F0A6C001 |
:10444000809150080E94BF21A1C088E90E94BF212D |
:104450009DC080E80E94BF2199C00E94BB218AE0D4 |
:1044600090E090939403809393030E94B5218EC0B3 |
:1044700090912A048091BB00E92FF0E0E357F84FB8 |
:1044800086839F5F90932A04963010F010922A043E |
:104490000E94BB218AE090E0909394038093930361 |
:1044A0001092280473C00E94BB2180912904863099 |
:1044B00008F069C010922804D8CF80911C030E9494 |
:1044C000BF2164C080911A030E94BF215FC0809108 |
:1044D0002904880F8E5A0E94BF2158C080E10E9493 |
:1044E000BF2154C080912A04823081F0833050F57E |
:1044F0008823D1F1813009F049C0A2CF80912904ED |
:104500008F5F809329048150823081F78091630806 |
:104510000E94BF213BC080912A04880F8D5A0E94BF |
:10452000BF2134C080911B030E94BF212FC082E1B4 |
:104530000E94BF212BC084E10E94BF2127C090911F |
:104540002A0472CF8430D1F0843098F08530F1F4B1 |
:10455000809165080E94BF2119C0943079F0943091 |
:1045600040F0953099F4F4CF80917D080E94BF21EE |
:104570000DC080914A080E94BF2108C080914B085D |
:104580000E94BF2103C0109229046FCF8091BC000C |
:1045900080688093BC00FF91EF91BF91AF919F9194 |
:1045A0008F917F916F915F914F913F912F910F90DC |
:1045B0000FBE0F901F90189583EC80938100EFE65B |
:1045C000F0E0808180628083109234041092330482 |
:1045D00010923204109231041092300410922F0481 |
:1045E00008951F920F920FB60F9211240F931F93ED |
:1045F0002F933F934F935F936F937F938F939F93EB |
:10460000AF93BF93CF93DF93EF93FF9320918600F7 |
:104610003091870080912D0490912E04281B390B36 |
:10462000809186009091870090932E0480932D04B2 |
:10463000C9018D549440835F9A4170F480912B049A |
:1046400090912C0404970CF07EC081E090E0909350 |
:104650002C0480932B049DC000912B0410912C04FA |
:104660000A3011050CF095C0C9018B5F9040845B46 |
:10467000914008F056C0A901425D5140E801CC0FBD |
:10468000DD1FFE01E356F84F808191819A01281BBE |
:10469000390BC90137FD79C0069754F48091940411 |
:1046A000883C08F06BC080919404865F80939404EA |
:1046B000FE01E356F84F808191819C01220F331F48 |
:1046C000280F391F240F351F37FD5CC035952795FE |
:1046D00035952795CA010196821793070CF045C0BE |
:1046E0002150304080919404833CC8F1FE01E35690 |
:1046F000F84F80819181A901481B590BCA0163E0E1 |
:1047000070E00E942156CB01880F991F860F971FDA |
:10471000FE01ED54F84F91838083C356D84F3983FF |
:104720002883C801019690932C0480932B04853034 |
:10473000910589F05D988630910551F05C98079756 |
:1047400029F05B9826C0109279037FCF5B9A21C035 |
:104750005C9A5B981EC05D9A5C985B981AC0FE01DB |
:10476000ED54F84F11821082D8CF41505040241799 |
:1047700035070CF0B7CF2F5F3F4FB4CF88EC809355 |
:10478000940496CF2D5F3F4FA1CF909581959F4F79 |
:1047900083CFFF91EF91DF91CF91BF91AF919F9127 |
:1047A0008F917F916F915F914F913F912F911F91C9 |
:1047B0000F910F900FBE0F901F90189581E080937E |
:1047C000CF0782E08093D00783E08093D10784E015 |
:1047D0008093D20785E08093D30786E08093D40747 |
:1047E00087E08093D50788E08093D60708956817FF |
:1047F000790744F4680F791F77FD09C0CB019595BF |
:1048000087950895681B790B861B970B08956F5F3A |
:104810007F4FCB019595879508952F923F924F92A8 |
:104820005F926F927F928F929F92AF92BF92CF9240 |
:10483000DF92EF92FF920F931F93CF93DF93CDB749 |
:10484000DEB76B970FB6F894DEBF0FBECDBF809179 |
:104850000204909103044090330450903404481AA9 |
:10486000590A5092700840926F082091F8033091D5 |
:10487000F90337FF02C00C942B2C359527953595FD |
:104880002795359527953B8F2A8F2091FA033091F4 |
:10489000FB0337FDDDC7359527953595279535956C |
:1048A00027953C8B2B8B2A8D3B8D30934F08209383 |
:1048B0004E088B899C8990934308809342086091AD |
:1048C000060470910704882777FD8095982F26E0CD |
:1048D00030E040E050E00E94E2557B018C012091E5 |
:1048E0006A0830916B08442737FD4095542FCA0160 |
:1048F000B901660F771F881F991F620F731F841FEE |
:10490000951F6E0D7F1D801F911F24E030E040E059 |
:1049100050E00E94565630936B0820936A086091CD |
:10492000040470910504882777FD8095982F26E070 |
:1049300030E040E050E00E94E2557B018C01209184 |
:104940007A0830917B08442737FD4095542FCA01DF |
:10495000B901660F771F881F991F620F731F841F8D |
:10496000951F6E0D7F1D801F911F24E030E040E0F9 |
:1049700050E00E94565630937B0820937A08E090CE |
:104980000804F090090420914C0830914D08442708 |
:1049900037FD4095542FCA01B901660F771F881F54 |
:1049A000991F620F731F841F951F0027F7FC009546 |
:1049B000102F6E0D7F1D801F911F24E030E040E01E |
:1049C00050E00E94565630934D0820934C08209199 |
:1049D000060430910704C901880F991F820F931FA5 |
:1049E000880F991FAA2797FDA095BA2F20915504EB |
:1049F000309156044091570450915804280F391FA4 |
:104A00004A1F5B1F2093550430935604409357046C |
:104A1000509358042091040430910504C901880F73 |
:104A2000991F820F931F880F991FAA2797FDA095A2 |
:104A3000BA2F2091590430915A0440915B0450914F |
:104A40005C04280F391F4A1F5B1F209359043093C1 |
:104A50005A0440935B0450935C0420910604309107 |
:104A600007048091570890915808820F931F9093E4 |
:104A700058088093570820910404309105048091D0 |
:104A8000720890917308820F931F9093730880931C |
:104A9000720880913D0490913E04019690933E04EB |
:104AA00080933D04E0907D07F0907E07A0903F0446 |
:104AB000B0904004C0904104D090420460915D04E5 |
:104AC00070915E0480915F04909160040E942A5569 |
:104AD0003B014C010027F7FC0095102FC801B701DE |
:104AE0000E942A55A60195010E9492549B01AC0197 |
:104AF000C401B3010E9493540E94F75460935D0473 |
:104B000070935E0480935F04909360048FEC8093B5 |
:104B10007A0010921D0380916D0490916E04A09113 |
:104B20006F04B09170048F87988BA98BBA8B80919A |
:104B3000650490916604A0916704B09168048B8726 |
:104B40009C87AD87BE873201882477FC8094982C9F |
:104B50008091750490917604A0917704B0917804C7 |
:104B6000860D971DA81DB91D8E8B9F8BA88FB98FA1 |
:104B70008093750490937604A0937704B09378049F |
:104B80002090760830907708409078085090790807 |
:104B9000260C371C481C591C209276083092770846 |
:104BA00040927808509279089091A6049A879923A8 |
:104BB00029F48091A704882309F474C4A091D7072D |
:104BC000A9831092CE071092CD071092CA071092B7 |
:104BD000C90710921005109211051092120510923B |
:104BE00013051092140510921505109216051092D7 |
:104BF0001705B091AF03BD8BE0901405F09015053B |
:104C00000091160510911705A0901005B0901105A0 |
:104C1000C0901205D0901305C601B50124E630E01E |
:104C200040E050E00E9456564701821A930A909243 |
:104C30003C0880923B08C801B70124E630E040E020 |
:104C400050E00E94565639016A187B08709232086B |
:104C5000609231086091B3037091B4038091B50301 |
:104C60009091B60328E631E040E050E00E94E25522 |
:104C7000261637064806590664F0261A370A480AE7 |
:104C8000590A20927608309277084092780850921C |
:104C9000790857FC56C56B897C89680D791D9B0185 |
:104CA000442737FD4095542F8091710490917204F0 |
:104CB000A0917304B0917404820F931FA41FB51FB9 |
:104CC0008093710490937204A0937304B09374045E |
:104CD0008091A2049091A304681B790B7B010027AB |
:104CE000F7FC0095102F8F859889A989BA89E80E5D |
:104CF000F91E0A1F1B1FE0926D04F0926E040093D0 |
:104D00006F041093700420919B0330919C03409199 |
:104D10009D0350919E032E153F0540075107D4F483 |
:104D200078EAE72E71E6F72E012D112DE21AF30A2B |
:104D3000040B150BE0926D04F0926E0400936F0467 |
:104D400010937004E0927104F09272040093730463 |
:104D50001093740488279927DC01821B930BA40B02 |
:104D6000B50BE0906D04F0906E0400916F0410910B |
:104D70007004E816F9060A071B07E4F468E5E62E56 |
:104D80006EE9F62E6FEF062F6FEF162FE20EF31E71 |
:104D9000041F151FE0926D04F0926E0400936F04DF |
:104DA00010937004E0927104F09272040093730403 |
:104DB000109374046A8D7B8D660D771D9B014427CB |
:104DC00037FD4095542F8091690490916A04A09119 |
:104DD0006B04B0916C04820F931FA41FB51F8093C6 |
:104DE000690490936A04A0936B04B0936C0480915F |
:104DF000A4049091A504681B790B9B01442737FDFF |
:104E00004095542F8B859C85AD85BE85280F391F15 |
:104E10004A1F5B1F20936504309366044093670428 |
:104E200050936804A0909703B0909803C0909903A2 |
:104E3000D0909A03A216B306C406D506C4F428EA95 |
:104E400031E640E050E02A193B094C095D09209306 |
:104E5000650430936604409367045093680420937C |
:104E6000690430936A0440936B0450936C04882760 |
:104E70009927DC018A199B09AC09BD0920916504B9 |
:104E800030916604409167045091680428173907EF |
:104E90004A075B07B4F4A6019501285A3146404001 |
:104EA0005040209365043093660440936704509308 |
:104EB00068042093690430936A0440936B04509310 |
:104EC0006C048E899F89A88DB98D8093610490931D |
:104ED0006204A0936304B093640420934504309368 |
:104EE00046044093470450934804E0924D04F092E6 |
:104EF0004E0400934F0410935004809169049091E4 |
:104F00006A04A0916B04B0916C048093490490935F |
:104F10004A04A0934B04B0934C0480917104909187 |
:104F20007204A0917304B09174048093510490931F |
:104F30005204A0935304B0935404809110039091B1 |
:104F4000110397FDFCC39595879595958795959544 |
:104F5000879590933F0880933E088091120390912B |
:104F6000130397FD73C495958795959587959595AA |
:104F7000879590932F0880932E088091FE0390913F |
:104F8000FF030F9734F488E19CEF90933F088093E0 |
:104F90003E088091FE039091FF03079734F480E36D |
:104FA00098EF90933F0880933E08209100012A30AB |
:104FB00009F4DAC18091FE039091FF03815D97406F |
:104FC00034F088EE93E090933F0880933E08809100 |
:104FD000FE039091FF03805E97400CF0DAC1809150 |
:104FE0000004909101040F9734F488E19CEF9093B2 |
:104FF0002F0880932E088091000490910104079758 |
:1050000034F480E398EF90932F0880932E082A3091 |
:1050100009F48EC18091000490910104815D974054 |
:1050200034F088EE93E090932F0880932E088091BF |
:10503000000490910104805E97400CF08EC1609155 |
:10504000A603662309F4A2C04091100350911103F6 |
:105050008091060590910705481B590B5093010557 |
:10506000409300052091100330911103280F391F40 |
:1050700037FDF5C335952795309307052093060531 |
:10508000413851050CF403C280E890E0909301058B |
:1050900080930005E62FF0E08091000590910105D6 |
:1050A000E89FB001E99F700DF89F700D11249B01DE |
:1050B00077FDE0C335952795359527953595279547 |
:1050C0003595279580913E0890913F08820F931F58 |
:1050D00090933F0880933E08409112035091130330 |
:1050E0008091040590910505481B590B50930305C9 |
:1050F000409302052091120330911303280F391FAA |
:1051000037FDBEC3359527953093050520930405DB |
:10511000413851050CF408C380E890E090930305F2 |
:10512000809302058091020590910305E89FA001FC |
:10513000E99F500DF89F500D11249A0157FD9DC312 |
:105140003595279535952795359527953595279547 |
:1051500080912E0890912F08820F931F90932F0813 |
:1051600080932E088091100390911103680F791F8E |
:1051700070931103609310038091120390911303B5 |
:10518000480F591F50931303409312038B899C8936 |
:10519000181619060CF0E2C29D89E92EFF2400E0E2 |
:1051A00010E06091C9077091CA0777FD5FC3882737 |
:1051B00077FD8095982FA80197010E94E25520E481 |
:1051C00030E040E050E00E945656820E931E9092CE |
:1051D0003C0880923B08EA8DFB8D1E161F060CF0E2 |
:1051E000E2C22091CD073091CE0737FD3BC3442763 |
:1051F00037FD4095542FC801B7010E94E25520E4C5 |
:1052000030E040E050E00E945656620E731E7092ED |
:10521000320860923108F981F7FDE2C28091D3072C |
:10522000E82FF0E0EE0FFF1FE356F84F80819181E9 |
:10523000A0918C04B0918D0482599F4FA817B90793 |
:105240000CF0FFC01196B0938D04A0938C04809154 |
:10525000D407E82FF0E0EE0FFF1FE356F84F8081F0 |
:10526000918160918E0470918F0482599F4F6817CD |
:1052700079070CF0D3C06F5F7F4F70938F046093FA |
:105280008E048091D507E82FF0E0EE0FFF1FE35664 |
:10529000F84F8081918140919004509191048259FE |
:1052A0009F4F481759070CF0A6C04F5F5F4F5093B0 |
:1052B0009104409390048091D607E82FF0E0EE0F20 |
:1052C000FF1FE356F84F8081918120919204309125 |
:1052D000930482599F4F281739070CF061C02F5F44 |
:1052E0003F4F3093930420939204B7FD6DC0AF3FBE |
:1052F000B10511F00CF0C4C077FD6CC06F3F7105B3 |
:1053000011F00CF0B6C057FD6BC04F3F510511F0C6 |
:105310000CF0A8C037FD6AC02F3F310509F00CF42E |
:10532000EEC28FEF90E09093930480939204E7C2D3 |
:105330008091000490910104835F934034F088EEE3 |
:1053400093E090932F0880932E0880910004909111 |
:1053500001048A5F93400CF472CE80ED97E0909345 |
:105360002F0880932E086BCE8091FE039091FF034F |
:10537000835F934034F088EE93E090933F088093EE |
:105380003E088091FE039091FF038A5F93400CF4E6 |
:1053900026CE80ED97E090933F0880933E081FCE85 |
:1053A0008081918182599F4F821793070CF09DCF86 |
:1053B0002115310509F499CF2150304030939304E1 |
:1053C00020939204B7FF93CF10928D0410928C0417 |
:1053D00077FF94CF10928F0410928E0457FF95CFD1 |
:1053E000109291041092900437FF96CF109293047C |
:1053F0001092920484C28081918182599F4F8417B8 |
:1054000095070CF058CF4115510509F454CF415080 |
:10541000504050939104409390044DCF80819181EE |
:1054200082599F4F861797070CF02BCF6115710596 |
:1054300009F427CF6150704070938F0460938E04FD |
:1054400020CF8081918182599F4F8A179B070CF052 |
:10545000FECE109709F4FBCE1197B0938D04A09364 |
:105460008C04F5CE8FEF90E090939104809390049C |
:1054700051CF8FEF90E090938F0480938E0443CFB1 |
:105480008FEF90E090938D0480938C0435CF40583B |
:105490005F4F0CF0FFCD80E89FEF90930105809364 |
:1054A0000005F8CDB091D707B983B6FF8ACB2F8519 |
:1054B000388949895A89283BE4E93E07EEEF4E07CF |
:1054C000EFEF5E0724F428EB34E94EEF5FEF2A8319 |
:1054D0003B834C835D8329543B464140504044F01C |
:1054E00088E49BE6A1E0B0E08A839B83AC83BD8324 |
:1054F0002B853C854D855E85283B94E939079EEFD9 |
:1055000049079FEF590724F428EB34E94EEF5FEF8A |
:105510002E833F834887598729543B46414050405A |
:1055200044F088E49BE6A1E0B0E08E839F83A887E7 |
:10553000B987A090AE03BB24CC24DD24AB89BC8901 |
:105540009D01442737FD4095542F6E817F818885CA |
:1055500099850E94E25520E038E040E050E00E944A |
:105560005656CA01B901A60195010E94E25520E0F4 |
:1055700030E140E050E00E94565679018A012093C4 |
:105580000C0530930D0540930E0550930F05EA8DE1 |
:10559000FB8D9F01442737FD4095542F6A817B8105 |
:1055A0008C819D810E94E25520E038E040E050E08F |
:1055B0000E945656CA01B901A60195010E94E25502 |
:1055C00020E030E140E050E00E945656F092CA07D9 |
:1055D000E092C9073093CE072093CD072E193F09DB |
:1055E000400B510B79018A0120930805309309057E |
:1055F00040930A0550930B05220E331E441E551E80 |
:105600002092760830927708409278085092790874 |
:10561000F091AF03FD8BFF23E1F4CA01B90122E051 |
:1056200030E040E050E00E9456568E899F89A88D58 |
:10563000B98D821B930BA40BB50B8E8B9F8BA88F00 |
:10564000B98F8093750490937604A0937704B093F8 |
:1056500078046E0C7F1C801E911EE090AD03FF2429 |
:1056600000E010E0C401B3012E813F8148855985D7 |
:105670000E94E25520E038E040E050E00E9456569B |
:10568000CA01B901A80197010E94E25520E030E16A |
:1056900040E050E00E94565659016A0120931405DB |
:1056A000309315054093160550931705C401B301B7 |
:1056B0002A813B814C815D810E94E25520E038E0E7 |
:1056C00040E050E00E945656CA01B901A801970176 |
:1056D0000E94E25520E030E140E050E00E94565642 |
:1056E0002093100530931105409312055093130534 |
:1056F000D7FCE8C091E8A916B104C104D10444F470 |
:1057000057FDD8C021383105410551050CF474CA44 |
:1057100081E080938904209076083090770840904B |
:1057200078085090790868CA40585F4F0CF0FACC5E |
:1057300080E89FEF9093030580930205F3CC0796D2 |
:1057400002CC260E371E481E591E20927608309233 |
:10575000770840927808509279089DCAAD89EA2E60 |
:10576000FF2400E010E06091C9077091CA0777FD3F |
:105770008AC0882777FD8095982FA80197010E94FD |
:10578000E25520E430E040E050E00E945656821A94 |
:10579000930A90923C0880923B08EA8DFB8D1E167E |
:1057A0001F060CF41ECD2091CD073091CE0737FD9A |
:1057B0006EC0442737FD4095542FC801B7010E94A1 |
:1057C000E25520E430E040E050E00E945656621A74 |
:1057D000730A7092320860923108F981F7FF1ECD8A |
:1057E0002A85222309F01ACD8091A704882309F085 |
:1057F00015CD8A8D9B8D815091400CF04CC02A8D27 |
:105800003B8D6FEF2030360764F480913E08909115 |
:105810003F0880509F4F820F931F90933F088093C3 |
:105820003E088B899C89815091400CF454C0809132 |
:105830002E0890912F0880509140EB89FC898E0FA3 |
:105840009F1F90932F0880932E08E8CC07968BCB50 |
:10585000295F3F4F20C8295F3F4F0C943D242F5FA5 |
:105860003F4F08CC309521953F4FC1CC7095619545 |
:105870007F4F9DCC215F3F4F1DCC215F3F4F60CCC0 |
:105880002F5F3F4F3FCC709561957F4F72CF309522 |
:1058900021953F4F8ECF80913E0890913F088050D8 |
:1058A0009140EA8DFB8D8E0F9F1F90933F08809350 |
:1058B0003E08B7CF50954095309521953F4F4F4FBB |
:1058C0005F4F20CFD094C094B094A094A11CB11C81 |
:1058D000C11CD11C0FCF2B893C896FEF20303607BC |
:1058E0000CF09CCC80912E0890912F0880509F4FF7 |
:1058F000820F931F90932F0880932E088FCC6B9666 |
:105900000FB6F894DEBF0FBECDBFDF91CF911F91D0 |
:105910000F91FF90EF90DF90CF90BF90AF909F904E |
:105920008F907F906F905F904F903F902F90089551 |
:105930008091DA078B3F80F08B3F09F4EDC28C3FFA |
:1059400009F4C1C38D3F09F428C38E3F39F4809117 |
:1059500092048093A20302C08093A2038091D9078E |
:105960008B3F80F08B3F09F4C8C28C3F09F4D8C349 |
:105970008D3F09F403C38E3F39F4809192048093E4 |
:10598000A10302C08093A1038091A1038823B1F4F5 |
:105990001092A1038091DB078B3FC8F08B3F09F485 |
:1059A000B1C28C3F09F4C1C38D3F09F4ECC28E3FF4 |
:1059B00081F4809192048093A3030BC0843650F34A |
:1059C00084E68093A1038091DB078B3F38F78093B7 |
:1059D000A3038091A3038823B1F41092A3038091C1 |
:1059E000DD078B3FC8F08B3F09F491C28C3F09F46F |
:1059F00065C38D3F09F4CCC28E3F81F4809192043F |
:105A00008093A4030BC0843650F384E68093A303F1 |
:105A10008091DD078B3F38F78093A4038091E407E2 |
:105A20008B3F80F08B3F09F486C28C3F09F469C339 |
:105A30008D3F09F494C28E3F39F480919204809393 |
:105A4000A50302C08093A5038091E5078B3F80F0FA |
:105A50008B3F09F466C28C3F09F46CC38D3F09F497 |
:105A600083C28E3F39F4809192048093A70302C0D1 |
:105A70008093A7038091A7038B30B8F48AE08093CA |
:105A8000A7038091E6078B3FC0F08B3F09F44EC21D |
:105A90008C3F09F454C38D3F09F46BC28E3F79F4F7 |
:105AA000809192048093A8030AC08F3F51F780939E |
:105AB000A7038091E6078B3F40F78093A80380916E |
:105AC000E7078B3F80F08B3F09F4F4C18C3F09F46A |
:105AD00013C38D3F09F43EC28E3F39F48091920486 |
:105AE0008093A60302C08093A6038091EC078B3FAE |
:105AF00080F08B3F09F4E3C18C3F09F4D0C28D3FA5 |
:105B000009F487C28E3F39F4809192048093AA03EE |
:105B100002C08093AA038091ED078B3F80F08B3FFA |
:105B200009F4D2C18C3F09F497C28D3F09F462C2D7 |
:105B30008E3F39F4809192048093AC0402C080932C |
:105B4000AC048091EE078B3F80F08B3F09F49EC13F |
:105B50008C3F09F486C28D3F09F451C28E3F39F45F |
:105B6000809192048093AD0402C08093AD04809133 |
:105B7000EF078B3F80F08B3F09F48DC18C3F09F418 |
:105B800089C28D3F09F440C28E3F39F4809192045E |
:105B90008093AE0402C08093AE048091F0078B3FE7 |
:105BA00080F08B3F09F47CC18C3F09F46EC28D3FBD |
:105BB00009F439C28E3F39F4809192048093AF0486 |
:105BC00002C08093AF04809101088B3F80F08B3F2F |
:105BD00009F46BC18C3F09F435C28D3F09F428C22A |
:105BE0008E3F39F4809192048093B00402C0809378 |
:105BF000B004809102088B3F80F08B3F09F41EC1F6 |
:105C00008C3F09F424C28D3F09F417C28E3F39F44A |
:105C1000809192048093B10402C08093B10480917A |
:105C200003088B3F80F08B3F09F40DC18C3F09F4D2 |
:105C300027C28D3F09F4F2C18E3F39F4809192045E |
:105C40008093B20402C08093B204809104088B3F19 |
:105C500080F08B3F09F4FCC08C3F09F40CC28D3FEF |
:105C600009F4C3C18E3F39F4809192048093B30448 |
:105C700002C08093B3048091F1078B3F80F08B3F8B |
:105C800009F4EBC08C3F09F423C28D3F09F49EC197 |
:105C90008E3F39F4809192048093AB0302C08093CD |
:105CA000AB038091F6078B3F80F08B3F09F4DAC09D |
:105CB0008C3F09F412C28D3F09F48DC18E3F39F437 |
:105CC000809192048093AC0302C08093AC038091D6 |
:105CD000F9078B3F80F08B3F09F4C9C08C3F09F472 |
:105CE000C5C18D3F09F47CC18E3F39F48091920487 |
:105CF0008093AD0302C08093AD038091FA078B3F80 |
:105D000080F08B3F09F4B8C08C3F09F4D2C18D3FBD |
:105D100009F44DC18E3F39F4809192048093AE0313 |
:105D200002C08093AE038091FB078B3F80F08B3FD6 |
:105D300009F4A7C08C3F09F4D5C18D3F09F43CC1DB |
:105D40008E3F39F4809192048093AF0302C0809318 |
:105D5000AF03809100088B3F80F08B3F09F4B9C0FE |
:105D60008C3F09F4C4C18D3F09F42BC18E3F39F437 |
:105D7000809192048093B00302C08093B00380911D |
:105D800006088B3F80F08B3F09F4A8C08C3F09F4D4 |
:105D90008BC18D3F09F406C18E3F39F48091920486 |
:105DA0008093590802C08093590880915908823025 |
:105DB00008F440C08F3FB9F1809108088B3F80F014 |
:105DC0008B3F09F490C08C3F09F4A0C18D3F09F4CA |
:105DD000B7C08E3F39F48091920480936D0802C061 |
:105DE00080936D0880916D08823000F18F3FC1F083 |
:105DF000809119088B3F88F08B3F09F479C08C3F64 |
:105E000009F489C18D3F09F4A0C08E3F09F09CC1FF |
:105E10008091920480937E0897C180937E0894C1FC |
:105E200080936D08E5CF80935908C6CF81E08093B9 |
:105E30006D08DECF81E080935908BECF80918C043D |
:105E40008093B104ECCE80918C048093B204FDCE9B |
:105E500080918C048093B3040ECF80918C04809346 |
:105E6000AB031FCF80918C048093AC0330CF809123 |
:105E70008C048093AD0341CF80918C048093AE035A |
:105E800052CF80918C048093AF0363CF80918C04B8 |
:105E90008093AD046CCE80918C048093AE047DCE53 |
:105EA00080918C048093AF048ECE80918C0480937B |
:105EB000B0049FCE80918C048093A60316CE80916F |
:105EC0008C048093AA0327CE80918C048093AC0429 |
:105ED00038CE80918C048093B00351CF80918C0494 |
:105EE0008093590862CF80918C0480936D087ACF9B |
:105EF00080918C0480937E0827C180918C048093CC |
:105F0000A10342CD80918C048093A30362CD809144 |
:105F10008C048093A40382CD80918C048093A2038F |
:105F20001DCD80918C048093A703A4CD80918C0417 |
:105F30008093A803C4CD80918C048093A50384CD65 |
:105F40008091900480936D084DCF80919004809350 |
:105F50007E08FAC0809190048093A603C6CD8091FC |
:105F600090048093A50370CD809190048093A70343 |
:105F700081CD809190048093A803A1CD809190045D |
:105F80008093A10301CD809190048093A30321CD40 |
:105F9000809190048093A40341CD809190048093DC |
:105FA000A203DCCC8091900480935908FECE8091AE |
:105FB00090048093AE03B7CE809190048093AF039A |
:105FC000C8CE809190048093B003D9CE8091900484 |
:105FD0008093AB0366CE809190048093AC0377CE20 |
:105FE000809190048093AD0388CE8091900480933B |
:105FF000B30441CE809190048093AC04A2CD8091F3 |
:1060000090048093AD04B3CD809190048093AE044E |
:10601000C4CD809190048093AA037DCD809190049B |
:106020008093B20412CE809190048093AF04CBCDC4 |
:10603000809190048093B004DCCD80919004809393 |
:10604000B104EDCD80918E048093B004D2CD8091C7 |
:106050008E048093B104E3CD80918E048093AC04D0 |
:1060600070CD80918E048093AD0481CD80918E049B |
:106070008093AD0342CE80918E048093B304FBCD18 |
:1060800080918E048093B204E0CD80918E04809341 |
:10609000AF0499CD80918E048093AE047ECD809123 |
:1060A0008E048093AA0337CD80918E048093590883 |
:1060B0007CCE80918E048093AE0335CE80918E0489 |
:1060C0008093A403ABCC80918E048093A20346CC32 |
:1060D00080918E048093AB03E4CD80918E048093F5 |
:1060E000AC03F5CD80918E048093AF0332CE8091C6 |
:1060F0008E048093B00343CE80918E048093A603D8 |
:10610000F4CC80918E048093A5039ECC80918E0464 |
:1061100080936D0867CE80918E0480937E0814C0B2 |
:1061200080918E048093A1032FCC80918E04809364 |
:10613000A3034FCC80918E048093A7039BCC8091C6 |
:106140008E048093A803BBCC6091AA0370E06F5FBC |
:106150007F4F8CE398E20E9421567093A0036093D6 |
:106160009F038091E20780936E088091E1078093FE |
:106170004408089580919D04882361F510927D085C |
:10618000109250081092630810924A0810924B081F |
:10619000109265088091D203882321F080937D08B6 |
:1061A000809363088091D503882311F080934B0876 |
:1061B0008091D303882321F08093500880934A086C |
:1061C0008091D403882361F48091C0048C7F8093F4 |
:1061D000C00409C08091C00481608093C00403C0E2 |
:1061E00080936508F1CF8091300890E0909352073A |
:1061F0008093510780913D0890E0909354078093DD |
:1062000053078091660890E0909356078093550756 |
:106210008091610890E090935807809357071092FF |
:106220002804109229040E94B5210895809100014C |
:106230008D3009F443C110927A008091FE03909151 |
:10624000FF0390933F0880933E0880910004909153 |
:10625000010490932F0880932E088091020490915E |
:1062600003049093700880936F0860910604709106 |
:106270000704882777FD8095982F26E030E040E0DE |
:1062800050E00E94E25570936B0860936A08609139 |
:10629000040470910504882777FD8095982F0E944B |
:1062A000E25570937B0860937A088091080490917E |
:1062B000090490934D0880934C088FEC80937A00EA |
:1062C0008091D307E82FF0E0EE0FFF1FE356F84F61 |
:1062D00080819181A0918C04B0918D0482599F4F4F |
:1062E000A817B9070CF0C4C01196B0938D04A09301 |
:1062F0008C048091D407E82FF0E0EE0FFF1FE356E7 |
:10630000F84F8081918160918E0470918F04825941 |
:106310009F4F681779070CF098C06F5F7F4F70939D |
:106320008F0460938E048091D507E82FF0E0EE0F84 |
:10633000FF1FE356F84F8081918140919004509166 |
:10634000910482599F4F481759070CF06BC04F5F5B |
:106350005F4F50939104409390048091D607E82FAB |
:10636000F0E0EE0FFF1FE356F84F808191812091FE |
:1063700092043091930482599F4F281739074CF5A6 |
:106380002F5F3F4F3093930420939204B7FD33C0A7 |
:10639000AF3FB10511F00CF08AC077FD32C06F3FFE |
:1063A000710511F00CF07CC057FD31C04F3F510515 |
:1063B00011F00CF06EC037FD30C02F3F310509F0F1 |
:1063C0000CF47FC08FEF90E090939304809392043D |
:1063D00078C08081918182599F4F82179307B4F6CC |
:1063E0002115310599F221503040309393042093C8 |
:1063F0009204B7FFCDCF10928D0410928C0477FFDA |
:10640000CECF10928F0410928E0457FFCFCF1092F0 |
:1064100091041092900437FFD0CF10929304109201 |
:1064200092044FC08081918182599F4F84179507B4 |
:106430000CF093CF4115510509F48FCF41505040D6 |
:10644000509391044093900488CF80819181825928 |
:106450009F4F861797070CF066CF6115710509F4F9 |
:1064600062CF6150704070938F0460938E045BCF55 |
:106470008081918182599F4F8A179B070CF039CFF9 |
:10648000109709F436CF1197B0938D04A0938C0424 |
:1064900030CF8FEF90E090939104809390048BCF56 |
:1064A0008FEF90E090938F0480938E047DCF8FEFD9 |
:1064B00090E090938D0480938C046FCF0E94371AE4 |
:1064C000BACE6091FC0770E080E090E024EC39E007 |
:1064D00040E050E00E94E255609397037093980368 |
:1064E0008093990390939A036091FD0770E080E098 |
:1064F00090E00E94E25560939B0370939C0380930D |
:106500009D0390939E0308956F927F928F929F9226 |
:10651000AF92BF92CF92DF92EF92FF920F931F93B1 |
:10652000CF93DF931092E803469A10923A041092A8 |
:10653000390410923C0410923B0480E090E0A0E00B |
:10654000B0E080933F0490934004A0934104B09343 |
:1065500042041092300410922F04109232041092D0 |
:106560003104109234041092330410925F08109298 |
:106570005E081092AD031092AE0310920B040E94BD |
:10658000163184E690E00E94A9120E941631809193 |
:10659000D70780FF10C08091180390911903875B83 |
:1065A000934008F0D8C080911803909119038E5E33 |
:1065B000924008F4D0C0EE24CC24DD24C0E0D0E02A |
:1065C00000E010E08AE090E00E94A91280910204AD |
:1065D00090910304C80ED91E8091FE039091FF0391 |
:1065E000C80FD91F8091000490910104080F191F52 |
:1065F000E39480E2E81631F7AE01405F5F4F5695B5 |
:106600004795569547955093300440932F04980131 |
:10661000205F3F4F36952795369527953093320466 |
:1066200020933104C6014096969587959295829560 |
:106630008F7089279F708927909334048093330447 |
:1066400090935F0880935E0830933604209335045E |
:10665000509338044093370444E050E0DA010E943C |
:106660007156802D853078F180917A0890917B0861 |
:1066700097FD78C06CE070E00E94215670933C0456 |
:1066800060933B0480916A0890916B0897FD66C007 |
:106690006CE070E00E94215670933A0460933904D4 |
:1066A00060917D0770917E07882777FD8095982FF0 |
:1066B0000E942A5560933F047093400480934104E4 |
:1066C0009093420453C0DA010E947156802D4F5FAF |
:1066D0005F4FDA010E947156202D90E0982F882795 |
:1066E000820F911D90933A04809339044F5F5F4F5E |
:1066F000DA010E947156802D4F5F5F4FDA010E94D0 |
:106700007156202D90E0982F8827820F911D90932D |
:106710003C0480933B044F5F5F4FDA010E94715647 |
:10672000602D4F5F5F4FDA010E947156202D70E09F |
:10673000762F6627620F711D882777FD8095982F29 |
:106740000E942A5560933F04709340048093410453 |
:10675000909342040BC00E94FE1A2DCF9095819514 |
:106760009F4F96CF909581959F4F84CF10923F0871 |
:1067700010923E0810922F0810922E081092700866 |
:1067800010926F0884E690E00E94A91260910604BE |
:1067900070910704882777FD8095982F26E030E0D8 |
:1067A00040E050E00E94E2553B014C0170936B08C1 |
:1067B00060936A086091040470910504882777FD4E |
:1067C0008095982F0E94E2555B016C0170937B08C5 |
:1067D00060937A08E090E307FF2400E010E088244B |
:1067E00077FC8094982CC401B301A80197010E9402 |
:1067F000E2553B014C01609345047093460480933D |
:10680000470490934804CC24B7FCC094DC2CC60108 |
:10681000B5010E94E25560934D0470934E0480933D |
:106820004F04909350046092690470926A048092BD |
:106830006B0490926C046093710470937204809363 |
:10684000730490937404109275041092760410925D |
:106850007704109278048091140390911503A0910D |
:106860001603B09117039093800780937F071092CF |
:106870000D0410920C0410927D0410927E0410926C |
:106880007F041092800480918104909182049093FF |
:106890008404809383040E94BF4E82E390E090932F |
:1068A000E6038093E5036091FC0770E080E090E0F0 |
:1068B00024EC39E040E050E00E94E2556856754C07 |
:1068C0008F4F9F4F60939703709398038093990322 |
:1068D00090939A036091FD0770E080E090E00E9441 |
:1068E000E2556856754C8F4F9F4F60939B03709392 |
:1068F0009C0380939D0390939E031092B203109289 |
:10690000B1036091810470918204882777FD80959E |
:10691000982F2091B3033091B4034091B503509167 |
:10692000B6030E94E25560937608709377088093CF |
:1069300078089093790810928B0410928A0411E0E1 |
:10694000109301010E941F528091C00484608093C3 |
:10695000C0048FEF8093E0081092E10880E28093FA |
:10696000E208E091D307F0E0EE0FFF1FE356F84F87 |
:106970008081918182599F4F90938D0480938C04E4 |
:10698000E091D407F0E0EE0FFF1FE356F84F80814F |
:10699000918182599F4F90938F0480938E04E09150 |
:1069A000D507F0E0EE0FFF1FE356F84F808191818D |
:1069B00082599F4F9093910480939004E091D60761 |
:1069C000F0E0EE0FFF1FE356F84F8081918182596E |
:1069D0009F4F90939304809392041093E80384E66E |
:1069E00080939404DF91CF911F910F91FF90EF90CE |
:1069F000DF90CF90BF90AF909F908F907F906F90DF |
:106A000008951F93182F11501F3FA9F080919D04E6 |
:106A1000882329F010C080919D04882361F484E6C6 |
:106A200090E09093E6038093E5038AEF90E00E9464 |
:106A30009C12115080F71F91089588EE8093D7071C |
:106A40003EE13093D8078BEF8093DA078AE080939A |
:106A5000DB073093D9073093DD0793E09093DC0791 |
:106A600058E05093DE0720E12093DF0766E0609353 |
:106A7000E0075093E10786EE8093E2073093E30747 |
:106A800080E88093E40744E64093E50788E7809335 |
:106A9000E6079093E7078EE58093E80783E280930B |
:106AA000E90784E18093EA071092EB072093EC0753 |
:106AB0001092ED071092EE071092EF071092F00778 |
:106AC0001092010810920208109203081092040814 |
:106AD0004093F10788E28093F20710921B0892E33B |
:106AE0009093F30786E98093F40785E08093F50798 |
:106AF0009093F6072AE52093F7079093F8071092F2 |
:106B00001A082093F90783E48093FA0786E48093B8 |
:106B1000FB0785E58093FC078093FD0780E2809367 |
:106B2000FE078093FF07909300088FE58093050888 |
:106B300083EF8093070830930608309308088DEFA1 |
:106B40008093090840930A0820930B0820930C08AF |
:106B500020930D088BE480930E0880930F08809398 |
:106B60001008109211086093120850931308209394 |
:106B7000140830931508409316084093170884E0D2 |
:106B800080931808A0E2B8E0EAE7F3E08CE0019017 |
:106B90000D928150E1F7089588E68093D7075EE172 |
:106BA0005093D8078BEF8093DA078AE08093DB0756 |
:106BB0005093D9075093DD0793E09093DC078CE066 |
:106BC0008093DE0780E18093DF0776E07093E00733 |
:106BD00068E06093E10786EE8093E2075093E30755 |
:106BE00080E88093E40780E58093E50788E7809359 |
:106BF000E6079093E7078EE58093E80783E28093AA |
:106C0000E9075093EA071092EB0730E23093EC0764 |
:106C10001092ED071092EE071092EF071092F00716 |
:106C200010920108109202081092030810920408B2 |
:106C300044E64093F10788E28093F20710921B0824 |
:106C400092E39093F30786E98093F40785E08093BD |
:106C5000F5079093F6072AE52093F7079093F80736 |
:106C600010921A082093F90783E48093FA078CE3C3 |
:106C70008093FB0785E58093FC078093FD073093A5 |
:106C8000FE073093FF079BE4909300088FE5809305 |
:106C9000050883EF8093070884E1809306088093BA |
:106CA00008088DEF8093090840930A0820930B0889 |
:106CB00020930C0820930D0890930E0890930F08D2 |
:106CC00090931008109211087093120860931308A3 |
:106CD0002093140850931508409316084093170802 |
:106CE00084E080931808A0E2B8E0E4E8F3E08CE0E8 |
:106CF00001900D928150E1F7089588E68093D707BF |
:106D00003EE13093D8078BEF8093DA078AE08093D7 |
:106D1000DB073093D9073093DD07E4E0E093DC072D |
:106D20005FE05093DE073093DF078CE08093E0074D |
:106D300078E07093E10786EE8093E2073093E307F3 |
:106D400080E88093E40780E58093E50726E92093B7 |
:106D5000E60783E08093E7078EE58093E80783E208 |
:106D60008093E9073093EA071092EB0760E26093A3 |
:106D7000EC071092ED071092EE071092EF071092B9 |
:106D8000F007109201081092020810920308109266 |
:106D9000040844E64093F10788E28093F2071092DA |
:106DA0001B0892E39093F3072093F40785E0809308 |
:106DB000F5079093F6072AE52093F7079093F807D5 |
:106DC00010921A082093F90783E48093FA0710922F |
:106DD000FB0785E58093FC078093FD0780E18093A6 |
:106DE000FE076093FF07409300088FE58093050836 |
:106DF00083EF8093070850930608509308088DEF9F |
:106E00008093090840930A0820930B0820930C08EC |
:106E100020930D088BE480930E0880930F088093D5 |
:106E200010081092110886E08093120870931308DE |
:106E300020931408309315084093160840931708C0 |
:106E4000E0931808A0E2B8E0ECE8F3E08CE00190F1 |
:106E50000D928150E1F708952F923F924F925F92E9 |
:106E60006F927F928F929F92AF92BF92CF92DF925A |
:106E7000EF92FF920F931F93CF93DF93CDB7DEB7BF |
:106E8000E0970FB6F894DEBF0FBECDBF0E940D2471 |
:106E9000409100014C3008F054C7299A20919B047E |
:106EA00030919C0480914408682F70E0665F7F4FAA |
:106EB000798B688B6217730714F4398B288B809158 |
:106EC0009404843608F0EFC380910501882349F4C7 |
:106ED0008091090390910A038F5F9F4F11F40C94E6 |
:106EE00091498091E2049091E304009709F436C738 |
:106EF00001979093E3048093E2044A3009F435C784 |
:106F0000443109F432C728988091BE049091BF049F |
:106F1000895E934010F40C94DE458091E907E82FD8 |
:106F2000F0E0F98BE88BF1E0F0938704A091CF07B4 |
:106F3000B0E0AA0FBB1FFD01ED54F84F1182108283 |
:106F4000E091D0072E2F30E0220F331FC9018D545E |
:106F5000984FFC0111821082A356B84F11961C92D3 |
:106F60001E922356384FD90111961C921E92E09121 |
:106F7000D207F0E0EE0FFF1FE356F84F11821082A8 |
:106F800080917903815080937903809179038F3FB9 |
:106F900009F4D0C4B0918704BFA3BB2309F0CAC4CD |
:106FA000B091D7072091A704222311F40C94ED4946 |
:106FB0008091F60790E0688979898617970714F41D |
:106FC000998B888B71E0709389048B2F90E09B875D |
:106FD0008A879FA19923B1F010929A041092990484 |
:106FE00010929604109295041092980410929704AF |
:106FF0008AE580937408A8E7A09360081092A7041C |
:107000001092A60420914504309146044091470413 |
:107010005091480429833A834B835C834091530801 |
:107020005091540860915508709156084BA75CA781 |
:107030006DA77EA789819A81AB81BC81480F591FBA |
:107040006A1F7B1F40935308509354086093550860 |
:107050007093560820914D0430914E0440914F0496 |
:10706000509150042D833E834F83588720905A08B7 |
:1070700030905B0840905C0850905D08220E331EF3 |
:10708000441E551E20925A0830925B0840925C08BC |
:1070900050925D084091490450914A0460914B041C |
:1070A00070914C044BA35CA36DA37EA38091460812 |
:1070B00090914708A0914808B0914908840F951F06 |
:1070C000A61FB71F8093460890934708A0934808CF |
:1070D000B093490860915104709152048091530417 |
:1070E000909154046F8F78A389A39AA38091360856 |
:1070F00090913708A0913808B09139082F8D38A1A8 |
:1071000049A15AA1820F931FA41FB51F809336086F |
:1071100090933708A0933808B09339083091A604AB |
:107120003987332311F40C94CC43109255041092F8 |
:107130005604109257041092580410925904109259 |
:107140005A0410925B0410925C041092530810923F |
:107150005408109255081092560810925A0810922E |
:107160005B0810925C0810925D081092460810921D |
:107170004708109248081092490810923608109259 |
:107180003708109238081092390880916504909160 |
:107190006604A0916704B091680480936904909399 |
:1071A0006A04A0936B04B0936C0480916D04909179 |
:1071B0006E04A0916F04B091700480937104909359 |
:1071C0007204A0937304B093740410920F0410928D |
:1071D0000E041092A5041092A4041092A30410921D |
:1071E000A2045091A70458A780910E0490910F0417 |
:1071F0008F3F910509F010F40C94B743B985BB2378 |
:1072000029F4E8A5EE2311F40C9484461092A3040B |
:107210001092A2041092A5041092A40419A6109230 |
:107220008904209153083091540840915508509199 |
:1072300056082BA73CA74DA75EA720905A08309070 |
:107240005B0840905C0850905D08309160083AA758 |
:10725000332341F41092A3041092A2041092A504C7 |
:107260001092A4044BA55CA56DA57EA54093C50412 |
:107270005093C6046093C7047093C8042092C1045D |
:107280003092C2044092C3045092C4041092550438 |
:1072900010925604109257041092580410925904F8 |
:1072A00010925A0410925B0410925C0410925D04D8 |
:1072B00010925E0410925F041092600410925308C2 |
:1072C00010925408109255081092560810925A08BD |
:1072D00010925B0810925C0810925D0810924608AC |
:1072E00010924708109248081092490810923608E8 |
:1072F00010923708109238081092390810920F0433 |
:1073000010920E04E0909904F0909A046701F7FE41 |
:1073100002C00C94C64370E1C716D10464F088EE35 |
:1073200093E090939603809395038A8584FD03C030 |
:1073300081E08093DB040091E007B701882777FDA7 |
:107340008095982F202F30E040E050E00E94E255D9 |
:107350009601442737FD4095542F0E94E25520E0C6 |
:1073600032E040E050E00E94565610E00E9DB00121 |
:107370000F9D700D1E9D700D112477FF02C00C949F |
:10738000EB457595679575956795260F371FA9018C |
:10739000662757FD6095762F4A8F5B8F6C8F7D8FA8 |
:1073A0004093F4045093F5046093F6047093F7044B |
:1073B0008091750490917604A0917704B09178043F |
:1073C000841B950BA60BB70B8093750490937604E2 |
:1073D000A0937704B0937804813553EC950750E07F |
:1073E000A50750E0B50714F40C94A24380E593EC94 |
:1073F000A0E0B0E08093750490937604A0937704A6 |
:10740000B0937804209081043090820421143104D8 |
:1074100009F4ADC47A8573FFAAC469817A818B812E |
:107420009C8120E032E040E050E00E945656890105 |
:1074300037FF02C00C94AE496D817E818F819885A3 |
:1074400020E032E040E050E00E945656690137FFEC |
:1074500002C00C94A849C016D10614F40C944F49EC |
:10746000409076085090770860907808709079087E |
:107470008091B3039091B403A091B503B091B6038A |
:107480008E8B9F8BA88FB98F80906F08909070081B |
:10749000C40197FE02C00C949F498138910514F0F5 |
:1074A0000C943449ACE1B2E02A0E3B1E7101002776 |
:1074B000F7FC0095102FE4EEFDEF2E0E3F1EC301EA |
:1074C000B2012E893F89488D598D0E945656E21A85 |
:1074D000F30A040B150BC801B70128E631E040E0C0 |
:1074E00050E00E945656645B70408B01000F111FE4 |
:1074F000000F111F000F111F2091DB04E090950376 |
:10750000F0909603E114F10491F4F9E1CF16D1045F |
:1075100074F480918A0490918B04860F971F909346 |
:107520008B0480938A04222311F00C94664BB601DD |
:10753000D7FE02C00C94284A759567957595679596 |
:10754000759567956F5F7F4FC8010E9421569B011B |
:10755000A901662757FD6095762F440D551D661DC0 |
:10756000771D40937608509377086093780870935E |
:1075700079088091A503A82EBB24CA9C9001CB9CBE |
:10758000300DDA9C300D112437FF02C00C94244AD0 |
:1075900035952795359527953595279535952795D3 |
:1075A000359527956501C21AD30AD7FE02C00C94FF |
:1075B0001C4AE114F10411F00C94E4496090BC04FD |
:1075C0007090BD048091BA049091BB04680E791E3E |
:1075D00077FE02C00C94414D75946794759467943E |
:1075E00075946794A0E4B0E06A0E7B1E80918304DA |
:1075F00090918404AA2797FDA095BA2F1CE1E12E53 |
:1076000012E0F12E012D112DE81AF90A0A0B1B0BBD |
:10761000CB01BA012E893F89488D598D0E9456565B |
:10762000E20EF31E041F151FC801B70128E631E062 |
:1076300040E050E00E945656645B70406C9DC00173 |
:107640006D9D900D7C9D900D1124B3010E942156DB |
:107650009501220F331F2A0D3B1D2617370714F4FF |
:107660000C942C4A309521953F4F621773070CF408 |
:10767000B9019B01442737FD4095542F8091750433 |
:1076800090917604A0917704B0917804820F931FB3 |
:10769000A41FB51F8093750490937604A09377047C |
:1076A000B093780468C3809194048D3808F468CC52 |
:1076B000109287048091EA0722E3829FC00111247F |
:1076C0009093E3048093E204E889F989B9978CF0F8 |
:1076D00080919D04882369F08091BE049091BF043D |
:1076E000FFEF8F3F9F0779F001969093BF0480933F |
:1076F000BE048091BE049091BF048F3F910509F0B4 |
:1077000010F40C945A498091C00482608093C004A4 |
:107710008091D107A82FB0E0AA0FBB1FFD01E3564F |
:10772000F84F80819181813591050CF4C4C080911E |
:107730009D04882309F0BFC08091D207E82FF0E0B4 |
:10774000EE0FFF1FE356F84F808191818C34910535 |
:1077500014F40C94CC4A8091E1048F5F8093E1048F |
:10776000893C08F4A8C04C3010F00C94734E299852 |
:1077700010929D041092E1041092BF041092BE0476 |
:107780008091CF07282F30E0220F331FF901E356F5 |
:10779000F84F808191818734910514F40C945E4EEA |
:1077A0008091D007A82FB0E0AA0FBB1FAD014356B0 |
:1077B000584FFA0180819181873491052CF0F901AD |
:1077C000E356F84F80819181FA018081918187345D |
:1077D000910514F40C94484EF901E356F84F80815A |
:1077E00091818734910514F40C94484E42E0FD01D8 |
:1077F000E356F84F80819181863491054CF4F9016C |
:10780000E356F84F80819181873491050CF043E075 |
:10781000FD01E356F84F808191818A5B9F4F4CF4C4 |
:10782000F901E356F84F80819181873491050CF07E |
:1078300044E0A356B84F8D919C918A5B9F4F4CF4C6 |
:107840002356384FD9018D919C91863491050CF4C3 |
:1078500045E0842F0E94B2028091D007A82FB0E0AB |
:10786000AA0FBB1FA356B84F8D919C9197FF02C0E2 |
:107870000C94804E4E9714F00C94134EE091CF0769 |
:10788000F0E0EE0FFF1FE356F84F808191818A5B95 |
:107890009F4F14F00C94134E81E08093920688EE73 |
:1078A00093E09093E6038093E5038091D107A82F9E |
:1078B000B0E0AA0FBB1FA356B84F8D919C918B5A75 |
:1078C0009F4F0CF05DCB8091D207C82EDD24CC0CED |
:1078D000DD1CF601E356F84F80819181855B9F4F57 |
:1078E00014F00C94004A8091E0048F5F8093E004D0 |
:1078F000893C10F00C94464A6DE977E0C60ED71E1D |
:10790000D6018D919C918C34910514F40C94044A09 |
:107910008091DF048F5F8093DF04893C08F430CBD3 |
:1079200010929D0488EC8093DF041092BF041092A3 |
:10793000BE0426CB0E94982C8091CF07A82EBB2492 |
:10794000AA0CBB1CF501E356F84F208131818091D0 |
:10795000DE07882E9924F501ED54F84F0190F0814F |
:10796000E02D8091DF07682F70E0289DA001299D00 |
:10797000500D389D500D11242091D1043091D20426 |
:10798000C901880F991F820F931F480F591F57FF76 |
:1079900002C00C9452499A01359527953595279543 |
:1079A000E69FC001E79F900DF69F900D1124280FD0 |
:1079B000391F3093D2042093D10480911C059091FB |
:1079C0001D0540911805509119056901C81AD90A79 |
:1079D000C41AD50AD0929604C09295048091D0071B |
:1079E000E82EFF24EE0CFF1CF701E356F84F8081D0 |
:1079F0009181F701ED54F84F0190F081E02D889DC1 |
:107A0000A001899D500D989D500D11242091CF0407 |
:107A10003091D004C901880F991F820F931F480F1E |
:107A2000591F57FF02C00C9456499A013595279566 |
:107A300035952795E69FC001E79F900DF69F900D25 |
:107A40001124280F391F3093D0042093CF04809144 |
:107A50001E0590911F0540911A0550911B05890143 |
:107A6000081B190B041B150B109398040093970423 |
:107A7000E091D207F0E0EE0FFF1FE356F84F808150 |
:107A80009181909581959F4F90939A04809399044A |
:107A9000833091050CF457C1029790939A04809318 |
:107AA0009904E091D107F0E0EE0FFF1FE356F84F85 |
:107AB0006080718028E730E0620E731E70929C0433 |
:107AC00060929B046091A70370E0882777FD809502 |
:107AD000982F0E942A5520E030E040E251E40E94B5 |
:107AE00093540E94FC54609374083091A80330931F |
:107AF000600880919E0680FF06C080917E088138D4 |
:107B000010F00C94274680919B0490919C0497FF61 |
:107B100002C00C94C849B091D707B2FF02C01092BE |
:107B2000600820919504309196044091BA045091D8 |
:107B3000BB04C90137FF02C00C94D34995958795C2 |
:107B40009595879597FF02C00C94CE494817590721 |
:107B500014F00C94D645C90137FF02C00C94174AA3 |
:107B600097FF02C00C94144A959587959595879533 |
:107B70009093BB048093BA048536910514F00C945D |
:107B80001F4620919704309198044091BC04509175 |
:107B9000BD04C90137FF02C00C94D649959587955D |
:107BA0009595879597FF02C00C94DF4948175907B0 |
:107BB00014F00C94CF45C90137FF02C00C940F4A52 |
:107BC00097FF02C00C940C4A9595879595958795DB |
:107BD0009093BD048093BC048536910514F00C94F9 |
:107BE0001746E0918704EFA3EE2341F01092BB0407 |
:107BF0001092BA041092BD041092BC04F701E3562F |
:107C0000F84F208131818091F707482F50E04217CB |
:107C1000530734F480911A0882FF02C00C94124674 |
:107C2000F701E356F84F208131818091F807BA01BE |
:107C3000681B71092617370714F41092A804F7017E |
:107C4000E356F84F8081918166277727641B750B77 |
:107C50008617970724F480911A0883FDDFC7809167 |
:107C6000A904882389F08DE997E0E80EF91EF70151 |
:107C7000208131818091F80790E0841B950B821759 |
:107C8000930714F40C948D49F501E356F84F808165 |
:107C900091814817590724F480911A0880FDBAC7CA |
:107CA000A091AB04AA2379F0F501E356F84F2081A7 |
:107CB00031818091F807FA01E81BF1092E173F077F |
:107CC00014F40C948449F501E356F84F80819181B6 |
:107CD0008617970724F480911A0881FD97C7809131 |
:107CE000AA04882389F02DE937E0A20EB31EF5011E |
:107CF000208131818091F80790E0841B950B8217D9 |
:107D0000930714F40C9489498091A804882329F4DA |
:107D10008091A904882309F476C7F1E0F093A704C1 |
:107D2000AA2329F48091AA04882309F468C781E072 |
:107D30008093A6041092A7041092A8041092A9049C |
:107D400037C92998ABC8EFEF8E3F9E070CF0D6C716 |
:107D5000029690939A0480939904A3CE10929D0466 |
:107D6000109287044A3009F0CBC8289ACDC8809079 |
:107D70006F08909070088091DC0481508093DC043F |
:107D80008F3F09F45AC6B9A5BB2381F01092F804BD |
:107D90001092F9041092FA041092FB041092FC0461 |
:107DA0001092FD041092FE041092FF04E985EE2368 |
:107DB00009F4B3C41F861E866624772428A52223CF |
:107DC00009F496C41D861C86222433248091310830 |
:107DD00090913208893C91050CF47EC488EC90E0C7 |
:107DE000909332088093310860913B0870913C0871 |
:107DF00078AB6FA7693C71050CF45FC4A8ECB0E0E8 |
:107E0000B8ABAFA7B0933C08A0933B08A090740810 |
:107E1000BB24CC24DD247C010027F7FC0095102F27 |
:107E2000EE0CFF1C001F111FEE0CFF1C001F111F8A |
:107E3000EE0CFF1C001F111FEE0CFF1C001F111F7A |
:107E4000EE0CFF1C001F111FEE0CFF1C001F111F6A |
:107E5000EE0CFF1C001F111F40903E0850903F0881 |
:107E60009201442737FD4095542FC601B5010E9469 |
:107E7000E255E60EF71E081F191FC801B70120E4DE |
:107E800030E040E050E00E9456562301420E531E5F |
:107E900050923F0840923E086FA578A97B010027C9 |
:107EA000F7FC0095102FEE0CFF1C001F111FEE0CAD |
:107EB000FF1C001F111FEE0CFF1C001F111FEE0CFA |
:107EC000FF1C001F111FEE0CFF1C001F111FEE0CEA |
:107ED000FF1C001F111FEE0CFF1C001F111F8091C3 |
:107EE0002E0890912F08DC01BD01882777FD809531 |
:107EF000982FA60195010E94E255E60EF71E081F75 |
:107F0000191FC801B70120E430E040E050E00E94B2 |
:107F10005656220E331E38AA2FA630922F082092D2 |
:107F20002E08880C991C880C991CB401882777FDB1 |
:107F30008095982FA60195010E94E25520E430E03B |
:107F400040E050E00E94565679018A01BAA56B2F95 |
:107F500070E080E090E020916104309162044091F3 |
:107F60006304509164040E94E25520EE3BEA40E035 |
:107F700050E00E9456564701820E931E9092700860 |
:107F800080926F08E1E04E16E0E45E060CF487C3D1 |
:107F9000412C10E4512E50923F0840923E082FA5EC |
:107FA00038A9215030440CF46BC360E070E478AB26 |
:107FB0006FA770932F0860932E08F1E08F16F0E4FE |
:107FC0009F060CF44FC3812CA0E49A2E9092700867 |
:107FD00080926F08C888D988CC0CDD1CCC0CDD1CC5 |
:107FE0003A8530FFDFC031FF1BC080911A0884FD45 |
:107FF00002C00C943D498091A20381558B3310F04F |
:108000000C9443498091B70381508093B7038F3F0D |
:1080100011F40C94334C20919E0430919F041FC0A6 |
:108020008091A2032091B1033091B203280F311D3A |
:108030008091DC0790E0BC01269FC001279F900D36 |
:10804000369F900D112444979093A1048093A0042F |
:1080500081E08093880420919E0430919F047FA149 |
:10806000772321F01092A1041092A0044091A00463 |
:108070005091A104421753070CF094C080918804DA |
:10808000882309F48FC08091A30390E0241B350B53 |
:10809000DC01A29FC001A39F900DB29F900D1124FF |
:1080A00097FF02C00C945B4C3C01759467947594E7 |
:1080B0006794A0900C04B0900D0460917D047091C1 |
:1080C0007E0480917F0490918004E090A403FF24BB |
:1080D00000E010E020E830E040E050E00E9456561A |
:1080E000C801B7010E94E25520E230E040E050E0D4 |
:1080F0000E945656A901285E3E4F14F448EE5EEFEA |
:108100002091DD043091DE04C901880F991F820F90 |
:10811000931FBC01660F771F660F771F680F791FCB |
:108120009501B7FE02C00C94574C35952795CB01AD |
:10813000821B930B9A014951514014F028E131E020 |
:10814000821B930B9C01C60186199709280F391FC2 |
:1081500037FF02C00C94534C3595279535952795DC |
:1081600035952795359527953093DE042093DD04CA |
:108170008091D807682F70E0660F771F660F771F12 |
:108180002617370714F00C94F949C616D70614F0D1 |
:108190000C948B4BD092DE04C092DD04C090DD04C1 |
:1081A000D090DE0480916E08282F30E03D8B2C8B20 |
:1081B000A901440F551F440F551FCA018055904017 |
:1081C0008C159D050CF46C01D0924807C0924707AE |
:1081D0006A8D7B8D8C8D9D8D660F771F881F991FF3 |
:1081E000660F771F881F991F7401E61AF70A71EA54 |
:1081F000C716D1040CF428C29601359527952E1583 |
:108200003F0584F0F601D7FE02C00C94A549F59510 |
:10821000E795222733272E1B3F0B2E153F0514F41D |
:108220000C943A49CA018C199D09821793070CF4E2 |
:108230009C01C601841B950B3901281739070CF4E2 |
:108240003C018091950490919604481A590A5B8AE2 |
:108250004A8A5092520840925108AAA5AA2309F4CA |
:10826000D7C1EE85FF85E81BF90BCF01AA2797FD43 |
:10827000A095BA2FE090FC04F090FD040091FE045C |
:108280001091FF04E80EF91E0A1F1B1FE092FC0468 |
:10829000F092FD040093FE041093FF0431E0E31616 |
:1082A0003AEFF30630E0030730E013070CF496C111 |
:1082B000E12C2AEFF22E012D112DE092FC04F09218 |
:1082C000FD040093FE041093FF0480919F0390919E |
:1082D000A0031C01442437FC4094542CB30177FCC8 |
:1082E00071C477FD75C4759567956C0D7D1D8827E4 |
:1082F00077FD8095982F2091B00330E040E050E06A |
:108300000E94E25520E430E040E050E00E945656E2 |
:10831000590188249924821A930A80919704909194 |
:1083200098046FA578A9681B790B78AB6FA7709339 |
:108330002D0860932C087AA5772309F433C1AC8506 |
:10834000BD85A81BB90BFD01CF01AA2797FDA095FC |
:10835000BA2F2091F8043091F9044091FA04509119 |
:10836000FB04280F391F4A1F5B1F2093F80430932A |
:10837000F9044093FA045093FB0421306AEF360766 |
:1083800060E0460760E056070CF4F6C020E03AEFE4 |
:1083900040E050E02093F8043093F9044093FA044D |
:1083A0005093FB04CA01B901A20191010E945656E3 |
:1083B0006FA578A9620F731F95016A157B050CF4F0 |
:1083C0009B01C401821693060CF4C90163E070E0BE |
:1083D0000E94215678AB6FA7C801B701A201910195 |
:1083E0000E9456568A899B89820F931F95018A1590 |
:1083F0009B050CF49C01C401821693060CF4C90180 |
:10840000880F991F880F991F67E070E00E9421561E |
:108410008B010C0D1D1D8FA598A997FDEEC3AC0116 |
:1084200055954795DA01A619B709CD01800F911F1F |
:1084300097FDE1C39C01359527953595279580914A |
:10844000440890E0281739070CF08EC09C01209357 |
:108450007D089601261B370BB901241B350B260D11 |
:10846000371D37FDC5C335952795359527952817B1 |
:1084700039070CF071C09C01209350089801241B0F |
:10848000350B260D371D37FDB0C33595279535952E |
:108490002795281739070CF04FC09C0120936308DB |
:1084A0006A0F7B1F77FD55C0759567957595679524 |
:1084B00068177907D4F5BC0160934A089601EFA5C7 |
:1084C000F8A92E1B3F0B2619370937FD8BC33595AD |
:1084D0002795359527952817390704F59C01209392 |
:1084E0004B0893012C0D3D1D6FA578A9260F371F52 |
:1084F00037FD75C335952795359527952817390785 |
:1085000014F40C94A44EC901AC89BD89A217B30719 |
:1085100014F00C94A44ECD010C94A44E4C895D89AA |
:1085200042175307E4F69A01DACFAC89BD89A61742 |
:10853000B70714F6BD01C0CF4C895D8942175307B8 |
:108540000CF0ACCF9A01209363086A0F7B1F77FF72 |
:10855000ABCF6D5F7F4FA8CFEC89FD89E217F307A2 |
:108560000CF08ACF9F0188CFEC89FD89E217F307D1 |
:108570000CF06DCF9F016BCF203076E037077FEF97 |
:1085800047077FEF57070CF00DCF20E036E04FEFA5 |
:108590005FEF2093F8043093F9044093FA0450936A |
:1085A000FB0400CF2FA538A9C901AA2797FDA095E4 |
:1085B000BA2F2091F8043091F9044091FA045091B7 |
:1085C000FB04280F391F4A1F5B1F2093F8043093C8 |
:1085D000F9044093FA045093FB04CFCE40E0E41634 |
:1085E00046E0F4064FEF04074FEF14070CF06DCE92 |
:1085F000E12C96E0F92E9FEF092F9FEF192FE092C3 |
:10860000FC04F092FD040093FE041093FF045DCE81 |
:108610002A893B89C901AA2797FDA095BA2FE09026 |
:10862000FC04F090FD040091FE041091FF04E80E9C |
:10863000F91E0A1F1B1FE092FC04F092FD04009338 |
:10864000FE041093FF042ACE97018FEF203B3807DA |
:1086500014F420EB3FEF213531050CF4E3CD20E598 |
:1086600030E0E0CD20E0821620EC92060CF0B2CC97 |
:10867000812CF0EC9F2E9092700880926F08AACC0B |
:108680008FA598A98050904C0CF097CCE0E0F0ECCE |
:10869000F8ABEFA7F0932F08E0932E088ECCF0E014 |
:1086A0004F16F0EC5F060CF07ACC412CB0EC5B2E50 |
:1086B00050923F0840923E0872CCEFA5F8A9E853CB |
:1086C000FF4F0CF0A3CB48E35FEF58AB4FA750939D |
:1086D0003C0840933B089ACB4FEF883394070CF04B |
:1086E00083CB88E39FEF90933208809331087CCB53 |
:1086F0003AA5632F70E080E090E02D813E814F81AC |
:1087000058850E94E25528EF3AE240E050E00E948E |
:1087100056563D872C87190159CBFAA56F2F70E06B |
:1087200080E090E029813A814B815C810E94E25592 |
:1087300028EF3AE240E050E00E9456563F872E87ED |
:1087400039013CCB805B9C43AF4FBF4F14F00C947E |
:10875000023A80EB9CE3AFEFBFEF809375049093F8 |
:108760007604A0937704B09378040C94023A509165 |
:10877000890459A7609160086AA7E0909904F09075 |
:108780009A046701F7FC02C00C948B39CC24DD24D9 |
:10879000CE18DF080C948B394091A70448A74423D6 |
:1087A00009F45EC0109255041092560410925704BA |
:1087B000109258041092590410925A0410925B04BB |
:1087C00010925C04109253081092540810925508AD |
:1087D0001092560810925A0810925B0810925C088A |
:1087E00010925D08109246081092470810924808AF |
:1087F00010924908109236081092370810923808E3 |
:10880000109239088091650490916604A0916704E4 |
:10881000B09168048093690490936A04A0936B04F8 |
:10882000B0936C0480916D0490916E04A0916F04DC |
:10883000B09170048093710490937204A0937304B8 |
:10884000B093740410920F0410920E041092A504B9 |
:108850001092A4041092A3041092A2040C94F43871 |
:1088600080917D0790917E078150924014F40C9482 |
:10887000F4388091E0088F3F09F453C7E090E30794 |
:10888000FF2400E010E0A82EBB24A7FCB094CB2C62 |
:10889000DB2C69817A818B819C81A80197010E94E0 |
:1088A000565680916A0890916B08AA2797FDA0956B |
:1088B000BA2F281B390B4A0B5B0BCA01B901A60161 |
:1088C00095010E94E25520E032E040E050E00E9435 |
:1088D000565639014A016D817E818F819885A801A4 |
:1088E00097010E94565680917A0890917B08AA279A |
:1088F00097FDA095BA2F281B390B4A0B5B0BCA01B9 |
:10890000B901A60195010E94E25520E032E040E065 |
:1089100050E00E94565659016A018091BA04909124 |
:10892000BB04813491050CF01EC58091BC0490916C |
:10893000BD04813491050CF016C5E091D207F0E03A |
:10894000EE0FFF1FE356F84F0190F081E02DF7FF87 |
:1089500002C00C94144D7A97A4F0C401B30123E033 |
:1089600030E040E050E00E94565639014A01C6010D |
:10897000B50123E030E040E050E00E945656590136 |
:108980006A018091E208E82EFF24E7FCF0940F2DA5 |
:108990001F2DA4019301E614F7040805190514F42A |
:1089A000A8019701992787FD9095909581959F4FF4 |
:1089B000AA2797FDA095BA2F39014A012817390730 |
:1089C0004A075B0714F43C014D01EA14FB040C0553 |
:1089D0001D0514F457016801A816B906CA06DB067E |
:1089E00014F45C016D018091650490916604A0917E |
:1089F0006704B091680486199709A809B90980939A |
:108A0000650490936604A0936704B0936804809112 |
:108A10006D0490916E04A0916F04B09170048A1956 |
:108A20009B09AC09BD0980936D0490936E04A093DB |
:108A30006F04B09370040C94F43888E18093DC04E4 |
:108A4000E090E307FF24EE0CFF1CEE0CFF1C002758 |
:108A5000F7FC0095102F69817A818B819C81A80198 |
:108A600097010E94565630933A07209339076D813B |
:108A70007E818F819885A80197010E945656309378 |
:108A80003C0720933B0780916A0890916B0897FD03 |
:108A9000C1C4959587959595879590933E0780934A |
:108AA0003D0780917A0890917B0897FDB1C4959518 |
:108AB0008795959587959093400780933F0790926F |
:108AC00042078092410720919E0430919F04309389 |
:108AD00044072093430760917D0470917E04809148 |
:108AE0007F049091800420E032E040E050E00E945A |
:108AF0005656309346072093450730924A072092F6 |
:108B0000490780910E0390910F0390934C07809337 |
:108B10004B07609176087091770880917808909162 |
:108B200079082091B3033091B4034091B50350917B |
:108B3000B6030E9456563093500720934F078091FA |
:108B4000940490E090934E0780934D078091920695 |
:108B500090E09093600780935F078091E903909184 |
:108B6000EA0390936207809361078091E108992757 |
:108B700087FD90959093700780936F0780911805FB |
:108B800090911905909376078093750780911A0547 |
:108B900090911B059093780780937707F4C8415014 |
:108BA00050405093BD044093BC041BC841505040FA |
:108BB0005093BB044093BA040C94C13D10929D04A1 |
:108BC0000C94C037662777276619770977FF8BCB18 |
:108BD0006F5F7F4F88CB6D5F7F4F0C94C1392D5FE6 |
:108BE0003F4F88CC2D5F3F4F72CC2D5F3F4F4DCC18 |
:108BF0002D5F3F4F38CC03961DCC019610CC1092C0 |
:108C0000A6040C94D2371092A7048AC881E08093FE |
:108C1000AA047AC8A1E0A093AB0455C881E0809370 |
:108C2000A90432C881E08093A8040C941F3E84E616 |
:108C300090E09093BD048093BC040C94F13D84E6D5 |
:108C400090E09093BB048093BA040C94C13D809152 |
:108C50009706992787FD9095AC01489DC001499DD5 |
:108C6000900D589D900D1124C80ED91ED0929604D7 |
:108C7000C092950480919806992787FD9095BC0134 |
:108C8000689DC001699D900D789D900D1124080F7D |
:108C9000191F109398040093970420919906332785 |
:108CA00027FD30958091990490919A04820F931F2B |
:108CB00090939A04809399042091DC0730E080918E |
:108CC0009B06992787FD9095DC012A9FC0012B9F69 |
:108CD000900D3A9F900D11249093B2038093B103AD |
:108CE00080919A0690E08615970514F00C94833DC8 |
:108CF00090939C0480939B040C94833D10929A045F |
:108D0000109299040C94513DF0918904F9A7FF2326 |
:108D100011F00C9406392091FF072E8F222311F4B5 |
:108D20000C940639409153085091540860915508AD |
:108D300070915608CB01BA0120E031E040E050E0EC |
:108D40000E9456562BA73CA74DA75EA72093530819 |
:108D500030935408409355085093560820905A0871 |
:108D600030905B0840905C0850905D08C201B101F2 |
:108D700020E031E040E050E00E94565619012A01FF |
:108D800020935A0830935B0840935C0850935D0829 |
:108D9000E090E307FF2400E010E0209155043091BB |
:108DA00056044091570450915804C801B7010E94DD |
:108DB000E25520E031E040E050E00E945656590173 |
:108DC0006A012093550430935604409357045093FE |
:108DD00058042091590430915A0440915B045091F9 |
:108DE0005C04C801B7010E94E25520E031E040E098 |
:108DF00050E00E94565639014A012093590430939D |
:108E00005A0440935B0450935C0460915D0470913C |
:108E10005E0480915F049091600420E031E040E0C6 |
:108E200050E00E94565620935D0430935E044093B8 |
:108E30005F0450936004E090FE07FF2400E010E020 |
:108E40006BA57CA58DA59EA56A197B098C099D093A |
:108E5000A80197010E9456562093D7043093D80456 |
:108E60004093D9045093DA04CA01B90120E031E0FB |
:108E700040E050E00E94565669013093A5042093CB |
:108E8000A404C201B1016619770988099909A801EA |
:108E900097010E945656CA01B90120E031E040E036 |
:108EA00050E00E945656B9013093A3042093A204C7 |
:108EB0008091BA049091BB0481349105ACF4809107 |
:108EC000BC049091BD048134910574F4E091D20703 |
:108ED000F0E0EE0FFF1FE356F84F0190F081E02D18 |
:108EE000F7FD21C77A972CF08091E0088F3F09F4B5 |
:108EF000D2C66091460870914708809148089091C9 |
:108F0000490820E031E040E050E00E9456562093AE |
:108F100046083093470840934808509349086091A9 |
:108F2000360870913708809138089091390820E010 |
:108F300031E040E050E00E945656209336083093CE |
:108F400037084093380850933908EBA0FCA00DA1D6 |
:108F50001EA169817A818B819C81E61AF70A080B30 |
:108F6000190BE092F004F092F1040093F2041093D4 |
:108F7000F304AF8CB8A0C9A0DAA08D819E81AF8127 |
:108F8000B885A81AB90ACA0ADB0AA092EC04B09202 |
:108F9000ED04C092EE04D092EF04E092E804F09267 |
:108FA000E9040093EA041093EB04A092E404B09265 |
:108FB000E504C092E604D092E704809169049091A0 |
:108FC0006A04A0916B04B0916C048E199F09A00BE8 |
:108FD000B10B8093690490936A04A0936B04B093DF |
:108FE0006C048091710490917204A0917304B0910B |
:108FF00074048A199B09AC09BD098093710490938C |
:109000007204A0937304B093740420918A04309185 |
:109010008B042138310594F080913304909134040D |
:109020000196909334048093330480915E0890916C |
:109030005F08019690935F0880935E0820583F4F29 |
:1090400094F4809133049091340401979093340404 |
:109050008093330480915E0890915F08019790930C |
:109060005F0880935E0810928B0410928A0481E05E |
:1090700090E09093CE048093CD048091C5049091AC |
:10908000C604A091C704B091C8042BA53CA54DA56A |
:109090005EA5821B930BA40BB50B815E914BAF4F6A |
:1090A000BF4F8F539C49A040B04008F461C49090DA |
:1090B000E10848E149150CF45DC41092CE04109209 |
:1090C000CD0488EE93E090939603809395039E8D54 |
:1090D000692E77248091CD049091CE04681679068C |
:1090E00024F47092CE046092CD04992079F0292D59 |
:1090F000332727FD30958091CD049091CE04281719 |
:10910000390724F43093CE042093CD04A1E0EA166D |
:10911000A4E0FA06A0E00A07A0E01A0774F0809124 |
:109120002F04909130042091CD043091CE04820F11 |
:10913000931F9093300480932F04B0E0EB16BCEFA4 |
:10914000FB06BFEF0B07BFEF1B0774F480912F04E2 |
:10915000909130042091CD043091CE04821B930B6A |
:109160009093300480932F0481E090E09093CE049C |
:109170008093CD041092D3041092D4041092D5049D |
:109180001092D6048091C1049091C204A091C304AE |
:10919000B091C40482199309A409B509815E914B69 |
:1091A000AF4FBF4F8F539C49A040B04008F486C3D7 |
:1091B000F8E1F9150CF482C31092CE041092CD049C |
:1091C00088EE93E090939603809395038091CD046D |
:1091D0009091CE046816790624F47092CE046092C1 |
:1091E000CD04992079F0292D332727FD30958091E2 |
:1091F000CD049091CE042817390724F43093CE047F |
:109200002093CD0471E0A71674E0B70670E0C7069E |
:1092100070E0D70674F0809131049091320420916F |
:10922000CD043091CE04820F931F9093320480932B |
:10923000310480E0A8168CEFB8068FEFC8068FEFD8 |
:10924000D80614F00C9425398091310490913204A1 |
:109250002091CD043091CE04821B930B9093320465 |
:10926000809331040C94253960E070E000E010E058 |
:109270000C947C3A97010C9412418091A2038233A2 |
:1092800010F40C94024081E08093880488EC809371 |
:10929000B70320919E0430919F040C942F406801E5 |
:1092A0000C94303A4D5F5F4F0C94CB3C4D5F5F4F59 |
:1092B0000C94153D1092FC041092FD041092FE04D3 |
:1092C0001092FF041092F8041092F9041092FA041C |
:1092D0001092FB048A3F910511F00C94883B81E0C9 |
:1092E0008093DB041092F4041092F5041092F604BB |
:1092F0001092F7041092750410927604109277047D |
:10930000109278040C94883BA0E01092AB040C946B |
:10931000633E1092AA040C94843E1092A9040C940B |
:10932000443E88E99AE39093E6038093E50380E066 |
:109330009CE090930A03809309030C94713788276B |
:109340009927881999090C944D3A31960C94074144 |
:10935000D094C194D108D3940C942B3A10950195D4 |
:109360001F4F0C941C3AC401B30122E030E040E0EE |
:1093700050E00E94565639014A01C601B50122E06B |
:1093800030E040E050E00E94565659016A01D5CACB |
:1093900010929C0410929B040C948B3D90958195A7 |
:1093A0009F4F0C94A63D03960C949E3D0396959575 |
:1093B00087959595879597FD02C00C94D63D90951D |
:1093C00081959F4F0C94D63D0894E108F108F092E6 |
:1093D0009603E09295030C94BB3E4B2F50E05B87C5 |
:1093E0004A878091A604882311F40C94E9370C94E1 |
:1093F000D837C216D30614F00C94CE400C94CA4051 |
:109400001092E0040C947C3C1092DF040C94C03762 |
:1094100003964DCB03963DCB03960C94E43D90957B |
:1094200081959F4F0C94E03D03960C94B43D90952C |
:1094300081959F4F0C94B03D84EF91E090939603FB |
:10944000809395030C94BB3E215E3F4F0C94C83A29 |
:10945000695F7F4F0C949C3A442737FD4095542F09 |
:109460008091750490917604A0917704B09178046E |
:10947000820F931FA41FB51F8093750490937604E9 |
:10948000A0937704B09378040C94BB3E88EC80934F |
:10949000E00481E090E09093BF048093BE0481E0FB |
:1094A00080939D041092F4041092F5041092F60437 |
:1094B0001092F704109275041092760410927704BB |
:1094C000109278041092790410927A0410927B041E |
:1094D00010927C04E090E307FF2400E010E060912C |
:1094E0006A0870916B08882777FD8095982FA801EE |
:1094F00097010E94E255609365047093660480931F |
:1095000067049093680460917A0870917B088827BB |
:1095100077FD8095982F0E94E25560936D047093BB |
:109520006E0480936F049093700480914504909131 |
:109530004604A0914704B091480480936904909335 |
:109540006A04A0936B04B0936C0480914D049091D5 |
:109550004E04A0914F04B0915004809371049093F5 |
:109560007204A0937304B09374041092FC041092DC |
:10957000FD041092FE041092FF041092F804109261 |
:10958000F9041092FA041092FB048091C0048860E0 |
:109590008093C0040C947C3C80819181855B9F4FBB |
:1095A0000CF081C28091E1048F5F8093E104893CDB |
:1095B00010F40C945B3C4C3008F0A0C329988FEF5A |
:1095C00004E010E0D801082E0E94795610929D0404 |
:1095D0001092E1041092BF041092BE040E948432E3 |
:1095E0008091390490913A0497FDA4C3892F990F73 |
:1095F000990BD801082E0E947956809139049091D8 |
:109600003A0460E071E00E9421560F5F1F4FD801BD |
:10961000082E0E9479560150104020913B04309151 |
:109620003C0437FD84C3832F992787FD9A950E5FED |
:109630001F4FD801082E0E94795680913B049091CB |
:109640003C0460E071E00E9421560F5F1F4FD8017B |
:10965000082E0E9479560350104060913F0470918B |
:10966000400480914104909142040E94F7549B0170 |
:1096700077FD63C3832F992787FD9A950C5F1F4F52 |
:10968000D801082E0E94795660913F0470914004E1 |
:1096900080914104909142040E94F754DC01CB0177 |
:1096A00060E071E00E9421560F5F1F4FD801082E25 |
:1096B0000E9479560E94BE020E9401358091D10716 |
:1096C000A82FB0E0AA0FBB1F0C945B3C88EC90E085 |
:1096D0009093E6038093E503B101882777FD809599 |
:1096E000982F2E893F89488D598D0E94E2552B0174 |
:1096F0003C01609376087093770880937808909384 |
:1097000079080E9456563093840420938304109263 |
:10971000DB040C94973A7093DE046093DD040C94A0 |
:10972000CE40E090E307FF2400E010E069817A81F9 |
:109730008B819C81A80197010E94565659016A01AC |
:1097400080916A0890916B08AA2797FDA095BA2F7F |
:10975000A81AB90ACA0ADB0A6D817E818F819885B1 |
:10976000A80197010E94565679018A0180917A08D2 |
:1097700090917B08AA2797FDA095BA2FE81AF90ABD |
:109780000A0B1B0BC601B50120E130E040E050E0C0 |
:109790000E94565639014A01C801B70120E130E064 |
:1097A00040E050E00E94565659016A018091BA0487 |
:1097B0009091BB04813491053CF48091BC0490915C |
:1097C000BD0481349105A4F0C401B30123E030E06D |
:1097D00040E050E00E94565639014A01C601B501E9 |
:1097E00023E030E040E050E00E94565659016A0103 |
:1097F000E091D207F0E0EE0FFF1FE356F84F019023 |
:10980000F081E02DF7FD2DC27A97A4F0C401B301D9 |
:1098100023E030E040E050E00E94565639014A0112 |
:10982000C601B50123E030E040E050E00E9456560A |
:1098300059016A0171E267167104810491040CF404 |
:109840000DC180E2682E712C812C912C91E2A91619 |
:10985000B104C104D1040CF4ECC010E2A12EB12C6F |
:10986000C12CD12CC0C88091180390911903895E36 |
:10987000934008F40CC190910B049A5090930B0400 |
:1098800080918807891B87BD8CE291E09093E60365 |
:109890008093E5038AEF8093B70320919E04309173 |
:1098A0009F040C942F40215F3F4F0C94AC402F5FDE |
:1098B0003F4F0C94954003960C94544021E0A2161F |
:1098C00020E1B20620E0C20620E0D2060CF4EFC090 |
:1098D0008091CA04882309F409C2D601C50179E040 |
:1098E000B595A795979587957A95D1F70196909319 |
:1098F000CE048093CD04D601C50163E0B595A7954C |
:10990000979587956A95D1F78093D3049093D40463 |
:10991000A093D504B093D60489589341A040B04099 |
:1099200064F088E893E1A0E0B0E08093D3049093E2 |
:10993000D404A093D504B093D6046091D30470915D |
:10994000D4048091D5049091D60420E031E040E029 |
:1099500050E00E9456568091A2049091A304820F79 |
:10996000931F9093A3048093A2041092C9042ECC59 |
:109970009090E10851E0E51650E1F50650E005074A |
:1099800050E015070CF4F1C08091CC04882309F451 |
:10999000B1C1D801C70129E0B595A79597958795DD |
:1099A0002A95D1F701969093CE048093CD04D801E7 |
:1099B000C701F3E0B595A79597958795FA95D1F7E7 |
:1099C0008093D7049093D804A093D904B093DA0479 |
:1099D00089589341A040B04064F088E893E1A0E04A |
:1099E000B0E08093D7049093D804A093D904B093A7 |
:1099F000DA046091D7047091D8048091D9049091D1 |
:109A0000DA0420E031E040E050E00E9456568091B8 |
:109A1000A4049091A504820F931F9093A5048093B2 |
:109A2000A4041092CB0453CBF095E195FF4F0C9416 |
:109A3000AB44A0EEAA16AFEFBA06AFEFCA06AFEF7F |
:109A4000DA0614F00C94F344B0EEAB2EBFEFBB2E4D |
:109A5000BFEFCB2EBFEFDB2E0C94F34480EE6816E5 |
:109A60008FEF78068FEF88068FEF98060CF0EECE1A |
:109A700000EE602E0FEF702E0FEF802E0FEF902E66 |
:109A8000E5CE87E090E0680E791E0C94EC3A809168 |
:109A90001803909119038436910508F0E6C090915F |
:109AA0000B04965FEBCE1092E1040C945B3C109299 |
:109AB000CA0440E0A41640EFB4064FEFC4064FEFCF |
:109AC000D4060CF052CF8091C904882309F421C137 |
:109AD00088279927DC018A199B09AC09BD0959E03F |
:109AE000B595A795979587955A95D1F70196909337 |
:109AF000CE048093CD04C601B50128E030E040E0FB |
:109B000050E00E9456562093D3043093D4044093DF |
:109B1000D5045093D60428573C4E4F4F5F4F64F402 |
:109B200088E79CEEAFEFBFEF8093D3049093D4040B |
:109B3000A093D504B093D6046091D3047091D4045B |
:109B40008091D5049091D60420E031E040E050E0CF |
:109B50000E9456568091A2049091A304820F931FF5 |
:109B60009093A3048093A20431CB1092CC0470E0B4 |
:109B7000E71670EFF7067FEF07077FEF17070CF088 |
:109B800050CF8091CB04882309F4BFC08827992740 |
:109B9000DC018E199F09A00BB10BE9E0B595A795E3 |
:109BA00097958795EA95D1F701969093CE04809387 |
:109BB000CD04C801B70128E030E040E050E00E9449 |
:109BC00056562093D7043093D8044093D904509329 |
:109BD000DA0428573C4E4F4F5F4F64F488E79CEE01 |
:109BE000AFEFBFEF8093D7049093D804A093D9042C |
:109BF000B093DA046091D7047091D8048091D904AD |
:109C00009091DA0420E031E040E050E00E945656A6 |
:109C10008091A4049091A504820F931F9093A504B2 |
:109C20008093A40454CA0E94BE024CE56FEC77E016 |
:109C30000E943C038091D70780FF10C080911803D9 |
:109C400090911903875B934038F4809118039091A9 |
:109C500019038E5E924010F40E94FE1A0E94843214 |
:109C600029CDF095E195FF4FCFCD20919E04309105 |
:109C70009F04245130403093A1042093A0042C5E13 |
:109C80003F4F1092880481E08093B7030C942F40DB |
:109C900041E00C94F73B9601D7FC42C035952795DF |
:109CA0003093A5042093A4049B0177FD36C035951D |
:109CB00027953093A3042093A2041BC98091D00759 |
:109CC000A82FB0E0AA0FBB1FFD01E356F84F01908B |
:109CD000F081E02DF7FD34C0E734F10514F40C9465 |
:109CE000323C0C94D63B299A0C94B83B81E080938B |
:109CF000CA043BCE81E08093CC0493CE299A5FCCFA |
:109D0000909581959F4F0C943A3C81E08093CB04D1 |
:109D1000DEC981E08093C90459CA2F5F3F4FC7CF86 |
:109D20002F5F3F4FBBCFF095E195FF4FDBC8215030 |
:109D30003F4F79CC81509F4F59CC21503F4F9ACC07 |
:109D4000F095E195FF4FC8CF80936508E0960FB678 |
:109D5000F894DEBF0FBECDBFDF91CF911F910F9161 |
:109D6000FF90EF90DF90CF90BF90AF909F908F903B |
:109D70007F906F905F904F903F902F9008958091CB |
:109D8000200590912105A0912205B0912305809393 |
:109D9000280590932905A0932A05B0932B0580915F |
:109DA000240590912505A0912605B0912705809363 |
:109DB0002C0590932D05A0932E05B0932F050895A3 |
:109DC000109219051092180510921B0510921A0591 |
:109DD000089584B1806A84B93D9A82E58CBD1DBC2A |
:109DE000459A81E0809381088AEA8093850883E818 |
:109DF000809386088AE080938708109289081092E1 |
:109E0000880810928B0810928A081092A708109266 |
:109E1000A80888E48093A9088FE08093AA0885E0C9 |
:109E20008093AB080895EF92FF920F931F93F894DD |
:109E3000E090E307FF24EE0CFF1CEE0CFF1C002754 |
:109E4000F7FC0095102F60914504709146048091B5 |
:109E5000470490914804A80197010E9456563093F8 |
:109E600089082093880860914D0470914E04809178 |
:109E70004F0490915004A80197010E9456563093C8 |
:109E80008B0820938A0860917608709177088091FA |
:109E90007808909179082AE030E040E050E00E9494 |
:109EA000E2552091B3033091B4034091B503509132 |
:109EB000B6030E9456563093910820939008E09183 |
:109EC0003D04F0913E048091570890915808BF01DD |
:109ED0000E942156CB01880F991F860F971F9C0166 |
:109EE000220F331F96FD22C135952795359527956D |
:109EF00030938D0820938C0880917208909173089C |
:109F0000BF010E942156CB01880F991F860F971F12 |
:109F10009C01220F331F96FD06C135952795359577 |
:109F2000279530938F0820938E0810923E0410924C |
:109F30003D0410925808109257081092730810921E |
:109F40007208809187088C3009F484C18D3008F440 |
:109F500065C08D3009F414C18E3009F4FCC07894CA |
:109F60008091A708882309F4D5C02091AD083091CD |
:109F7000AE08C90181509E4F8F5F934058F44091C5 |
:109F8000AF085091B008CA0181509E4F8F5F934037 |
:109F900008F4D4C08091B3089091B40821E08936C8 |
:109FA000920724F490938204809381048091810429 |
:109FB00090918204845E9D4F2091830430918404AB |
:109FC000821B930B68E671E00E942156845B9040EF |
:109FD00090938604809385042091B7083091B80847 |
:109FE0008091E5039091E6038217930728F480910E |
:109FF0009206882309F49DC08091AC08873609F049 |
:10A000004EC18091B9088093E0088091BA0880938E |
:10A01000E2088091BB088093E10841C18A3009F4CD |
:10A02000E0C08B3009F09BCFE091D107F0E0EE0F5C |
:10A03000FF1FE356F84F0190F081E02D2FEFE1383C |
:10A04000F20714F4E1E8FFEFE038F10514F0EFE770 |
:10A05000F0E0E0939808E091D207F0E0EE0FFF1FE8 |
:10A06000E356F84F0190F081E02D4FEFE138F4070F |
:10A0700014F4E1E8FFEFE038F10514F0EFE7F0E069 |
:10A08000E0939908E091D007F0E0EE0FFF1FE35650 |
:10A09000F84F0190F081E02D6FEFE138F60714F4EE |
:10A0A000E1E8FFEFE038F10514F0EFE7F0E0E093CE |
:10A0B0009A08E091CF07F0E0EE0FFF1FE356F84F4C |
:10A0C0000190F081E02D8FEFE138F80714F4E1E81A |
:10A0D000FFEFE038F10514F0EFE7F0E0E0939B08C4 |
:10A0E00080918C0480939C0880918E0480939D08BD |
:10A0F0008091900480939E088091920480939F08A1 |
:10A10000809194048093A00878948091A708882374 |
:10A1100009F02BCF109219051092180510921B050B |
:10A1200010921A05BCC02D5F3F4FF7CE2D5F3F4FF9 |
:10A13000DBCE3093E6032093E5035ECF8091D70713 |
:10A1400085FF28CF309319052093180550931B05E0 |
:10A1500040931A051FCF8091A8088093980880919A |
:10A16000A908809399088091AA0880939A08809101 |
:10A17000AB0880939B088091000180939C08EFCEF0 |
:10A18000809109088093980880910A088093990823 |
:10A1900080910B0880939A0880910C0880939B080B |
:10A1A00080910D0880939C088091110880939D08F0 |
:10A1B0008091120880939E088091130880939F08D5 |
:10A1C000809116088093A008809114088093A108BC |
:10A1D000809115088093A208809117088093A308A6 |
:10A1E000BECE8091AC04809398088091AD0480939A |
:10A1F00099088091AE0480939A088091AF0480936F |
:10A200009B088091B00480939C088091B104809356 |
:10A210009D088091B20480939E088091B30480933E |
:10A220009F088091C0048093A008837F8093C0041E |
:10A2300080910E0390910F038093A1088091E8070D |
:10A240008093A208A2E0B0E00E947156802D809316 |
:10A25000A30885CE809192068630F0F01092920687 |
:10A2600085E08093980880919E0490919F0490933C |
:10A270009B0880939A088091180880939908809190 |
:10A280000E0880939C0880910F0880939D08809110 |
:10A29000100880939E0863CE80939808E4CF1F91A6 |
:10A2A0000F91FF90EF90089580918108882309F421 |
:10A2B0003BC0459885E898E0909383088093820896 |
:10A2C00090913005E92FF0E0E854FC4F80818093B5 |
:10A2D00087089F5F90933005963010F010923005FC |
:10A2E000109281080E94134F81E08093840800003F |
:10A2F000000000000000000000000000000000005E |
:10A30000000000000000000000000000000000004D |
:10A31000000000000000000000000000000080912C |
:10A3200085088093A4088EBD0895809181088823B4 |
:10A3300011F40DB407FE089584E08093E703459A75 |
:10A340009EB580913205813009F43AC0813008F021 |
:10A3500040C01092A60890933105913809F45EC070 |
:10A3600020918408203208F030C045980000000099 |
:10A3700000000000000000000000000000000000DD |
:10A3800000000000000000000000000000000000CD |
:10A39000000000000000000000000000E0918208C2 |
:10A3A000F0918308E20FF11D80818EBD8081909134 |
:10A3B000A408890F8093A4082F5F20938408089530 |
:10A3C000953519F110923205CBCF81E08093810849 |
:10A3D000F3CF823009F0C4CF8091A608E82FF0E0D7 |
:10A3E000EA53F74F90838F5F8093A6088A3138F045 |
:10A3F000809131059817B1F01092A708E3CF8091B2 |
:10A400003105890F80933105ABCF809131058B5A8F |
:10A410008093310582E080933205A2CF81E0809362 |
:10A4200032059ECFACEAB8E0E6ECF8E08AE10190B4 |
:10A430000D928150E1F781E08093A708C3CF87B1E7 |
:10A440008C6087B9429843981092370580E88093D2 |
:10A45000BE03109238058093BF030895809139059B |
:10A460008150809339058F3F09F0089584E08093EF |
:10A470003905809106088B3F68F180915908873E25 |
:10A4800008F045C08A3030F58091050888230CF427 |
:10A4900043C0429A809108088B3F38F58091380577 |
:10A4A0008150809338058F3F01F780916D0881506E |
:10A4B000809338058091BF03813009F443C08695AD |
:10A4C0008093BF038091BF03909107088923B9F45B |
:10A4D00043980895809137058150809337058F3FC9 |
:10A4E000E9F0809108088B3FC8F280916D08873EA3 |
:10A4F00040F48A3098F68091070887FD06C0439A99 |
:10A500000895809107088823D4F343980895809193 |
:10A51000050888230CF4BDCF4298E3CF80915908F9 |
:10A520008150809337058091BE03813079F0869504 |
:10A530008093BE038091BE0390910508892361F347 |
:10A54000429AA8CF80E88093BF03BCCF80E8809375 |
:10A55000BE03F0CF8091C9008F778093C9008091AE |
:10A56000C9008F7B8093C9008091C9008F7D809343 |
:10A57000C9005A9A52981092CD0084E18093CC0081 |
:10A580008091C80082608093C80080E18093C900F8 |
:10A590008091CA008F778093CA008091CA008F7B18 |
:10A5A0008093CA008091CA008F7D8093CA008091F9 |
:10A5B000CA008F7E8093CA008091CA00877F8093F3 |
:10A5C000CA008091C9008B7F8093C9008091CA0026 |
:10A5D00084608093CA008091CA0082608093CA0020 |
:10A5E0008091C80087FF06C08091CE008091C8008E |
:10A5F00087FDFACF8091C90080688093C9000895D3 |
:10A600001F920F920FB60F9211240F931F932F9347 |
:10A610003F934F935F936F937F938F939F93AF93EA |
:10A62000BF93CF93DF93EF93FF931091CE00809170 |
:10A63000C0039091C103019709F44DC080913A0580 |
:10A6400090913B050E949012209142053091430564 |
:10A650002115310519F12130310509F4EAC0223004 |
:10A66000310509F4F9C02330310509F45DC081E0FA |
:10A6700090E09093C1038093C00310924105109223 |
:10A68000400510923D0510923C0587E090E00E9445 |
:10A69000871290933B0580933A0522C18823A1F548 |
:10A6A000C0914005D0914105609778F380913C05B9 |
:10A6B00090913D05892B11F4109279031092410578 |
:10A6C0001092400510923D0510923C0510924305F2 |
:10A6D00010924205DACF1092C1031092C00387E0B6 |
:10A6E00090E00E94871290933B0580933A05109268 |
:10A6F00041051092400510924305109242051092B8 |
:10A700003F0510923E05ECC081E090E09093430538 |
:10A7100080934205C0914005D09141052196D09388 |
:10A720004105C0934005C0CF882309F0A0CF82E047 |
:10A7300090E09093430580934205C0914005D091ED |
:10A7400041052196D0934105C093400520913E05D7 |
:10A7500030913F05F901F695E795F695E795EF708D |
:10A76000F0703196EB30F10508F09ECF812F90E02C |
:10A77000322F2227822B932B93708050924063E0DC |
:10A7800070E00E9421568F01000F111FF801E3565F |
:10A79000F84F808191819B01281B390BC90137FD3E |
:10A7A0009BC0069754F480919404883C08F08DC0B7 |
:10A7B00080919404865F80939404F801E356F84FE7 |
:10A7C000808191819C01220F331F280F391F260F92 |
:10A7D000371F37FD7EC03595279535952795CB01D9 |
:10A7E0000196821793070CF067C02150304080918A |
:10A7F0009404843B08F45AC0F801E356F84F808172 |
:10A800009181A901481B590BCA0163E070E00E94C5 |
:10A810002156CB01880F991F860F971FF801ED5421 |
:10A82000F84F918380830356184FF80131832083BA |
:10A830003BCF882309F013CF82E090E0909343054B |
:10A8400080934205C0914005D09141052196D09357 |
:10A850004105C093400528CF882309F004CF812FFC |
:10A8600090E090933F0580933E0520914005309104 |
:10A8700041052230310569F083E090E09093430573 |
:10A8800080934205E9012196D0934105C09340058C |
:10A890000BCF10923D0510923C0517FFEDCF81E0E4 |
:10A8A00090E090933D0580933C05E6CFF801ED5490 |
:10A8B000F84F11821082B7CF6150704026173707CA |
:10A8C0000CF095CF2F5F3F4F92CF88EC809394048C |
:10A8D00074CF2D5F3F4F7FCF909581959F4F61CF74 |
:10A8E000FF91EF91DF91CF91BF91AF919F918F91A8 |
:10A8F0007F916F915F914F913F912F911F910F9198 |
:10A900000F900FBE0F901F901895FC0141505040C2 |
:10A9100030F001900616D1F73197CF0108958827BE |
:10A92000992708955058BB27AA270ED011C102D1EC |
:10A9300030F007D120F031F49F3F11F41EF4F7C03E |
:10A940000EF4E095E7FBEDC0E92F13D180F3BA17C1 |
:10A95000620773078407950718F071F49EF52BC101 |
:10A960000EF4E0950B2EBA2FA02D0B01B90190012A |
:10A970000C01CA01A0011124FF27591B99F0593F6E |
:10A9800050F4503E68F11A16F040A22F232F342FB6 |
:10A990004427585FF3CF469537952795A795F04004 |
:10A9A0005395C9F77EF41F16BA0B620B730B840B19 |
:10A9B000BAF09150A1F0FF0FBB1F661F771F881FD1 |
:10A9C000C2F70EC0BA0F621F731F841F48F4879529 |
:10A9D00077956795B795F7959E3F08F0B3CF939518 |
:10A9E000880F08F09927EE0F97958795089504D062 |
:10A9F0006894B111E1C00895C4D088F09F5790F0D9 |
:10AA0000B92F9927B751A0F0D1F0660F771F881F93 |
:10AA1000991F1AF0BA95C9F712C0B13081F0CBD0A6 |
:10AA2000B1E00895C8C0672F782F8827B85F39F044 |
:10AA3000B93FCCF3869577956795B395D9F73EF4F2 |
:10AA400090958095709561957F4F8F4F9F4F08959A |
:10AA5000E89409C097FB3EF49095809570956195B8 |
:10AA60007F4F8F4F9F4F9923A9F0F92F96E9BB276E |
:10AA70009395F695879577956795B795F111F8CFEA |
:10AA8000FAF4BB0F11F460FF1BC06F5F7F4F8F4F55 |
:10AA90009F4F16C0882311F096E911C0772321F04B |
:10AAA0009EE8872F762F05C0662371F096E8862FE3 |
:10AAB00070E060E02AF09A95660F771F881FDAF73A |
:10AAC000880F9695879597F9089507D008F481E047 |
:10AAD000089503D008F48FEF0895990F0008550FDB |
:10AAE000AA0BE0E8FEEF16161706E807F907C0F014 |
:10AAF00012161306E407F50798F0621B730B840B1C |
:10AB0000950B39F40A2661F0232B242B252B21F4F5 |
:10AB100008950A2609F4A140A6958FEF811D811D95 |
:10AB2000089597F99F6780E870E060E008959FEFCF |
:10AB300080EC089500240A941616170618060906D4 |
:10AB4000089500240A9412161306140605060895A3 |
:10AB5000092E0394000C11F4882352F0BB0F40F42B |
:10AB6000BF2B11F460FF04C06F5F7F4F8F4F9F4F6B |
:10AB7000089557FD9058440F551F59F05F3F71F0ED |
:10AB80004795880F97FB991F61F09F3F79F0879554 |
:10AB90000895121613061406551FF2CF4695F1DFDD |
:10ABA00008C0161617061806991FF1CF869571056D |
:10ABB000610508940895E894BB2766277727CB01A1 |
:10ABC00097F90895629FD001739FF001829FE00D75 |
:10ABD000F11D649FE00DF11D929FF00D839FF00D1C |
:10ABE000749FF00D659FF00D9927729FB00DE11DC8 |
:10ABF000F91F639FB00DE11DF91FBD01CF011124A5 |
:10AC00000895991B79E004C0991F961708F0961BC8 |
:10AC1000881F7A95C9F780950895AA1BBB1B51E13F |
:10AC200007C0AA1FBB1FA617B70710F0A61BB70BBC |
:10AC3000881F991F5A95A9F780959095BC01CD0161 |
:10AC4000089597FB092E07260AD077FD04D0E5DF8B |
:10AC500006D000201AF4709561957F4F0895F6F79D |
:10AC6000909581959F4F0895A1E21A2EAA1BBB1BB8 |
:10AC7000FD010DC0AA1FBB1FEE1FFF1FA217B307C8 |
:10AC8000E407F50720F0A21BB30BE40BF50B661FDE |
:10AC9000771F881F991F1A9469F7609570958095A2 |
:10ACA00090959B01AC01BD01CF01089597FB092E42 |
:10ACB00005260ED057FD04D0D7DF0AD0001C38F48B |
:10ACC00050954095309521953F4F4F4F5F4F0895D8 |
:10ACD000F6F790958095709561957F4F8F4F9F4FB8 |
:10ACE0000895F999FECFB2BDA1BDF89A119600B4AE |
:10ACF0000895F999FECFB2BDA1BD00BC11960FB663 |
:10AD0000F894FA9AF99A0FBE08950190F2DF1A9416 |
:06AD1000E1F70895FFCFFA |
:10AD16000A010101FF6401C800416E676C654E6956 |
:10AD2600636B20202020202020416E676C65526FC7 |
:10AD36006C6C202020202020204163634E69636BC9 |
:10AD4600202020202020202020416363526F6C6C3D |
:10AD56002020202020202020204779726F47696517 |
:10AD66007220202020202020204869676874205601 |
:10AD7600616C756520202020204163635A202020C5 |
:10AD86002020202020202020204761732020202002 |
:10AD9600202020202020202020436F6D70617373B7 |
:10ADA6002056616C7565202020566F6C746167654E |
:10ADB600202020202020202020456D7066616E67AF |
:10ADC6002020202020202020204779726F204B6FE2 |
:10ADD6006D70617373202020204D6F746F72204652 |
:10ADE600726F6E7420202020204D6F746F72205277 |
:10ADF6006561722020202020204D6F746F72204CD8 |
:10AE06006566742020202020204D6F746F722052BA |
:10AE16006967687420202020202020202020202000 |
:10AE2600202020202020202020202020202020201C |
:10AE3600202020202020202020202020202020200C |
:10AE46002020202020202020204D4B334D616720DC |
:10AE560043616C537461746520536572766F20206C |
:10AE660020202020202020202020202020202020DC |
:10AE760020202020202020202020202020202020CC |
:10AE860020202020202020202020202020202020BC |
:10AE960020202020202020202020202020202020AC |
:10AEA600202020202020202020202020202020209C |
:10AEB600202020202020202020202020202020208C |
:10AEC6002020202020202020204B616C6D616E5FA9 |
:10AED6004D6178447269667420202020202020204D |
:10AEE600202020202020202020202020202020205C |
:10AEF6002020202020202020204750535F4E6963C9 |
:10AF06006B20202020202020204750535F526F6C5A |
:10AF16006C2020202020202020FFFFFC010164005F |
:10AF2600C409C409007D0000FF03737373010102A5 |
:10AF3600030405060708090A48616C6C6F2057650B |
:10AF46006C7400000000000000000000000000001B |
:10AF560000000000000000000000000000000000EB |
:10AF660000000000000000000000000000000000DB |
:10AF760000000000000000000000000000000000CB |
:10AF860000000000000000000B01426567696E6E5C |
:10AF9600657200004E6F726D616C000053706F72C7 |
:10AFA6007400006400F40190D0030090D0030038D0 |
:10AFB6000130FB103A40089696020A64465A414010 |
:10AFC60064ECFF0B050000640A0B0D0B0C0E01016F |
:02AFD600010078 |
:00000001FF |
/branches/V0.72p HexaLotte/License.txt |
---|
0,0 → 1,52 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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 nichtkommerziellen 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, |
// + 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 |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + 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 |
// + 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, |
// + 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 |
// + for non-profit use (directly or indirectly) |
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted |
// + with our written permission |
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be |
// + clearly linked and named 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 |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + 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. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
/branches/V0.72p HexaLotte/Settings.h |
---|
--- branches/V0.72p HexaLotte/Spectrum.c (nonexistent) |
+++ branches/V0.72p HexaLotte/Spectrum.c (revision 1184) |
@@ -0,0 +1,248 @@ |
+/*####################################################################################### |
+Decodieren eines RC Summen Signals oder Spektrum Empfänger-Satellit |
+#######################################################################################*/ |
+ |
+#include "Spectrum.h" |
+#include "main.h" |
+ |
+//############################################################################ |
+// zum Decodieren des Spektrum Satelliten wird USART1 benutzt. |
+// USART1 initialisation from killagreg |
+void Uart1Init(void) |
+//############################################################################ |
+ { |
+ // -- Start of USART1 initialisation for Spekturm seriell-mode |
+ // USART1 Control and Status Register A, B, C and baud rate register |
+ uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * 115200) - 1); |
+ // 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); |
+ // 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<<RXEN1)|(1<<TXEN1); |
+ UCSR1B = (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 RX-interrupts at the end |
+ UCSR1B |= (1 << RXCIE1); |
+ // -- End of USART1 initialisation |
+ return; |
+ } |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// + Copyright (c) Rainer Walther |
+// + RC-routines from original MK rc.c (c) H&I |
+// + Useful infos from Walter: http://www.rcgroups.com/forums/showthread.php?t=714299&page=2 |
+// + only for non-profit use |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// |
+// 20080808 rw Modified for Spektrum AR6100 (PPM) |
+// 20080823 rw Add Spektrum satellite receiver on USART1 (644P only) |
+// 20081213 rw Add support for Spektrum DS9 Air-Tx-Module (9 channels) |
+// Replace AR6100-coding with original composit-signal routines |
+// |
+// --- |
+// Entweder Summensignal ODER Spektrum-Receiver anschließen. Nicht beides gleichzeitig betreiben! |
+// Binding is not implemented. Bind with external Receiver. |
+// Servo output J3, J4, J5 not serviced |
+// |
+// Anschuß Spektrum Receiver |
+// Orange: 3V von der FC (keinesfalls an 5V anschließen!) |
+// Schwarz: GND |
+// Grau: RXD1 (Pin 3) auf 10-Pol FC-Stecker |
+// |
+// --- |
+// Satellite-Reciever connected on USART1: |
+// |
+// DX7/DX6i: One data-frame at 115200 baud every 22ms. |
+// DX7se: One data-frame at 115200 baud every 11ms. |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data (FLT-Mode) |
+// byte5: and byte6: channel data (Roll) |
+// byte7: and byte8: channel data (Nick) |
+// byte9: and byte10: channel data (Gier) |
+// byte11: and byte12: channel data (Gear Switch) |
+// byte13: and byte14: channel data (Gas) |
+// byte15: and byte16: channel data (AUX2) |
+// |
+// DS9 (9 Channel): One data-frame at 115200 baud every 11ms, alternating frame 1/2 for CH1-7 / CH8-9 |
+// 1st Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: channel data |
+// byte9: and byte10: channel data |
+// byte11: and byte12: channel data |
+// byte13: and byte14: channel data |
+// byte15: and byte16: channel data |
+// 2nd Frame: |
+// byte1: unknown |
+// byte2: unknown |
+// byte3: and byte4: channel data |
+// byte5: and byte6: channel data |
+// byte7: and byte8: 0xffff |
+// byte9: and byte10: 0xffff |
+// byte11: and byte12: 0xffff |
+// byte13: and byte14: 0xffff |
+// byte15: and byte16: 0xffff |
+// |
+// Each channel data (16 bit= 2byte, first msb, second lsb) is arranged as: |
+// |
+// Bits: F 0 C3 C2 C1 C0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 |
+// |
+// 0 means a '0' bit |
+// F: 1 = indicates beginning of 2nd frame for CH8-9 (DS9 only) |
+// C3 to C0 is the channel number. 0 to 9 (4 bit, as assigned in the transmitter) |
+// D9 to D0 is the channel data (10 bit) 0xaa..0x200..0x356 for 100% transmitter-travel |
+// |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+ |
+//############################################################################ |
+//Diese Routine startet und inizialisiert den USART1 für seriellen Spektrum satellite reciever |
+SIGNAL(USART1_RX_vect) |
+//############################################################################ |
+{ |
+static unsigned int Sync=0, FrameCnt=0, ByteHigh=0, ReSync=1, Frame2=0, FrameTimer; |
+ unsigned int Channel, index; |
+ signed int signal, tmp; |
+ int bCheckDelay; |
+ uint8_t c; |
+ |
+ c = UDR1; // get data byte |
+ |
+ if (ReSync == 1) |
+ { |
+ // wait for beginning of new frame |
+ ReSync = 0; |
+ |
+ FrameTimer = SetDelay(7); // minimum 7ms zwischen den frames |
+ FrameCnt = 0; |
+ Sync = 0; |
+ ByteHigh = 0; |
+ } |
+ else |
+ { |
+ bCheckDelay = CheckDelay(FrameTimer); |
+ if ( Sync == 0 ) |
+ { |
+ if(bCheckDelay) |
+ { |
+ // nach einer Pause von mind. 7ms erstes Sync-Character gefunden |
+ // Zeichen ignorieren, da Bedeutung unbekannt |
+ Sync = 1; |
+ FrameCnt ++; |
+ } |
+ else |
+ { |
+ // Zeichen kam vor Ablauf der 7ms Sync-Pause |
+ // warten auf erstes Sync-Zeichen |
+ } |
+ } |
+ else if((Sync == 1) && !bCheckDelay) |
+ { |
+ // zweites Sync-Character ignorieren, Bedeutung unbekannt |
+ Sync = 2; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 2) && !bCheckDelay) |
+ { |
+ // Datenbyte high |
+ ByteHigh = c; |
+ |
+ if (FrameCnt == 2) |
+ { |
+ // is 1st Byte of Channel-data |
+ // Frame 1 with Channel 1-7 comming next |
+ Frame2 = 0; |
+ if(ByteHigh & 0x80) |
+ { |
+ // DS9: Frame 2 with Channel 8-9 comming next |
+ Frame2 = 1; |
+ } |
+ } |
+ Sync = 3; |
+ FrameCnt ++; |
+ } |
+ else if((Sync == 3) && !bCheckDelay) |
+ { |
+ // Datenbyte low |
+ |
+ // High-Byte for next channel comes next |
+ Sync = 2; |
+ FrameCnt ++; |
+ |
+ index = (ByteHigh >> 2) & 0x0f; |
+ index ++; |
+ Channel = (ByteHigh << 8) | c; |
+ signal = Channel & 0x3ff; |
+ signal -= 0x200; // Offset, range 0x000..0x3ff? |
+ signal = signal/3; // scaling to fit PPM resolution |
+ |
+ if(index >= 0 && index <= 10) |
+ { |
+ // Stabiles Signal |
+ if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
+ tmp = (3 * (PPM_in[index]) + signal) / 4; |
+ if(tmp > signal+1) tmp--; else |
+ if(tmp < signal-1) tmp++; |
+ if(SenderOkay >= 180) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; |
+ else PPM_diff[index] = 0; |
+ PPM_in[index] = tmp; |
+ } |
+ } |
+ else |
+ { |
+ // hier stimmt was nicht: neu synchronisieren |
+ ReSync = 1; |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ } |
+ |
+ // 16 Bytes per frame |
+ if(FrameCnt >= 16) |
+ { |
+ // Frame complete |
+ if(Frame2 == 0) |
+ { |
+ // Null bedeutet: Neue Daten |
+ // nur beim ersten Frame (CH 0-7) setzen |
+ NewPpmData = 0; |
+ } |
+ |
+ // new frame next, nach fruehestens 7ms erwartet |
+ FrameCnt = 0; |
+ Frame2 = 0; |
+ Sync = 0; |
+ } |
+ // Zeit bis zum nächsten Zeichen messen |
+ FrameTimer = SetDelay(7); |
+ } |
+} |
+ |
+ |
/branches/V0.72p HexaLotte/Spectrum.h |
---|
0,0 → 1,8 |
/*####################################################################################### |
Dekodieren eines Spectrum Signals |
#######################################################################################*/ |
#ifndef _SPECTRUM_H |
#define _SPECTRUM_H |
void Uart1Init(void); |
#endif //_RC_H |
/branches/V0.72p HexaLotte/_Settings.h |
---|
0,0 → 1,43 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Abstimmung |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ACC_AMPLIFY 6 |
#define FAKTOR_P 1 |
#define FAKTOR_I 0.0001 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debug-Interface |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#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: |
// +++++++++++++++++++++++++++++++ |
// Setting: Kamera |
// Stick_P:3 |
// Stick_D:0 |
// Gyro_P: 175 |
// Gyro_I: 175 |
// Ki_Anteil: 10 |
// +++++++++++++++++++++++++++++++ |
// + Getestete Settings: |
// +++++++++++++++++++++++++++++++ |
// Setting: Normal |
// Stick_P:2 |
// Stick_D:8 |
// Gyro_P: 80 |
// Gyro_I: 150 |
// Ki_Anteil: 5 |
/branches/V0.72p HexaLotte/analog.c |
---|
0,0 → 1,457 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
volatile int HiResNick = 2500, HiResRoll = 2500; |
volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
signed char ExpandBaro = 0; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
volatile unsigned char AdReady = 1; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ANALOG_ON; |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
ExpandBaro = 0; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 850) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
void SucheGyroOffset(void) |
{ |
unsigned char i, ready = 0; |
GyroDefektN = 0; GyroDefektR = 0; GyroDefektG = 0; |
for(i=140; i != 0; i--) |
{ |
if(ready == 3 && i > 10) i = 9; |
ready = 0; |
if(AdWertNick < 1020) AnalogOffsetNick--; else if(AdWertNick > 1030) AnalogOffsetNick++; else ready++; |
if(AdWertRoll < 1020) AnalogOffsetRoll--; else if(AdWertRoll > 1030) AnalogOffsetRoll++; else ready++; |
if(AdWertGier < 1020) AnalogOffsetGier--; else if(AdWertGier > 1030) AnalogOffsetGier++; else ready++; |
twi_state = 8; |
i2c_start(); |
if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
while(twi_state); |
messanzahl_Druck = 0; |
ANALOG_ON; |
while(messanzahl_Druck == 0); |
if(i<10) Delay_ms_Mess(10); |
} |
Delay_ms_Mess(70); |
} |
/* |
0 n |
1 r |
2 g |
3 y |
4 x |
5 n |
6 r |
7 u |
8 z |
9 L |
10 n |
11 r |
12 g |
13 y |
14 x |
15 n |
16 r |
17 L |
*/ |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
static signed int accy, accx; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_ACC_X; |
break; |
case 4: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 5: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 6: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 7: |
UBat = (3 * UBat + ADC / 3) / 4; |
kanal = AD_ACC_Z; |
break; |
case 8: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -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 = AD_DRUCK; |
break; |
// "case 8:" fehlt hier absichtlich |
case 10: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 11: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 12: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 1) / 2; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1); |
else AdWertGier = (ADC + gier1); |
kanal = AD_ACC_Y; |
break; |
case 13: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_ACC_X; |
break; |
case 14: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
AdWertNick = nick1 / 8; |
nick_filter = (nick_filter + nick1) / 2; |
HiResNick = nick_filter - AdNeutralNick; |
AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
AdWertRoll = roll1 / 8; |
roll_filter = (roll_filter + roll1) / 2; |
HiResRoll = roll_filter - AdNeutralRoll; |
AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
kanal = AD_DRUCK; |
break; |
case 17: |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
// "break" fehlt hier absichtlich |
case 9: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
tmpLuftdruck /= 2; |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (31 * HoeheD + (int) Parameter_Luftdruck_D * (int)(255 * ExpandBaro + StartLuftdruck - tmpLuftdruck - HoehenWert))/32; // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 7 * Luftdruck + 4) / 8; |
HoehenWert = 255 * ExpandBaro + StartLuftdruck - Luftdruck; |
tmpLuftdruck /= 2; |
} |
kanal = AD_NICK; |
break; |
default: |
kanal = 0; state = 0; kanal = AD_NICK; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/* |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static signed int gier1, roll1, nick1; |
static signed long nick_filter, roll_filter; |
static signed int accy, accx; |
switch(state++) |
{ |
case 0: |
nick1 = ADC; |
kanal = AD_ROLL; |
break; |
case 1: |
roll1 = ADC; |
kanal = AD_GIER; |
break; |
case 2: |
gier1 = ADC; |
kanal = AD_ACC_Y; |
break; |
case 3: |
Aktuell_ay = NeutralAccY - ADC; |
accy = Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 4: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 5: |
roll1 += ADC; |
kanal = AD_ACC_Z; |
break; |
case 6: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 750) |
{ |
NeutralAccZ += 0.02; |
if(modell_fliegt < 500) NeutralAccZ += 0.1; |
} |
} |
else if(AdWertAccHoch < -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 = AD_NICK; |
break; |
case 7: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 8: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 9: |
Aktuell_ax = ADC - NeutralAccX; |
accx = Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 10: |
gier1 += ADC; |
kanal = AD_NICK; |
break; |
case 11: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 12: |
roll1 += ADC; |
kanal = AD_UBAT; |
break; |
case 13: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = AD_ACC_Y; |
break; |
case 14: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 15: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 16: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 17: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_NICK; |
break; |
case 18: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 19: |
roll1 += ADC; |
kanal = AD_GIER; |
break; |
case 20: |
gier1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 21: |
Aktuell_ay = NeutralAccY - ADC; |
accy += Aktuell_ay; |
kanal = AD_NICK; |
break; |
case 22: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 23: |
roll1 += ADC; |
kanal = AD_DRUCK; |
break; |
case 24: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (7 * HoeheD + (int) Parameter_Luftdruck_D * (int)(255 * ExpandBaro + StartLuftdruck - tmpLuftdruck - HoehenWert)) / 8; // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = 255 * ExpandBaro + StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = AD_NICK; |
break; |
case 25: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 26: |
roll1 += ADC; |
kanal = AD_ACC_X; |
break; |
case 27: |
Aktuell_ax = ADC - NeutralAccX; |
accx += Aktuell_ax; |
kanal = AD_GIER; |
break; |
case 28: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1 + 2) / 4; |
else |
if(PlatinenVersion == 20) AdWertGier = 2047 - (ADC + gier1 + 1) / 2; |
else AdWertGier = (ADC + gier1 + 1) / 2; |
kanal = AD_NICK; |
break; |
case 29: |
nick1 += ADC; |
kanal = AD_ROLL; |
break; |
case 30: |
roll1 += ADC; |
kanal = AD_ACC_Y; |
break; |
case 31: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = (Aktuell_ay + accy); |
kanal = AD_NICK; |
break; |
case 32: |
AdWertNick = (ADC + nick1 + 3) / 5; |
nick_filter = (long) (1 * (long) nick_filter + 4 * (long)(ADC + nick1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertNick /= 2;nick_filter /=2;} |
HiResNick = nick_filter - 20 * AdNeutralNick; |
AdWertNickFilter = (long)(3L * (long)AdWertNickFilter + HiResNick + 2) / 4; |
DebugOut.Analog[21] = AdWertNickFilter / 4; |
kanal = AD_ROLL; |
break; |
case 33: |
AdWertRoll = (ADC + roll1 + 3) / 5; |
roll_filter = (long)(1 * (long)roll_filter + 4 * (long)(ADC + roll1) + 1) / 2; |
if(PlatinenVersion == 10) { AdWertRoll /= 2;roll_filter /=2;} |
HiResRoll = roll_filter - 20 * AdNeutralRoll; |
AdWertRollFilter = (long)(3L * (long)AdWertRollFilter + HiResRoll + 2) / 4; |
DebugOut.Analog[22] = AdWertRollFilter / 4; |
kanal = AD_ACC_X; |
break; |
case 34: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = (Aktuell_ax + accx); |
kanal = AD_NICK; |
state = 0; |
AdReady = 1; |
ZaehlMessungen++; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
*/ |
/branches/V0.72p HexaLotte/analog.h |
---|
0,0 → 1,45 |
#ifndef _ANALOG_H |
#define _ANALOG_H |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int HiResNick, HiResRoll; |
extern volatile int AdWertNickFilter, AdWertRollFilter, AdWertGierFilter; |
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 signed char ExpandBaro; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
extern unsigned char AnalogOffsetNick,AnalogOffsetRoll,AnalogOffsetGier; |
extern volatile unsigned char AdReady; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
void SucheGyroOffset(void); |
#define AD_GIER 0 |
#define AD_ROLL 1 |
#define AD_NICK 2 |
#define AD_DRUCK 3 |
#define AD_UBAT 4 |
#define AD_ACC_Z 5 |
#define AD_ACC_Y 6 |
#define AD_ACC_X 7 |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
//Signle trigger Mode, Interrupt on |
#endif //_ANALOG_H |
/branches/V0.72p HexaLotte/eeprom.c |
---|
0,0 → 1,236 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultStickMapping(void) |
{ |
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; |
} |
void DefaultKonstanten1(void) |
{ |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV | CFG_KOMPASS_AKTIV | CFG_GPS_AKTIV;//CFG_HOEHEN_SCHALTER |
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.Gyro_D = 3; // 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 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // 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.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 67; |
EE_Parameter.CouplingYawCorrection = 0; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 100; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 15; |
EE_Parameter.J17Timing = 15; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(void) |
{ |
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.Gyro_D = 3; // 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 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // 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.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 67; |
EE_Parameter.CouplingYawCorrection = 60; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 75; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 20; |
EE_Parameter.J17Timing = 20; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(void) |
{ |
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.Gyro_D = 3; // 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 = 0; // zur freien Verwendung |
EE_Parameter.UserParam2 = 0; // zur freien Verwendung |
EE_Parameter.UserParam3 = 0; // zur freien Verwendung |
EE_Parameter.UserParam4 = 0; // zur freien Verwendung |
EE_Parameter.UserParam5 = 0; // zur freien Verwendung |
EE_Parameter.UserParam6 = 0; // 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.BitConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsKopplung2 = 67; |
EE_Parameter.CouplingYawCorrection = 70; |
EE_Parameter.WinkelUmschlagNick = 85; |
EE_Parameter.WinkelUmschlagRoll = 85; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 32; |
EE_Parameter.DynamicStability = 50; |
EE_Parameter.J16Bitmask = 95; |
EE_Parameter.J17Bitmask = 243; |
EE_Parameter.J16Timing = 30; |
EE_Parameter.J17Timing = 30; |
EE_Parameter.NaviGpsModeControl = 253; |
EE_Parameter.NaviGpsGain = 100; |
EE_Parameter.NaviGpsP = 90; |
EE_Parameter.NaviGpsI = 90; |
EE_Parameter.NaviGpsD = 90; |
EE_Parameter.NaviGpsPLimit = 75; |
EE_Parameter.NaviGpsILimit = 75; |
EE_Parameter.NaviGpsDLimit = 75; |
EE_Parameter.NaviGpsACC = 0; |
EE_Parameter.NaviGpsMinSat = 6; |
EE_Parameter.NaviStickThreshold = 8; |
EE_Parameter.NaviWindCorrection = 90; |
EE_Parameter.NaviSpeedCompensation = 30; |
EE_Parameter.NaviOperatingRadius = 100; |
EE_Parameter.NaviAngleLimitation = 100; |
EE_Parameter.NaviPH_LoginTime = 4; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/V0.72p HexaLotte/fc.c |
---|
0,0 → 1,1628 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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. |
// + 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, |
// + 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 |
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + 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 |
// + 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, |
// + 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 |
// + for non-commercial use (directly or indirectly) |
// + 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 |
// + * 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 |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + 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. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
#include "eeprom.c" |
unsigned char h,m,s; |
volatile unsigned int I2CTimeout = 100; |
int MesswertNick,MesswertRoll,MesswertGier,MesswertGierBias, RohMesswertNick,RohMesswertRoll; |
int TrimNick, TrimRoll; |
int AdNeutralGierBias; |
int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
int NaviAccNick, NaviAccRoll,NaviCntAcc = 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; |
int KompassValue = 0; |
int KompassStartwert = 0; |
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; |
char GyroFaktor; |
char IntegralFaktor; |
int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links; |
volatile unsigned char Motor1, Motor2,Motor3,Motor4,Motor5,Motor6,Motor7,Motor8; |
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; |
int Ki = 10300 / 33; |
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_D = 8; // 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 = 90; |
unsigned char Parameter_AchsKopplung2 = 65; |
unsigned char Parameter_CouplingYawCorrection = 64; |
//unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
unsigned char Parameter_J16Bitmask; // for the J16 Output |
unsigned char Parameter_J16Timing; // for the J16 Output |
unsigned char Parameter_J17Bitmask; // for the J17 Output |
unsigned char Parameter_J17Timing; // for the J17 Output |
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char Parameter_NaviGpsGain; |
unsigned char Parameter_NaviGpsP; |
unsigned char Parameter_NaviGpsI; |
unsigned char Parameter_NaviGpsD; |
unsigned char Parameter_NaviGpsACC; |
unsigned char Parameter_NaviOperatingRadius; |
unsigned char Parameter_NaviWindCorrection; |
unsigned char Parameter_NaviSpeedCompensation; |
unsigned char Parameter_ExternalControl; |
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; |
unsigned char MikroKopterFlags = 0; |
long GIER_GRAD_FAKTOR = 1291; |
signed int KopplungsteilNickRoll,KopplungsteilRollNick; |
int MotorSmoothing(int neu, int alt) |
{ |
int motor; |
if(neu > alt) motor = (1*(int)alt + neu) / 2; |
else motor = neu - (alt - neu)*1; |
//if(Poti2 < 20) return(neu); |
return(motor); |
} |
void Piep(unsigned char Anzahl) |
{ |
while(Anzahl--) |
{ |
if(MotorenEin) return; //auf keinen Fall im Flug! |
beeptime = 100; |
Delay_ms(250); |
} |
} |
//############################################################################ |
// Nullwerte ermitteln |
void SetNeutral(void) |
//############################################################################ |
{ |
unsigned char i; |
unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0; |
ServoActive = 0; HEF4017R_ON; |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
AdNeutralGierBias = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsKopplung2 = 0; |
ExpandBaro = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
#define NEUTRAL_FILTER 32 |
for(i=0; i<NEUTRAL_FILTER; i++) |
{ |
Delay_ms_Mess(10); |
gier_neutral += AdWertGier; |
nick_neutral += AdWertNick; |
roll_neutral += AdWertRoll; |
} |
AdNeutralNick= (nick_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralRoll= (roll_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER / 8); |
AdNeutralGier= (gier_neutral+NEUTRAL_FILTER/2) / (NEUTRAL_FILTER); |
AdNeutralGierBias = AdNeutralGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / (2*ACC_AMPLIFY); |
NeutralAccX = abs(Mittelwert_AccNick) / (2*ACC_AMPLIFY); |
NeutralAccZ = Aktuell_az; |
} |
else |
{ |
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]); |
} |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
Delay_ms_Mess(100); |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
IntegralNick = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
Mess_Integral_Gier = 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; |
LED_Init(); |
MikroKopterFlags |= FLAG_CALIBRATE; |
FromNaviCtrl_Value.Kalman_K = -1; |
FromNaviCtrl_Value.Kalman_MaxDrift = 0; |
FromNaviCtrl_Value.Kalman_MaxFusion = 32; |
Poti1 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110; |
Poti2 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110; |
Poti3 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110; |
Poti4 = PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110; |
ServoActive = 1; |
SenderOkay = 100; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2,tmpl3,tmpl4; |
static signed int oldNick, oldRoll, d2Roll, d2Nick; |
signed long winkel_nick, winkel_roll; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
// MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier; |
MesswertNick = (signed int) AdWertNickFilter / 8; |
MesswertRoll = (signed int) AdWertRollFilter / 8; |
RohMesswertNick = MesswertNick; |
RohMesswertRoll = MesswertRoll; |
//DebugOut.Analog[21] = MesswertNick; |
//DebugOut.Analog[22] = MesswertRoll; |
//DebugOut.Analog[22] = Mess_Integral_Gier; |
//DebugOut.Analog[21] = MesswertNick; |
//DebugOut.Analog[22] = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 3 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 4L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 3 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 4L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 3 + ((long)AdWertAccHoch)) / 4L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
NaviAccNick += AdWertAccNick; |
NaviAccRoll += AdWertAccRoll; |
NaviCntAcc++; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
AdReady = 0; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Mess_IntegralRoll > 93000L) winkel_roll = 93000L; |
else if(Mess_IntegralRoll <-93000L) winkel_roll = -93000L; |
else winkel_roll = Mess_IntegralRoll; |
if(Mess_IntegralNick > 93000L) winkel_nick = 93000L; |
else if(Mess_IntegralNick <-93000L) winkel_nick = -93000L; |
else winkel_nick = Mess_IntegralNick; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
ErsatzKompass += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl3 = (MesswertRoll * winkel_nick) / 2048L; |
tmpl3 *= Parameter_AchsKopplung2; //65 |
tmpl3 /= 4096L; |
tmpl4 = (MesswertNick * winkel_roll) / 2048L; |
tmpl4 *= Parameter_AchsKopplung2; //65 |
tmpl4 /= 4096L; |
KopplungsteilNickRoll = tmpl3; |
KopplungsteilRollNick = tmpl4; |
tmpl4 -= tmpl3; |
ErsatzKompass += tmpl4; |
if(!Parameter_CouplingYawCorrection) Mess_Integral_Gier -= tmpl4/2; // Gier nachhelfen |
tmpl = ((MesswertGier + tmpl4) * winkel_nick) / 2048L; |
tmpl *= Parameter_AchsKopplung1; // 90 |
tmpl /= 4096L; |
tmpl2 = ((MesswertGier + tmpl4) * winkel_roll) / 2048L; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 4096L; |
if(labs(tmpl) > 128 || labs(tmpl2) > 128 /* || abs(KopplungsteilNickRoll) > 128 || abs(KopplungsteilRollNick) > 128)*/) TrichterFlug = 1; |
//MesswertGier += (Parameter_CouplingYawCorrection * tmpl4) / 256; |
} |
else tmpl = tmpl2 = KopplungsteilNickRoll = KopplungsteilRollNick = 0; |
TrimRoll = tmpl - tmpl2 / 100L; |
TrimNick = -tmpl2 + tmpl / 100L; |
// Kompasswert begrenzen ++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR; // 360° Umschlag |
if(ErsatzKompass < 0) ErsatzKompass += 360L * GIER_GRAD_FAKTOR; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralRoll2 += MesswertRoll + TrimRoll; |
Mess_IntegralRoll += MesswertRoll + TrimRoll - 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; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_IntegralNick2 += MesswertNick + TrimNick; |
Mess_IntegralNick += MesswertNick + TrimNick - 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; |
} |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
#define D_LIMIT 128 |
MesswertNick = HiResNick / 8; |
MesswertRoll = HiResRoll / 8; |
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 > 2000) MesswertNick = +1000; if(AdWertNick > 2015) MesswertNick = +2000; } |
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 > 2000) MesswertRoll = +1000; if(AdWertRoll > 2015) MesswertRoll = +2000; } |
if(Parameter_Gyro_D) |
{ |
d2Nick = HiResNick - oldNick; |
oldNick = (oldNick + HiResNick)/2; |
if(d2Nick > D_LIMIT) d2Nick = D_LIMIT; |
else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT; |
MesswertNick += (d2Nick * (signed int) Parameter_Gyro_D) / 16; |
d2Roll = HiResRoll - oldRoll; |
oldRoll = (oldRoll + HiResRoll)/2; |
if(d2Roll > D_LIMIT) d2Roll = D_LIMIT; |
else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT; |
MesswertRoll += (d2Roll * (signed int) Parameter_Gyro_D) / 16; |
HiResNick += (d2Nick * (signed int) Parameter_Gyro_D); |
HiResRoll += (d2Roll * (signed int) Parameter_Gyro_D); |
} |
if(RohMesswertRoll > 0) TrimRoll += ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
else TrimRoll -= ((long) abs(KopplungsteilNickRoll) * Parameter_CouplingYawCorrection) / 64L; |
if(RohMesswertNick > 0) TrimNick += ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
else TrimNick -= ((long) abs(KopplungsteilRollNick) * Parameter_CouplingYawCorrection) / 64L; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(RohMesswertNick > 256) MesswertNick += 1 * (RohMesswertNick - 256); |
else if(RohMesswertNick < -256) MesswertNick += 1 * (RohMesswertNick + 256); |
if(RohMesswertRoll > 256) MesswertRoll += 1 * (RohMesswertRoll - 256); |
else if(RohMesswertRoll < -256) MesswertRoll += 1 * (RohMesswertRoll + 256); |
} |
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; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
if(PlatinenVersion == 13) SucheGyroOffset(); |
// 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; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(!MotorenEin) |
{ |
#if defined(OCTO) || defined(OCTO2) || defined (OCTO3) |
Motor1 = 0;Motor2 = 0;Motor3 = 0;Motor4 = 0;Motor5 = 0;Motor6 = 0;Motor7 = 0;Motor8 = 0; |
if(MotorTest[0]) {Motor1 = MotorTest[0]; Motor2 = MotorTest[0];} |
if(MotorTest[3]) {Motor3 = MotorTest[3]; Motor4 = MotorTest[3];} |
if(MotorTest[1]) {Motor5 = MotorTest[1]; Motor6 = MotorTest[1];} |
if(MotorTest[2]) {Motor7 = MotorTest[2]; Motor8 = MotorTest[2];} |
#endif |
#ifdef QUADRO |
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]; |
#endif |
#if defined(HEXA1) || defined(HEXA2) |
Motor1 = 0;Motor2 = 0;Motor3 = 0;Motor4 = 0;Motor5 = 0;Motor6 = 0; |
if(MotorTest[0]) {Motor1 = MotorTest[0]; Motor3 = MotorTest[0];} |
if(MotorTest[3]) {Motor5 = MotorTest[3];} |
if(MotorTest[1]) {Motor2 = MotorTest[1]; Motor4 = MotorTest[1];} |
if(MotorTest[2]) {Motor6 = MotorTest[2];} |
#endif |
MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY); |
} else MikroKopterFlags |= FLAG_MOTOR_RUN; |
DebugOut.Analog[12] = Motor_Vorne; |
DebugOut.Analog[13] = Motor_Hinten; |
DebugOut.Analog[14] = Motor_Links; |
DebugOut.Analog[15] = Motor_Rechts; |
//Start I2C Interrupt Mode |
twi_state = 0; |
motor = 0; |
i2c_start(); |
} |
//############################################################################ |
// Trägt ggf. das Poti als Parameter ein |
void ParameterZuordnung(void) |
//############################################################################ |
{ |
#define CHK_POTI_MM(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;} |
#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; } |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI_MM(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI_MM(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_MM(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_Gyro_D,EE_Parameter.Gyro_D,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_AchsKopplung2, EE_Parameter.AchsKopplung2,0,255); |
CHK_POTI(Parameter_CouplingYawCorrection,EE_Parameter.CouplingYawCorrection,0,255); |
// CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255); |
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255); |
CHK_POTI(Parameter_ExternalControl,EE_Parameter.ExternalControl,0,255); |
Ki = 10300 / (Parameter_I_Faktor + 1); |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis_nick,pd_ergebnis_roll,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 int motorwert1,motorwert2,motorwert3,motorwert4,motorwert5,motorwert6,motorwert7,motorwert8; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
int IntegralNickMalFaktor,IntegralRollMalFaktor; |
Mittelwert(); |
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 && MotorenEin) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 256)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
if(modell_fliegt == 250) |
{ |
NeueKompassRichtungMerken = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
// Mess_Integral_Gier2 = 0; |
} |
} else MikroKopterFlags |= FLAG_FLY; |
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; |
SetActiveParamSetNumber(setting); // aktiven Datensatz merken |
} |
// else |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && 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 = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccNick; |
Mess_IntegralRoll = EE_Parameter.GyroAccFaktor * (long)Mittelwert_AccRoll; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
MikroKopterFlags |= FLAG_START; |
} |
} |
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; |
} |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// 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); |
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); |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
if(StickGier > 2) StickGier -= 2; else |
if(StickGier < -2) StickGier += 2; else StickGier = 0; |
StickGas = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120; |
/* 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); |
GyroFaktor = (Parameter_Gyro_P + 10.0); |
// IntegralFaktor = ((float) Parameter_Gyro_I) / (44000 / STICK_GAIN); |
IntegralFaktor = Parameter_Gyro_I; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_ExternalControl > 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(abs(StickNick/STICK_GAIN) > MaxStickNick) |
{ |
MaxStickNick = abs(StickNick)/STICK_GAIN; |
if(MaxStickNick > 100) MaxStickNick = 100; |
} |
else MaxStickNick--; |
if(abs(StickRoll/STICK_GAIN) > MaxStickRoll) |
{ |
MaxStickRoll = abs(StickRoll)/STICK_GAIN; |
if(MaxStickRoll > 100) MaxStickRoll = 100; |
} |
else MaxStickRoll--; |
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.BitConfig & 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.BitConfig & 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.BitConfig & 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.BitConfig & 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(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(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
TrichterFlug = 1; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 90;//(float) 100 / (256.0 / STICK_GAIN); |
IntegralFaktor = 120;//(float) 120 / (44000 / STICK_GAIN); |
Looping_Roll = 0; |
Looping_Nick = 0; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Integrale auf ACC-Signal abgleichen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define ABGLEICH_ANZAHL 256L |
MittelIntegralNick += IntegralNick; // Für die Mittelwertbildung aufsummieren |
MittelIntegralRoll += IntegralRoll; |
MittelIntegralNick2 += IntegralNick2; |
MittelIntegralRoll2 += IntegralRoll2; |
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; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && Aktuell_az > 512) |
{ |
long tmp_long, tmp_long2; |
if(FromNaviCtrl_Value.Kalman_K != -1 /*&& !TrichterFlug*/) |
{ |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long = (tmp_long * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
tmp_long2 = (tmp_long2 * FromNaviCtrl_Value.Kalman_K) / (32 * 16); |
if((MaxStickNick > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 2; |
tmp_long2 /= 2; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(tmp_long > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 > (long) FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long) FromNaviCtrl_Value.Kalman_MaxFusion; |
if(tmp_long2 < (long)-FromNaviCtrl_Value.Kalman_MaxFusion) tmp_long2 = (long)-FromNaviCtrl_Value.Kalman_MaxFusion; |
} |
else |
{ |
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 > 64) || (MaxStickRoll > 64)) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25) |
{ |
tmp_long /= 3; |
tmp_long2 /= 3; |
} |
#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; |
} |
//if(Poti2 > 20) { tmp_long = 0; tmp_long2 = 0;} |
Mess_IntegralNick -= tmp_long; |
Mess_IntegralRoll -= tmp_long2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
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 && EE_Parameter.Driftkomp) |
{ |
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; |
LageKorrekturNick = ausgleichNick / ABGLEICH_ANZAHL; |
LageKorrekturRoll = ausgleichRoll / ABGLEICH_ANZAHL; |
if(((MaxStickNick > 64) || (MaxStickRoll > 64) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) && (FromNaviCtrl_Value.Kalman_K == -1)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturRoll /= 2; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gyro-Drift ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick2 /= ABGLEICH_ANZAHL; |
MittelIntegralRoll2 /= ABGLEICH_ANZAHL; |
tmp_long = IntegralNick2 - IntegralNick; |
tmp_long2 = IntegralRoll2 - IntegralRoll; |
//DebugOut.Analog[25] = MittelIntegralRoll2 / 26; |
IntegralFehlerNick = tmp_long; |
IntegralFehlerRoll = tmp_long2; |
Mess_IntegralNick2 -= IntegralFehlerNick; |
Mess_IntegralRoll2 -= IntegralFehlerRoll; |
// IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2; |
// IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2; |
if(EE_Parameter.Driftkomp) |
{ |
if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; } |
if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; } |
} |
//DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//DebugOut.Analog[24] = GierGyroFehler; |
GierGyroFehler = 0; |
/*DebugOut.Analog[17] = IntegralAccNick / 26; |
DebugOut.Analog[18] = IntegralAccRoll / 26; |
DebugOut.Analog[19] = IntegralFehlerNick;// / 26; |
DebugOut.Analog[20] = IntegralFehlerRoll;// / 26; |
*/ |
//DebugOut.Analog[21] = MittelIntegralNick / 26; |
//MittelIntegralRoll = MittelIntegralRoll; |
//DebugOut.Analog[28] = ausgleichNick; |
/* |
DebugOut.Analog[29] = ausgleichRoll; |
DebugOut.Analog[30] = LageKorrekturRoll * 10; |
*/ |
#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 || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / (FEHLER_LIMIT2 / 8); |
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 / 8); |
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 = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerNick > FEHLER_LIMIT) AdNeutralNick += cnt; |
if(IntegralFehlerNick < -FEHLER_LIMIT) AdNeutralNick -= cnt; |
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++ |
cnt = 1;// + labs(IntegralFehlerNick) / 4096; |
ausgleichRoll = 0; |
if(labs(MittelIntegralRoll_Alt - MittelIntegralRoll) < BEWEGUNGS_LIMIT || (FromNaviCtrl_Value.Kalman_MaxDrift > 3*8)) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / (FEHLER_LIMIT2 / 8); |
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 / 8); |
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 = 1000; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(FromNaviCtrl_Value.Kalman_MaxDrift) if(cnt > FromNaviCtrl_Value.Kalman_MaxDrift) cnt = FromNaviCtrl_Value.Kalman_MaxDrift; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
} |
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; |
} // ZaehlMessungen >= ABGLEICH_ANZAHL |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
if(abs(StickGier) > 15) // war 35 |
{ |
KompassSignalSchlecht = 1000; |
if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) |
{ |
NeueKompassRichtungMerken = 1; |
}; |
} |
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[16] = KompassSignalSchlecht; |
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; |
fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180; |
if(abs(MesswertGier) > 128) |
{ |
fehler = 0; |
} |
if(NeueKompassRichtungMerken) |
{ |
// ErsatzKompass += (fehler * 32) / korrektur; |
// fehler = 0; |
// fehler /= 4; |
// ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
} |
if(!KompassSignalSchlecht && w < 25) |
{ |
GierGyroFehler += fehler; |
if(NeueKompassRichtungMerken) |
{ |
beeptime = 200; |
// KompassStartwert = KompassValue; |
ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR; |
KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR); |
NeueKompassRichtungMerken = 0; |
} |
} |
ErsatzKompass += (fehler * 8) / korrektur; |
w = (w * Parameter_KompassWirkung) / 32; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w >= 0) |
{ |
if(!KompassSignalSchlecht) |
{ |
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 = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[1] = IntegralRoll / (EE_Parameter.GyroAccFaktor * 4); |
DebugOut.Analog[2] = Mittelwert_AccNick / 4; |
DebugOut.Analog[3] = Mittelwert_AccRoll / 4; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512);//Aktuell_az; |
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[17] = FromNaviCtrl_Value.Distance; |
//DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar; |
DebugOut.Analog[19] = WinkelOut.CalcState; |
DebugOut.Analog[20] = ServoValue; |
// DebugOut.Analog[24] = MesswertNick/2; |
// DebugOut.Analog[25] = MesswertRoll/2; |
DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift; |
// DebugOut.Analog[28] = (int)FromNaviCtrl_Value.Kalman_MaxFusion; |
// DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K; |
DebugOut.Analog[30] = GPS_Nick; |
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[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; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Drehgeschwindigkeit und -winkel zu einem Istwert zusammenfassen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(TrichterFlug) { SummeRoll = 0; SummeNick = 0;}; |
if(!Looping_Nick) IntegralNickMalFaktor = (IntegralNick * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralNickMalFaktor = 0; |
if(!Looping_Roll) IntegralRollMalFaktor = (IntegralRoll * IntegralFaktor) / (44000 / STICK_GAIN); else IntegralRollMalFaktor = 0; |
#define TRIM_MAX 200 |
if(TrimNick > TRIM_MAX) TrimNick = TRIM_MAX; else if(TrimNick <-TRIM_MAX) TrimNick =-TRIM_MAX; |
if(TrimRoll > TRIM_MAX) TrimRoll = TRIM_MAX; else if(TrimRoll <-TRIM_MAX) TrimRoll =-TRIM_MAX; |
{ |
MesswertNick = IntegralNickMalFaktor + (long)((long)MesswertNick * GyroFaktor + (long)TrimNick * 128L) / (256L / STICK_GAIN); |
MesswertRoll = IntegralRollMalFaktor + (long)((long)MesswertRoll * GyroFaktor + (long)TrimRoll * 128L) / (256L / STICK_GAIN); |
} |
#ifndef QUADRO |
MesswertGier = (long)(MesswertGier * 4 * (long)GyroFaktor) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktor) / (4 * (44000 / STICK_GAIN)); |
#else |
MesswertGier = (long)(MesswertGier * 2 * (long)GyroFaktor) / (256L / STICK_GAIN) + (long)(Integral_Gier * IntegralFaktor) / (2 * (44000 / STICK_GAIN)); |
#endif |
// Maximalwerte abfangen |
// #define MAX_SENSOR (4096*STICK_GAIN) |
#define MAX_SENSOR (4096*4) |
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; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Höhenregelung |
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil *= STICK_GAIN; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
static char delay = 100; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(((EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && ((Parameter_MaxHoehe > 80) && (Parameter_MaxHoehe < 140))) || |
(!(EE_Parameter.BitConfig & CFG_HIGHT_3SWITCH) && (Parameter_MaxHoehe < 50))) |
{ |
if(!delay--) |
{ |
if(MessLuftdruck > 1000) |
{ |
ExpandBaro -= 10; |
OCR0A = DruckOffsetSetting - ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else |
if(MessLuftdruck < 100) |
{ |
ExpandBaro += 10; |
OCR0A = DruckOffsetSetting - ExpandBaro; |
beeptime = 300; |
delay = 250; |
} |
else |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
delay = 1; |
} |
} |
} |
else |
{ |
HoehenReglerAktiv = 1; |
delay = 200; |
} |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
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)); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - StickNick; // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNickMalFaktor - 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_nick = DiffNick + SummeNick / Ki; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_nick > tmp_int) pd_ergebnis_nick = tmp_int; |
if(pd_ergebnis_nick < -tmp_int) pd_ergebnis_nick = -tmp_int; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - StickRoll; // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRollMalFaktor - StickRoll;// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > (STICK_GAIN * 16000L)) SummeRoll = (STICK_GAIN * 16000L); |
if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN); |
pd_ergebnis_roll = DiffRoll + SummeRoll / Ki; // PI-Regler für Roll |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis_roll > tmp_int) pd_ergebnis_roll = tmp_int; |
if(pd_ergebnis_roll < -tmp_int) pd_ergebnis_roll = -tmp_int; |
#ifdef QUADRO |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Quadro-Mischer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
motorwert = GasMischanteil + pd_ergebnis_nick + GierMischanteil; // Mischer |
motorwert1 = MotorSmoothing(motorwert,motorwert1); |
motorwert = motorwert1 / STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor_Vorne = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + GierMischanteil; |
motorwert2 = MotorSmoothing(motorwert,motorwert2); |
motorwert = motorwert2 / STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor_Hinten = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_roll - GierMischanteil; |
motorwert3 = MotorSmoothing(motorwert,motorwert3); |
motorwert = motorwert3 / STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor_Links = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll - GierMischanteil; |
motorwert4 = MotorSmoothing(motorwert,motorwert4); |
motorwert = motorwert4 / STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
#ifdef OCTO |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Octo-Mischer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
motorwert = GasMischanteil + pd_ergebnis_nick + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor1 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor2 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor3 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor4 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor5 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor6 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor7 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor8 = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
#ifdef OCTO2 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Octo-Mischer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
motorwert = GasMischanteil + pd_ergebnis_nick + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor1 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor2 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor3 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor4 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor5 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor6 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor7 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor8 = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
#ifdef OCTO3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Octo-Mischer |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
motorwert = GasMischanteil + pd_ergebnis_nick + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor1 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor2 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor3 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor4 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor5 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor6 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor7 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor8 = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
#ifdef HEXA1 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Hexa1: "+"-Configuration |
// 6 |
// 4 1 |
// 2 3 |
// 5 |
// reverse props: 1,4,5 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Korrektur-Faktoren für identische Nick/Roll-Wirkung |
pd_ergebnis_nick /= 3; |
pd_ergebnis_roll = (pd_ergebnis_roll*4) / 7; |
motorwert = GasMischanteil + pd_ergebnis_nick/2 - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor1 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick/2 + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor2 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick/2 - pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor3 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick/2 + pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor4 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor5 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor6 = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
#ifdef HEXA2 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Hexa1: "X"-Configuration |
// 1 3 |
// 6 5 |
// 4 2 |
// |
// reverse props: 1,4,5 |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Korrektur-Faktoren für identische Nick/Roll-Wirkung |
pd_ergebnis_roll = pd_ergebnis_roll / 3; |
pd_ergebnis_nick = (pd_ergebnis_nick*4) / 7; |
motorwert = GasMischanteil + pd_ergebnis_nick + pd_ergebnis_roll/2 - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor1 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick - pd_ergebnis_roll/2 + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor2 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_nick - pd_ergebnis_roll/2 + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor3 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_nick + pd_ergebnis_roll/2 - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor4 = motorwert; |
motorwert = GasMischanteil - pd_ergebnis_roll - GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor5 = motorwert; |
motorwert = GasMischanteil + pd_ergebnis_roll + GierMischanteil; |
motorwert /= STICK_GAIN; CHECK_MIN_MAX(motorwert,MIN_GAS,MAX_GAS); |
Motor6 = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
#endif |
/* |
if(Poti1 > 20) Motor1 = 0; |
if(Poti1 > 90) Motor6 = 0; |
if(Poti1 > 140) Motor2 = 0; |
//if(Poti1 > 200) Motor7 = 0; |
*/ |
} |
/branches/V0.72p HexaLotte/fc.h |
---|
0,0 → 1,186 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
//#define GIER_GRAD_FAKTOR 1291L // Abhängigkeit zwischen GyroIntegral und Winkel |
//#define GIER_GRAD_FAKTOR 1160L |
extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel |
#define STICK_GAIN 4 |
#define FLAG_MOTOR_RUN 1 |
#define FLAG_FLY 2 |
#define FLAG_CALIBRATE 4 |
#define FLAG_START 8 |
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;} |
extern unsigned char MikroKopterFlags; |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern long IntegralNick,IntegralNick2; |
extern long IntegralRoll,IntegralRoll2; |
//extern int IntegralNick,IntegralNick2; |
//extern int 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 int KompassValue; |
extern int KompassStartwert; |
extern int KompassRichtung; |
extern int TrimNick, TrimRoll; |
extern long ErsatzKompass; |
extern int ErsatzKompassInGrad; // Kompasswert in Grad |
extern int HoehenWert; |
extern int SollHoehe; |
extern int MesswertNick,MesswertRoll,MesswertGier; |
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
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); |
void SendMotorData(void); |
void CalibrierMittelwert(void); |
void Mittelwert(void); |
void SetNeutral(void); |
void Piep(unsigned char Anzahl); |
extern void DefaultKonstanten(void); |
void DefaultKonstanten1(void); |
void DefaultKonstanten2(void); |
extern unsigned char h,m,s; |
extern volatile unsigned char Timeout ; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern 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 Motor1, Motor2,Motor3,Motor4,Motor5,Motor6,Motor7,Motor8; |
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 92 |
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 Gyro_D; // 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 AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
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 |
//---Output --------------------------------------------- |
unsigned char J16Bitmask; // for the J16 Output |
unsigned char J16Timing; // for the J16 Output |
unsigned char J17Bitmask; // for the J17 Output |
unsigned char J17Timing; // for the J17 Output |
//---NaviCtrl--------------------------------------------- |
unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
unsigned char NaviGpsGain; |
unsigned char NaviGpsP; |
unsigned char NaviGpsI; |
unsigned char NaviGpsD; |
unsigned char NaviGpsPLimit; |
unsigned char NaviGpsILimit; |
unsigned char NaviGpsDLimit; |
unsigned char NaviGpsACC; |
unsigned char NaviGpsMinSat; |
unsigned char NaviStickThreshold; |
unsigned char NaviWindCorrection; |
unsigned char NaviSpeedCompensation; |
unsigned char NaviOperatingRadius; |
unsigned char NaviAngleLimitation; |
unsigned char NaviPH_LoginTime; |
//---Ext.Ctrl--------------------------------------------- |
unsigned char ExternalControl; // for serial Control |
//------------------------------------------------ |
unsigned char BitConfig; // (war Loop-Cfg) 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; |
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_AchsKopplung2; |
//extern unsigned char Parameter_AchsGegenKopplung1; |
extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
extern unsigned char Parameter_J16Timing; // for the J16 Output |
extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
extern unsigned char Parameter_J17Timing; // for the J17 Output |
/* |
extern unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard |
extern unsigned char Parameter_NaviGpsGain; |
extern unsigned char Parameter_NaviGpsP; |
extern unsigned char Parameter_NaviGpsI; |
extern unsigned char Parameter_NaviGpsD; |
extern unsigned char Parameter_NaviGpsACC; |
extern unsigned char Parameter_NaviOperatingRadius; |
extern unsigned char Parameter_NaviWindCorrection; |
extern unsigned char Parameter_NaviSpeedCompensation; |
*/ |
#endif //_FC_H |
/branches/V0.72p HexaLotte/flight.pnproj |
---|
0,0 → 1,0 |
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="spi.h"></File><File path="spi.c"></File><File path="led.h"></File><File path="led.c"></File><File path="fc.c"></File><File path="Spectrum.c"></File><File path="Spectrum.h"></File></Project> |
/branches/V0.72p HexaLotte/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/V0.72p HexaLotte/gps.h |
---|
0,0 → 1,7 |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
extern signed int GPS_Nick2; |
extern signed int GPS_Roll2; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/V0.72p HexaLotte/led.c |
---|
0,0 → 1,49 |
#include <inttypes.h> |
#include "main.h" |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
// 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; |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
// called in UpdateMotors() every 2ms |
void LED_Update(void) |
{ |
static char delay = 0; |
if(!delay--) // 10ms Intervall |
{ |
delay = 4; |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing > 230)) {if(EE_Parameter.J16Bitmask & 128) J16_ON; else J16_OFF;} |
else |
if((EE_Parameter.J16Timing > 250) && (Parameter_J16Timing < 10)) {if(EE_Parameter.J16Bitmask & 128) J16_OFF; else J16_ON;} |
else |
if(!J16Blinkcount--) |
{ |
J16Blinkcount = Parameter_J16Timing-1; |
if(J16Mask == 1) J16Mask = 128; else J16Mask /= 2; |
if(J16Mask & EE_Parameter.J16Bitmask) J16_ON; else J16_OFF; |
} |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing > 230)) {if(EE_Parameter.J17Bitmask & 128) J17_ON; else J17_OFF;} |
else |
if((EE_Parameter.J17Timing > 250) && (Parameter_J17Timing < 10)) {if(EE_Parameter.J17Bitmask & 128) J17_OFF; else J17_ON;} |
else |
if(!J17Blinkcount--) |
{ |
J17Blinkcount = Parameter_J17Timing-1; |
if(J17Mask == 1) J17Mask = 128; else J17Mask /= 2; |
if(J17Mask & EE_Parameter.J17Bitmask) J17_ON; else J17_OFF; |
} |
} |
} |
/branches/V0.72p HexaLotte/led.h |
---|
0,0 → 1,11 |
#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 void LED_Init(void); |
extern void LED_Update(void); |
/branches/V0.72p HexaLotte/main.c |
---|
0,0 → 1,310 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + 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. |
// + 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, |
// + 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 |
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
// + eindeutig als Ursprung verlinkt und genannt werden |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
// + 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 |
// + 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, |
// + 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 |
// + for non-commercial use (directly or indirectly) |
// + 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 |
// + * 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 |
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
// + 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. |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.h" |
unsigned char EEPromArray[E2END+1] EEMEM; |
unsigned char PlatinenVersion = 10; |
unsigned char SendVersionToNavi = 1; |
// -- Parametersatz aus EEPROM lesen --- |
// number [1..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if((number > 5)||(number < 1)) number = 3; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
LED_Init(); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [1..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * (number - 1)], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_LENGTH], length); // Länge der Datensätze merken |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_CHANNELS], 8); // 8 Kanäle merken |
SetActiveParamSetNumber(number); |
LED_Init(); |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if((set > 5) || (set < 1)) |
{ |
set = 3; |
SetActiveParamSetNumber(set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
void SetActiveParamSetNumber(unsigned char number) |
{ |
if(number > 5) number = 5; |
if(number < 1) return; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
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) |
//############################################################################ |
{ |
unsigned int timer; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) |
{ |
if(PINB & 0x02) PlatinenVersion = 13; |
else PlatinenVersion = 11; |
} |
else |
{ |
if(PINB & 0x02) PlatinenVersion = 20; |
else PlatinenVersion = 10; |
} |
DDRC = 0x81; // SCL |
DDRC |=0x40; // HEF4017 Reset |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 -> Servo signal |
PORTD = 0x47; // LED |
HEF4017R_ON; |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
if(PlatinenVersion >= 20) GIER_GRAD_FAKTOR = 1160; else GIER_GRAD_FAKTOR = 1291; // unterschiedlich für ME und ENC |
ROT_OFF; |
Timer_Init(); |
TIMER2_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR,VERSION_PATCH + 'a'); |
if(UCSR1A == 0x20 && UCSR1C == 0x06) // initial Values for 644P |
{ |
Uart1Init(); |
} |
printf("\n\r=============================="); |
GRN_ON; |
ReadParameterSet(3, (unsigned char *) &EE_Parameter.Kanalbelegung[0], 9); // read only the first bytes |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
DefaultKonstanten1(); |
printf("\n\rInit. EEPROM"); |
for (unsigned char i=1;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
if(PlatinenVersion >= 20) |
{ |
EE_Parameter.Gyro_D = 5; |
EE_Parameter.Driftkomp = 0; |
EE_Parameter.GyroAccFaktor = 27; |
EE_Parameter.WinkelUmschlagNick = 78; |
EE_Parameter.WinkelUmschlagRoll = 78; |
} |
// valid Stick-Settings? |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]) < 12 && eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]) < 12) |
{ |
EE_Parameter.Kanalbelegung[0] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+0]); |
EE_Parameter.Kanalbelegung[1] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+1]); |
EE_Parameter.Kanalbelegung[2] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+2]); |
EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
if(i==1) printf(": Generating Default-Parameter using old Stick Settings"); |
} else DefaultStickMapping(); |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
SetActiveParamSetNumber(3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
printf("\n\rACC nicht abgeglichen!"); |
} |
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(); |
while (!CheckDelay(timer)); |
printf("OK\n\r"); |
} |
SetNeutral(); |
ROT_OFF; |
beeptime = 2000; |
ExternControl.Digital[0] = 0x55; |
printf("\n\rSteuerung: "); |
if (EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold"); |
else printf("Neutral"); |
printf("\n\n\r"); |
LcdClear(); |
I2CTimeout = 5000; |
WinkelOut.Orientation = 1; |
while (1) |
{ |
if(UpdateMotor && AdReady) // ReglerIntervall |
{ |
UpdateMotor=0; |
//J3High; |
if(WinkelOut.CalcState) CalMk3Mag(); |
else MotorRegler(); |
//J3Low; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
ExternControl.Config = 0; |
ExternStickNick = 0; |
ExternStickRoll = 0; |
ExternStickGier = 0; |
} |
if(SenderOkay) SenderOkay--; |
if(!I2CTimeout) |
{ |
I2CTimeout = 5; |
i2c_reset(); |
if((BeepMuster == 0xffff) && MotorenEin) |
{ |
beeptime = 10000; |
BeepMuster = 0x0080; |
} |
} |
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; |
} |
} |
SPI_StartTransmitPacket(); |
SendSPI = 4; |
timer = SetDelay(20); |
} |
LED_Update(); |
} |
if(!SendSPI) { SPI_TransmitByte(); } |
} |
return (1); |
} |
/branches/V0.72p HexaLotte/main.h |
---|
0,0 → 1,174 |
#ifndef _MAIN_H |
#define _MAIN_H |
//#define QUADRO |
//#define OCTO // 2 Arms in Front |
//#define OCTO2 // 1 Arm in front |
//#define OCTO3 // 1 Arm with two Motors in front or Coax |
#define HEXA1 // 1 Arm in front (+-Config) |
//#define HEXA2 // 2 Arms in front (X-Config) |
//+++++++++++ |
// Quadro: |
// 1 |
// 4 3 |
// 2 |
//+++++++++++ |
// Reverse Props on 1 2 |
//+++++++++++ |
// Octo: |
// 1 2 |
// 8 3 |
// 7 4 |
// 6 5 |
//+++++++++++ |
//+++++++++++ |
// Octo2: |
// 1 |
// 8 2 |
// 7 3 |
// 6 4 |
// 5 |
//+++++++++++ |
//+++++++++++ |
// Octo3: |
// 1 |
// 2 |
// 8 7 3 4 |
// 5 |
// 6 |
//+++++++++++ |
// Reverse Props on octo: 1 3 5 7 |
// ++++++++++ |
// Hexa1: "+"-Configuration |
// 6 |
// 4 1 |
// 2 3 |
// 5 |
// ++++++++++ |
// Hexa1: "X"-Configuration |
// 1 3 |
// 6 5 |
// 4 2 |
// |
// reverse props on Hexa: 1,4,5 |
// ++++++++++ |
//Hier die Quarz Frequenz einstellen |
#if defined (__AVR_ATmega32__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
#if defined (__AVR_ATmega644P__) |
#define SYSCLK 20000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if((PlatinenVersion == 10)||(PlatinenVersion == 20)) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF {if((PlatinenVersion < 12)) PORTB &=~0x02; else PORTB |= 0x02;} |
#define GRN_ON {if((PlatinenVersion < 12)) PORTB |= 0x02; else PORTB &=~0x02;} |
#define GRN_FLASH PORTB ^= 0x02 |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EE_DATENREVISION 74 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
#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 |
#define EEPROM_ADR_CHANNELS 80 |
#define EEPROM_ADR_PARAM_LENGTH 98 |
#define EEPROM_ADR_PARAM_BEGIN 100 |
#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 |
#define CFG_LOOP_OBEN 0x01 |
#define CFG_LOOP_UNTEN 0x02 |
#define CFG_LOOP_LINKS 0x04 |
#define CFG_LOOP_RECHTS 0x08 |
#define CFG_HIGHT_3SWITCH 0x10 |
#define J3High PORTD |= 0x20 |
#define J3Low PORTD &= ~0x20 |
#define J4High PORTD |= 0x10 |
#define J4Low PORTD &= ~0x10 |
#define J5High PORTD |= 0x08 |
#define J5Low PORTD &= ~0x08 |
//#define SYSCLK |
//extern unsigned long SYSCLK; |
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); |
void SetActiveParamSetNumber(unsigned char number); |
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" |
#include "led.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.72p HexaLotte/makefile |
---|
0,0 → 1,449 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644p |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
VERSION_MAJOR = 0 |
VERSION_MINOR = 72 |
VERSION_PATCH = 15 |
VERSION_SERIAL_MAJOR = 10 # Serial Protocol |
VERSION_SERIAL_MINOR = 0 # Serial Protocol |
NC_SPI_COMPATIBLE = 5 # Navi-Kompatibilität |
#------------------------------------------------------------------- |
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 |
endif |
ifeq ($(MCU), atmega644p) |
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m |
HEX_NAME = MEGA644 |
endif |
ifeq ($(F_CPU), 16000000) |
QUARZ = 16MHZ |
endif |
ifeq ($(F_CPU), 20000000) |
QUARZ = 20MHZ |
endif |
# Output format. (can be srec, ihex, binary) |
FORMAT = ihex |
# Target file name (without extension). |
ifeq ($(VERSION_PATCH), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a |
endif |
ifeq ($(VERSION_PATCH), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b |
endif |
ifeq ($(VERSION_PATCH), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c |
endif |
ifeq ($(VERSION_PATCH), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d |
endif |
ifeq ($(VERSION_PATCH), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e |
endif |
ifeq ($(VERSION_PATCH), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f |
endif |
ifeq ($(VERSION_PATCH), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g |
endif |
ifeq ($(VERSION_PATCH), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h |
endif |
ifeq ($(VERSION_PATCH), 8) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i |
endif |
ifeq ($(VERSION_PATCH), 9) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j |
endif |
ifeq ($(VERSION_PATCH), 10) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k |
endif |
ifeq ($(VERSION_PATCH), 11) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)L |
endif |
ifeq ($(VERSION_PATCH), 12) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m |
endif |
ifeq ($(VERSION_PATCH), 13) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n |
endif |
ifeq ($(VERSION_PATCH), 14) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o |
endif |
ifeq ($(VERSION_PATCH), 15) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p |
endif |
ifeq ($(VERSION_PATCH), 16) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q |
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 = 2 |
########################################################################################################## |
# 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 led.c Spectrum.c |
########################################################################################################## |
# List Assembler source files here. |
# Make them always end in a capital .S. Files ending in a lowercase .s |
# will not be considered source files but generated files (assembler |
# output from the compiler), and will be deleted upon "make clean"! |
# Even though the DOS/Win* filesystem matches both .s and .S the same, |
# it will preserve the spelling of the filenames, and gcc itself does |
# care about how the name is spelled on its command-line. |
ASRC = |
# List any extra directories to look for include files here. |
# Each directory must be seperated by a space. |
EXTRAINCDIRS = |
# Optional compiler flags. |
# -g: generate debugging information (for GDB, or for COFF conversion) |
# -O*: optimization level |
# -f...: tuning, see gcc manual and avr-libc documentation |
# -Wall...: warning level |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create assembler listing |
CFLAGS = -O$(OPT) \ |
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
-Wall -Wstrict-prototypes \ |
-Wa,-adhlns=$(<:.c=.lst) \ |
$(patsubst %,-I%,$(EXTRAINCDIRS)) |
# Set a "language standard" compiler flag. |
# Unremark just one line below to set the language standard to use. |
# gnu99 = C99 + GNU extensions. See GCC manual for more information. |
#CFLAGS += -std=c89 |
#CFLAGS += -std=gnu89 |
#CFLAGS += -std=c99 |
CFLAGS += -std=gnu99 |
CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_PATCH=$(VERSION_PATCH) -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) -DNC_SPI_COMPATIBLE=$(NC_SPI_COMPATIBLE) |
# Optional assembler flags. |
# -Wa,...: tell GCC to pass this to the assembler. |
# -ahlms: create listing |
# -gstabs: have the assembler create line number information; note that |
# for use in COFF files, additional information about filenames |
# and function names needs to be present in the assembler source |
# files -- see avr-libc docs [FIXME: not yet described there] |
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs |
# Optional linker flags. |
# -Wl,...: tell GCC to pass this to linker. |
# -Map: create map file |
# --cref: add cross reference to map file |
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref |
# Additional libraries |
# Minimalistic printf version |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
# Floating point printf version (requires -lm below) |
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
# -lm = math library |
LDFLAGS += -lm |
##LDFLAGS += -T./linkerfile/avr5.x |
# Programming support using avrdude. Settings and variables. |
# Programming hardware: alf avr910 avrisp bascom bsd |
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 |
# |
# Type: avrdude -c ? |
# to get a full listing. |
# |
#AVRDUDE_PROGRAMMER = dt006 |
#AVRDUDE_PROGRAMMER = stk200 |
#AVRDUDE_PROGRAMMER = ponyser |
AVRDUDE_PROGRAMMER = avrispv2 |
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
#AVRDUDE_PORT = com1 # programmer connected to serial device |
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
AVRDUDE_PORT = usb # programmer connected to USB |
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS) |
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
# Uncomment the following if you want avrdude's erase cycle counter. |
# Note that this counter needs to be initialized first using -Yn, |
# see avrdude manual. |
#AVRDUDE_ERASE += -y |
# Uncomment the following if you do /not/ wish a verification to be |
# performed after programming the device. |
AVRDUDE_FLAGS += -V |
# Increase verbosity level. Please use this when submitting bug |
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> |
# to submit bug reports. |
#AVRDUDE_FLAGS += -v -v |
# --------------------------------------------------------------------------- |
# Define directories, if needed. |
DIRAVR = c:/winavr |
DIRAVRBIN = $(DIRAVR)/bin |
DIRAVRUTILS = $(DIRAVR)/utils/bin |
DIRINC = . |
DIRLIB = $(DIRAVR)/avr/lib |
# Define programs and commands. |
SHELL = sh |
CC = avr-gcc |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
SIZE = avr-size |
# Programming support using avrdude. |
AVRDUDE = avrdude |
REMOVE = rm -f |
COPY = cp |
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
ELFSIZE = $(SIZE) -A $(TARGET).elf |
# Define Messages |
# English |
MSG_ERRORS_NONE = Errors: none |
MSG_BEGIN = -------- begin -------- |
MSG_END = -------- end -------- |
MSG_SIZE_BEFORE = Size before: |
MSG_SIZE_AFTER = Size after: |
MSG_COFF = Converting to AVR COFF: |
MSG_EXTENDED_COFF = Converting to AVR Extended COFF: |
MSG_FLASH = Creating load file for Flash: |
MSG_EEPROM = Creating load file for EEPROM: |
MSG_EXTENDED_LISTING = Creating Extended Listing: |
MSG_SYMBOL_TABLE = Creating Symbol Table: |
MSG_LINKING = Linking: |
MSG_COMPILING = Compiling: |
MSG_ASSEMBLING = Assembling: |
MSG_CLEANING = Cleaning project: |
# Define all object files. |
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) |
# Define all listing files. |
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
# Combine all necessary flags and optional flags. |
# Add target processor to flags. |
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
# Default target. |
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
$(TARGET).lss $(TARGET).sym sizeafter finished end |
# Eye candy. |
# AVR Studio 3.x does not check make's exit code but relies on |
# the following magic strings to be generated by the compile job. |
begin: |
@echo |
@echo $(MSG_BEGIN) |
finished: |
@echo $(MSG_ERRORS_NONE) |
end: |
@echo $(MSG_END) |
@echo |
# Display size of file. |
# Display size of file. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE); $(HEXSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE); $(HEXSIZE); echo; fi |
# Display compiler version information. |
gccversion : |
@$(CC) --version |
# Convert ELF to COFF for use in debugging / simulating in |
# AVR Studio or VMLAB. |
COFFCONVERT=$(OBJCOPY) --debugging \ |
--change-section-address .data-0x800000 \ |
--change-section-address .bss-0x800000 \ |
--change-section-address .noinit-0x800000 \ |
--change-section-address .eeprom-0x810000 |
coff: $(TARGET).elf |
@echo |
@echo $(MSG_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof |
extcoff: $(TARGET).elf |
@echo |
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof |
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof |
# Program the device. |
program: $(TARGET).hex $(TARGET).eep |
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
# Create final output files (.hex, .eep) from ELF output file. |
%.hex: %.elf |
@echo |
@echo $(MSG_FLASH) $@ |
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ |
%.eep: %.elf |
@echo |
@echo $(MSG_EEPROM) $@ |
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ |
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ |
# Create extended listing file from ELF output file. |
%.lss: %.elf |
@echo |
@echo $(MSG_EXTENDED_LISTING) $@ |
$(OBJDUMP) -h -S $< > $@ |
# Create a symbol table from ELF output file. |
%.sym: %.elf |
@echo |
@echo $(MSG_SYMBOL_TABLE) $@ |
avr-nm -n $< > $@ |
# Link: create ELF output file from object files. |
.SECONDARY : $(TARGET).elf |
.PRECIOUS : $(OBJ) |
%.elf: $(OBJ) |
@echo |
@echo $(MSG_LINKING) $@ |
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) |
# Compile: create object files from C source files. |
%.o : %.c |
@echo |
@echo $(MSG_COMPILING) $< |
$(CC) -c $(ALL_CFLAGS) $< -o $@ |
# Compile: create assembler files from C source files. |
%.s : %.c |
$(CC) -S $(ALL_CFLAGS) $< -o $@ |
# Assemble: create object files from assembler source files. |
%.o : %.S |
@echo |
@echo $(MSG_ASSEMBLING) $< |
$(CC) -c $(ALL_ASFLAGS) $< -o $@ |
# Target: clean project. |
clean: begin clean_list finished end |
clean_list : |
@echo |
@echo $(MSG_CLEANING) |
# $(REMOVE) $(TARGET).hex |
$(REMOVE) $(TARGET).eep |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).cof |
$(REMOVE) $(TARGET).elf |
$(REMOVE) $(TARGET).map |
$(REMOVE) $(TARGET).obj |
$(REMOVE) $(TARGET).a90 |
$(REMOVE) $(TARGET).sym |
$(REMOVE) $(TARGET).lnk |
$(REMOVE) $(TARGET).lss |
$(REMOVE) $(OBJ) |
$(REMOVE) $(LST) |
$(REMOVE) $(SRC:.c=.s) |
$(REMOVE) $(SRC:.c=.d) |
# Automatically generate C source code dependencies. |
# (Code originally taken from the GNU make user manual and modified |
# (See README.txt Credits).) |
# |
# Note that this will work with sh (bash) and sed that is shipped with WinAVR |
# (see the SHELL variable defined above). |
# This may not work with other shells or other seds. |
# |
%.d: %.c |
set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
[ -s $@ ] || rm -f $@ |
# Remove the '-' if you want to see the dependency files generated. |
-include $(SRC:.c=.d) |
# Listing of phony targets. |
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
clean clean_list program |
/branches/V0.72p HexaLotte/menu.c |
---|
0,0 → 1,158 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include "main.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 MaxMenue = 11; |
unsigned char MenuePunkt = 0; |
unsigned char RemoteKeys = 0; |
#define KEY1 0x01 |
#define KEY2 0x02 |
#define KEY3 0x04 |
#define KEY4 0x08 |
#define KEY5 0x10 |
void LcdClear(void) |
{ |
unsigned char i; |
for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
} |
void Menu(void) |
{ |
if(MenuePunkt > MaxMenue) MenuePunkt = MaxMenue; |
if(RemoteKeys & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue;} |
if(RemoteKeys & KEY2) { if(MenuePunkt == MaxMenue) MenuePunkt = 0; else MenuePunkt++;} |
if((RemoteKeys & KEY1) && (RemoteKeys & KEY2)) MenuePunkt = 0; |
LcdClear(); |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} |
else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
#if defined(OCTO) || defined(OCTO2) || defined (OCTO3) |
LCD_printfxy(0,1,"HWV%d.%d SW%d.%d%c OCTO",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
#endif |
#ifdef QUADRO |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
#endif |
#if defined(HEXA1) || defined (HEXA2) |
LCD_printfxy(0,1,"HWV%d.%d SW%d.%d%c HEXA",PlatinenVersion/10,PlatinenVersion%10, VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH +'a'); |
#endif |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
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); |
} |
else |
{ |
LCD_printfxy(0,1,"Keine "); |
LCD_printfxy(0,2,"Höhenregelung"); |
} |
break; |
case 2: |
LCD_printfxy(0,0,"akt. Lage"); |
LCD_printfxy(0,1,"Nick: %5i",IntegralNick/1024); |
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024); |
LCD_printfxy(0,3,"Kompass: %5i",KompassValue); |
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]); |
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]]); |
break; |
case 5: |
LCD_printfxy(0,0,"Gyro - Sensor"); |
if(PlatinenVersion == 10) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/8, AdNeutralNick%8); |
LCD_printfxy(0,2,"Roll %4i (%3i.%i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/8, AdNeutralRoll%8); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier); |
} |
else |
if((PlatinenVersion == 11) || (PlatinenVersion == 20)) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i.%x)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16, (AdNeutralNick%16)/2); |
LCD_printfxy(0,2,"Roll %4i (%3i.%x)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16, (AdNeutralRoll%16)/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2); |
} |
else |
if(PlatinenVersion == 13) |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdWertNick - AdNeutralNick/8, AdNeutralNick/16,AnalogOffsetNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdWertRoll - AdNeutralRoll/8, AdNeutralRoll/16,AnalogOffsetRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)(%3i)",AdNeutralGier - AdWertGier, AdNeutralGier/2,AnalogOffsetGier); |
} |
break; |
case 6: |
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); |
break; |
case 7: |
LCD_printfxy(0,1,"Spannung: %5i",UBat); |
LCD_printfxy(0,2,"Empf.Pegel:%5i",SenderOkay); |
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); |
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); |
break; |
case 10: |
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); |
break; |
case 11: |
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); |
break; |
default: MaxMenue = MenuePunkt - 1; |
MenuePunkt = 0; |
break; |
} |
RemoteKeys = 0; |
} |
/branches/V0.72p HexaLotte/menu.h |
---|
0,0 → 1,9 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char MaxMenue; |
extern unsigned char MenuePunkt; |
extern unsigned char RemoteKeys; |
/branches/V0.72p HexaLotte/old_macros.h |
---|
0,0 → 1,47 |
/* |
For backwards compatibility only. |
Ingo Busker ingo@mikrocontroller.com |
*/ |
#ifndef cbi |
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) |
#endif |
#ifndef sbi |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
#ifndef inb |
#define inb(sfr) _SFR_BYTE(sfr) |
#endif |
#ifndef outb |
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val)) |
#endif |
#ifndef inw |
#define inw(sfr) _SFR_WORD(sfr) |
#endif |
#ifndef outw |
#define outw(sfr, val) (_SFR_WORD(sfr) = (val)) |
#endif |
#ifndef outp |
#define outp(val, sfr) outb(sfr, val) |
#endif |
#ifndef inp |
#define inp(sfr) inb(sfr) |
#endif |
#ifndef BV |
#define BV(bit) _BV(bit) |
#endif |
#ifndef PRG_RDB |
#define PRG_RDB pgm_read_byte |
#endif |
/branches/V0.72p HexaLotte/printf_P.c |
---|
0,0 → 1,480 |
// 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 |
software; you can redistribute it and/or modify it under the |
terms of the GNU General Public License as published by the |
Free Software Foundation; either version 2, or (at your option) |
any later version. |
This library is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this library; see the file COPYING. If not, write to the Free |
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
As a special exception, if you link this library with files |
compiled with a GNU compiler to produce an executable, this does not cause |
the resulting executable to be covered by the GNU General Public License. |
This exception does not however invalidate any other reasons why |
the executable file might be covered by the GNU General Public License. */ |
/* |
* Copyright (c) 1990 Regents of the University of California. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. [rescinded 22 July 1999] |
* 4. Neither the name of the University nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 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. |
*/ |
/****************************************************************************** |
This file is a patched version of printf called _printf_P |
It is made to work with avr-gcc for Atmel AVR MCUs. |
There are some differences from standard printf: |
1. There is no floating point support (with fp the code is about 8K!) |
2. Return type is void |
3. Format string must be in program memory (by using macro printf this is |
done automaticaly) |
4. %n is not implemented (just remove the comment around it if you need it) |
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the |
folowing specifiers are disabled : |
space # * . - + p s o O |
6. A function void uart_sendchar(char c) is used for output. The UART must |
be initialized before using printf. |
Alexander Popov |
sasho@vip.orbitel.bg |
******************************************************************************/ |
/* |
* Actual printf innards. |
* |
* This code is large and complicated... |
*/ |
#include <string.h> |
#ifdef __STDC__ |
#include <stdarg.h> |
#else |
#include <varargs.h> |
#endif |
#include "main.h" |
//#define LIGHTPRINTF |
char PrintZiel; |
char Putchar(char zeichen) |
{ |
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
else return(uart_putchar(zeichen)); |
} |
void PRINT(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(*ptr++); |
} |
void PRINTP(const char * ptr, unsigned int len) |
{ |
for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
} |
void PAD_SP(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar(' '); |
} |
void PAD_0(signed char howmany) |
{ |
for(;howmany>0;howmany--) Putchar('0'); |
} |
#define BUF 40 |
/* |
* Macros for converting digits to letters and vice versa |
*/ |
#define to_digit(c) ((c) - '0') |
#define is_digit(c) ((c)<='9' && (c)>='0') |
#define to_char(n) ((n) + '0') |
/* |
* Flags used during conversion. |
*/ |
#define LONGINT 0x01 /* long integer */ |
#define LONGDBL 0x02 /* long double; unimplemented */ |
#define SHORTINT 0x04 /* short integer */ |
#define ALT 0x08 /* alternate form */ |
#define LADJUST 0x10 /* left adjustment */ |
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */ |
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */ |
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */ |
{ |
va_list ap; |
register const char *fmt; /* format string */ |
register char ch; /* character from fmt */ |
register int n; /* handy integer (short term usage) */ |
register char *cp; /* handy char pointer (short term usage) */ |
const char *fmark; /* for remembering a place in fmt */ |
register unsigned char flags; /* flags as above */ |
signed char width; /* width from format (%8d), or 0 */ |
signed char prec; /* precision from format (%.3d), or -1 */ |
char sign; /* sign prefix (' ', '+', '-', or \0) */ |
unsigned long _ulong=0; /* integer arguments %[diouxX] */ |
#define OCT 8 |
#define DEC 10 |
#define HEX 16 |
unsigned char base; /* base for [diouxX] conversion */ |
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */ |
signed char dpad; /* extra 0 padding needed for integers */ |
signed char fieldsz; /* field size expanded by sign, dpad etc */ |
/* The initialization of 'size' is to suppress a warning that |
'size' might be used unitialized. It seems gcc can't |
quite grok this spaghetti code ... */ |
signed char size = 0; /* size of converted field or string */ |
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
char ox[2]; /* space for 0x hex-prefix */ |
PrintZiel = ziel; // bestimmt, LCD oder UART |
va_start(ap, fmt0); |
fmt = fmt0; |
/* |
* Scan the format for conversions (`%' character). |
*/ |
for (;;) { |
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++) |
/* void */; |
if ((n = fmt - fmark) != 0) { |
PRINTP(fmark, n); |
} |
if (ch == '\0') |
goto done; |
fmt++; /* skip over '%' */ |
flags = 0; |
dprec = 0; |
width = 0; |
prec = -1; |
sign = '\0'; |
rflag: ch = PRG_RDB(fmt++); |
reswitch: |
#ifdef LIGHTPRINTF |
if (ch=='o' || ch=='u' || (ch|0x20)=='x') { |
#else |
if (ch=='u' || (ch|0x20)=='x') { |
#endif |
if (flags&LONGINT) { |
_ulong=va_arg(ap, unsigned long); |
} else { |
register unsigned int _d; |
_d=va_arg(ap, unsigned int); |
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
} |
} |
#ifndef LIGHTPRINTF |
if(ch==' ') { |
/* |
* ``If the space and + flags both appear, the space |
* flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
if (!sign) |
sign = ' '; |
goto rflag; |
} else if (ch=='#') { |
flags |= ALT; |
goto rflag; |
} else if (ch=='*'||ch=='-') { |
if (ch=='*') { |
/* |
* ``A negative field width argument is taken as a |
* - flag followed by a positive field width.'' |
* -- ANSI X3J11 |
* They don't exclude field widths read from args. |
*/ |
if ((width = va_arg(ap, int)) >= 0) |
goto rflag; |
width = -width; |
} |
flags |= LADJUST; |
flags &= ~ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch=='+') { |
sign = '+'; |
goto rflag; |
} else if (ch=='.') { |
if ((ch = PRG_RDB(fmt++)) == '*') { |
n = va_arg(ap, int); |
prec = n < 0 ? -1 : n; |
goto rflag; |
} |
n = 0; |
while (is_digit(ch)) { |
n = n*10 + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} |
prec = n < 0 ? -1 : n; |
goto reswitch; |
} else |
#endif /* LIGHTPRINTF */ |
if (ch=='0') { |
/* |
* ``Note that 0 is taken as a flag, not as the |
* beginning of a field width.'' |
* -- ANSI X3J11 |
*/ |
if (!(flags & LADJUST)) |
flags |= ZEROPAD; /* '-' disables '0' */ |
goto rflag; |
} else if (ch>='1' && ch<='9') { |
n = 0; |
do { |
n = 10 * n + to_digit(ch); |
ch = PRG_RDB(fmt++); |
} while (is_digit(ch)); |
width = n; |
goto reswitch; |
} else if (ch=='h') { |
flags |= SHORTINT; |
goto rflag; |
} else if (ch=='l') { |
flags |= LONGINT; |
goto rflag; |
} else if (ch=='c') { |
*(cp = buf) = va_arg(ap, int); |
size = 1; |
sign = '\0'; |
} else if (ch=='D'||ch=='d'||ch=='i') { |
if(ch=='D') |
flags |= LONGINT; |
if (flags&LONGINT) { |
_ulong=va_arg(ap, long); |
} else { |
register int _d; |
_d=va_arg(ap, int); |
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
} |
if ((long)_ulong < 0) { |
_ulong = -_ulong; |
sign = '-'; |
} |
base = DEC; |
goto number; |
} else |
/* |
if (ch=='n') { |
if (flags & LONGINT) |
*va_arg(ap, long *) = ret; |
else if (flags & SHORTINT) |
*va_arg(ap, short *) = ret; |
else |
*va_arg(ap, int *) = ret; |
continue; // no output |
} else |
*/ |
#ifndef LIGHTPRINTF |
if (ch=='O'||ch=='o') { |
if (ch=='O') |
flags |= LONGINT; |
base = OCT; |
goto nosign; |
} else if (ch=='p') { |
/* |
* ``The argument shall be a pointer to void. The |
* value of the pointer is converted to a sequence |
* of printable characters, in an implementation- |
* defined manner.'' |
* -- ANSI X3J11 |
*/ |
/* NOSTRICT */ |
_ulong = (unsigned int)va_arg(ap, void *); |
base = HEX; |
flags |= HEXPREFIX; |
ch = 'x'; |
goto nosign; |
} else if (ch=='s') { // print a string from RAM |
if ((cp = va_arg(ap, char *)) == NULL) { |
cp=buf; |
cp[0] = '('; |
cp[1] = 'n'; |
cp[2] = 'u'; |
cp[4] = cp[3] = 'l'; |
cp[5] = ')'; |
cp[6] = '\0'; |
} |
if (prec >= 0) { |
/* |
* can't use strlen; can only look for the |
* NUL in the first `prec' characters, and |
* strlen() will go further. |
*/ |
char *p = (char*)memchr(cp, 0, prec); |
if (p != NULL) { |
size = p - cp; |
if (size > prec) |
size = prec; |
} else |
size = prec; |
} else |
size = strlen(cp); |
sign = '\0'; |
} else |
#endif /* LIGHTPRINTF */ |
if(ch=='U'||ch=='u') { |
if (ch=='U') |
flags |= LONGINT; |
base = DEC; |
goto nosign; |
} else if (ch=='X'||ch=='x') { |
base = HEX; |
/* leading 0x/X only if non-zero */ |
if (flags & ALT && _ulong != 0) |
flags |= HEXPREFIX; |
/* unsigned conversions */ |
nosign: sign = '\0'; |
/* |
* ``... diouXx conversions ... if a precision is |
* specified, the 0 flag will be ignored.'' |
* -- ANSI X3J11 |
*/ |
number: if ((dprec = prec) >= 0) |
flags &= ~ZEROPAD; |
/* |
* ``The result of converting a zero value with an |
* explicit precision of zero is no characters.'' |
* -- ANSI X3J11 |
*/ |
cp = buf + BUF; |
if (_ulong != 0 || prec != 0) { |
register unsigned char _d,notlastdigit; |
do { |
notlastdigit=(_ulong>=base); |
_d = _ulong % base; |
if (_d<10) { |
_d+='0'; |
} else { |
_d+='a'-10; |
if (ch=='X') _d&=~0x20; |
} |
*--cp=_d; |
_ulong /= base; |
} while (notlastdigit); |
#ifndef LIGHTPRINTF |
// handle octal leading 0 |
if (base==OCT && flags & ALT && *cp != '0') |
*--cp = '0'; |
#endif |
} |
size = buf + BUF - cp; |
} else { //default |
/* "%?" prints ?, unless ? is NUL */ |
if (ch == '\0') |
goto done; |
/* pretend it was %c with argument ch */ |
cp = buf; |
*cp = ch; |
size = 1; |
sign = '\0'; |
} |
/* |
* All reasonable formats wind up here. At this point, |
* `cp' points to a string which (if not flags&LADJUST) |
* should be padded out to `width' places. If |
* flags&ZEROPAD, it should first be prefixed by any |
* sign or other prefix; otherwise, it should be blank |
* padded before the prefix is emitted. After any |
* left-hand padding and prefixing, emit zeroes |
* required by a decimal [diouxX] precision, then print |
* the string proper, then emit zeroes required by any |
* leftover floating precision; finally, if LADJUST, |
* pad with blanks. |
*/ |
/* |
* compute actual size, so we know how much to pad. |
*/ |
fieldsz = size; |
dpad = dprec - size; |
if (dpad < 0) |
dpad = 0; |
if (sign) |
fieldsz++; |
else if (flags & HEXPREFIX) |
fieldsz += 2; |
fieldsz += dpad; |
/* right-adjusting blank padding */ |
if ((flags & (LADJUST|ZEROPAD)) == 0) |
PAD_SP(width - fieldsz); |
/* prefix */ |
if (sign) { |
PRINT(&sign, 1); |
} else if (flags & HEXPREFIX) { |
ox[0] = '0'; |
ox[1] = ch; |
PRINT(ox, 2); |
} |
/* right-adjusting zero padding */ |
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) |
PAD_0(width - fieldsz); |
/* leading zeroes from decimal precision */ |
PAD_0(dpad); |
/* the string or number proper */ |
PRINT(cp, size); |
/* left-adjusting padding (always blank) */ |
if (flags & LADJUST) |
PAD_SP(width - fieldsz); |
} |
done: |
va_end(ap); |
} |
/branches/V0.72p HexaLotte/printf_P.h |
---|
0,0 → 1,19 |
#ifndef _PRINTF_P_H_ |
#define _PRINTF_P_H_ |
#include <avr/pgmspace.h> |
#define OUT_V24 0 |
#define OUT_LCD 1 |
void _printf_P (char, char const *fmt0, ...); |
extern char PrintZiel; |
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args) |
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args) |
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);} |
#endif |
/branches/V0.72p HexaLotte/rc.c |
---|
0,0 → 1,122 |
/*####################################################################################### |
Decodieren eines RC Summen Signals |
#######################################################################################*/ |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#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; |
//############################################################################ |
//zum decodieren des PPM-Signals wird Timer1 mit seiner Input |
//Capture Funktion benutzt: |
void rc_sum_init (void) |
//############################################################################ |
{ |
TCCR1B=(1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);//|(1 << WGM12); //timer1 prescale 64 |
// TCCR1B=(1<<CS11)|(0<<CS10)|(1<<ICES1)|(1<<ICNC1); //timer1 prescale 64 |
TIMSK1 |= _BV(ICIE1); |
AdNeutralGier = 0; |
AdNeutralRoll = 0; |
AdNeutralNick = 0; |
return; |
} |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
AltICR = ICR1; |
//Syncronisationspause? |
if((signal > 1100) && (signal < 8000)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687)) |
{ |
signal -= 466; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10; else SenderOkay = 200;} |
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; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 6) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
/* |
//############################################################################ |
//Diese Routine startet und inizialisiert den Timer für RC |
SIGNAL(SIG_INPUT_CAPTURE1) |
//############################################################################ |
{ |
static unsigned int AltICR=0; |
signed int signal = 0,tmp; |
static int index; |
signal = (unsigned int) ICR1 - AltICR; |
DebugOut.Analog[16] = signal; |
signal /= 2; |
AltICR = ICR1; |
//Syncronisationspause? |
if((signal > 1100*2) && (signal < 8000*2)) |
{ |
if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten |
index = 1; |
} |
else |
{ |
if(index < 10) |
{ |
if((signal > 250) && (signal < 687*2)) |
{ |
signal -= 962; |
// Stabiles Signal |
if(abs(signal - PPM_in[index]) < 6) { if(SenderOkay < 200) SenderOkay += 10;} |
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; |
else PPM_diff[index] = 0; |
PPM_in[index] = tmp; |
} |
index++; |
if(index == 5) J3High; else J3Low; // Servosignal an J3 anlegen |
if(index == 2) J4High; else J4Low; // Servosignal an J4 anlegen |
if(index == 7) J5High; else J5Low; // Servosignal an J5 anlegen |
} |
} |
} |
*/ |
/branches/V0.72p HexaLotte/rc.h |
---|
0,0 → 1,30 |
/*####################################################################################### |
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 |
#if defined (__AVR_ATmega644__) |
#define TIMER_RELOAD_VALUE 250 |
#endif |
#if defined (__AVR_ATmega644P__) |
#define TIMER_RELOAD_VALUE 250 |
#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; |
#endif //_RC_H |
/branches/V0.72p HexaLotte/spi.c |
---|
0,0 → 1,280 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
//struct str_ToNaviCtrl_Version ToNaviCtrl_Version; |
//struct str_FromNaviCtrl_Version FromNaviCtrl_Version; |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
struct str_SPI_VersionInfo SPI_VersionInfo; |
unsigned char SPI_BufferIndex; |
unsigned char SPI_RxBufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *SPI_TX_Buffer; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
unsigned char SPI_RxDataValid; |
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_PARAMETER1, SPI_CMD_STICK, SPI_CMD_MISC, SPI_CMD_VERSION }; |
unsigned char SPI_CommandCounter = 0; |
#ifdef USE_SPI_COMMUNICATION |
//------------------------------------------------------ |
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; |
SPI_VersionInfo.Major = VERSION_MAJOR; |
SPI_VersionInfo.Minor = VERSION_MINOR; |
SPI_VersionInfo.Patch = VERSION_PATCH; |
SPI_VersionInfo.Compatible = NC_SPI_COMPATIBLE; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(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 |
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 |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(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 |
} |
else SPITransferCompleted = 1; |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
static unsigned char i =0; |
signed int tmp; |
cli(); |
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); |
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
ToNaviCtrl.AccNick = ((int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc))/4; |
ToNaviCtrl.AccRoll = ((int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc))/4; |
NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0; |
// ToNaviCtrl.User8 = Parameter_UserParam8; |
// ToNaviCtrl.CalState = WinkelOut.CalcState; |
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; |
ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8; |
ToNaviCtrl.Param.Byte[8] = (unsigned char) MikroKopterFlags; |
MikroKopterFlags &= ~(FLAG_CALIBRATE | FLAG_START); |
ToNaviCtrl.Param.Byte[9] = (unsigned char) UBat; |
ToNaviCtrl.Param.Byte[10] =(unsigned char) EE_Parameter.UnterspannungsWarnung; |
ToNaviCtrl.Param.Byte[11] =(unsigned char) eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
break; |
case SPI_CMD_PARAMETER1: |
ToNaviCtrl.Param.Byte[0] = EE_Parameter.NaviGpsModeControl; // Parameters for the Naviboard |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; |
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsACC; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsMinSat; |
ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviOperatingRadius; |
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviSpeedCompensation; |
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
break; |
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; |
break; |
case SPI_CMD_MISC: |
if(WinkelOut.CalcState > 5) |
{ |
WinkelOut.CalcState = 0; |
ToNaviCtrl.Param.Byte[0] = 5; |
} |
else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
ToNaviCtrl.Param.Int[1] = HoehenWert; |
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime; |
ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsPLimit; |
ToNaviCtrl.Param.Byte[5] = EE_Parameter.NaviGpsILimit; |
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsDLimit; |
break; |
case SPI_CMD_VERSION: |
ToNaviCtrl.Param.Byte[0] = SPI_VersionInfo.Major; |
ToNaviCtrl.Param.Byte[1] = SPI_VersionInfo.Minor; |
ToNaviCtrl.Param.Byte[2] = SPI_VersionInfo.Patch; |
ToNaviCtrl.Param.Byte[3] = SPI_VersionInfo.Compatible; |
ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
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_KALMAN: |
FromNaviCtrl_Value.Kalman_K = FromNaviCtrl.Param.Byte[0]; |
FromNaviCtrl_Value.Kalman_MaxFusion = FromNaviCtrl.Param.Byte[1]; |
FromNaviCtrl_Value.Kalman_MaxDrift = FromNaviCtrl.Param.Byte[2]; |
break; |
default: |
break; |
} |
} |
else |
{ |
// KompassValue = 0; |
// KompassRichtung = 0; |
GPS_Nick = 0; |
GPS_Roll = 0; |
} |
} |
#endif |
/branches/V0.72p HexaLotte/spi.h |
---|
0,0 → 1,139 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_H |
#include <util/delay.h> |
#define USE_SPI_COMMUNICATION |
#define SPI_PROTOCOL_COMP 1 |
//----------------------------------------- |
#define DDR_SPI DDRB |
#define DD_SS PB4 |
#define DD_SCK PB7 |
#define DD_MOSI PB5 |
#define DD_MISO PB6 |
// for compatibility reasons gcc3.x <-> gcc4.x |
#ifndef SPCR |
#define SPCR SPCR0 |
#endif |
#ifndef SPE |
#define SPE SPE0 |
#endif |
#ifndef MSTR |
#define MSTR MSTR0 |
#endif |
#ifndef SPR1 |
#define SPR1 SPR01 |
#endif |
#ifndef SPR0 |
#define SPR0 SPR00 |
#endif |
#ifndef SPIE |
#define SPIE SPIE0 |
#endif |
#ifndef SPDR |
#define SPDR SPDR0 |
#endif |
#ifndef SPIF |
#define SPIF SPIF0 |
#endif |
#ifndef SPSR |
#define SPSR SPSR0 |
#endif |
// ------------------------- |
#define SLAVE_SELECT_DDR_PORT DDRC |
#define SLAVE_SELECT_PORT PORTC |
#define SPI_SLAVE_SELECT PC5 |
#define SPI_CMD_USER 10 |
#define SPI_CMD_STICK 11 |
#define SPI_CMD_MISC 12 |
#define SPI_CMD_PARAMETER1 13 |
#define SPI_CMD_VERSION 14 |
struct str_ToNaviCtrl |
{ |
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; |
}; |
#define SPI_KALMAN 103 |
struct str_FromNaviCtrl |
{ |
unsigned char Command; |
signed int GPS_Nick; |
signed int GPS_Roll; |
signed int GPS_Gier; |
signed int CompassValue; |
signed int Status; |
unsigned int BeepTime; |
union |
{ char Byte[12]; |
int Int[6]; |
long Long[3]; |
float Float[3]; |
} Param; |
unsigned char Chksum; |
}; |
struct str_FromNaviCtrl_Value |
{ |
signed char Kalman_K; |
signed char Kalman_MaxDrift; |
signed char Kalman_MaxFusion; |
}; |
struct str_SPI_VersionInfo |
{ |
unsigned char Major; |
unsigned char Minor; |
unsigned char Patch; |
unsigned char Compatible; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_FromNaviCtrl_Value FromNaviCtrl_Value; |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
extern unsigned char SPI_CommandCounter; |
//#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_StartTransmitPacket() ; |
#define UpdateSPI_Buffer() ; |
#define SPI_TransmitByte() ; |
#endif |
#endif |
/branches/V0.72p HexaLotte/timer0.c |
---|
0,0 → 1,379 |
#include "main.h" |
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, ServoActive = 0; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
volatile int16_t ServoNickValue = 0; |
volatile int16_t ServoRollValue = 0; |
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 |
{ |
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++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
pieper_ein = 1; |
} |
else pieper_ein = 0; |
} |
else |
{ |
pieper_ein = 0; |
BeepMuster = 0xffff; |
} |
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; |
} |
} |
} |
// ----------------------------------------------------------------------- |
unsigned int SetDelay (unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(CountMilliseconds + t + 1); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
char CheckDelay(unsigned int t) |
{ |
// TIMSK0 &= ~_BV(TOIE0); |
return(((t - CountMilliseconds) & 0x8000) >> 9); |
// TIMSK0 |= _BV(TOIE0); |
} |
// ----------------------------------------------------------------------- |
void Delay_ms(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)); |
} |
void Delay_ms_Mess(unsigned int w) |
{ |
unsigned int akt; |
akt = SetDelay(w); |
while (!CheckDelay(akt)) if(AdReady) {AdReady = 0; ANALOG_ON;} |
} |
/*****************************************************/ |
/* Initialize Timer 2 */ |
/*****************************************************/ |
// The timer 2 is used to generate the PWM at PD7 (J7) |
// to control a camera servo for nick compensation. |
void TIMER2_Init(void) |
{ |
uint8_t sreg = SREG; |
// disable all interrupts before reconfiguration |
cli(); |
// set PD7 as output of the PWM for nick servo |
DDRD |= (1<<DDD7); |
PORTD &= ~(1<<PORTD7); // set PD7 to low |
DDRC |= (1<<DDC6); // set PC6 as output (Reset for HEF4017) |
HEF4017R_ON; |
// Timer/Counter 2 Control Register A |
// Timer Mode is FastPWM with timer reload at OCR2A (Bits: WGM22 = 1, WGM21 = 1, WGM20 = 1) |
// PD7: Normal port operation, OC2A disconnected, (Bits: COM2A1 = 0, COM2A0 = 0) |
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0) |
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0)|(1<<COM2B1)|(1<<COM2B0)); |
TCCR2A |= (1<<WGM21)|(1<<WGM20); |
// Timer/Counter 2 Control Register B |
// Set clock divider for timer 2 to SYSKLOCK/32 = 20MHz / 32 = 625 kHz |
// The timer increments from 0x00 to 0xFF with an update rate of 625 kHz or 1.6 us |
// hence the timer overflow interrupt frequency is 625 kHz / 256 = 2.44 kHz or 0.4096 ms |
// divider 32 (Bits: CS022 = 0, CS21 = 1, CS20 = 1) |
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS22)); |
TCCR2B |= (1<<CS21)|(1<<CS20)|(1<<WGM22); |
// Initialize the Timer/Counter 2 Register |
TCNT2 = 0; |
// Initialize the Output Compare Register A used for PWM generation on port PD7. |
OCR2A = 255; |
TCCR2A |= (1<<COM2A1); // set or clear at compare match depends on value of COM2A0 |
// Timer/Counter 2 Interrupt Mask Register |
// Enable timer output compare match A Interrupt only |
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2)); |
TIMSK2 |= (1<<OCIE2A); |
SREG = sreg; |
} |
//---------------------------- |
void Timer_Init(void) |
{ |
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; |
TIMSK0 |= _BV(TOIE0); |
} |
/*****************************************************/ |
/* Control Servo Position */ |
/*****************************************************/ |
ISR(TIMER2_COMPA_vect) |
{ |
// frame len 22.5 ms = 14063 * 1.6 us |
// stop pulse: 0.3 ms = 188 * 1.6 us |
// min servo pulse: 0.6 ms = 375 * 1.6 us |
// max servo pulse: 2.4 ms = 1500 * 1.6 us |
// resolution: 1500 - 375 = 1125 steps |
#define IRS_RUNTIME 127 |
#define PPM_STOPPULSE 188 |
// #define PPM_FRAMELEN (14063 |
#define PPM_FRAMELEN (1757 * EE_Parameter.ServoNickRefresh) |
#define MINSERVOPULSE 375 |
#define MAXSERVOPULSE 1500 |
#define SERVORANGE (MAXSERVOPULSE - MINSERVOPULSE) |
static uint8_t PulseOutput = 0; |
static uint16_t RemainingPulse = 0; |
static uint16_t ServoFrameTime = 0; |
static uint8_t ServoIndex = 0; |
#define MULTIPLYER 4 |
static int16_t ServoNickOffset = (255 / 2) * MULTIPLYER; // initial value near center positon |
if(PlatinenVersion < 20) |
{ |
//--------------------------- |
// Nick servo state machine |
//--------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoNickCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
DebugOut.Analog[20] = ServoNickValue; |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// accumulate time for correct update rate |
ServoFrameTime = RemainingPulse; |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF Nick servo state machine |
else |
{ |
//----------------------------------------------------- |
// PPM state machine, onboard demultiplexed by HEF4017 |
//----------------------------------------------------- |
if(!PulseOutput) // pulse output complete |
{ |
if(TCCR2A & (1<<COM2A0)) // we had a low pulse |
{ |
TCCR2A &= ~(1<<COM2A0);// make a high pulse |
if(ServoIndex == 0) // if we are at the sync gap |
{ |
RemainingPulse = PPM_FRAMELEN - ServoFrameTime; // generate sync gap by filling time to full frame time |
ServoFrameTime = 0; // reset servo frame time |
HEF4017R_ON; // enable HEF4017 reset |
} |
else // servo channels |
{ |
RemainingPulse = MINSERVOPULSE + SERVORANGE/2; // center position ~ 1.5ms |
switch(ServoIndex) // map servo channels |
{ |
case 1: // Nick Compensation Servo |
ServoNickOffset = (ServoNickOffset * 3 + (int16_t)Parameter_ServoNickControl * MULTIPLYER) / 4; // lowpass offset |
ServoNickValue = ServoNickOffset; // offset (Range from 0 to 255 * 3 = 765) |
if(EE_Parameter.ServoNickCompInvert & 0x01) |
{ // inverting movement of servo |
ServoNickValue += (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
else |
{ // non inverting movement of servo |
ServoNickValue -= (int16_t)( ( (int32_t)EE_Parameter.ServoNickComp * MULTIPLYER * (IntegralNick / 128L ) ) / (256L) ); |
} |
// limit servo value to its parameter range definition |
if(ServoNickValue < ((int16_t)EE_Parameter.ServoNickMin * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMin * MULTIPLYER; |
} |
else |
if(ServoNickValue > ((int16_t)EE_Parameter.ServoNickMax * MULTIPLYER) ) |
{ |
ServoNickValue = (int16_t)EE_Parameter.ServoNickMax * MULTIPLYER; |
} |
RemainingPulse += ServoNickValue - (256 / 2) * MULTIPLYER; // shift ServoNickValue to center position |
ServoNickValue /= MULTIPLYER; |
DebugOut.Analog[20] = ServoNickValue; |
break; |
default: // other servo channels |
RemainingPulse += 2 * PPM_in[ServoIndex]; // add channel value, factor of 2 because timer 1 increments 3.2µs |
break; |
} |
// range servo pulse width |
if(RemainingPulse > MAXSERVOPULSE ) RemainingPulse = MAXSERVOPULSE; // upper servo pulse limit |
else if(RemainingPulse < MINSERVOPULSE ) RemainingPulse = MINSERVOPULSE; // lower servo pulse limit |
// substract stop pulse width |
RemainingPulse -= PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
} |
} |
else // we had a high pulse |
{ |
TCCR2A |= (1<<COM2A0); // make a low pulse |
// set pulsewidth to stop pulse width |
RemainingPulse = PPM_STOPPULSE; |
// accumulate time for correct sync gap |
ServoFrameTime += RemainingPulse; |
if(ServoActive && SenderOkay > 180) HEF4017R_OFF; // disable HEF4017 reset |
ServoIndex++; // change to next servo channel |
if(ServoIndex > EE_Parameter.ServoNickRefresh) ServoIndex = 0; // reset to the sync gap |
} |
// set pulse output active |
PulseOutput = 1; |
} |
} // EOF PPM state machine |
// General pulse output generator |
if(RemainingPulse > (255 + IRS_RUNTIME)) |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
else |
{ |
if(RemainingPulse > 255) // this is the 2nd last part |
{ |
if((RemainingPulse - 255) < IRS_RUNTIME) |
{ |
OCR2A = 255 - IRS_RUNTIME; |
RemainingPulse -= 255 - IRS_RUNTIME; |
} |
else // last part > ISR_RUNTIME |
{ |
OCR2A = 255; |
RemainingPulse -= 255; |
} |
} |
else // this is the last part |
{ |
OCR2A = RemainingPulse; |
RemainingPulse = 0; |
PulseOutput = 0; // trigger to stop pulse |
} |
} // EOF general pulse output generator |
} |
/branches/V0.72p HexaLotte/timer0.h |
---|
0,0 → 1,19 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
#define HEF4017R_ON PORTC |= (1<<PORTC6) |
#define HEF4017R_OFF PORTC &= ~(1<<PORTC6) |
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 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, ServoActive; |
/branches/V0.72p HexaLotte/twimaster.c |
---|
0,0 → 1,537 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
volatile unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[16]; |
//############################################################################ |
//Initzialisieren der I2C (TWI) Schnittstelle |
void i2c_init(void) |
//############################################################################ |
{ |
TWSR = 0; |
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2; |
} |
//############################################################################ |
//Start I2C |
char i2c_start(void) |
//############################################################################ |
{ |
TWCR = (1<<TWSTA) | (1<<TWEN) | (1<<TWINT) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
void i2c_stop(void) |
//############################################################################ |
{ |
TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT); |
} |
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); |
} |
//############################################################################ |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
#ifdef QUADRO |
//############################################################################ |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
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 2: |
i2c_stop(); |
if (motor<4) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(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; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
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(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
case 8: // Gyro-Offset |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
#endif |
#if defined(HEXA1) || defined(HEXA2) |
//############################################################################ |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<6) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+6] = TWDR; |
motorread++; |
if (motorread>5) motorread=0; |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
case 8: // Gyro-Offset |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
#endif |
#if defined(OCTO) || defined(OCTO2) || defined (OCTO3) |
//############################################################################ |
SIGNAL (TWI_vect) |
//############################################################################ |
{ |
switch (twi_state++) |
{ |
case 0: |
i2c_write_byte(0x52+(motor*2)); |
break; |
case 1: |
switch(motor++) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
case 6: |
i2c_write_byte(Motor7); |
break; |
case 7: |
i2c_write_byte(Motor8); |
break; |
} |
break; |
case 2: |
i2c_stop(); |
if (motor<8) twi_state = 0; |
else motor = 0; |
i2c_start(); |
break; |
//Liest Daten von Motor |
case 3: |
i2c_write_byte(0x53+(motorread*2)); |
break; |
case 4: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
case 6: |
i2c_write_byte(Motor7); |
break; |
case 7: |
i2c_write_byte(Motor8); |
break; |
} |
break; |
case 5: //1 Byte vom Motor lesen |
motor_rx[motorread] = TWDR; |
case 6: |
switch(motorread) |
{ |
case 0: |
i2c_write_byte(Motor1); |
break; |
case 1: |
i2c_write_byte(Motor2); |
break; |
case 2: |
i2c_write_byte(Motor3); |
break; |
case 3: |
i2c_write_byte(Motor4); |
break; |
case 4: |
i2c_write_byte(Motor5); |
break; |
case 5: |
i2c_write_byte(Motor6); |
break; |
case 6: |
i2c_write_byte(Motor7); |
break; |
case 7: |
i2c_write_byte(Motor8); |
break; |
} |
break; |
case 7: //2 Byte vom Motor lesen |
motor_rx[motorread+8] = TWDR; |
motorread++; |
if (motorread>7) motorread=0; |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
case 8: // Gyro-Offset |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 9: |
i2c_write_byte(0x10); // Update Channel A |
break; |
case 10: |
i2c_write_byte(AnalogOffsetNick); // Value |
break; |
case 11: |
i2c_write_byte(0x80); // Value |
break; |
case 12: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 13: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 14: |
i2c_write_byte(0x12); // Update Channel B |
break; |
case 15: |
i2c_write_byte(AnalogOffsetRoll); // Value |
break; |
case 16: |
i2c_write_byte(0x80); // Value |
break; |
case 17: |
i2c_stop(); |
I2CTimeout = 10; |
i2c_start(); |
break; |
case 18: |
i2c_write_byte(0x98); // Address of the DAC |
break; |
case 19: |
i2c_write_byte(0x14); // Update Channel C |
break; |
case 20: |
i2c_write_byte(AnalogOffsetGier); // Value |
break; |
case 21: |
i2c_write_byte(0x80); // Value |
break; |
case 22: |
i2c_stop(); |
I2CTimeout = 10; |
twi_state = 0; |
break; |
} |
TWCR |= 0x80; |
} |
#endif |
/branches/V0.72p HexaLotte/twimaster.h |
---|
0,0 → 1,33 |
/*############################################################################ |
############################################################################*/ |
#ifndef _I2C_MASTER_H |
#define _I2C_MASTER_H |
//############################################################################ |
// I2C Konstanten |
#define SCL_CLOCK 200000L |
#define I2C_TIMEOUT 30000 |
#define I2C_START 0x08 |
#define I2C_REPEATED_START 0x10 |
#define I2C_TX_SLA_ACK 0x18 |
#define I2C_TX_DATA_ACK 0x28 |
#define I2C_RX_SLA_ACK 0x40 |
#define I2C_RX_DATA_ACK 0x50 |
//############################################################################ |
extern volatile unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[16]; |
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); |
#endif |
/branches/V0.72p HexaLotte/uart.c |
---|
0,0 → 1,543 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Copyright (c) 04.2007 Holger Buss |
// + only for non-profit use |
// + www.MikroKopter.com |
// + see the File "License.txt" for further Informations |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#include <stdarg.h> |
#include <string.h> |
#include "main.h" |
#include "uart.h" |
#define FC_ADDRESS 1 |
#define NC_ADDRESS 2 |
#define MK3MAG_ADDRESS 3 |
unsigned char GetExternalControl = 0,DebugDisplayAnforderung1 = 0, DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0, GetPPMChannelAnforderung = 0; |
unsigned char DisplayLine = 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 char *pRxData = 0; |
unsigned char RxDataLen = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse = 1; // Flight-Ctrl |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
struct str_WinkelOut WinkelOut; |
struct str_Data3D Data3D; |
int Debug_Timer,Kompass_Timer,Timer3D; |
unsigned int DebugDataIntervall = 200, Intervall3D = 0; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"AngleNick ", //0 |
"AngleRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"Hight Value ", //5 |
"AccZ ", |
"Gas ", |
"Compass Value ", |
"Voltage ", |
"Empfang ", //10 |
"Gyro Kompass ", |
"Motor Front ", |
"Motor Rear ", |
"Motor Left ", |
"Motor Right ", //15 |
" ", |
" ", |
" ", |
"MK3Mag CalState ", |
"Servo ", //20 |
" ", |
" ", |
" ", |
" ", |
" ", //25 |
" ", |
"Kalman_MaxDrift ", |
" ", |
" ", |
"GPS_Nick ", //30 |
"GPS_Roll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Sende-Part der Datenübertragung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_TX) |
{ |
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; |
} |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ Empfangs-Part der Datenübertragung, incl. CRC-Auswertung |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(INT_VEC_RX) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 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 + 1; |
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; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
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]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char address, unsigned char BufferAnzahl, ...) //unsigned char *snd, unsigned char len) |
{ |
va_list ap; |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
unsigned char *snd = 0; |
int len = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = 'a' + address; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
va_start(ap, BufferAnzahl); |
if(BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
while(len) |
{ |
if(len) |
{ |
a = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else a = 0; |
if(len) |
{ |
b = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
else b = 0; |
if(len) |
{ |
c = snd[ptr++]; |
len--; |
if((!len) && BufferAnzahl) |
{ |
snd = va_arg(ap, unsigned char*); |
len = va_arg(ap, int); |
ptr = 0; |
BufferAnzahl--; |
} |
} |
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); |
} |
va_end(ap); |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(void) // die daten werden im rx buffer dekodiert, das geht nur, weil aus 4 byte immer 3 gemacht werden. |
{ |
unsigned char a,b,c,d; |
unsigned char x,y,z; |
unsigned char ptrIn = 3; // start at begin of data block |
unsigned char ptrOut = 3; |
unsigned char len = AnzahlEmpfangsBytes - 6; // von der Gesamtbytezahl eines Frames gehen 3 Bytes des Headers ('#',Addr, Cmd) und 3 Bytes des Footers (CRC1, CRC2, '\r') ab. |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) RxdBuffer[ptrOut++] = x; else break; |
if(len--) RxdBuffer[ptrOut++] = y; else break; |
if(len--) RxdBuffer[ptrOut++] = z; else break; |
} |
pRxData = (unsigned char*)&RxdBuffer[3]; // decodierte Daten beginnen beim 4. Byte |
RxDataLen = ptrOut - 3; // wie viele Bytes wurden dekodiert? |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
unsigned char tempchar1, tempchar2; |
Decode64(); // dekodiere datenblock im Empfangsbuffer |
switch(RxdBuffer[1]-'a') // check for Slave Address |
{ |
case FC_ADDRESS: // FC special commands |
switch(RxdBuffer[2]) |
{ |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 't':// Motortest |
memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
//while(!UebertragungAbgeschlossen); |
//SendOutData('T', MeineSlaveAdresse, 0); |
PcZugriff = 255; |
break; |
case 'p': // get PPM Channels |
GetPPMChannelAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
if(pRxData[0] == 0xFF) |
{ |
pRxData[0] = GetActiveParamSetNumber(); |
} |
// limit settings range |
if(pRxData[0] < 1) pRxData[0] = 1; // limit to 5 |
else if(pRxData[0] > 5) pRxData[0] = 5; // limit to 5 |
// load requested parameter set |
ReadParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
while(!UebertragungAbgeschlossen); |
tempchar1 = pRxData[0]; |
tempchar2 = EE_DATENREVISION; |
SendOutData('Q', FC_ADDRESS, 3, &tempchar1, sizeof(tempchar1), &tempchar2, sizeof(tempchar2), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
break; |
case 's': // Parametersatz speichern |
if((1 <= pRxData[0]) && (pRxData[0] <= 5) && (pRxData[1] == EE_DATENREVISION)) // check for setting to be in range |
{ |
memcpy((unsigned char *) &EE_Parameter.Kanalbelegung[0], (unsigned char *)&pRxData[2], STRUCT_PARAM_LAENGE); |
WriteParameterSet(pRxData[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
SetActiveParamSetNumber(pRxData[0]); |
tempchar1 = GetActiveParamSetNumber(); |
Piep(tempchar1); |
} |
else |
{ |
tempchar1 = 0; // mark in response an invlid setting |
} |
while(!UebertragungAbgeschlossen); |
SendOutData('S', FC_ADDRESS, 1, &tempchar1, sizeof(tempchar1)); |
break; |
} // case FC_ADDRESS: |
default: // any Slave Address |
switch(RxdBuffer[2]) |
{ |
// 't' comand placed here only for compatibility to BL |
case 't':// Motortest |
memcpy(&MotorTest[0], (unsigned char *)pRxData, sizeof(MotorTest)); |
while(!UebertragungAbgeschlossen); |
SendOutData('T', MeineSlaveAdresse, 0); |
PcZugriff = 255; |
break; |
// 'K' comand placed here only for compatibility to old MK3MAG software, that does not send the right Slave Address |
case 'K':// Kompasswert |
memcpy((unsigned char *)&KompassValue , (unsigned char *)pRxData, sizeof(KompassValue)); |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
break; |
case 'a':// Texte der Analogwerte |
DebugTextAnforderung = pRxData[0]; |
if (DebugTextAnforderung > 31) DebugTextAnforderung = 31; |
PcZugriff = 255; |
break; |
case 'b': |
memcpy((unsigned char *)&ExternControl, (unsigned char *)pRxData, sizeof(ExternControl)); |
ConfirmFrame = ExternControl.Frame; |
PcZugriff = 255; |
break; |
case 'c': // Poll the 3D-Data |
if(!Intervall3D) { if(pRxData[0]) Timer3D = SetDelay(pRxData[0] * 10);} |
Intervall3D = pRxData[0] * 10; |
break; |
case 'd': // Poll the debug data |
DebugDataIntervall = pRxData[0] * 10; |
if(DebugDataIntervall > 0) DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
PcZugriff = 255; |
RemoteKeys |= pRxData[0]; |
if(RemoteKeys) DisplayLine = 0; |
DebugDisplayAnforderung = 1; |
break; |
case 'l':// x-1 Displayzeilen |
PcZugriff = 255; |
MenuePunkt = pRxData[0]; |
DebugDisplayAnforderung1 = 1; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// |
GetExternalControl = 1; |
break; |
} |
break; // default: |
} |
NeuerDatensatzEmpfangen = 0; |
pRxData = 0; |
RxDataLen = 0; |
} |
//############################################################################ |
//Routine für die Serielle Ausgabe |
int uart_putchar (char c) |
//############################################################################ |
{ |
if (c == '\n') |
uart_putchar('\r'); |
//Warten solange bis Zeichen gesendet wurde |
loop_until_bit_is_set(USR, UDRE); |
//Ausgabe des Zeichens |
UDR = 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) |
//############################################################################ |
{ |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
UCR=(1 << TXEN) | (1 << RXEN); |
// UART Double Speed (U2X) |
USR |= (1<<U2X); |
// RX-Interrupt Freigabe |
UCSRB |= (1<<RXCIE); |
// TX-Interrupt Freigabe |
UCSRB |= (1<<TXCIE); |
//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(DebugDataIntervall); |
Kompass_Timer = SetDelay(220); |
VersionInfo.SWMajor = VERSION_MAJOR; |
VersionInfo.SWMinor = VERSION_MINOR; |
VersionInfo.SWPatch = VERSION_PATCH; |
VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR; |
pRxData = 0; |
RxDataLen = 0; |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('H', FC_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20); |
DisplayLine++; |
if(DisplayLine >= 4) DisplayLine = 0; |
DebugDisplayAnforderung = 0; |
} |
if(DebugDisplayAnforderung1 && UebertragungAbgeschlossen) |
{ |
Menu(); |
SendOutData('L', FC_ADDRESS, 3, &MenuePunkt, sizeof(MenuePunkt), &MaxMenue, sizeof(MaxMenue), DisplayBuff, sizeof(DisplayBuff)); |
DebugDisplayAnforderung1 = 0; |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V', FC_ADDRESS, 1, (unsigned char *) &VersionInfo, sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
if(GetExternalControl && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse, 1, (unsigned char *) &ExternControl, sizeof(ExternControl)); |
GetExternalControl = 0; |
} |
if((CheckDelay(Kompass_Timer)) && UebertragungAbgeschlossen) |
{ |
WinkelOut.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
WinkelOut.UserParameter[0] = Parameter_UserParam1; |
WinkelOut.UserParameter[1] = Parameter_UserParam2; |
SendOutData('w', MK3MAG_ADDRESS, 1, (unsigned char *) &WinkelOut,sizeof(WinkelOut)); |
if(WinkelOut.CalcState > 4) WinkelOut.CalcState = 6; // wird dann in SPI auf Null gesetzt |
Kompass_Timer = SetDelay(99); |
} |
if(((DebugDataIntervall>0 && CheckDelay(Debug_Timer)) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D', FC_ADDRESS, 1, (unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
if(DebugDataIntervall>0) Debug_Timer = SetDelay(DebugDataIntervall); |
} |
if(Intervall3D > 0 && CheckDelay(Timer3D) && UebertragungAbgeschlossen) |
{ |
Data3D.Winkel[0] = (int) (IntegralNick / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[1] = (int) (IntegralRoll / (EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
Data3D.Winkel[2] = (int) ((10 * ErsatzKompass) / GIER_GRAD_FAKTOR); |
SendOutData('C', FC_ADDRESS, 1, (unsigned char *) &Data3D,sizeof(Data3D)); |
Timer3D = SetDelay(Intervall3D); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A', FC_ADDRESS, 2, (unsigned char *)&DebugTextAnforderung, sizeof(DebugTextAnforderung),(unsigned char *) ANALOG_TEXT[DebugTextAnforderung], 16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz bestätigen |
{ |
SendOutData('B', FC_ADDRESS, 1, (uint8_t*)&ConfirmFrame, sizeof(ConfirmFrame)); |
ConfirmFrame = 0; |
} |
if(GetPPMChannelAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('P', FC_ADDRESS, 1, (unsigned char *) &PPM_in, sizeof(PPM_in)); |
GetPPMChannelAnforderung = 0; |
} |
} |
/branches/V0.72p HexaLotte/uart.h |
---|
0,0 → 1,135 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
void BearbeiteRxDaten(void); |
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]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
signed int Analog[32]; // Debugwerte |
}; |
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; |
struct str_Data3D |
{ |
signed int Winkel[3]; // nick, roll, compass in 0,1° |
signed char reserve[8]; |
}; |
extern struct str_Data3D Data3D; |
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; |
struct str_VersionInfo |
{ |
unsigned char SWMajor; |
unsigned char SWMinor; |
unsigned char ProtoMajor; |
unsigned char ProtoMinor; |
unsigned char SWPatch; |
unsigned char Reserved[5]; |
}; |
extern struct str_VersionInfo VersionInfo; |
//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 |
//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 |
#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 |
#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 |
#if defined (__AVR_ATmega644P__) |
# 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 |
#endif //_UART_H |
/branches/V0.72p HexaLotte/version.txt |
---|
0,0 → 1,239 |
------- |
V0.53 27.04.2007 H.Buss |
- erste öffentliche Version |
V0.53b 29.04.2007 H.Buss |
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft |
V0.53c 29.04.2007 H.Buss |
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind. |
Die angezeigten Werte waren nicht die Werte der Funke |
V0.54 01.05.2007 H.Buss |
- die Paramtersätze können jetzt vor dem Start ausgewählt werden |
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt: |
2 3 4 |
1 x 5 |
- - - |
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw. |
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt |
V0.55 14.05.2007 H.Buss |
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden |
V0.56 14.05.2007 H.Buss |
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren |
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen |
V0.57 24.05.2007 H.Buss |
- Der Höhenregler kann nun auch mittels Schalter bedient werden |
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat |
- Kompass-Einfluss dämpfen bei Neigung |
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen |
- Der Motortest vom Kopter-Tool geht jetzt |
- Man kann den Parametersätzen einen Namen geben |
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert |
V0.58 30.05.2007 H.Buss |
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist |
V0.60 17.08.2007 H.Buss |
- "Schwindel-Bug" behoben |
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft |
- Poti4 zugefügt |
- Es werden jetzt 8 Kanäle ausgewertet |
- Kamera-Servo (an J7) |
- Die Settings müssen überschrieben werden |
V0.61 - V0.63 H.Buss 27.09.2007 |
- Poti 4 und Kanal 8 werden im Menü angezeigt |
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt |
- Analog.c: Aktuell_ax korrigiert |
- auf 32 Debug-Kanäle erweitert |
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar |
- leichte Anpassungen im Gier - Geschwindigkeit und Drift |
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein |
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird |
- die PPM-Ausgänge liegen wieder an den Pins an |
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders |
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen |
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an |
- Sticksignale werden präziser ausgewertet |
- Stick-Kanäle werden ans Kopter-Tool übertragen |
- Es muss die Version V1.47 des Kopter-Tool verwendet werden |
- Die Settings werden auf Default zurückgesetzt |
- am Piepen kann man die Fehlerart unterscheiden |
1. einzelnes Piepen beim Einschalten und Kalibrieren |
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall |
3. schnelleres Intervall mindestens 1 Sek -> Akku |
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört |
V0.64 H.Buss 30.09.2007 |
- beim Gieren wurden die Achsen nicht hart genug geregelt |
V0.65a H.Buss 15.10.2007 |
- Integral im Mischer wieder integriert |
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100 |
- ACC/Gyro Abgleich auch bei HH |
V0.66a H.Buss 3.11.2007 |
- Messwertverarbeitung aus dem Analog-Interrupt entfernt |
- Analogmessung hängt jetzt am FC-Timing |
- Looping-Stick-Hysterese eingebaut |
- Looping-180°-Umschlag einstellbar |
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll |
- Lageregelung nach ACC-Sensor verbessert |
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage |
- Gyrodriftkompensation überarbeitet |
- Bug in der Gier-Stick-Berechnung behoben |
- Gyro-Messung auf 1kHz beschleunigt |
V0.67a H.Buss 16.11.2007 |
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode) |
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus |
- Feinabstimmung |
- Beim HH-Modus gab es noch Bugs |
V0.67e H.Buss 29.11.2007 |
- Parameter: Dynamic Stability und Driftfaktor eingeführt |
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen |
- Kompatibilität zum Koptertool erhöht |
V0.67f H.Buss 04.12.2007 |
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional |
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv |
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts) |
V0.68a I.Busker 28.12.2007 |
- SPI.c & SPI.h ins Projekt aufgenommen |
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden |
V0.68c H.Buss 05.01.2008 |
- Stickauswertung verbessert -> träger und präziser |
- Alle Settings angepasst |
V0.69e H.Buss 05.05.2008 |
- kleinere Bugs beseitigt |
- Schneller Sinkflug jetzt möglich |
- Min- und Maxgas in den Settings geändert |
- Lagewinkel wird jetzt in 0,1 Grad an Kompass und Navi gesendet |
- Kalibrierung für MK3Mag -> Nick unten beim Kalibrieren |
- Kompassroutine um den Ersatzkompass (Gyro unterstützt Kompasswert) erweitert |
V0.69h H.Buss 21.05.2008 |
- 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 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 |
V0.69L H.Buss 14.06.2008 |
- feinere Cam-Servo-Auflösung |
V0.70a H.Buss 01.07.2008 |
- Unterstützung der V1.3-Hardware mit automatischem Hardware-Gyro-Abgleich |
V0.70b H.Buss 14.07.2008 |
- flexible Einstellungsmöglichkeit von J16 und J17 (Transistorausgänge) |
- eigene Parameter für GPS-Naviboard |
- eigener Parameter für ExternalControl (war vorher UserParameter1 bzw. 8) |
- neue Parameter im EEPROM-Datensatz: J16Bitmask, J16Timing, ExternalControl, Navi... |
- MikroKopterFlags eingeführt, damit das Navi den Status des MKs kennt |
- KopterTool-Kompatibilität auf 8 erhöht |
V0.70c H.Buss 30.07.2008 |
- Parameter der Datenfusion leicht modifiziert |
- EEPROM-Parameter für Looping-Umschlag angepasst (von 100 auf 85) |
- MaxStick wird auf 100 begrenzt |
V0.70d H.Buss 02.08.2008 |
- Transistorausgänge: das oberste Bit der Blinkmaske (im KopterTool linkes Bit) gibt nun den Zustand des Ausgangs im Schalterbetrieb an |
0.71b: H.Buss 19.10.2008 |
Kommunikation zum Navi erweitert: |
- Beeptime jetzt 32Bit |
- Datenfusion und Driftkopensation wird durch NaviBoard unterstützt |
0.71c: H.Buss 20.10.2008 |
- LoopConfig heisst jetzt BitConfig |
- 3-Fach-Schalter für Höhensteuerung möglich -> kann man mit GPS-Schalter zusammenlegen |
- bei den Settings wurde Setting[0] mit abgespeichert, welches es nicht gab. |
- in Zukunft werden bei neuen EEPROM-Settings die Kanäle von Setting 1 übernommen |
- Variablen NaviWindCorrection, NaviSpeedCompensation, NaviOperatingRadius eingeführt |
0.71f: H.Buss 15.11.2008 |
- Ausschalten der Höhenregelung per Schalter um 0,3 sek verzögert |
- bei der seriellen Übertragung hat die FC jetzt als SlaveAdresse die 1 |
- VersionInfo.NaviKompatibel eingeführt |
- wenn manuell gegiert wird, wird der GyroKompass-Wert auf den Kompasswert gesetzt |
- Luftdruckwert wird an das Navi übertragen |
- Der Baro-Offset wird jetzt nachgeführt, um den Messbereich zu erweitern. Geht nur bei Höhenregler mit Schalter |
- Debugdaten können jetzt mit 'f' gepollt werden |
0.71g: Gregor 09.12.2008 |
- Kommunikation überarbeitet |
Infos hier: http://www.mikrokopter.de/ucwiki/en/SerialCommands |
0.71h: H.Buss 15.12.2008 |
- Freigegebene Version |
- NaviAngleLimitation als Parameter zum Navi implementiert |
- Antwort auf CMD: 't' entfernt |
0.72d: H.Buss 22.01.2009 |
- OCTO als Compilerschalter |
- Unterstützung der FC 2.0 (ME) |
- GYRO_D eingeführt |
- Achsenkopplung jetzt auch auf Nick/Roll-Bewegung |
0.72e: H.Buss 27.01.2009 |
- die 0.72d hatte kein Integral im Gier |
- Parameter eingeführt: |
EE_Parameter.NaviGpsPLimit |
EE_Parameter.NaviGpsILimit |
EE_Parameter.NaviGpsDLimit |
EE_Parameter.NaviPH_LoginTime |
EE_Parameter.AchsKopplung2 |
EE_Parameter.CouplingYawCorrection |
0.72f: H.Buss 28.01.2009 |
- Bug im Ersatzkompass entfernt |
0.72h: H.Buss 05.02.2009 |
- Algorithmen beschleunigt -> Floats durch Fixkomma ersetzt |
- Achsentkopplung weiter verbessert |
- Nick- und Roll im Octo-Mischer auf jeweils vier Motoren aufgeteilt |
0.72i: H.Buss 07.02.2009 |
- Abtastrate von 1kHz auf 2kHz erhöht |
0.72j: H.Buss 09.02.2009 |
- neue Implementierung der Servoausgänge |
0.72k: H.Buss 10.02.2009 |
- Abtastrate auf 5kHz erhöht |
0.72L: H.Buss 13.02.2009 |
- Signalfilterung überarbeitet |
- OCTO2 implementiert |
0.72M: H.Buss 13.02.2009 |
- Code Cleanup |
0.72o: H.Buss 24.02.2009 |
- Abtastrate auf 2kHz |
- HW-Version an Navi |
- neuer Datensatz 'c' -> Lagedaten für 3D-Grafik |
- Auswerteroutine für Spectrum-Satteliten implementiert |
- Kanalsettings werden beim Parameterreset nicht mehr gelöscht |
- die Driftkompensation wird jetzt feiner aufgelöst --> EE_Parameter.Driftkomp muss mal 8 genommen werden |
- die Integrale und ACC-Werte werden jetzt im Scope in ca. 0,1° angezeigt (wie beim NaviBrd) |
0.72p: H.Buss 01.03.2009 |
- Octo3 erstellt |
- Analogwerte umbenannt |