/branches/mixer/V0.68d_DarkMod/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/mixer/V0.68d_DarkMod/GPS.c |
---|
0,0 → 1,30 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
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/mixer/V0.68d_DarkMod/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex |
---|
0,0 → 1,64 |
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD |
:10F81000B1E0E0EEFBEF02C005900D92A030B10721 |
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B |
:10F83000E1F70C943B7C0C941D7C0895982F8091EB |
:10F84000C00085FFFCCF9093C60008958091C00052 |
:10F850008823E4F78091C600992708958DE40E94DB |
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441 |
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057 |
:10F88000F0E014915F01772474BE98E10FB6F8940C |
:10F8900090936000109260000FBE7092C5008AE2E3 |
:10F8A0008093C4008091C00082608093C0009093D8 |
:10F8B000C10086E08093C200EF01072D8091C00057 |
:10F8C00087FF0DC0013031F48091C6008A3AB1F152 |
:10F8D00000E005C08091C6008B3109F401E0CE0143 |
:10F8E00021968436910528F11F3F41F0112331F014 |
:10F8F000E0910001F091010109951BC01092C50033 |
:10F900008AE28093C4008AE00E941E7C8DE00E94FF |
:10F910001E7C86E50E941E7C80E30E941E7C8EE297 |
:10F920000E941E7C81E30E941E7C8AE30E941E7C52 |
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3 |
:10F940000E94267C813611F489E547C1813471F427 |
:10F950000E94267CA82EBB24BA2CAA240E94267CB6 |
:10F960009927A82AB92AB694A79406C1823629F401 |
:10F9700089E50E941E7C81E00BC1823409F083C0BE |
:10F980000E94267C9927D82FCC270E94267C992775 |
:10F99000C82BD92B0E94267C082F12E0812E11E063 |
:10F9A000912EEE24FF2464010894811C911CEC1616 |
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF |
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E |
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13 |
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA |
:10F9F0007727440F551F661F771F6A017B01C2E0FE |
:10FA0000D1E001E08991992729913327322F2227CC |
:10FA1000822B932B0C01FA0100935700E8951124D7 |
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192 |
:10FA300080935700E89507B600FCFDCF81E18093E5 |
:10FA40005700E89576956795579547955A0194C064 |
:10FA500080E00E941E7C90C0053409F08DC0F50145 |
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B |
:10FA700080BD3196FA9AF99AF999FECF215030401B |
:10FA800091F75F0179C0873609F047C00E94267C54 |
:10FA90009927D82ECC240E94267C9927C82AD92AB7 |
:10FAA0000E94267C863411F5E6016501EE24FF24D0 |
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F |
:10FAC0000E941E7C812F99270E941E7C82E090E07C |
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717 |
:10FAE000F694E794D794C79456012ACF853409F049 |
:10FAF00027CF7501E1BC8F2D992782BDF89A089414 |
:10FB0000E11CF11C80B50E941E7C0894C108D1083C |
:10FB1000C114D10479F7570113CF853601F594E765 |
:10FB2000791651F580E090E0A0E0B0E023E0FC0120 |
:10FB300020935700E89507B600FCFDCF80509F4FFB |
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B |
:10FB5000BE0768F381E180935700E8950DC08534B6 |
:10FB600069F488E190E02CE00FB6F894A8958093B2 |
:10FB700060000FBE209360008DE02FC08035E1F360 |
:10FB80008C34D1F3803711F483E527C0843721F416 |
:10FB90000E941E7C80E021C0843521F40E94267CD6 |
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51 |
:10FBB000863529F480E30E941E7C81E30EC08337E2 |
:10FBC00041F489E00E941E7C86E90E941E7C8EE141 |
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA |
:040000030000F80001 |
:00000001FF |
/branches/mixer/V0.68d_DarkMod/Hex-Files/Flight-Ctrl_MEGA644_V0_68d_DarkMod_0_1.hex |
---|
0,0 → 1,2010 |
:100000000C9439020C9456020C9456020C9456022D |
:100010000C9456020C9456020C9456020C94560200 |
:100020000C9456020C94D20C0C9456020C9456026A |
:100030000C94FC150C9456020C9456020C94560227 |
:100040000C9456020C9456020C94B70B0C94560266 |
:100050000C94F5040C9456020C94BF040C945602B4 |
:100060000C947E0D0C9456020C9456150C9456026A |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D414343206E69636874206102 |
:1000E000626765676C696368656E21000A0D496E19 |
:1000F00069742E20454550524F4D3A2047656E6534 |
:1001000072696572652044656661756C742D506115 |
:1001100072616D657465722E2E2E000A0D3D3D3D97 |
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF |
:100130003D3D3D3D3D3D3D3D3D3D3D000A0D466C57 |
:1001400069676874436F6E74726F6C0A0D486172F0 |
:1001500064776172653A25642E25640A0D536F66D3 |
:1001600074776172653A5625642E256425632044B0 |
:1001700061726B4D6F64205625642E2564002E003D |
:1001800048693A253469202043663A2534692000BD |
:1001900047733A253469202047693A25346920009D |
:1001A0004E693A2534692020526F3A25346920007F |
:1001B00045787465726E436F6E74726F6C202000A8 |
:1001C00052616E67653A2533692D25336900537492 |
:1001D000656C6C756E673A202533690053657470E1 |
:1001E0006F696E74202025336900536572766F2025 |
:1001F0002000506F7469343A202025336900506F15 |
:100200007469333A202025336900506F7469323A9B |
:10021000202025336900506F7469313A202025333E |
:10022000690053746172743A2020202020253569BA |
:10023000004D657373776572743A20202535690027 |
:100240005269636874756E673A2020253569004BE2 |
:100250006F6D706173732020202020202000456D79 |
:1002600070662E506567656C3A253569005370617C |
:100270006E6E756E673A202025356900486F636899 |
:100280002025346920282533692900526F6C6C20A1 |
:10029000253469202825336929004E69636B2025A0 |
:1002A000346920282533692900414343202D2053F8 |
:1002B000656E736F72004769657220253469202866 |
:1002C0002533692900526F6C6C202534692028255C |
:1002D000336929004E69636B202534692028253352 |
:1002E000692900476965722025346920282533690A |
:1002F0002900526F6C6C2025346920282533692928 |
:10030000004E69636B202534692028253369290054 |
:100310004779726F202D2053656E736F72005033D2 |
:100320003A253469202050343A2534692000503170 |
:100330003A253469202050323A2534692000477329 |
:100340003A253469202047693A25346920004E69EE |
:100350003A2534692020526F3A25346920004B3702 |
:100360003A25346920204B383A25346920004B3532 |
:100370003A25346920204B363A25346920004B3326 |
:100380003A25346920204B343A25346920004B311A |
:100390003A25346920204B323A25346920004B6FCE |
:1003A0006D706173733A20202025356900526F6C9F |
:1003B0006C3A202020202020253569004E69636B8F |
:1003C0003A20202020202025356900616B742E20E2 |
:1003D0004C6167650048F668656E726567656C75A7 |
:1003E0006E67004B65696E6520004F6666202020B1 |
:1003F0002020203A20253569004C7566746472759A |
:10040000636B3A2025356900536F6C6C486F6568E3 |
:10041000653A2025356900486F6568653A202020D7 |
:1004200020202535690028632920486F6C67657294 |
:1004300020427573730053657474696E673A2025A2 |
:1004400064200048573A5625642E25642053573AB5 |
:1004500025642E25642563002B204D696B726F4B3C |
:100460006F70746572202B005B25695D005B2569E8 |
:100470005D0011241FBECFEFD0E1DEBFCDBF13E082 |
:10048000A0E0B1E0E4EDFAE702C005900D92A43AD5 |
:10049000B107D9F717E0A4EAB3E001C01D92AE3D61 |
:1004A000B107E1F70E94B2020C94683D0C94000081 |
:1004B0009C01F999FECF32BD21BDF89A80B508950F |
:1004C0009C01F999FECF1FBA32BD21BD60BD0FB6A8 |
:1004D000F894FA9AF99A0FBE0895F999FECF22E09E |
:1004E00030E032BD21BDF89A80B5863060F0F999D0 |
:1004F000FECF1FBA32BD21BD82E080BD0FB6F89499 |
:10050000FA9AF99A0FBE08951F93182F863008F0B3 |
:1005100015E0419FC001112420E632E050E08C59E3 |
:100520009F4F0E946B3AF999FECF1FBA82E090E08C |
:1005300092BD81BD10BD0FB6F894FA9AF99A0FBE1C |
:100540001F910895FB01863008F085E0489FB001B7 |
:1005500011246C597F4F28E532E050E0CF010E9412 |
:100560004F3A08958F929F92AF92BF92CF92DF92AF |
:10057000EF92FF920F931F93CF93DF9314B815B8A8 |
:10058000189B02C08BE001C08AE0809300018DE8D7 |
:1005900087B98FEF88B98BE184B981E085B98EE3A3 |
:1005A0008AB9579A87EF8BB984B7877F84BF8091C8 |
:1005B00060008861809360001092600080ED97E099 |
:1005C0009093C6038093C50310925C0410925B0461 |
:1005D00010921A071092190710925A041092590497 |
:1005E0001092580410925704809100018A3011F43F |
:1005F000289801C0289A42980E94660C0E94CB0657 |
:100600000E94E7150E94780D0E94181578941092A8 |
:100610000C0684E480930D0687E080930E062091FB |
:10062000000181E090E09F938F931F921F9284E6D8 |
:1006300090E09F938F9384E490E09F938F931F9219 |
:100640001F92822F6AE00E94C13C892F90E09F9305 |
:100650008F93822F0E94C13C90E09F938F938CE3F5 |
:1006600091E09F938F931F920E94FA088BE191E093 |
:100670009F938F931F920E94FA08299A8DB79EB775 |
:1006800044960FB6F8949EBF0FBE8DBFF999FECF6A |
:10069000C1E0D0E0D2BDC1BDF89A80B5853409F47F |
:1006A0003BC08CEE90E09F938F931F920E94FA08BC |
:1006B0000E94873910E00F900F900F90123039F0A0 |
:1006C000133019F40E94653804C0143010F00E94F1 |
:1006D000F63847E461E477E0812F0E9484021F5FCF |
:1006E000163061F7F999FECF1FBA82E090E092BD13 |
:1006F00081BD83E080BD0FB6F894FA9AF99A0FBED7 |
:10070000F999FECF1FBAD2BDC1BD85E480BD0FB639 |
:10071000F894FA9AF99A0FBEF999FECF84E090E026 |
:1007200092BD81BDF89A80B5853050F083ED90E0A0 |
:100730009F938F931F920E94FA080F900F900F9033 |
:100740000E946D0247E461E477E00E94A2020E94E9 |
:100750006D0290E09F938F9388EB90E09F938F932F |
:100760001F920E94FA08809149070F900F900F90F6 |
:100770000F900F9080FD03C0C8EED3E020C08BE93E |
:1007800090E09F938F931F920E94FA0888EE93E067 |
:100790000E948D0CEC010E9412100F900F900F9090 |
:1007A000CE010E94970C8823D9F386E990E09F93AD |
:1007B0008F931F920E94FA080F900F900F900E9443 |
:1007C0005C21809100018A3011F4289801C0289A98 |
:1007D00080ED97E09093C6038093C50385E58093F1 |
:1007E000160688E890E09F938F931F920E94FA0864 |
:1007F000809149070F900F900F9082FF03C08CE704 |
:1008000090E002C084E790E09F938F931F920E9434 |
:10081000FA080F900F900F9080E790E09F938F93CE |
:100820001F920E94FA080E946B1088E893E190934F |
:100830008603809385030F900F900F9030E7832EEF |
:1008400037E1932EA12C23E0B22E95E0C92ED12CB6 |
:1008500080E1E82E87E2F82E00E810E08091C203E4 |
:100860008823E1F31092C2030E94E2220E941A211F |
:10087000809100018A3011F4289801C0289A809153 |
:100880000301882321F081508093030112C010924C |
:10089000B4031092B50310922006109279041092BE |
:1008A000780410927B0410927A0410927D041092C6 |
:1008B0007C0480915604882329F08091560481504D |
:1008C000809356048091850390918603892BD1F4FF |
:1008D000D0928603C09285030E942715809104035D |
:1008E000909105038F5F9F4FE9F480915F04882307 |
:1008F000C9F0F092C603E092C5031093050300937C |
:10090000040310C080918503909186030197909312 |
:10091000860380938503809100018A3011F4289822 |
:1009200001C0289A8091C203882311F40E94E60630 |
:100930000E948E07CE010E94970C882309F48ECF67 |
:1009400020910803309109038091590790E02817FE |
:1009500039077CF480910403909105038F5F9F4FCA |
:1009600041F49092C6038092C503B0920503A09211 |
:10097000040384E690E00E948D0CEC016FCF1F927F |
:100980000F920FB60F9211248F939F93EF93FF93C3 |
:10099000809101018823E1F48091BE039091BF030F |
:1009A00001969093BF038093BE03FC01E252FB4F7C |
:1009B000E081ED3019F08639910539F41092BF03CA |
:1009C0001092BE0381E080930101E093C60004C051 |
:1009D0001092BF031092BE03FF91EF919F918F91F0 |
:1009E0000F900FBE0F901F9018951F920F920FB689 |
:1009F0000F9211242F933F934F938F939F93AF9315 |
:100A0000BF93CF93DF93EF93FF938091C6008093C2 |
:100A1000A8034091B903463910F01092B8038091B1 |
:100A2000A8038D3009F05CC08091B803823009F0D2 |
:100A300057C01092B803A42FB0E0FD01E15EF94F5A |
:100A40003081ED01C05ED94F28818091BC03909127 |
:100A5000BD03831B9109821B91099F709093BD0375 |
:100A60008093BC039C0196E0369527959A95E1F713 |
:100A7000235C2093BB03982F9F73935C9093BA03DE |
:100A80008081281729F48881981711F491E006C015 |
:100A90008091AB038F5F8093AB0390E08091A903BB |
:100AA000882309F069C0992309F466C081E0809326 |
:100AB000A9034093AC03AF5DB94F8DE08C93809157 |
:100AC0002306823509F058C02CE088E190E00FB68B |
:100AD000F894A895809360000FBE209360004CC0EE |
:100AE0008091B8038130F9F0813020F0823009F034 |
:100AF00041C024C08091A803833239F48091A903B6 |
:100B0000882319F481E08093B8038091A80380932F |
:100B1000210681E08093B9038091A8038093BC03F0 |
:100B20001092BD0329C082E08093B803E42FF0E067 |
:100B30008091A803EF5DF94F808309C0E42FF0E0B6 |
:100B40008091A803EF5DF94F8083463920F44F5F11 |
:100B50004093B90302C01092B8032091A80380917A |
:100B6000BC039091BD03820F911D9093BD038093B0 |
:100B7000BC0302C01092B803FF91EF91DF91CF91B7 |
:100B8000BF91AF919F918F914F913F912F910F9076 |
:100B90000FBE0F901F901895DC0120E030E040E080 |
:100BA00050E008C0FA01E252FB4F8081280F311D4E |
:100BB0004F5F5F4F4A175B07A8F33F70C90136E0EC |
:100BC000969587953A95E1F7835CFD01E252FB4FDC |
:100BD000808311962F73235CFD01E252FB4F20832B |
:100BE000A152BB4F8DE08C93109201018091DE04E5 |
:100BF0008093C6000895CF93DF93EA01B22F93E26A |
:100C00009093DE046093DF048093E00463E070E07F |
:100C1000A0E04EC0FE01EA0FF11D9081AF5FB15020 |
:100C200019F430E040E00FC0FE01EA0FF11D4081F1 |
:100C3000AF5FB15011F430E006C0FE01EA0FF11DC4 |
:100C40003081AF5FB150892F86958695835CFB011B |
:100C5000E252FB4F8083242F22952F70892F90E042 |
:100C60008370907054E0880F991F5A95E1F7282BF4 |
:100C7000235CFB01E152FB4F2083842F90E08F70B7 |
:100C80009070880F991F880F991F232F2295269502 |
:100C900026952370282B235CFB01E052FB4F208319 |
:100CA0003F73335CFB01EF51FB4F30836C5F7F4F31 |
:100CB000BB2309F0AFCFCB010E94CC05DF91CF91D0 |
:100CC00008951F93CF93DF93EC0170E0A22FB0E063 |
:100CD000119748C0E42FF0E0EF5DF94F30814F5F8E |
:100CE000E42FF0E0EF5DF94F50814F5FE42FF0E02B |
:100CF000EF5DF94F10814F5FE42FF0E0EF5DF94FAA |
:100D000020814F5F842F90E08A179B0774F55D5315 |
:100D1000FE01E70FF11D852F82958F703D53330F34 |
:100D2000330F382B3083613001F1912F9D537F5F5A |
:100D3000FE01E70FF11D71505295507F892F869566 |
:100D40008695582B5083623081F063507E5FFE01A0 |
:100D5000E70FF11D9295990F990F907C2D53922BCF |
:100D600090837F5F662309F0B5CFDF91CF911F910C |
:100D700008951F93182F8A3019F48DE00E94B90648 |
:100D80008091C00085FFFCCF1093C60080E090E00A |
:100D90001F9108950895E1ECF0E088E18083A0ECD4 |
:100DA000B0E08C9182608C938081806880838081A8 |
:100DB000806480838AE28093C40088EC90E00E9483 |
:100DC0008D0C90930B0680930A0608958091010183 |
:100DD000882309F4A2C08091A403882371F0809134 |
:100DE0000101882351F02BE046E156E06091DD04DB |
:100DF00087E40E94FB051092A40380910A0690915B |
:100E00000B060E94970C882321F48091A603882367 |
:100E1000B1F080910101882391F022E447EB56E084 |
:100E20006091DD0484E40E94FB051092A60384EF28 |
:100E300091E00E948D0C90930B0680930A066091BE |
:100E400002016F3F89F0462F50E074E0440F551FB8 |
:100E50007A95E1F74C5F5E4F605D20E181E40E948E |
:100E6000FB058FEF809302019091F9069923A1F081 |
:100E700080910101882381F083E28093DE049093C6 |
:100E8000DF048DE08093E004109201011092F906D6 |
:100E90008091DE048093C6008091A503882359F1D8 |
:100EA00080910101882339F10E9474101092A503EA |
:100EB0003091AE03932F9F5F9093AE03943021F057 |
:100EC0008091AF03882359F026E145E157E060E0C7 |
:100ED00084E30E94FB058FEF8093AE030CC044E1D6 |
:100EE000949FA0011124465E5C4F24E160E0832FB3 |
:100EF0008F5C0E94FB058091A703882371F080918D |
:100F00000101882351F02AE04CE056E06091DD04B5 |
:100F100086E50E94FB051092A70308951F93DF93B7 |
:100F2000CF9300D0CDB7DEB78091A903882309F411 |
:100F300006C18FEF80930301809123068B3609F45D |
:100F400079C08C3688F48336D1F1843630F481361A |
:100F5000C1F0823609F0F1C020C0873609F47BC0A9 |
:100F6000883609F0EAC042C0813709F478C0813779 |
:100F700008F49DC0843709F454C0863709F0DDC0F9 |
:100F800066C02091AC0343E062E0CE0101960E946E |
:100F90006106898180930201D0C02091AC0343E0B7 |
:100FA0006BE086E196E00E9461068091ED039091EE |
:100FB0001806892B8093ED0380911F0645C0209170 |
:100FC000AC0343E06BE086E196E00E94610680910D |
:100FD000ED0390911806892B8093ED0380911F06F5 |
:100FE0008093F90681E08093A603A7C02091AC030B |
:100FF00043E062E0CE0101960E9461068091ED031C |
:101000009981892B8093ED038A818F3F21F481E0C0 |
:101010008093AF0302C01092AF0381E08093A503D9 |
:101020008CC02091AC0343E064E080EB93E00E942D |
:10103000610683C02091AC0343E064E084EB93E05D |
:101040000E9461068091B7038093F90676C081E023 |
:101050008093A70372C081E08093A4036EC02091A7 |
:10106000AC0343E062E0CE0101960E9461068981F3 |
:101070008F3F89F0863010F085E0898347E461E492 |
:1010800077E089810E94A202898127E441E457E048 |
:101090006091DD0408C01091DD040E946D0227E418 |
:1010A00041E457E0612F855B0E94FB0546C020911B |
:1010B000AC0343E067E481E497E00E94610680911D |
:1010C000230647E461E477E08B560E948402209176 |
:1010D0002306F999FECF1FBA82E090E092BD81BD50 |
:1010E0002B5620BD0FB6F894FA9AF99A0FBE60916C |
:1010F0006C0770E080E090E024EC39E040E050E0E4 |
:101100000E94A23C609387037093880380938903B5 |
:1011100090938A0360916D0770E080E090E00E94F8 |
:10112000A23C60938B0370938C0380938D03909308 |
:101130008E030E946D020E94C8221092A9030F9094 |
:101140000F90CF91DF911F910895982F8091FA060B |
:10115000813061F48091EC03E82FF0E0E65EFC4F13 |
:1011600090838F5F8093EC0381E00895892F0E9424 |
:10117000B90608951F93182F04C080E30E94A508A4 |
:1011800011501116D4F31F9108951F93182F04C006 |
:1011900080E20E94A50811501116D4F31F91089502 |
:1011A0000F931F93CF93DF938C01EB0108C0F801DD |
:1011B0000F5F1F4FE4918E2F0E94A5082197209763 |
:1011C000B1F7DF91CF911F910F9108950F931F9366 |
:1011D000CF93DF938C01EB0106C0F80181918F0161 |
:1011E0000E94A50821972097C1F7DF91CF911F9109 |
:1011F0000F9108952F923F924F925F926F927F923C |
:101200008F929F92AF92BF92CF92DF92EF92FF9216 |
:101210000F931F93DF93CF93CDB7DEB7E5970FB64C |
:10122000F894DEBF0FBECDBF2C969FAD2C972D96A8 |
:101230004FAD2D972B968FAD2B978093FA06FDE43B |
:10124000AF2EB12CAC0EBD1E292F342FC9019DA786 |
:101250008CA71EA61FA618AA19AA9E01245D3F4F9F |
:101260003DAB2CAB0CA51DA502C00F5F1F4FF801B5 |
:10127000F490FF2019F0F5E2FF16B9F7B8012CA59C |
:101280003DA5621B730B19F0C9010E94D008FF2015 |
:1012900009F454C2A8014F5F5F4F5DA74CA71982A4 |
:1012A00044241BAA5FEF5AAB02C0C5015C01ECA548 |
:1012B000FDA5CF0101969DA78CA76491A42DB0E058 |
:1012C000A170B070653721F0862F80628837F1F405 |
:1012D000109771F0F50120813181428153812EA751 |
:1012E0003FA748AB59AB24E030E0A20EB31E0EC0BE |
:1012F000F501808191819C0140E050E02EA73FA73D |
:1013000048AB59AB42E050E0A40EB51E603221F468 |
:101310008981882351F61AC0633211F458E05AC00B |
:101320006A3221F06D3281F4C50109C0C50102960F |
:10133000D501BC91BBABB7FFB9CFB195BBABE0E179 |
:101340004E2AFFED4F22B2CF6B3211F46983ADCF3D |
:101350006E3209F03AC0ECA5FDA59F012F5F3F4F0B |
:101360003DA72CA784918A3221F0682F20E030E03D |
:1013700021C0C5010296D5014D915C9157FF02C075 |
:101380004FEF5FEF4AAB92CFC901E3E0880F991F9F |
:10139000EA95E1F7220F331F280F391F260F311D61 |
:1013A00020533040ECA5FDA5AF014F5F5F4F5DA717 |
:1013B0004CA76491862F80538A3030F3A90137FF00 |
:1013C00002C04FEF5FEF4AAB7DCF603329F444FC9E |
:1013D0006CCF50E2452A69CF862F81538930E8F4DB |
:1013E00020E030E0C90153E0880F991F5A95E1F7DA |
:1013F000220F331F280F391F260F311D2053304075 |
:10140000ECA5FDA5CF0101969DA78CA76491862F21 |
:1014100080538A3038F32BAB55CF683619F494E0FB |
:10142000492A43CF6C3619F4A1E04A2A3ECF562E02 |
:10143000F501B3E66B1741F422E030E0A20EB31ED3 |
:1014400080818C83198227C134E4631739F044E624 |
:10145000641731F059E66517C1F502C081E0482AEA |
:1014600040FE09C0A4E0B0E0AA0EBB1E208131817D |
:10147000428153810BC042E050E0A40EB51E808132 |
:1014800091819C01442737FD4095542F2EA73FA7FB |
:1014900048AB59AB8EA59FA5A8A9B9A9B7FF11C0A4 |
:1014A0002EA53FA548A959A950954095309521955D |
:1014B0003F4F4F4F5F4F2EA73FA748AB59AB3DE281 |
:1014C0003983562E0AE0302E82C04FE4641721F093 |
:1014D0005FE6651731F402C081E0482A18E0312E3A |
:1014E00075C090E76917A1F4A2E0B0E0AA0EBB1E98 |
:1014F000808191819C0140E050E02EA73FA748AB3E |
:1015000059AB30E4432AB0E13B2EA8E75A2E5EC027 |
:101510006337E1F5D501CD90DC90C114D10489F495 |
:10152000B8E2BC83EEE6ED83F5E7FE832CE62F837D |
:10153000288739E239871A86F4E0CF2ED12CCC0ED9 |
:10154000DD1E4AA947FD10C0552747FD509560E0B4 |
:1015500070E0C6010E94423A009771F0182F1C19E2 |
:101560005AA951174CF009C0F60101900020E9F783 |
:1015700031971E2F1C1901C01AA982E090E0A80E15 |
:10158000B91E1982E3E75E2E40E08CC0653521F07C |
:10159000653739F4562E02C091E0492A7AE0372E99 |
:1015A00015C0683519F0683709F06FC043FE0BC0ED |
:1015B0002EA53FA548A959A9211531054105510579 |
:1015C00011F030E4432A562E60E1362E19824AA9E2 |
:1015D00047FD02C05FED45228EA59FA5A8A9B9A928 |
:1015E0000097A105B10549F49AA9992331F45CE269 |
:1015F000C52ED12CCC0EDD1E44C0EEA4FFA408A93C |
:1016000019A94CE2C42ED12CCC0EDD1E632C7724FC |
:1016100088249924C801B701A40193010E94F43CD5 |
:101620006A3020F430E3232E260E08C027E5222E50 |
:10163000260EA8E55A1611F4BFED2B22F6012292D0 |
:101640006F01C801B701A40193010E94F43CC901D4 |
:10165000DA018EA79FA7A8ABB9ABE614F70408057B |
:10166000190518F07C018D01D5CFF8E03F1649F43B |
:1016700043FE07C020E3221621F0D601E0E3EE93FB |
:101680006D011CA91C194AA90DC0662309F456C096 |
:101690006C831982562E40E011E094E0C92ED12CC3 |
:1016A000CC0EDD1E042F011B07FD00E0898188237D |
:1016B00019F0812F8F5F06C046FC02C0812F02C047 |
:1016C000812F8E5F782E700EE42CFF2480E3882E0D |
:1016D000912C8E209F208114910421F48BA98719CD |
:1016E0000E94C5088981882329F061E070E0CE015D |
:1016F000019609C0E6FE09C0F0E3FA835B8262E06E |
:1017000070E0CE0102960E94E60820E28216910463 |
:1017100021F48BA987190E94BA08802F0E94BA0869 |
:10172000612F772767FD7095C6010E94E608E4FEE9 |
:1017300099CD8BA987190E94C50894CDE5960FB65F |
:10174000F894DEBF0FBECDBFCF91DF911F910F91F7 |
:10175000FF90EF90DF90CF90BF90AF909F908F90D1 |
:101760007F906F905F904F903F902F9008951F92C1 |
:101770000F920FB60F9211242F933F935F936F93A5 |
:101780007F938F939F93AF93BF938091C9038150B1 |
:101790008093C9038F5FB9F489E08093C903809176 |
:1017A00007038F5F817080930703882319F481E01A |
:1017B0008093C2038091C0039091C10301969093DE |
:1017C000C1038093C0038091C5039091C603029723 |
:1017D000E8F08091C5039091C60301979093C603EA |
:1017E0008093C5038091C5039091C60320910403A3 |
:1017F0003091050382239323892B31F0429A809103 |
:1018000000018A3089F40EC0429807C042988FEFD9 |
:101810009FEF9093050380930403809100018A3029 |
:1018200039F404C05A9A05C0479A03C05A9801C0B7 |
:1018300047988091490783FF3BC0349B0AC0809141 |
:10184000C3039091C40301969093C4038093C30390 |
:101850002FC08091C3039091C403892B79F08091AC |
:10186000C3039091C403805A9F4040F48091C30306 |
:101870009091C4039093470480934604809146045A |
:10188000909147042091480430914904845E9D4F13 |
:10189000821B930B68E671E00E94E13C845B904000 |
:1018A00090934B0480934A041092C4031092C30394 |
:1018B000BF91AF919F918F917F916F915F913F9178 |
:1018C0002F910F900FBE0F901F9018958091C0031D |
:1018D0009091C1030B969093CB038093CA0382E04F |
:1018E00085BD83EA84BD17BC88E788BD96E096BDB8 |
:1018F00083EC8093B0009093B100E0E7F0E080814A |
:1019000082608083EEE6F0E08081816080838AE0FF |
:101910008093B3001092B20008952091C0033091DB |
:10192000C1032F5F3F4F280F391FC9010895209130 |
:10193000C0033091C103821B930B80709078892F74 |
:10194000869508952091C0033091C1032F5F3F4FCA |
:10195000280F391F8091C0039091C103A901481B32 |
:10196000590BCA0180709078892F869599F3089554 |
:101970002091C0033091C1032F5F3F4F280F391FC3 |
:101980004FEE02C040937A008091C0039091C10352 |
:10199000B901681B790BCB0180709078892F8695EF |
:1019A00089F308951F920F920FB60F9211242F936F |
:1019B0003F934F935F936F937F938F939F93AF93D7 |
:1019C000BF93CF93DF93EF93FF93809106038150F2 |
:1019D000809306038F5F09F074C083E88093B000A2 |
:1019E00080919C03C82FD0E0D093C803C093C70355 |
:1019F0008091760780FF1EC060910A0470910B04ED |
:101A000080910C0490910D0420E830E040E050E01B |
:101A10000E94163DCA01B9012091630730E040E001 |
:101A200050E00E94A23C20E032E040E050E00E9402 |
:101A3000163D24C060910A0470910B0480910C043F |
:101A400090910D0420E830E040E050E00E94163D07 |
:101A5000CA01B9012091630730E040E050E00E94E4 |
:101A6000A23C20E032E040E050E00E94163D50955C |
:101A70004095309521953F4F4F4F5F4FC20FD31F79 |
:101A8000D093C803C093C7032091C7033091C80304 |
:101A90008091640790E02817390734F0809165073A |
:101AA00090E08217930724F49093C8038093C703B0 |
:101AB0008091C7038093B3008091660780930603EB |
:101AC00004C083E08093B0005F98FF91EF91DF91B5 |
:101AD000CF91BF91AF919F918F917F916F915F91C6 |
:101AE0004F913F912F910F900FBE0F901F9018951F |
:101AF00010927C008FEE80937A0008951F920F92CF |
:101B00000FB60F921124EF92FF920F931F932F9312 |
:101B10003F934F935F936F937F938F939F93AF9375 |
:101B2000BF93EF93FF9310927A008091E8038F5F49 |
:101B30008093E8038150853009F486C0863090F4A4 |
:101B4000823009F440C0833030F48823F1F08130D2 |
:101B500009F044C22FC0833009F441C0843009F039 |
:101B60003DC25AC0883009F4C2C0893038F486308A |
:101B700009F483C0873009F031C29CC0893009F470 |
:101B8000D3C08A3009F02AC2AFC180917800909109 |
:101B900079009093E7038093E60381E08093E90363 |
:101BA0008091E0039091E10301969093E10380938B |
:101BB000E00318C280917800909179009093E5033A |
:101BC0008093E40392C08091780090917900909383 |
:101BD000E3038093E20384E08093E90303C240912E |
:101BE00008035091090380917800909179009A013F |
:101BF000220F331F240F351F63E070E00E94CD3C9D |
:101C0000260F371F3695279536952795309309036C |
:101C10002093080386E0E0CF8091020490910304B2 |
:101C20002091780030917900821B930B9093FC06F1 |
:101C30008093FB068091FB069091FC069093D30362 |
:101C40008093D20387E0C8CF80917800909179008B |
:101C50002091000430910104821B930B909307079D |
:101C60008093060780910607909107079093D5030C |
:101C70008093D4031092E903B5C1809100012091B3 |
:101C8000E6033091E7038A3049F48091780090911F |
:101C90007900820F931F9695879506C080917800F2 |
:101CA00090917900820F931F9093D1038093D0037A |
:101CB00081E092CF809100012091E4033091E5030F |
:101CC0008A3049F48091780090917900820F931FB7 |
:101CD0009695879506C08091780090917900820F43 |
:101CE000931F9093CF038093CE0382E075CF8091B2 |
:101CF00000012091E2033091E3038A3049F480919E |
:101D0000780090917900820F931F9695879506C071 |
:101D10008091780090917900820F931F9093CD036A |
:101D20008093CC0385E058CF609178007091790062 |
:101D3000E0900404F090050400910604109107045B |
:101D4000882777FD8095982F0E948B3BA8019701EB |
:101D50000E94873A0E94583B7093D7036093D60342 |
:101D60004091D6035091D7038091FB069091FC06D9 |
:101D7000209106073091070797FF03C09095819542 |
:101D80009F4F959587959595879537FF03C030951B |
:101D900021953F4F3595279535952795820F931FB0 |
:101DA000840F951F9093D7038093D6038091D60319 |
:101DB0009091D703029704F1609104047091050497 |
:101DC000809106049091070420E030E048E454E458 |
:101DD0000E94EC3A88230CF03CC06091040470919E |
:101DE000050480910604909107042AE037ED43EA48 |
:101DF0005CE30E94883A25C08091D6039091D70376 |
:101E00008F5F9F4F34F560910404709105048091B9 |
:101E100006049091070420E030E046E154E40E947B |
:101E20003B3C1816B4F46091040470910504809151 |
:101E30000604909107042AE037ED43EA5CE30E9430 |
:101E4000873A60930404709305048093060490938A |
:101E5000070481E08093DD03809178009091790000 |
:101E60009093FE068093FD06209142043091430436 |
:101E700040914404509145048091D6039091D7033A |
:101E8000AA2797FDA095BA2F820F931FA41FB51FF5 |
:101E90008093420490934304A0934404B093450478 |
:101EA000E0904204F09043040091440410914504F2 |
:101EB00060914204709143048091440490914504E0 |
:101EC00020E034E040E050E00E94163DE21AF30AC0 |
:101ED000040B150BE0924204F09243040093440477 |
:101EE0001093450483E078CE80910B0790910C0706 |
:101EF0002091780030917900820F931F90930C0706 |
:101F000080930B07809103078F5F80930307809175 |
:101F10000307853008F462C08091780090917900C1 |
:101F200090930F0380930E03109203078091FF0696 |
:101F30009091000720910B0730910C07821B930BA7 |
:101F40002091600430916104821B930B9093DF0316 |
:101F50008093DE0320910B0730910C07E0900A0379 |
:101F6000F0900B0300910C0310910D03C801B70111 |
:101F7000660F771F881F991F6E0D7F1D801F911F91 |
:101F8000442737FD4095542F620F731F841F951F00 |
:101F900024E030E040E050E00E94163DC901DA0143 |
:101FA00080930A0390930B03A0930C03B0930D034B |
:101FB0002091FF063091000780910A0390910B0356 |
:101FC000A0910C03B0910D03281B390B30936104D1 |
:101FD0002093600410920C0710920B071092E903F3 |
:101FE0001092E8038091E90380937C008091E803DC |
:101FF000882319F08FEE80937A00FF91EF91BF91C3 |
:10200000AF919F918F917F916F915F914F913F9190 |
:102010002F911F910F91FF90EF900F900FBE0F9097 |
:102020001F901895EF92FF920F931F93CF93DF931A |
:10203000F999FECF03E0E02E00E0F02EF2BCE1BC07 |
:10204000F89A80B5C82FD0E0C531D10508F02A979D |
:10205000C7BD84E690E00E94B80C80910E03909179 |
:102060000F0382559340C8F4C0E0D0E016C0C7BD4E |
:1020700082E390E00E94B80C1F930F931F920E947E |
:10208000FA0880910E0390910F030F900F900F901C |
:102090008458934038F0219602C00EE711E0CA3F01 |
:1020A000D10528F38C2FF999FECF1FBAF2BCE1BC01 |
:1020B00080BD0FB6F894FA9AF99A0FBE809308077C |
:1020C0008CE291E00E94B80CDF91CF911F910F91AB |
:1020D000FF90EF900895EAE1F3E080E2819393E0CE |
:1020E000EA36F907D9F70895FF920F931F9380916D |
:1020F000ED03282F30E080FF15C08091EE03882388 |
:1021000011F0815002C080916A038093EE03EAE1EE |
:10211000F3E080E2819393E0EA36F907D9F78FEF95 |
:102120008093AE0321FF10C08091EE038F5F8093F8 |
:10213000EE03EAE1F3E080E2819393E0EA36F90707 |
:10214000D9F78FEF8093AE032370307023303105C1 |
:1021500011F41092EE038091EE03282F30E08A30C4 |
:1021600040F481E18093EC033F932F938DE694E05C |
:1021700007C080E18093EC033F932F9388E694E0BF |
:102180009F938F9381E08F930E94FA080F900F9096 |
:102190000F900F900F901091EE03153009F403C2C9 |
:1021A000163090F4123009F4D0C0133030F41123FB |
:1021B00009F1113009F031C465C0133009F41BC1B5 |
:1021C000143009F02AC46BC1183009F421C3193046 |
:1021D00038F4163009F4A1C2173009F01EC4F4C255 |
:1021E0001A3009F48FC31A3008F450C31B3009F0B9 |
:1021F00014C4C6C31092EC0388E594E09F938F93B8 |
:1022000011E01F930E94FA0884E18093EC0320916F |
:10221000000184E690E09F938F9384E490E09F9385 |
:102220008F931F921F92822F6AE00E94C13C892FD8 |
:1022300090E09F938F93822F0E94C13C90E09F93E8 |
:102240008F9383E494E09F938F931F930E94FA08E7 |
:1022500088E28093EC030E946D0290E09F938F933D |
:1022600086E394E09F938F931F930E94FA088CE378 |
:102270008093EC0386E294E09F938F931F930E94D8 |
:10228000FA089EC28091490780FF47C01092EC0374 |
:1022900080916004909161049F938F9387E194E013 |
:1022A0009F938F931F930E94FA0884E18093EC031D |
:1022B00080916204909163049F938F9388E094E0EF |
:1022C0009F938F931F930E94FA0888E28093EC03F8 |
:1022D00080910E0390910F039F938F9389EF93E06A |
:1022E0009F938F931F930E94FA088CE38093EC03D3 |
:1022F0008091080790E09F938F938AEE93E09F93DD |
:102300008F931F930E94FA088DB79EB744960FB61D |
:10231000F8949EBF0FBE8DBF85C384E18093EC030C |
:1023200083EE93E09F938F931F930E94FA0888E2B5 |
:102330008093EC0385ED93E09F938F931F930E940E |
:10234000FA088DB79EB70696E2CF1092EC038BEC9D |
:1023500093E09F938F9311E01F930E94FA0884E10A |
:102360008093EC0360910A0470910B0480910C043B |
:1023700090910D0420E034E040E050E00E94163DD2 |
:102380005F934F933F932F938CEB93E09F938F93A7 |
:102390001F930E94FA0888E28093EC036091120474 |
:1023A00070911304809114049091150420E034E09E |
:1023B00040E050E00E94163D5F934F933F932F9370 |
:1023C0008DEA93E09F938F931F930E94FA088CE30A |
:1023D0008093EC0380914604909147049F938F93E0 |
:1023E0008EE993E09F938F931F930E94FA088DB715 |
:1023F0009EB746968CCF1092EC038091190790916E |
:102400001A0720911707309118079F938F933F93D6 |
:102410002F938EE893E09F938F9311E01F930E9478 |
:10242000FA0884E18093EC0380911D0790911E07C8 |
:1024300020911B0730911C079F938F933F932F93FD |
:102440008EE793E09F938F931F930E94FA0888E290 |
:102450008093EC03809121079091220720911F0720 |
:10246000309120079F938F933F932F938EE693E0B5 |
:102470009F938F931F930E94FA088CE38093EC0341 |
:1024800080912507909126072091230730912407FA |
:102490009F938F933F932F938EE593E07BC0109291 |
:1024A000EC03E0914207F0E0EE0FFF1FEB5EF84F08 |
:1024B00020813181E0914107F0E0EE0FFF1FEB5EDC |
:1024C000F84F808191813F932F939F938F938EE458 |
:1024D00093E09F938F9311E01F930E94FA0884E189 |
:1024E0008093EC03E0914407F0E0EE0FFF1FEB5EFA |
:1024F000F84F20813181E0914307F0E0EE0FFF1F9C |
:10250000EB5EF84F808191813F932F939F938F9340 |
:102510008EE393E09F938F931F930E94FA0888E2C3 |
:102520008093EC03E0914607F0E0EE0FFF1FEB5EB7 |
:10253000F84F20813181E0914507F0E0EE0FFF1F59 |
:10254000EB5EF84F808191813F932F939F938F9300 |
:102550008EE293E09F938F931F930E94FA088CE37F |
:102560008093EC03E0914807F0E0EE0FFF1FEB5E75 |
:10257000F84F20813181E0914707F0E0EE0FFF1F17 |
:10258000EB5EF84F808191813F932F939F938F93C0 |
:102590008EE193E09F938F931F930E94FA088DB76B |
:1025A0009EB74C96B4CE1092EC0380E193E09F93DB |
:1025B0008F9311E01F930E94FA080F900F900F90D5 |
:1025C000809100018A3009F052C084E18093EC03CD |
:1025D0004091F6035091F7038091CC039091CD0385 |
:1025E0002091F6033091F7035F934F93821B930B77 |
:1025F0009F938F9381E093E09F938F931F930E940B |
:10260000FA0888E28093EC034091F8035091F903B3 |
:102610008091CE039091CF032091F8033091F9037C |
:102620005F934F93821B930B9F938F9382EF92E064 |
:102630009F938F931F930E94FA088CE38093EC037F |
:102640008091FA039091FB032091B0073091B1077C |
:102650009F938F933F932F9383EE92E09F938F935B |
:102660001F930E94FA088DB79EB7459650CE84E11D |
:102670008093EC038091F6039091F7032091CC03B3 |
:102680003091CD03E091F603F091F70362E070E042 |
:102690000E94E13C7F936F932E1B3F0B3F932F9340 |
:1026A00084ED92E09F938F931F930E94FA0888E233 |
:1026B0008093EC038091F8039091F9032091CE036D |
:1026C0003091CF03E091F803F091F90362E070E0FC |
:1026D0000E94E13C7F936F932E1B3F0B3F932F9300 |
:1026E00085EC92E09F938F931F930E94FA088CE3EE |
:1026F0008093EC038091FA039091FB032091B00743 |
:102700003091B10762E070E00E94E13C7F936F93EB |
:102710003F932F9386EB92E0A1CF1092EC0389EACE |
:1027200092E09F938F93FF24F394FF920E94FA0804 |
:1027300084E18093EC038091000490910104209146 |
:10274000D4033091D5039F938F933F932F938AE9BE |
:1027500092E09F938F93FF920E94FA0888E2809301 |
:10276000EC0380910204909103042091D2033091F4 |
:10277000D3039F938F933F932F938BE892E09F9384 |
:102780008F93FF920E94FA088CE38093EC03609190 |
:10279000040470910504809106049091070400914F |
:1027A0009807109199070E94583B7F936F931F934E |
:1027B0000F938CE792E09F938F93FF920E94FA0809 |
:1027C0008DB79EB74896A3CD84E18093EC038091AA |
:1027D0000803909109039F938F938DE692E09F9356 |
:1027E0008F9311E01F930E94FA0888E28093EC0314 |
:1027F0008091560490E09F938F938EE592E09F9393 |
:102800008F931F930E94FA088DB79EB70A967FCDCB |
:102810001092EC038FE492E09F938F9311E01F934B |
:102820000E94FA0884E18093EC0380914A0490911D |
:102830004B049F938F9380E492E09F938F931F9319 |
:102840000E94FA0888E28093EC03809146049091FC |
:1028500047049F938F9381E392E09F938F931F93FD |
:102860000E94FA088CE38093EC03809148049091D5 |
:1028700049049F938F9382E292E09F938F931F93DB |
:102880000E94FA088DB79EB7429641CD1092EC0394 |
:1028900080914E0490914F049F938F9386E192E034 |
:1028A0009F938F9311E01F930E94FA0884E1809315 |
:1028B000EC0380915004909151049F938F938AE090 |
:1028C00092E09F938F931F930E94FA0888E280936F |
:1028D000EC0380915204909153049F938F938EEF59 |
:1028E00091E09F938F931F930E94FA088CE380934B |
:1028F000EC0380915404909155049F938F9382EF41 |
:1029000091E0FDCC1092EC038AEE91E09F938F93BF |
:1029100011E01F930E94FA0884E18093EC038091F8 |
:102920009C0390E09F938F938CED91E09F938F9306 |
:102930001F930E94FA0888E28093EC038091C703FA |
:102940009091C8039F938F938EEC91E09F938F9308 |
:102950001F930E94FA088CE38093EC038091650733 |
:1029600090E09F938F938091640790E09F938F9363 |
:1029700080EC91E09F938F931F930E94FA08C4CC40 |
:102980001092EC0380EB91E09F938F9311E01F93E3 |
:102990000E94FA0884E18093EC0380911A0699273B |
:1029A00087FD90959F938F9380911906992787FDB6 |
:1029B00090959F938F9380EA91E09F938F931F93BD |
:1029C0000E94FA0888E28093EC0380911B06992705 |
:1029D00087FD90959F938F9380911C0690E09F9325 |
:1029E0008F9380E991E09F938F931F930E94FA0841 |
:1029F0008CE38093EC038091200690E09F938F936B |
:102A000080911D06992787FD90959F938F9380E86D |
:102A100091E09F938F931F93D1CE115010936A032F |
:102A20001092EE031092ED031F910F91FF90089505 |
:102A30001092B9008AE28093B800089585EA8093E5 |
:102A4000BC0080E0089584E98093BC0008954CEBBD |
:102A500050E084E9DA018C931092EF032BEB30E025 |
:102A6000F90180811092F00380E88C931092BD00F0 |
:102A70001092BA001082E9EBF0E01082A8EBB0E00F |
:102A80001C9210828AE28C9385EADA018C93108280 |
:102A9000F901108285E88C9308951092B900809313 |
:102AA000BB0085E88093BC0080E008951F920F92E0 |
:102AB0000FB60F9211248F939F93EF93FF93809102 |
:102AC000EF038F5F8093EF038150833061F1843097 |
:102AD00038F48130A9F09091F0038230C0F40AC03C |
:102AE000853031F1853060F1863051F1873009F061 |
:102AF00060C044C0892F90E08996880F991F33C029 |
:102B00008091F0038F5F8093F00381501BC084E9B4 |
:102B10008093BC00943018F41092EF0302C010921E |
:102B2000F00385EA25C08091F103880F8D5A1BC000 |
:102B30008091BB00E091F103F0E0E35FF84F808308 |
:102B40008091F103813051F0813028F0823049F0DA |
:102B5000833079F510C080918B0705C08091900774 |
:102B600002C08091A8071092B9008093BB0085E84D |
:102B70008093BC001EC08091AA07F5CF8091F1031D |
:102B80009091BB00E82FF0E0E35FF84F94838F5FF4 |
:102B90008093F103843010F01092F10384E9809364 |
:102BA000BC008AE090E090938603809385031092A6 |
:102BB000EF038091BC0080688093BC00FF91EF918F |
:102BC0009F918F910F900FBE0F901F90189583ECDF |
:102BD00080938100EFE6F0E0808180628083109234 |
:102BE000FB031092FA031092F9031092F80310926B |
:102BF000F7031092F60308951F920F920FB60F92EB |
:102C000011240F931F932F933F934F935F936F93D1 |
:102C10007F938F939F93AF93BF93CF93DF93EF9364 |
:102C2000FF9320918600309187008091F40390916A |
:102C3000F503281B390B80918600909187009093B3 |
:102C4000F5038093F403C9018D5494400091F2037D |
:102C50001091F303835F9A4160F40430110514F07E |
:102C600010926B0381E090E09093F3038093F20362 |
:102C70008AC00A3011050CF086C0C9018B5F9040F4 |
:102C8000845B914008F068C0E901C25DD140F80161 |
:102C9000EE0FFF1FEB5EF84F808191819E01281B94 |
:102CA000390BC90137FF03C0909581959F4F069757 |
:102CB0004CF480915604883C28F480915604865F39 |
:102CC00080935604F801EE0FFF1FEB5EF84F208152 |
:102CD0003181C901880F991F820F931F8C0F9D1F8F |
:102CE00064E070E00E94E13C9B01CE0101968617F2 |
:102CF00097071CF42150304006C021976C177D07C0 |
:102D000014F42F5F3F4F80915604E801CC0FDD1F74 |
:102D1000833CB8F0FE01EB5EF84F80819181A90100 |
:102D2000481B590BCA0163E070E00E94E13CCB01F3 |
:102D3000880F991F860F971FC55DD84F9983888389 |
:102D400004C0C55DD84F19821882F801EE0FFF1F2D |
:102D5000EB5EF84F31832083F8013196F093F30353 |
:102D6000E093F203E530F10511F45D9A06C05D9839 |
:102D7000E630F10511F45C9A05C05C98379711F4C0 |
:102D80005B9A01C05B98FF91EF91DF91CF91BF916A |
:102D9000AF919F918F917F916F915F914F913F91F3 |
:102DA0002F911F910F910F900FBE0F901F901895AC |
:102DB0002F923F924F925F926F927F928F929F924B |
:102DC000AF92BF92CF92DF92EF92FF920F931F9339 |
:102DD000DF93CF9300D0CDB7DEB78091FA03909107 |
:102DE000FB032091D0033091D103821B930B90936E |
:102DF000B1078093B0078091CE039091CF032091CB |
:102E0000F8033091F903821B930B90938A07809308 |
:102E100089078091CC039091CD032091F6033091E6 |
:102E2000F703821B930B90939207809391078091F5 |
:102E3000890790918A079093F2068093F106E090BB |
:102E4000AD07F090AE076091D4037091D503882749 |
:102E500077FD8095982F2CE030E040E050E00E9414 |
:102E6000A23C0027F7FC0095102FE60EF71E081F66 |
:102E7000191FC801B70122E030E040E050E00E9495 |
:102E8000163D3093AE072093AD07E090B707F09062 |
:102E9000B8076091D2037091D303882777FD80959E |
:102EA000982F2CE030E040E050E00E94A23C002748 |
:102EB000F7FC0095102FE60EF71E081F191FC8011A |
:102EC000B70122E030E040E050E00E94163D309330 |
:102ED000B8072093B7072091980730919907609120 |
:102EE000D6037091D703882777FD8095982F4427C4 |
:102EF00037FD4095542F620F731F841F951F22E0EA |
:102F000030E040E050E00E94163D30939907209356 |
:102F1000980740911A0450911B0460911C04709111 |
:102F20001D042091D4033091D503C901880F991F46 |
:102F3000820F931F880F991F880F991FAA2797FD4B |
:102F4000A095BA2F840F951FA61FB71F80931A0450 |
:102F500090931B04A0931C04B0931D0440911E0485 |
:102F600050911F0460912004709121042091D2039C |
:102F70003091D303C901880F991F820F931F880FC7 |
:102F8000991F880F991FAA2797FDA095BA2F840F24 |
:102F9000951FA61FB71F80931E0490931F04A09334 |
:102FA0002004B09321046091220470912304809145 |
:102FB000240490912504E090FD06F090FE06A09078 |
:102FC0000404B0900504C0900604D09007040E9449 |
:102FD0008B3B3B014C010027F7FC0095102FC801EB |
:102FE000B7010E948B3BA60195010E94873A9B0185 |
:102FF000AC01C401B3010E94883A0E94583B60931F |
:103000002204709323048093240490932504209138 |
:103010003A0430913B0440913C0450913D0480912E |
:10302000B0079091B107AA2797FDA095BA2F820FFC |
:10303000931FA41FB51F80933A0490933B04A09361 |
:103040003C04B0933D0420913E0430913F044091F4 |
:103050004004509141048091B0079091B107AA2794 |
:1030600097FDA095BA2F820F931FA41FB51F8093C1 |
:103070003E0490933F04A0934004B09341042091F8 |
:1030800068042A83222309F069C080916904882397 |
:1030900009F064C08091490786FF60C060912A04EE |
:1030A00070912B0480912C0490912D04E090B00736 |
:1030B000F090B107A0907604BB24CC24DD24002737 |
:1030C000F7FC0095102F20E030E140E050E00E9436 |
:1030D000163DC801B7010E94A23CA60195010E94BD |
:1030E000A23C20E038E040E050E00E94163D2093F2 |
:1030F000C5043093C6044093C7045093C80460913C |
:103100003204709133048091340490913504E0903E |
:10311000B007F090B10720E030E140E050E00E94BD |
:10312000163DCA01B901A60195010E94A23C0027E3 |
:10313000F7FC0095102FA80197010E94A23C20E007 |
:1031400038E040E050E00E94163D2093C1043093E7 |
:10315000C2044093C3045093C40410C01092C1042D |
:103160001092C2041092C3041092C4041092C504B9 |
:103170001092C6041092C7041092C8048091890767 |
:1031800090918A072090C5043090C6044090C704EF |
:103190005090C804820D931D90938A0780938907ED |
:1031A0000091890710918A07A090C104B090C204D1 |
:1031B000C090C304D090C40480917704682E772413 |
:1031C00088249924C401B301A60195010E94A23C60 |
:1031D00020E032E040E050E00E94163D020F131F55 |
:1031E00010938A07009389072091360430913704A1 |
:1031F00040913804509139048091890790918A0751 |
:10320000AA2797FDA095BA2F820F931FA41FB51F61 |
:103210008093360490933704A0933804B093390414 |
:10322000409132045091330460913404709135041C |
:103230008091890790918A072091640430916504F8 |
:10324000821B930BAA2797FDA095BA2F840F951F79 |
:10325000A61FB71F8093320490933304A0933404C5 |
:10326000B09335048091320490913304A0913404DA |
:10327000B0913504E0908B03F0908C0300918D03A6 |
:1032800010918E03E816F9060A071B0704F580E182 |
:1032900097E2A0E0B0E08E199F09A00BB10B8093DC |
:1032A000320490933304A0933404B0933504809196 |
:1032B000320490913304A0913404B091350480938A |
:1032C000360490933704A0933804B09339042091C6 |
:1032D00032043091330440913404509135048827EE |
:1032E0009927DC018E199F09A00BB10B281739070C |
:1032F0004A075B0704F580EF98EDAFEFBFEFE80EEC |
:10330000F91E0A1F1B1FE0923204F092330400934F |
:103310003404109335048091320490913304A091C9 |
:103320003404B09135048093360490933704A0930D |
:103330003804B09339048091CE039091CF030F9756 |
:1033400034F488E19CEF90938A07809389078091F9 |
:10335000CE039091CF03079734F480E398EF9093D6 |
:103360008A07809389079091000199839A30A9F484 |
:103370008091CE039091CF03835F934034F088EE29 |
:1033800093E090938A07809389078091CE03909170 |
:10339000CF038A5F9340DCF014C08091CE039091FC |
:1033A000CF03855E974034F088EE93E090938A07D0 |
:1033B000809389078091CE039091CF03835F9740DC |
:1033C00034F080ED97E090938A078093890780918D |
:1033D0009107909192078A199B0990939207809385 |
:1033E00091070091910710919207C401B301A201C6 |
:1033F00091010E94A23C20E032E040E050E00E94B7 |
:10340000163D50954095309521953F4F4F4F5F4F5A |
:10341000020F131F109392070093910720912E041F |
:1034200030912F04409130045091310480919107E4 |
:1034300090919207AA2797FDA095BA2F820F931F0C |
:10344000A41FB51F80932E0490932F04A0933004E3 |
:10345000B093310440912A0450912B0460912C04C4 |
:1034600070912D04809191079091920720916604AC |
:1034700030916704821B930BAA2797FDA095BA2F62 |
:10348000840F951FA61FB71F80932A0490932B04C7 |
:10349000A0932C04B0932D0480912A0490912B04C6 |
:1034A000A0912C04B0912D04E0908703F090880344 |
:1034B0000091890310918A03E816F9060A071B0791 |
:1034C00004F580E197E2A0E0B0E08E199F09A00B1F |
:1034D000B10B80932A0490932B04A0932C04B093F7 |
:1034E0002D0480912A0490912B04A0912C04B0917A |
:1034F0002D0480932E0490932F04A0933004B09356 |
:10350000310420912A0430912B0440912C045091D5 |
:103510002D0488279927DC018E199F09A00BB10B78 |
:10352000281739074A075B0704F580EF98EDAFEFDE |
:10353000BFEFE80EF91E0A1F1B1FE0922A04F0924B |
:103540002B0400932C0410932D0480912A04909155 |
:103550002B04A0912C04B0912D0480932E04909301 |
:103560002F04A0933004B09331048091CC03909148 |
:10357000CD030F9734F488E19CEF909392078093EA |
:1035800091078091CC039091CD03079734F480E3A9 |
:1035900098EF909392078093910799819A30A9F4BC |
:1035A0008091CC039091CD03835F934034F088EEFB |
:1035B00093E090939207809391078091CC03909130 |
:1035C000CD038A5F9340DCF014C08091CC039091CE |
:1035D000CD03855E974034F088EE93E09093920798 |
:1035E000809391078091CC039091CD03835F9740A6 |
:1035F00034F080ED97E090939207809391078FEEDF |
:1036000080937A0080913A0490913B04A0913C040D |
:10361000B0913D048093260490932704A09328043E |
:10362000B093290480912A0490912B04A0912C043A |
:10363000B0912D0480930A0490930B04A0930C0482 |
:10364000B0930D048091320490913304A09134041E |
:10365000B09135048093120490931304A093140442 |
:10366000B093150480912E0490912F04A091300402 |
:10367000B091310480930E0490930F04A093100432 |
:10368000B09311048091360490913704A0913804CE |
:10369000B09139048093160490931704A0931804F2 |
:1036A000B09319048091490787FF63C02A812223C0 |
:1036B00009F05FC080916904882309F05AC08091A5 |
:1036C000910790919207893C91055CF020919107B8 |
:1036D000309192078091910790919207885C904079 |
:1036E00011C0809191079091920788539F4FA4F445 |
:1036F00020919107309192078091910790919207C4 |
:1037000088539F4F880F991F880F991F820F931F0F |
:1037100090939207809391078091890790918A07EF |
:10372000893C91055CF02091890730918A0780914E |
:10373000890790918A07885C904011C08091890721 |
:1037400090918A0788539F4FA4F420918907309164 |
:103750008A078091890790918A0788539F4F880F25 |
:10376000991F880F991F820F931F90938A07809348 |
:10377000890780914507E82FF0E0EE0FFF1FEB5E11 |
:10378000F84F8081918120914E0430914F048359EC |
:103790009F4F821793071CF02F5F3F4F0CC0808113 |
:1037A000918182599F4F821793074CF4211531055F |
:1037B00031F02150304030934F0420934E048091DB |
:1037C0004607E82FF0E0EE0FFF1FEB5EF84F808119 |
:1037D0009181209150043091510483599F4F821759 |
:1037E00093071CF02F5F3F4F0CC08081918182595D |
:1037F0009F4F821793074CF42115310531F021506A |
:103800003040309351042093500480914707E82FB3 |
:10381000F0E0EE0FFF1FEB5EF84F80819181209169 |
:1038200052043091530483599F4F821793071CF021 |
:103830002F5F3F4F0CC08081918182599F4F82172B |
:1038400093074CF42115310531F02150304030936D |
:1038500053042093520480914807E82FF0E0EE0FC4 |
:10386000FF1FEB5EF84F80819181209154043091CD |
:10387000550483599F4F821793071CF02F5F3F4FCA |
:103880000CC08081918182599F4F821793074CF41D |
:103890002115310531F021503040309355042093EB |
:1038A000540480914E0490914F0497FF05C01092EC |
:1038B0004F0410924E040AC08F3F910539F034F046 |
:1038C0008FEF90E090934F0480934E0480915004CA |
:1038D0009091510497FF05C010925104109250042A |
:1038E0000AC08F3F910539F034F08FEF90E090934C |
:1038F000510480935004809152049091530497FF97 |
:1039000005C010925304109252040AC08F3F9105D3 |
:1039100039F034F08FEF90E0909353048093520489 |
:10392000809154049091550497FF05C0109255045E |
:10393000109254040AC08F3F910539F034F08FEF94 |
:1039400090E090935504809354040F900F90CF9182 |
:10395000DF911F910F91FF90EF90DF90CF90BF907C |
:10396000AF909F908F907F906F905F904F903F901F |
:103970002F90089510927A008091CC039091CD03FE |
:1039800090939207809391078091CE039091CF03FB |
:1039900090938A07809389078091D0039091D103F7 |
:1039A0009093B1078093B0076091D4037091D503D1 |
:1039B000882777FD8095982F2CE030E040E050E09C |
:1039C0000E94A23C7093AE076093AD076091D20352 |
:1039D0007091D303882777FD8095982F0E94A23C91 |
:1039E0007093B8076093B7078091D6039091D7037F |
:1039F00090939907809398078FEE80937A00809137 |
:103A00004507E82FF0E0EE0FFF1FEB5EF84F8081D7 |
:103A1000918120914E0430914F0483599F4F82171A |
:103A200093071CF02F5F3F4F0CC08081918182591A |
:103A30009F4F821793074CF42115310531F0215027 |
:103A4000304030934F0420934E0480914607E82F76 |
:103A5000F0E0EE0FFF1FEB5EF84F80819181209127 |
:103A600050043091510483599F4F821793071CF0E3 |
:103A70002F5F3F4F0CC08081918182599F4F8217E9 |
:103A800093074CF42115310531F02150304030932B |
:103A900051042093500480914707E82FF0E0EE0F87 |
:103AA000FF1FEB5EF84F808191812091520430918D |
:103AB000530483599F4F821793071CF02F5F3F4F8A |
:103AC0000CC08081918182599F4F821793074CF4DB |
:103AD0002115310531F021503040309353042093AB |
:103AE000520480914807E82FF0E0EE0FFF1FEB5ED5 |
:103AF000F84F80819181209154043091550483596D |
:103B00009F4F821793071CF02F5F3F4F0CC080819F |
:103B1000918182599F4F821793074CF421153105EB |
:103B200031F021503040309355042093540480915B |
:103B30004E0490914F0497FF05C010924F041092CD |
:103B40004E040AC08F3F910539F034F08FEF90E0BA |
:103B500090934F0480934E048091500490915104AF |
:103B600097FF05C010925104109250040AC08F3F75 |
:103B7000910539F034F08FEF90E0909351048093E9 |
:103B80005004809152049091530497FF05C0109205 |
:103B90005304109252040AC08F3F910539F034F05B |
:103BA0008FEF90E0909353048093520480915404DB |
:103BB0009091550497FF05C010925504109254043B |
:103BC0000AC08F3F910539F034F08FEF90E0909369 |
:103BD00055048093540460916C0770E080E090E09D |
:103BE00024EC39E040E050E00E94A23C609387035F |
:103BF000709388038093890390938A0360938B0367 |
:103C000070938C0380938D0390938E03089580911D |
:103C10004C078B3F98F08B3F19F480914E040EC0F7 |
:103C20008C3F19F48091500409C08D3F19F48091A4 |
:103C3000520404C08E3F21F4809154048093940375 |
:103C400080919403882319F41092940304C08F3F49 |
:103C500011F48093940380914B078B3F98F08B3F36 |
:103C600019F480914E040EC08C3F19F480915004D9 |
:103C700009C08D3F19F48091520404C08E3F21F495 |
:103C8000809154048093930380919303882319F4C3 |
:103C90001092930305C0843618F084E68093930352 |
:103CA00080914D078B3F98F08B3F19F480914E0423 |
:103CB0000EC08C3F19F48091500409C08D3F19F457 |
:103CC0008091520404C08E3F21F48091540480936B |
:103CD000950380919503882319F41092950305C0EC |
:103CE000843618F084E68093950380914F078B3FCC |
:103CF00098F08B3F19F480914E040EC08C3F19F45C |
:103D00008091500409C08D3F19F48091520404C081 |
:103D10008E3F21F480915404809396038091960302 |
:103D2000882319F41092960304C08F3F11F48093F6 |
:103D30009603809156078B3F98F08B3F19F4809142 |
:103D40004E040EC08C3F19F48091500409C08D3F81 |
:103D500019F48091520404C08E3F21F480915404E0 |
:103D60008093970380919703882319F41092970307 |
:103D700004C08F3F11F480939703809157078B3FC6 |
:103D800098F08B3F19F480914E040EC08C3F19F4CB |
:103D90008091500409C08D3F19F48091520404C0F1 |
:103DA0008E3F21F48091540480939803809198036E |
:103DB0008B3010F48AE002C08F3F11F48093980397 |
:103DC000809158078B3F98F08B3F19F480914E04F7 |
:103DD0000EC08C3F19F48091500409C08D3F19F436 |
:103DE0008091520404C08E3F21F48091540480934A |
:103DF000990380919903882319F41092990304C0C0 |
:103E00008F3F11F48093990380915D078B3F98F069 |
:103E10008B3F19F480914E040EC08C3F19F48091B1 |
:103E2000500409C08D3F19F48091520404C08E3FA4 |
:103E300021F48091540480939B0380919B038823F9 |
:103E400019F410929B0304C08F3F11F480939B03DD |
:103E500080915E078B3F98F08B3F19F480914E0460 |
:103E60000EC08C3F19F48091500409C08D3F19F4A5 |
:103E70008091520404C08E3F21F4809154048093B9 |
:103E80006E0480916E04882319F410926E0404C0AD |
:103E90008F3F11F480936E0480915F078B3F98F001 |
:103EA0008B3F19F480914E040EC08C3F19F4809121 |
:103EB000500409C08D3F19F48091520404C08E3F14 |
:103EC00021F48091540480936F0480916F048823BF |
:103ED00019F410926F0404C08F3F11F480936F04A3 |
:103EE000809160078B3F98F08B3F19F480914E04CE |
:103EF0000EC08C3F19F48091500409C08D3F19F415 |
:103F00008091520404C08E3F21F480915404809328 |
:103F1000700480917004882319F41092700404C016 |
:103F20008F3F11F480937004809161078B3F98F06C |
:103F30008B3F19F480914E040EC08C3F19F4809190 |
:103F4000500409C08D3F19F48091520404C08E3F83 |
:103F500021F480915404809371048091710488232A |
:103F600019F41092710404C08F3F11F4809371040E |
:103F7000809171078B3F98F08B3F19F480914E042C |
:103F80000EC08C3F19F48091500409C08D3F19F484 |
:103F90008091520404C08E3F21F480915404809398 |
:103FA000720480917204882319F41092720404C080 |
:103FB0008F3F11F480937204809172078B3F98F0C9 |
:103FC0008B3F19F480914E040EC08C3F19F4809100 |
:103FD000500409C08D3F19F48091520404C08E3FF3 |
:103FE00021F4809154048093730480917304882396 |
:103FF00019F41092730404C08F3F11F4809373047A |
:10400000809173078B3F98F08B3F19F480914E0499 |
:104010000EC08C3F19F48091500409C08D3F19F4F3 |
:104020008091520404C08E3F21F480915404809307 |
:10403000740480917404882319F41092740404C0E9 |
:104040008F3F11F480937404809174078B3F98F034 |
:104050008B3F19F480914E040EC08C3F19F480916F |
:10406000500409C08D3F19F48091520404C08E3F62 |
:1040700021F4809154048093750480917504882301 |
:1040800019F41092750404C08F3F11F480937504E5 |
:10409000809162078B3F98F08B3F19F480914E041A |
:1040A0000EC08C3F19F48091500409C08D3F19F463 |
:1040B0008091520404C08E3F21F480915404809377 |
:1040C0009C0380919C03882319F410929C0304C0E4 |
:1040D0008F3F11F480939C03809167078B3F98F08A |
:1040E0008B3F19F480914E040EC08C3F19F48091DF |
:1040F000500409C08D3F19F48091520404C08E3FD2 |
:1041000021F48091540480939D0380919D03882322 |
:1041100019F410929D0304C08F3F11F480939D0306 |
:1041200080916A078B3F98F08B3F19F480914E0481 |
:104130000EC08C3F19F48091500409C08D3F19F4D2 |
:104140008091520404C08E3F21F4809154048093E6 |
:10415000760480917604882319F41092760404C0C2 |
:104160008F3F11F48093760480916B078B3F98F01A |
:104170008B3F19F480914E040EC08C3F19F480914E |
:10418000500409C08D3F19F48091520404C08E3F41 |
:1041900021F48091540480937704809177048823DC |
:1041A00019F41092770404C08F3F11F480937704C0 |
:1041B000809170078B3F98F08B3F19F480914E04EB |
:1041C0000EC08C3F19F48091500409C08D3F19F442 |
:1041D0008091520404C08E3F21F480915404809356 |
:1041E0009E0380919E03882319F410929E0304C0BD |
:1041F0008F3F11F480939E0360919B0370E080E0F9 |
:1042000090E00E94893B27E137EB41ED58E30E94A3 |
:104210003F3C60938F03709390038093910390933E |
:104220009203809154078093AF0780915307809346 |
:104230009307089580915F04882301F510929007F9 |
:1042400010928B071092A8071092AA078091B003D2 |
:10425000882311F080938B078091B103882311F09C |
:10426000809390078091B203882311F08093AA076E |
:104270008091B303882311F08093A80780918B0766 |
:10428000E1EDF6E08093D1061092D206809190077E |
:104290008093D30613828091AA078093D506158256 |
:1042A0008091A8078093D70617821092EF0310928F |
:1042B000F0030E941E15089510920104109200044C |
:1042C000109203041092020480E090E0A0E0B0E0BD |
:1042D0008093040490930504A0930604B09307040C |
:1042E0001092F7031092F6031092F9031092F8035C |
:1042F0001092FB031092FA03109276041092770446 |
:104300000E94BA1C84E690E00E94B80C0E94BA1C7D |
:104310008091490780FF10C080910E0390910F0398 |
:10432000875B934038F480910E0390910F038E5E6B |
:10433000924010F40E9412108091CC039091CD0312 |
:104340009093F7038093F6038091CE039091CF036F |
:104350009093F9038093F8038091D0039091D10357 |
:104360009093FB038093FA038091F8039091F903F3 |
:104370009093FD038093FC038091F6039091F703E3 |
:104380009093FF038093FE03F999FECF24E030E081 |
:1043900032BD21BDF89A80B5853038F18091B707DC |
:1043A0009091B80797FF03C0909581959F4F6CE05F |
:1043B00070E00E94E13C70930304609302048091DA |
:1043C000AD079091AE0797FF03C0909581959F4FE1 |
:1043D0006CE070E00E94E13C709301046093000483 |
:1043E0006091FD067091FE0642C0F999FECF32BD84 |
:1043F00021BDF89A30B5F999FECF85E090E092BDE5 |
:1044000081BDF89A20B5932F80E0820F911D909383 |
:10441000010480930004F999FECF86E090E092BDFC |
:1044200081BDF89A30B5F999FECF87E090E092BD52 |
:1044300081BDF89A20B5932F80E0820F911D909353 |
:10444000030480930204F999FECF88E090E092BDC6 |
:1044500081BDF89A30B5F999FECF89E090E092BD20 |
:1044600081BDF89A20B5732F60E0620F711D882717 |
:1044700077FD8095982F0E948B3B60930404709386 |
:104480000504809306049093070410922A04109266 |
:104490002B0410922C0410922D0410922E041092D2 |
:1044A0002F041092300410923104109232041092B2 |
:1044B0003304109234041092350410923604109292 |
:1044C0003704109238041092390410923A04109272 |
:1044D0003B0410923C0410923D04109292071092FB |
:1044E000910710928A07109289071092B1071092D3 |
:1044F000B00780910A0390910B03A0910C03B09137 |
:104500000D03909300078093FF061092DF03109233 |
:10451000DE0310924204109243041092440410925D |
:1045200045048091460490914704909349048093F8 |
:1045300048040E94183A82E390E09093C603809367 |
:10454000C50360916C0770E080E090E024EC39E0F6 |
:1045500040E050E00E94A23C609387037093880380 |
:104560008093890390938A0360916D0770E080E0E7 |
:1045700090E00E94A23C60938B0370938C03809325 |
:104580008D0390938E031092A00310929F030895C1 |
:104590001F93CF93DF93182FC4E6D0E00DC01150C6 |
:1045A00080915F04882351F4D093C603C093C50360 |
:1045B0008AEF90E00E94A20C112389F7DF91CF913E |
:1045C0001F9108952F923F924F925F926F927F9228 |
:1045D0008F929F92AF92BF92CF92DF92EF92FF9213 |
:1045E0000F931F93DF93CF93CDB7DEB728970FB606 |
:1045F000F894DEBF0FBECDBF0E94D816299A8091D5 |
:104600005D0490915E049C013A83298337FF02C0C8 |
:104610001A82198280915604843608F046C080912F |
:10462000A3049091A404009731F001979093A404FF |
:104630008093A30404C010925F0410924C048091F4 |
:1046400000018A3011F4289A01C0289880919E04B4 |
:1046500090919F04815D974028F180915A07482FDF |
:1046600050E05A83498381E080934C04E0914107F4 |
:10467000F0E0EE0FFF1FEB5EF84F11821082E09129 |
:104680004207F0E0EE0FFF1FEB5EF84F1182108241 |
:10469000E0914407F0E0EE0FFF1FEB5EF84F118250 |
:1046A0001082AEC210925F04ABC2809156048D3866 |
:1046B00008F4A6C210924C0480915B0722E3829F0B |
:1046C000C00111249093A4048093A30469817A818A |
:1046D000693271056CF080919E0490919F047FEF88 |
:1046E0008F3F970729F0019690939F0480939E0433 |
:1046F00080919E0490919F04883C910520F08981CF |
:104700009A81889704F51092BD041092BE0410920D |
:10471000BF041092C0041092B9041092BA0410920F |
:10472000BB041092BC0410923A0410923B04109205 |
:104730003C0410923D0410923E0410923F041092EB |
:10474000400410924104E0914307F0E0EE0FFF1F98 |
:10475000EB5EF84F80819181813591050CF49CC10D |
:1047600080915F04882309F097C180914407E82F66 |
:10477000F0E0EE0FFF1FEB5EF84F808191818C34EB |
:1047800091050CF4C8C08091A2048F5F8093A204AD |
:10479000893C08F481C1299810925F041092A20408 |
:1047A00010929F0410929E0480914107482F50E080 |
:1047B000FA01EE0FFF1FEB5EF84F80819181873485 |
:1047C00091059CF4E0914207F0E0EE0FFF1FEB5ED5 |
:1047D000F84F0190F081E02DF7FF03C0F095E195CF |
:1047E000FF4FE734F1050CF478C080914207A82F01 |
:1047F000B0E0FD01EE0FFF1FEB5EF84F808191816D |
:104800008734910544F0FA01EE0FFF1FEB5EF84F7D |
:104810000190F081E02DFD01EE0FFF1FEB5EF84FE0 |
:10482000808191818734910564F0FA01EE0FFF1FBA |
:10483000EB5EF84F808191818734910514F022E07E |
:1048400001C021E0FD01EE0FFF1FEB5EF84F8081FC |
:104850009181863491055CF4FA01EE0FFF1FEB5E47 |
:10486000F84F80819181873491050CF023E0FD01A0 |
:10487000EE0FFF1FEB5EF84F808191818A5B9F4FA7 |
:104880005CF4FA01EE0FFF1FEB5EF84F808191811F |
:10489000873491050CF024E0AA0FBB1FAB5EB84F24 |
:1048A0008D919C918A5B9F4F5CF4440F551F4B5E2A |
:1048B000584FDA018D919C91863491050CF425E0D6 |
:1048C000F999FECF1FBA82E090E092BD81BD20BD74 |
:1048D0000FB6F894FA9AF99A0FBE8091490780FFB3 |
:1048E00010C080910E0390910F03875B934038F4C2 |
:1048F00080910E0390910F038E5E924010F40E94FF |
:1049000012100E946D0247E461E477E00E94A20267 |
:104910000E945C21BAC080819181855B9F4F0CF021 |
:10492000B9C08091A2048F5F8093A204893C08F4EF |
:10493000B3C02998F999FECF1FBA04E010E012BD68 |
:1049400001BD8FEF80BD0FB6F894FA9AF99A0FBEA9 |
:1049500010925F041092A20410929F0410929E0481 |
:104960000E945C218091000490910104F999FECF8E |
:104970001FBA12BD01BD60E071E00E94E13C60BD64 |
:104980000FB6F894FA9AF99A0FBE2091000430916C |
:104990000104F999FECF1FBA85E090E092BD81BD78 |
:1049A000C90160E071E00E94E13C80BD0FB6F8945F |
:1049B000FA9AF99A0FBE2091020430910304F999F2 |
:1049C000FECF1FBA86E090E092BD81BDC90160E0D4 |
:1049D00071E00E94E13C60BD0FB6F894FA9AF99A32 |
:1049E0000FBE2091020430910304F999FECF1FBA43 |
:1049F00087E090E092BD81BDC90160E071E00E9456 |
:104A0000E13C80BD0FB6F894FA9AF99A0FBE209156 |
:104A10000404309105044091060450910704F9996B |
:104A2000FECF1FBA88E090E092BD81BDCA01B901F6 |
:104A30000E94583BDC01CB0160E071E00E94E13C48 |
:104A400060BD0FB6F894FA9AF99A0FBE209104044B |
:104A5000309105044091060450910704F999FECF66 |
:104A60001FBA89E090E092BD81BDCA01B9010E94E0 |
:104A7000583BDC01CB0160E071E00E94E13C80BD6D |
:104A80000FB6F894FA9AF99A0FBE0E946D020E942E |
:104A9000C82202C01092A204E0914307F0E0EE0F9A |
:104AA000FF1FEB5EF84F808191818B5A9F4F0CF076 |
:104AB000A7C0E0914407F0E0EE0FFF1FEB5EF84F58 |
:104AC00080819181855B9F4F0CF07AC0E09148070F |
:104AD000F0E0EE0FFF1FEB5EF84F80819181893788 |
:104AE00091050CF46DC08091A1048F5F8093A104A7 |
:104AF000893C08F467C088EC8093A10481E090E0D1 |
:104B000090939F0480939E0481E080935F041092B1 |
:104B1000B5041092B6041092B7041092B804109223 |
:104B20003A0410923B0410923C0410923D041092FF |
:104B30003E0410923F0410924004109241041092DF |
:104B40002A0410922B0410922C0410922D0410921F |
:104B50003204109233041092340410923504809180 |
:104B60000A0490910B04A0910C04B0910D04809361 |
:104B70002E0490932F04A0933004B09331048091BD |
:104B8000120490911304A0911404B0911504809321 |
:104B9000360490933704A0933804B09339041092EC |
:104BA000BD041092BE041092BF041092C004109273 |
:104BB000B9041092BA041092BB041092BC0402C053 |
:104BC0001092A104E0914807F0E0EE0FFF1FEB5EAA |
:104BD000F84F8081918144978CF48091A0048F5F7D |
:104BE0008093A004853660F010925F0484E6809381 |
:104BF000A00410929F0410929E0402C01092A00480 |
:104C000080916B03815080936B038F5F29F08091BB |
:104C10004C04882309F490C30E94071E8091410729 |
:104C2000882E9924F401EE0FFF1FB5E1CB2EB7E0DB |
:104C3000DB2ECE0EDF1ED6018D919C91E0905007A9 |
:104C4000FF249C012E9DC0012F9D900D3E9D900D37 |
:104C5000112440915704509158049A01220F331F98 |
:104C6000240F351F820F931F64E070E00E94E13C27 |
:104C7000CB017093580460935704E55DF84F208191 |
:104C800031810091510710E0A901409F9001419F9F |
:104C9000300D509F300D1124820F931F90935804B4 |
:104CA0008093570420914207A22EBB24AA0CBB1C60 |
:104CB000F501EB5EF84F80819181BC016E9DC001D2 |
:104CC0006F9D900D7E9D900D11244091590450913F |
:104CD0005A049A01220F331F240F351F820F931F8E |
:104CE00064E070E00E94E13CCB0170935A04609351 |
:104CF0005904ABE2B7E0AA0EBB1EF5012081318159 |
:104D0000A901409F9001419F300D509F300D11240B |
:104D1000820F931F90935A0480935904E0914407A3 |
:104D2000F0E0EE0FFF1FEB5EF84F808191819095D0 |
:104D300081959F4F90935C0480935B04E0914307BF |
:104D4000F0E0EE0FFF1FEB5EF84F808191818858F5 |
:104D50009F4F90935E0480935D04D6018D919C914A |
:104D600020917E0430917F0497FF03C09095819538 |
:104D70009F4F28173907C4F4880C991CE5E1F7E028 |
:104D80008E0E9F1ED401ED91FC91F0937F04E09371 |
:104D90007E04F7FF0FC0882799278E1B9F0B9093E7 |
:104DA0007F0480937E0406C02150304030937F04FE |
:104DB00020937E0480914207A82FB0E0FD01EE0F02 |
:104DC000FF1FEB5EF84F808191812091800430912C |
:104DD000810497FF03C0909581959F4F281739074D |
:104DE000ACF4AA0FBB1FAB5EB84FED91FC91F093F2 |
:104DF0008104E0938004F7FF0FC0882799278E1B5A |
:104E00009F0B909381048093800406C02150304012 |
:104E1000309381042093800480914C04882341F0D6 |
:104E200010927F0410927E041092810410928004EC |
:104E30006091980370E080E090E00E94893B20E060 |
:104E400030E040E251E40E94883A20E030E040E85F |
:104E50005BE30E943F3C6093B2077093B30780937B |
:104E6000B4079093B5076091990370E080E090E0FB |
:104E70000E94893B20E030EE4BE257E40E94F03A7A |
:104E80006093A4077093A5078093A6079093A70744 |
:104E90008091B503882331F08AE090E09093C603B7 |
:104EA0008093C5038091B50382FF09C080916E0491 |
:104EB000482F50E0440F551F440F551F10C083FD6D |
:104EC00003C040E050E00BC080916E0490E0880F7A |
:104ED000991F880F991F44275527481B590B20916C |
:104EE000780430917904C901F3E0880F991FFA958D |
:104EF000E1F7821B930B840F951F68E070E00E941E |
:104F0000E13C70937904609378048091B50384FF49 |
:104F100009C080916E04482F50E0440F551F440F84 |
:104F2000551F10C085FD03C040E050E00BC08091CC |
:104F30006E0490E0880F991F880F991F442755270A |
:104F4000481B590B20917A0430917B04C90163E01E |
:104F5000880F991F6A95E1F7821B930B840F951FA9 |
:104F600068E070E00E94E13C70937B0460937A04F7 |
:104F70008091B40383FF03C082E390E004C082FF0A |
:104F800007C08EEC9FEF90937D0480937C0404C057 |
:104F900010927D0410927C048091B40381FF09C0BB |
:104FA00080919F039091A00301969093A00380931A |
:104FB0009F038091B40384FF09C080919F03909167 |
:104FC000A00301979093A00380939F03809178049E |
:104FD0009091790468E070E00E94E13CE091570410 |
:104FE000F0915804E60FF71FF0935804E09357042C |
:104FF00080917A0490917B0468E070E00E94E13C2B |
:105000004091590450915A04460F571F50935A0427 |
:105010004093590460915B0470915C0480917C041E |
:1050200090917D04680F791F70935C0460935B041A |
:105030008091200680FF5CC080916E04813808F466 |
:1050400057C02091500730E080911906992787FDBD |
:105050009095DC012A9FC0012B9F900D3A9F900DE7 |
:105060001124E80FF91FF0935804E093570480913E |
:105070001A06992787FD9095FC012E9FC0012F9F4E |
:10508000900D3E9F900D1124480F591F50935A04C4 |
:105090004093590480911B06992787FD9095680FCE |
:1050A000791F70935C0460935B0420914E0730E09D |
:1050B00080911D06992787FD9095AC01249FC00122 |
:1050C000259F900D349F900D11249093A003809301 |
:1050D0009F0380911C06282F30E080915D04909101 |
:1050E0005E042817390724F430935E0420935D048E |
:1050F0008091490782FF0CC080E090E0A0E0B0E022 |
:105100008093A4079093A507A093A607B093A70741 |
:1051100020E030E040E050E06091B2077091B307CA |
:105120008091B4079091B5070E94EC3A882364F40B |
:1051300080E090E0A0E0B0E08093B2079093B307E6 |
:10514000A093B407B093B50720E030E040E050E012 |
:105150006091A4077091A5078091A6079091A70779 |
:105160000E94EC3A882364F480E090E0A0E0B0E094 |
:105170008093A4079093A507A093A607B093A707D1 |
:1051800080914207A82FB0E0FD01EE0FFF1FEB5EFC |
:10519000F84F2081318180916807482F50E04217F5 |
:1051A000530744F48091750782FF04C081E0809327 |
:1051B0006A040FC0AA0FBB1FAB5EB84F2D913C9184 |
:1051C00080916907481B51092417350714F4109280 |
:1051D0006A0480914207A82FB0E0FD01EE0FFF1F87 |
:1051E000EB5EF84F2081318180916807482F50E0B5 |
:1051F00088279927841B950B2817390744F4809139 |
:10520000750783FF04C081E080936B0414C0809114 |
:105210006B04882381F0AA0FBB1FAB5EB84F2D91A2 |
:105220003C918091690790E0841B950B821793074E |
:1052300014F410926B0480914107A82FB0E0FD0197 |
:10524000EE0FFF1FEB5EF84F2081318180916807E0 |
:10525000482F50E04217530744F48091750780FFB0 |
:1052600004C081E080936D0413C080916D04882395 |
:1052700079F0AA0FBB1FAB5EB84F2D913C91809186 |
:105280006907481B51092417350714F410926D045F |
:1052900080914107A82FB0E0FD01EE0FFF1FEB5EEC |
:1052A000F84F2081318180916807482F50E088278E |
:1052B0009927841B950B2817390744F480917507AB |
:1052C00081FF04C081E080936C0414C080916C0461 |
:1052D000882381F0AA0FBB1FAB5EB84F2D913C9184 |
:1052E0008091690790E0841B950B8217930714F453 |
:1052F00010926C0480916A04882321F480916B04DD |
:10530000882321F081E08093690402C0109269042F |
:1053100080916D04882321F480916C04882351F0DE |
:1053200081E0809368041092690410926A041092DC |
:105330006B0402C01092680480916904882331F0E4 |
:1053400084E690E09093C6038093C503809169043E |
:10535000882321F480916804882351F080916707A5 |
:1053600090E069817A818617970714F49A8389837C |
:1053700080914C04882341F110925C0410925B04EC |
:10538000109258041092570410925A041092590423 |
:105390008DEC9CECACECBDE38093B2079093B3072B |
:1053A000A093B407B093B5078AE097EDA3EABBE3F7 |
:1053B0008093A4079093A507A093A607B093A7078F |
:1053C000109269041092680420919C0730919D0707 |
:1053D00040919E0750919F0780910A0490910B0481 |
:1053E000A0910C04B0910D04820F931FA41FB51F50 |
:1053F00080939C0790939D07A0939E07B0939F076F |
:105400002091A0073091A1074091A2075091A307D6 |
:105410008091120490911304A0911404B09115048A |
:10542000820F931FA41FB51F8093A0079093A1071D |
:10543000A093A207B093A3072091940730919507FA |
:10544000409196075091970780910E0490910F0418 |
:10545000A0911004B0911104820F931FA41FB51FD7 |
:105460008093940790939507A0939607B09397071E |
:1054700020918C0730918D0740918E0750918F07B6 |
:105480008091160490911704A0911804B09119040A |
:10549000820F931FA41FB51F80938C0790938D07D5 |
:1054A000A0938E07B0938F0780916804882329F416 |
:1054B00080916904882309F45CC010921A04109248 |
:1054C0001B0410921C0410921D0410921E041092D2 |
:1054D0001F04109220041092210410929C07109235 |
:1054E0009D0710929E0710929F071092A00710929E |
:1054F000A1071092A2071092A3071092940710928E |
:105500009507109296071092970710928C071092A9 |
:105510008D0710928E0710928F0780912A04909128 |
:105520002B04A0912C04B0912D0480932E04909311 |
:105530002F04A0933004B0933104809132049091F1 |
:105540003304A0913404B0913504809336049093D1 |
:105550003704A0933804B09339041092E1031092F9 |
:10556000E003109267041092660410926504109292 |
:10557000640480916804882309F015C1809169044E |
:10558000882309F010C160910A0470910B04809186 |
:105590000C0490910D04A0905507BB24CC24DD246D |
:1055A000E090AD07F090AE07A60195010E94163D70 |
:1055B00039014A010027F7FC0095102F6E187F086B |
:1055C000800A910A6091120470911304809114046E |
:1055D00090911504E090B707F090B807A6019501E7 |
:1055E0000E94163D59016A010027F7FC0095102F13 |
:1055F000AE18BF08C00AD10AC401B30120E130E0EF |
:1056000040E050E00E94163D522E432E342E252EAF |
:10561000822F932FA42FB52F3C014D01C601B50158 |
:1056200020E130E040E050E00E94163DC22EA32E63 |
:10563000D42EB52E822F932FA42FB52F7C018D0150 |
:1056400080917E0490917F04409734F4809180048F |
:10565000909181044097E4F0652D742D832D922D57 |
:1056600023E030E040E050E00E94163DC901DA013D |
:105670003C014D016C2D7A2D8D2D9B2D23E030E0CA |
:1056800040E050E00E94163DC901DA017C018D0125 |
:10569000E0914407F0E0EE0FFF1FEB5EF84F019042 |
:1056A000F081E02DF7FF03C0F095E195FF4F7A9769 |
:1056B000C4F0C401B30123E030E040E050E00E94B8 |
:1056C000163DC901DA013C014D01C801B70123E0D3 |
:1056D00030E040E050E00E94163DC901DA017C0153 |
:1056E0008D0171E2671671048104910434F020E2A7 |
:1056F000622E712C812C912C11C080EE68168FEFD8 |
:1057000078068FEF88068FEF980644F490EE692EA6 |
:105710009FEF792E9FEF892E9FEF992E91E2E91648 |
:10572000F1040105110534F080E2E82EF12C012D81 |
:10573000112D11C0A0EEEA16AFEFFA06AFEF0A077F |
:10574000AFEF1A0744F400EEE02E0FEFF02E0FEF4C |
:10575000002F0FEF102F80912A0490912B04A0911D |
:105760002C04B0912D0486199709A809B9098093D2 |
:105770002A0490932B04A0932C04B0932D048091C1 |
:10578000320490913304A0913404B09135048E1901 |
:105790009F09A00BB10B8093320490933304A09324 |
:1057A0003404B09335048091E0039091E1038F3F7E |
:1057B000910509F008F485C580916804882309F0F3 |
:1057C00004C580916904882309F0FFC460919C0797 |
:1057D00070919D0780919E0790919F0720E031E096 |
:1057E00040E050E00E94163DC901DA0180939C0719 |
:1057F00090939D07A0939E07B0939F076091A00789 |
:105800007091A1078091A2079091A30720E031E059 |
:1058100040E050E00E94163DC901DA018093A007E4 |
:105820009093A107A093A207B093A30720911A0415 |
:1058300030911B0440911C0450911D04E0905507C9 |
:10584000FF2400E010E0C801B7010E94A23C20E064 |
:1058500031E040E050E00E94163DC901DA0180933A |
:105860001A0490931B04A0931C04B0931D04209170 |
:105870001E0430911F044091200450912104C8015E |
:10588000B7010E94A23C20E031E040E050E00E94DD |
:10589000163DC901DA0180931E0490931F04A09362 |
:1058A0002004B0932104609122047091230480911C |
:1058B00024049091250420E031E040E050E00E9473 |
:1058C000163DC901DA018093220490932304A0932A |
:1058D0002404B093250460919C0770919D078091EA |
:1058E0009E0790919F0720911A0430911B044091CC |
:1058F0001C0450911D04621B730B840B950B609369 |
:10590000A9047093AA048093AB049093AC04E09034 |
:105910006E07FF2400E010E0A80197010E94163DE9 |
:1059200059016A0120939604309397044093980498 |
:10593000509399046091A0077091A1078091A207EC |
:105940009091A30720911E0430911F0440912004E0 |
:1059500050912104621B730B840B950B6093A5047B |
:105960007093A6048093A7049093A804A8019701BC |
:105970000E94163D79018A0120939204309393048A |
:105980004093940450939504C601B50120E031E0A2 |
:1059900040E050E00E94163D309367042093660477 |
:1059A000C801B70120E031E040E050E00E94163D20 |
:1059B000309365042093640480917E0490917F0469 |
:1059C0004097BCF4809180049091810440978CF4BE |
:1059D000E0914407F0E0EE0FFF1FEB5EF84F0190FF |
:1059E000F081E02DF7FF03C0F095E195FF4F7A9726 |
:1059F0008CF0809166049091670462E070E00E94F0 |
:105A0000E13CCB0162E070E00E94E13C70936704EE |
:105A10006093660460919407709195078091960752 |
:105A20009091970720E031E040E050E00E94163D61 |
:105A3000C901DA018093940790939507A093960784 |
:105A4000B093970760918C0770918D0780918E07B6 |
:105A500090918F0720E031E040E050E00E94163D39 |
:105A6000C901DA0180938C0790938D07A0938E076C |
:105A7000B0938F07E0900E04F0900F040091100493 |
:105A80001091110480910A0490910B04A0910C04D0 |
:105A9000B0910D04E81AF90A0A0B1B0BE092B1044D |
:105AA000F092B2040093B3041093B404209116044E |
:105AB00030911704409118045091190480911204F8 |
:105AC00090911304A0911404B0911504281B390B74 |
:105AD0004A0B5B0B2093AD043093AE044093AF04AC |
:105AE0005093B004E092A904F092AA040093AB048E |
:105AF0001093AC042093A5043093A6044093A7040C |
:105B00005093A80480912E0490912F04A09130040A |
:105B1000B09131048E199F09A00BB10B80932E0414 |
:105B200090932F04A0933004B093310480913604F5 |
:105B300090913704A0913804B0913904821B930BE3 |
:105B4000A40BB50B8093360490933704A0933804CC |
:105B5000B093390460911A0470911B0480911C0465 |
:105B600090911D042AE130E040E050E00E94163D93 |
:105B70003093DC062093DB0660911E0470911F04B5 |
:105B800080912004909121042AE130E040E050E02F |
:105B90000E94163D3093DE062093DD068091A90415 |
:105BA0009091AA049093E0068093DF068091A5046B |
:105BB0009091A6049093E2068093E10660919C0781 |
:105BC00070919D0780919E0790919F072AE130E098 |
:105BD00040E050E00E94163D3093E4062093E30637 |
:105BE0006091A0077091A1078091A2079091A307EF |
:105BF0002AE130E040E050E00E94163D3093E60696 |
:105C00002093E50680919204909193049093F4067A |
:105C10008093F30680916404909165049C01B3E045 |
:105C2000220F331FBA95E1F7880F991F280F391FEC |
:105C30003093F6062093F50681E090E0909391046E |
:105C40008093900480919C0790919D07A0919E075E |
:105C5000B0919F07209188043091890440918A0473 |
:105C600050918B04281B390B4A0B5B0B57FF07C065 |
:105C700050954095309521953F4F4F4F5F4F2052A3 |
:105C80003E44404050400CF0D7C02091A9043091D0 |
:105C9000AA044091AB045091AC042130E0E13E07EE |
:105CA000E0E04E07E0E05E070CF453C080918F0403 |
:105CB000882309F44AC0DA01C901FCE0B595A7952B |
:105CC00097958795FA95D1F70196909391048093D3 |
:105CD0009004CA01B90128E030E040E050E00E94A1 |
:105CE000163DC901DA018093960490939704A0931E |
:105CF0009804B093990489589341A040B04064F04F |
:105D000088E893E1A0E0B0E0809396049093970434 |
:105D1000A0939804B09399046091960470919704AD |
:105D2000809198049091990420E031E040E050E0A7 |
:105D30000E94163D8091660490916704820F931F24 |
:105D4000909367048093660406C081E080938F047B |
:105D500002C010928F044091A9045091AA0460914E |
:105D6000AB047091AC04403020EF52072FEF620774 |
:105D70002FEF72070CF05DC080918E04882309F428 |
:105D800054C088279927DC01841B950BA60BB70B01 |
:105D9000ECE0B595A79597958795EA95D1F7209171 |
:105DA000900430919104280F391F3093910420936F |
:105DB0009004CB01BA0128E030E040E050E00E94BE |
:105DC000163DC901DA018093960490939704A0933D |
:105DD0009804B093990488579C4EAF4FBF4F64F41A |
:105DE00088E79CEEAFEFBFEF809396049093970403 |
:105DF000A0939804B09399046091960470919704CD |
:105E0000809198049091990420E031E040E050E0C6 |
:105E10000E94163D8091660490916704820F931F43 |
:105E200090936704809366040BC081E080938E0496 |
:105E300007C010928E0404C0109291041092900436 |
:105E400080916F07282F30E0809190049091910409 |
:105E50002817390724F430939104209390048091FB |
:105E6000A9049091AA04A091AB04B091AC04815014 |
:105E70009440A040B04074F08091F6039091F703F5 |
:105E80002091900430919104820F931F9093F70317 |
:105E90008093F6038091A9049091AA04A091AB0489 |
:105EA000B091AC0480509C4FAF4FBF4F74F48091C1 |
:105EB000F6039091F7032091900430919104821B96 |
:105EC000930B9093F7038093F60381E090E0909317 |
:105ED0009104809390041092920410929304109273 |
:105EE0009404109295048091A0079091A107A0912D |
:105EF000A207B091A30720918404309185044091BA |
:105F0000860450918704281B390B4A0B5B0B57FF03 |
:105F100007C050954095309521953F4F4F4F5F4FAB |
:105F200020523E44404050400CF0DDC0E090A504BB |
:105F3000F090A6040091A7041091A80471E0E71660 |
:105F400070E1F70670E0070770E017070CF458C01F |
:105F500080918D04882309F44FC0A80197016CE05B |
:105F600055954795379527956A95D1F78091900477 |
:105F700090919104820F931F9093910480939004C9 |
:105F8000C801B70128E030E040E050E00E94163D33 |
:105F9000C901DA018093920490939304A09394042E |
:105FA000B093950489589341A040B04064F088E8CC |
:105FB00093E1A0E0B0E08093920490939304A093C7 |
:105FC0009404B0939504609192047091930480912D |
:105FD00094049091950420E031E040E050E00E946C |
:105FE000163D8091640490916504820F931F9093F5 |
:105FF00065048093640406C081E080938D0402C030 |
:1060000010928D044091A5045091A6046091A704BC |
:106010007091A8044030F0EF5F07FFEF6F07FFEFCC |
:106020007F070CF05DC080918C04882309F454C074 |
:1060300088279927DC01841B950BA60BB70B2CE056 |
:10604000B595A795979587952A95D1F720919004B6 |
:1060500030919104280F391F3093910420939004BC |
:10606000CB01BA0128E030E040E050E00E94163D4C |
:10607000C901DA018093920490939304A09394044D |
:10608000B093950488579C4EAF4FBF4F64F488E798 |
:106090009CEEAFEFBFEF8093920490939304A09394 |
:1060A0009404B0939504609192047091930480914C |
:1060B00094049091950420E031E040E050E00E948B |
:1060C000163D8091640490916504820F931F909314 |
:1060D0006504809364040BC081E080938C0407C046 |
:1060E00010928C0404C0109291041092900480913C |
:1060F0006F07282F30E08091900490919104281729 |
:10610000390724F430939104209390048091A504DE |
:106110009091A604A091A704B091A8048150944046 |
:10612000A040B04074F08091F8039091F903209161 |
:10613000900430919104820F931F9093F903809300 |
:10614000F8038091A5049091A604A091A704B091B2 |
:10615000A80480509C4FAF4FBF4F74F48091F80358 |
:106160009091F9032091900430919104821B930B3C |
:106170009093F9038093F803809192049091930493 |
:106180009093F0068093EF068091F6039091F703C9 |
:106190009093E8068093E7068091F8039091F903C5 |
:1061A0002091FC033091FD03821B930B9C0103E0C3 |
:1061B000220F331F0A95E1F7880F991F280F391F07 |
:1061C0003093EA062093E90608C010926504109205 |
:1061D0006404109267041092660420E030E040E00E |
:1061E00050E06091A4077091A5078091A607909157 |
:1061F000A7070E94EC3A882341F41092650410929C |
:106200006404109267041092660480919C07909138 |
:106210009D07A0919E07B0919F078093880490935B |
:106220008904A0938A04B0938B048091A007909175 |
:10623000A107A091A207B091A30780938404909333 |
:106240008504A0938604B093870410921A041092D8 |
:106250001B0410921C0410921D0410921E04109234 |
:106260001F04109220041092210410922204109214 |
:106270002304109224041092250410929C0710927B |
:106280009D0710929E0710929F071092A0071092F0 |
:10629000A1071092A2071092A307109294071092E0 |
:1062A0009507109296071092970710928C071092FC |
:1062B0008D0710928E0710928F071092E1031092B3 |
:1062C000E00380915B0490915C0497FF03C090957C |
:1062D00081959F4F45973CF08091490784FD03C00D |
:1062E00081E080939A04F0905207C0905B04D090B4 |
:1062F0005C04B601882777FD8095982F2F2D30E01C |
:1063000040E050E00E94A23CF601D7FE04C0EE2718 |
:10631000FF27EC19FD099F01442737FD4095542FB5 |
:106320000E94A23C20E032E040E050E00E94163D96 |
:1063300089019A018F2D90E0BC016C9DC0016D9D7B |
:10634000900D7C9D900D112464E070E00E94E13C72 |
:10635000600F711F882777FD8095982F6093B50493 |
:106360007093B6048093B7049093B80420913A04D4 |
:1063700030913B0440913C0450913D04261B370B67 |
:10638000480B590B20933A0430933B0440933C0450 |
:1063900050933D0480913A0490913B04A0913C04B9 |
:1063A000B0913D048155934CA040B04064F080E52D |
:1063B00093ECA0E0B0E080933A0490933B04A09368 |
:1063C0003C04B0933D0480913A0490913B04A09129 |
:1063D0003C04B0913D04805B9C43AF4FBF4F64F4DD |
:1063E00080EB9CE3AFEFBFEF80933A0490933B04C4 |
:1063F000A0933C04B0933D048091460490914704DF |
:10640000892B09F498C08091490783FF94C060915B |
:106410000A0470910B0480910C0490910D0420E00B |
:1064200032E040E050E00E94163D890137FF03C092 |
:10643000109501951F4F6091120470911304809183 |
:1064400014049091150420E032E040E050E00E94F6 |
:10645000163DA90137FF03C0509541955F4F401786 |
:1064600051070CF4A80149315105A4F480919A0414 |
:10647000882381F08091820490918304892B51F4C8 |
:106480008091460490914704909349048093480476 |
:1064900010929A042091970330E0429FC001439FDD |
:1064A000900D529F900D1124B6E095958795BA9561 |
:1064B000E1F7A901481B590B14161506B4F5809194 |
:1064C000820490918304892B41F500913A04109144 |
:1064D0003B0420913C0430913D0480914A0490910A |
:1064E0004B04BC01469FC001479F900D569F900DE5 |
:1064F000112460E270E00E94E13C882777FD8095DE |
:10650000982F600F711F821F931F60933A0470933E |
:106510003B0480933C0490933D04809182049091CD |
:106520008304009741F0019702C084EF91E09093BB |
:1065300083048093820480919B04815080939B0408 |
:106540008F5F09F078C088E180939B0460910A0412 |
:1065500070910B0480910C0490910D04E09055070C |
:10656000FF2400E010E0A80197010E94163D30933F |
:10657000BA062093B90660911204709113048091B9 |
:10658000140490911504A80197010E94163D3093C0 |
:10659000BC062093BB068091AD079091AE07909307 |
:1065A000BE068093BD068091B7079091B80790937F |
:1065B000C0068093BF068091B0079091B107909379 |
:1065C000C2068093C106809160049091610490930B |
:1065D000C4068093C3066091420470914304809185 |
:1065E00044049091450420E032E040E050E00E94F5 |
:1065F000163D3093C6062093C506809146049091BF |
:1066000047049093CA068093C9068091080390912D |
:1066100009039093CC068093CB0680915604809317 |
:10662000CD061092CE06809198079091990790938D |
:10663000DA068093D906809168048823A9F06091D6 |
:10664000910770919207882777FD8095982F0E9477 |
:106650008B3B2091B2073091B3074091B407509122 |
:10666000B5070E943F3C32C060910A0470910B0450 |
:1066700080910C0490910D04E0909107F0909207A6 |
:106680000E948B3B2091A4073091A5074091A6075B |
:106690005091A7070E943F3C5B016C010027F7FC6B |
:1066A0000095102FC801B7010E948B3B2091B207C3 |
:1066B0003091B3074091B4075091B5070E943F3C19 |
:1066C0009B01AC01C601B5010E94883A0E94583B6B |
:1066D0007093920760939107809169048823A9F0D1 |
:1066E0006091890770918A07882777FD8095982F98 |
:1066F0000E948B3B2091B2073091B3074091B407C1 |
:106700005091B5070E943F3C32C0609112047091D5 |
:1067100013048091140490911504E0908907F0907F |
:106720008A070E948B3B2091A4073091A5074091D6 |
:10673000A6075091A7070E943F3C5B016C01002710 |
:10674000F7FC0095102FC801B7010E948B3B2091E8 |
:10675000B2073091B3074091B4075091B5070E943A |
:106760003F3C9B01AC01C601B5010E94883A0E94E2 |
:10677000583B70938A07609389076091B0077091C6 |
:10678000B107A0902604B0902704C0902804D090B0 |
:106790002904882777FD8095982F0E948B3B7B01E9 |
:1067A0008C016091B2077091B3078091B40790910A |
:1067B000B5079B01AC010E94883A9B01AC01C8015E |
:1067C000B7010E943F3C7B018C01C601B5010E94CC |
:1067D0008B3B2091A4073091A5074091A6075091CB |
:1067E000A7070E943F3C20E030E040E05FE30E94CA |
:1067F0003F3C9B01AC01C801B7010E94883A0E944E |
:10680000583B7093B1076093B00760911204709188 |
:10681000130480911404909115040E948B3B2091E5 |
:10682000A4073091A5074091A6075091A7070E94A1 |
:106830003F3C0E945D3B7093EC066093EB068091B9 |
:10684000590490915A049093F8068093F70680912A |
:10685000890790918A079093F2068093F1068091C0 |
:106860009107909192078150984034F080E098E031 |
:10687000909392078093910780919107909192074E |
:106880008050984F34F480E098EF90939207809373 |
:1068900091078091890790918A078150984034F040 |
:1068A00080E098E090938A07809389078091890718 |
:1068B00090918A078050984F34F480E098EF90933D |
:1068C0008A07809389078091B0079091B107815022 |
:1068D000984034F080E098E09093B1078093B0073F |
:1068E0008091B0079091B1078050984F34F480E0C8 |
:1068F00098EF9093B1078093B0078091490780FF8C |
:10690000DFC09091940381FF0EC0923310F5809107 |
:1069100060049091610444979093630480936204AF |
:1069200010924D0419C020919F033091A003290FAC |
:10693000311D80914E0790E0AC01249FC001259F3E |
:10694000900D349F900D112444979093630480938D |
:10695000620481E080934D0480914C04882321F0EF |
:1069600010926304109262042091600430916104DB |
:106970004091620450916304421753070CF0A0C089 |
:1069800080914D04882309F49BC08091950390E089 |
:10699000241B350BBC01629FC001639F900D729F49 |
:1069A000900D112460E170E00E94E13C5B01C09019 |
:1069B000DE03D090DF036091420470914304809124 |
:1069C000440490914504E0909603FF2400E010E019 |
:1069D00020E032E040E050E00E94163DC801B701DF |
:1069E0000E94A23C20E230E040E050E00E94163DD0 |
:1069F000F9017FEF2E3C370714F4EEECFFEF8091A6 |
:106A0000930390E0DC01AC9DC001AD9D900DBC9D59 |
:106A1000900D112468E070E00E94E13C80919C049C |
:106A200090919D049C01A4E0220F331FAA95E1F7E9 |
:106A3000281B390B261B370B2A193B09CF01E333DF |
:106A4000F10514F082E390E0281B390B89819A81CB |
:106A5000820F931F60E170E00E94E13C70939D04FF |
:106A600060939C0420914A0730E062177307ACF4EE |
:106A7000E981FA81E217F30724F030939D04209313 |
:106A80009C0480914A0790E029813A8128173907B0 |
:106A900024F430939D0420939C0480919C04909155 |
:106AA0009D0449815A814817590724F450939D0445 |
:106AB00040939C0460919C0470919D047A83698347 |
:106AC0008091AF07282F30E0C9014397A981BA818F |
:106AD000A817B90724F0F9017497FA83E98329818B |
:106AE0003A813093C8062093C7062091B0073091B1 |
:106AF000B1078091B5049091B604A091B704B0910C |
:106B0000B8044091AF0769817A81643171051CF442 |
:106B1000222433242EC0E42FF0E0A901481B590B96 |
:106B2000CA0129813A8135952795821793070CF47C |
:106B30009C0189819A8162E070E00E94E13C70953D |
:106B400061957F4FC901261737070CF4CB019F01D0 |
:106B500069817A81261B370B281739070CF4C90184 |
:106B600029813A812E1B3F0B1C01821793070CF4DD |
:106B7000190180919107909192074090C90450901B |
:106B8000CA04840D951DA0915704B0915804B8878C |
:106B9000AF838A1B9B0B90939B0780939A0760900F |
:106BA000A4077090A5078090A6079090A70720E003 |
:106BB00030E040E050E0C401B3010E94EC3A882389 |
:106BC00009F440C0E0900A04F0900B0400910C041A |
:106BD00010910D046091BD047091BE048091BF04BA |
:106BE0009091C0040E948B3B5B016C01C801B7010E |
:106BF0000E948B3BA40193010E943F3C7B018C01CE |
:106C0000EF81F885E419F509BF01882777FD8095A4 |
:106C1000982F0E948B3B9B01AC01C801B7010E94D9 |
:106C2000873A9B01AC01C601B5010E94883A0E94D7 |
:106C3000583B6093BD047093BE048093BF0490934F |
:106C4000C0041CC020919A0730919B07442737FD50 |
:106C50004095542F8091BD049091BE04A091BF0433 |
:106C6000B091C004820F931FA41FB51F8093BD0471 |
:106C70009093BE04A093BF04B093C0048091BD0460 |
:106C80009091BE04A091BF04B091C00481589E436E |
:106C9000A040B04064F080E89EE3A0E0B0E08093C4 |
:106CA000BD049093BE04A093BF04B093C004809130 |
:106CB000BD049091BE04A091BF04B091C00480585F |
:106CC000914CAF4FBF4F64F480E891ECAFEFBFEF52 |
:106CD0008093BD049093BE04A093BF04B093C004FE |
:106CE00060919A0770919B07882777FD8095982F70 |
:106CF0000E948B3B7B018C016091BD047091BE04AE |
:106D00008091BF049091C0040E948B3B20918F031F |
:106D10003091900340919103509192030E943F3C27 |
:106D20009B01AC01C801B7010E94883A0E94583B00 |
:106D30008B01C10137FE04C0882799278219930966 |
:106D40009595879549815A81840F951F9C01442709 |
:106D500037FD4095542F2B833C834D835E832091D8 |
:106D60009E0330E040E050E06B817C818D819E810C |
:106D70000E94A23C20E430E040E050E00E94163D3A |
:106D8000A901622F232F041715071CF4C801602FD7 |
:106D9000292FEE27FF27E41BF50B862F922FBC012E |
:106DA0006E177F070CF4BF01E981FA81E20DF31D34 |
:106DB0009F01260F371F37FF03C020E030E008C0D7 |
:106DC0008091AF07482F50E0421753070CF49A0107 |
:106DD00080919307482F50E0241735070CF49A014F |
:106DE00020938B079F01261B370B37FF03C020E042 |
:106DF00030E008C08091AF07482F50E0421753079A |
:106E00000CF49A0180919307482F50E0C901241790 |
:106E100035070CF4CA0180939007809189079091FF |
:106E20008A074090CB045090CC04840D951D40916E |
:106E3000590450915A0458874F83841B950B9093A3 |
:106E40008807809387076090A4077090A5078090BB |
:106E5000A6079090A70720E030E040E050E0C40192 |
:106E6000B3010E94EC3A882309F441C0E090120477 |
:106E7000F090130400911404109115046091B9046A |
:106E80007091BA048091BB049091BC040E948B3B2A |
:106E90005B016C01C801B7010E948B3BA401930107 |
:106EA0000E943F3C7B018C016F81788564197509D4 |
:106EB000DB01BD01882777FD8095982F0E948B3BD1 |
:106EC0009B01AC01C801B7010E94873A9B01AC014C |
:106ED000C601B5010E94883A0E94583B6093B904EC |
:106EE0007093BA048093BB049093BC041CC020919F |
:106EF000870730918807442737FD4095542F8091AC |
:106F0000B9049091BA04A091BB04B091BC04820F63 |
:106F1000931FA41FB51F8093B9049093BA04A09344 |
:106F2000BB04B093BC048091B9049091BA04A091C1 |
:106F3000BB04B091BC0481589E43A040B04064F0B3 |
:106F400080E89EE3A0E0B0E08093B9049093BA0497 |
:106F5000A093BB04B093BC048091B9049091BA048F |
:106F6000A091BB04B091BC048058914CAF4FBF4F6F |
:106F700064F480E891ECAFEFBFEF8093B904909395 |
:106F8000BA04A093BB04B093BC04609187077091CE |
:106F90008807882777FD8095982F0E948B3B7B017F |
:106FA0008C016091B9047091BA048091BB049091F6 |
:106FB000BC040E948B3B20918F0330919003409141 |
:106FC0009103509192030E943F3C9B01AC01C80188 |
:106FD000B7010E94883A0E94583B7B018C012091A6 |
:106FE0009E0330E040E050E06B817C818D819E818A |
:106FF0000E94A23C20E430E040E050E00E94163DB8 |
:10700000C901422F232FE816F90614F44E2D2F2D17 |
:1070100066277727681B790B842F922F9C012617F0 |
:1070200037070CF49B0149815A8142195309420FD9 |
:10703000531F57FF03C040E050E008C08091AF07E6 |
:10704000682F70E0641775070CF4AB01809193070B |
:10705000682F70E0461757070CF4AB014093AA075E |
:1070600049815A81421B530B9A012219330937FF78 |
:1070700003C020E030E007C08091AF0790E08217A6 |
:1070800093070CF49C018091930790E0281739072F |
:107090000CF49C012093A80728960FB6F894DEBF45 |
:1070A0000FBECDBFCF91DF911F910F91FF90EF9059 |
:1070B000DF90CF90BF90AF909F908F907F906F9018 |
:1070C0005F904F903F902F90089581E0809341070B |
:1070D00022E02093420783E08093430754E05093DB |
:1070E000440745E04093450736E03093460787E084 |
:1070F0008093470788E08093480780EC8093490796 |
:107100009EE190934A078BEF80934C078AE080932F |
:107110004D0790934B0790934F0720934E07209372 |
:10712000500750935107309352078FE080935307D5 |
:107130008AEF809354079093550780E88093560711 |
:1071400024E6209357078CE8809358078EE58093B8 |
:10715000590783E280935A0784E180935B0710927A |
:107160005C0780E180935D0780E580935E07109265 |
:107170005F071092600710926107109271071092DA |
:10718000720710927307109274072093620788E2C7 |
:10719000809363071092760792E39093640786E9E1 |
:1071A0008093650740936607909367078AE580930D |
:1071B0006807909369071092750780936A07409358 |
:1071C0006B0720936C0720936D0780E280936E0716 |
:1071D00050936F0790937007ABE7B7E0ECE6F3E0EE |
:1071E0008CE001900D928150E1F7089581E0809349 |
:1071F000410782E08093420723E02093430754E055 |
:107200005093440745E04093450736E030934607E6 |
:1072100087E08093470788E08093480780E4809365 |
:1072200049079EE190934A078BEF80934C078AE0D1 |
:1072300080934D0790934B0790934F0720934E07F1 |
:107240002093500750935107309352078FE080935B |
:1072500053078AEF809354079093550780E88093F3 |
:10726000560790E59093570788E7809358078EE577 |
:107270008093590783E280935A0784E180935B07E8 |
:1072800010925C0730E230935D0790935E07109296 |
:107290005F071092600710926107109271071092B9 |
:1072A0007207109273071092740724E62093620706 |
:1072B00088E2809363071092760792E390936407C5 |
:1072C00086E98093650740936607909367078AE590 |
:1072D00080936807909369071092750780936A07F7 |
:1072E00040936B0720936C0720936D0730936E07D4 |
:1072F00050936F078BE480937007ABE7B7E0E6E746 |
:10730000F3E08CE001900D928150E1F7089581E067 |
:107310008093410782E08093420783E08093430794 |
:1073200034E03093440745E04093450786E080937E |
:10733000460787E08093470728E02093480780E4CA |
:10734000809349079EE190934A078BEF80934C0707 |
:107350008AE080934D0790934B0790934F073093AB |
:107360004E0730935007209351078CE080935207CB |
:107370008FE0809353078AEF8093540790935507CB |
:1073800090E89093560780E58093570756E950930D |
:1073900058078EE58093590783E280935A0784E16A |
:1073A00080935B0710925C0780E280935D07909367 |
:1073B0005E0710925F0710926007109261071092AB |
:1073C000710710927207109273071092740724E6E7 |
:1073D0002093620788E2809363071092760782E326 |
:1073E000809364075093650740936607809367070F |
:1073F0009AE59093680780936907109275079093B8 |
:107400006A0740936B0720936C0720936D0780E118 |
:1074100080936E0730936F0720937007ABE7B7E058 |
:10742000EEE7F3E08CE001900D928150E1F70895D2 |
:107430008091CD049091CE04A091CF04B091D0045E |
:107440008093D5049093D604A093D704B093D80426 |
:107450008091D1049091D204A091D304B091D4042E |
:107460008093D9049093DA04A093DB04B093DC04F6 |
:1074700008951092CA041092C9041092CC0410927C |
:10748000CB040895FC014150504030F001900616A5 |
:10749000D1F73197CF010895882799270895A0E063 |
:1074A000B0E0E5E5FAE30C943B3D7C01EB018A0199 |
:1074B000690109C0CE012196F6010995F701819372 |
:1074C0007F010150104001151105A1F7CDB7DEB7BE |
:1074D000E8E00C94573DA0E0B0E0E1E7FAE30C945B |
:1074E0003B3DEC017B018A01690109C0F701619113 |
:1074F0007F01CE012196F60109950150104001153A |
:107500001105A1F7CDB7DEB7E8E00C94573D505810 |
:10751000BB27AA270ED075C166D130F06BD120F001 |
:1075200031F49F3F11F41EF45BC10EF4E095E7FBCC |
:1075300051C1E92F77D180F3BA1762077307840727 |
:10754000950718F071F49EF58FC10EF4E0950B2E9F |
:10755000BA2FA02D0B01B90190010C01CA01A001A5 |
:107560001124FF27591B99F0593F50F4503E68F100 |
:107570001A16F040A22F232F342F4427585FF3CF41 |
:10758000469537952795A795F0405395C9F77EF412 |
:107590001F16BA0B620B730B840BBAF09150A1F05B |
:1075A000FF0FBB1F661F771F881FC2F70EC0BA0FE1 |
:1075B000621F731F841F48F4879577956795B79569 |
:1075C000F7959E3F08F0B3CF9395880F08F0992761 |
:1075D000EE0F979587950895D9D008F481E0089526 |
:1075E0000CD00FC107D140F0FED030F021F45F3F46 |
:1075F00019F0F0C0511139C1F3C014D198F3992397 |
:10760000C9F35523B1F3951B550BBB27AA27621766 |
:107610007307840738F09F5F5F4F220F331F441FAB |
:10762000AA1FA9F333D00E2E3AF0E0E830D09150E3 |
:107630005040E695001CCAF729D0FE2F27D0660FD0 |
:10764000771F881FBB1F261737074807AB07B0E80F |
:1076500009F0BB0B802DBF01FF2793585F4F2AF025 |
:107660009E3F510568F0B6C000C15F3FECF3983E05 |
:10767000DCF3869577956795B795F7959F5FC9F782 |
:10768000880F911D9695879597F90895E1E0660F0B |
:10769000771F881FBB1F621773078407BA0720F084 |
:1076A000621B730B840BBA0BEE1F88F7E0950895ED |
:1076B00004D06894B111D9C00895BCD088F09F5708 |
:1076C00090F0B92F9927B751A0F0D1F0660F771F2E |
:1076D000881F991F1AF0BA95C9F712C0B13081F00E |
:1076E000C3D0B1E00895C0C0672F782F8827B85F56 |
:1076F00039F0B93FCCF3869577956795B395D9F76F |
:107700003EF490958095709561957F4F8F4F9F4F78 |
:107710000895E89409C097FB3EF490958095709584 |
:1077200061957F4F8F4F9F4F9923A9F0F92F96E9CD |
:10773000BB279395F695879577956795B795F11142 |
:10774000F8CFFAF4BB0F11F460FF1BC06F5F7F4FDF |
:107750008F4F9F4F16C0882311F096E911C07723F1 |
:1077600021F09EE8872F762F05C0662371F096E8FA |
:10777000862F70E060E02AF09A95660F771F881FC9 |
:10778000DAF7880F9695879597F90895990F00086D |
:10779000550FAA0BE0E8FEEF16161706E807F907E3 |
:1077A000C0F012161306E407F50798F0621B730B7E |
:1077B000840B950B39F40A2661F0232B242B252BFF |
:1077C00021F408950A2609F4A140A6958FEF811DA2 |
:1077D000811D089597F99F6780E870E060E0089543 |
:1077E0009FEF80EC089500240A94161617061806D9 |
:1077F0000906089500240A941216130614060506B5 |
:107800000895092E0394000C11F4882352F0BB0F45 |
:1078100040F4BF2B11F460FF04C06F5F7F4F8F4FA8 |
:107820009F4F089557FD9058440F551F59F05F3FE3 |
:1078300071F04795880F97FB991F61F09F3F79F092 |
:1078400087950895121613061406551FF2CF469514 |
:10785000F1DF08C0161617061806991FF1CF869596 |
:107860007105610508940895E894BB27662777277A |
:10787000CB0197F908958ADF08F48FEF08950BD0B4 |
:10788000C0CFB1DF28F0B6DF18F0952309F0A2CF02 |
:10789000A7CF1124EACFC6DFA0F3959FD1F3950FB0 |
:1078A00050E0551F629FF001729FBB27F00DB11D84 |
:1078B000639FAA27F00DB11DAA1F649F6627B00D14 |
:1078C000A11D661F829F2227B00DA11D621F739FFD |
:1078D000B00DA11D621F839FA00D611D221F749F0B |
:1078E0003327A00D611D231F849F600D211D822F52 |
:1078F000762F6A2F11249F5750408AF0E1F0882399 |
:107900004AF0EE0FFF1FBB1F661F771F881F9150A5 |
:107910005040A9F79E3F510570F05CCFA6CF5F3F66 |
:10792000ECF3983EDCF3869577956795B795F795D8 |
:10793000E7959F5FC1F7FE2B880F911D9695879560 |
:1079400097F90895629FD001739FF001829FE00D27 |
:10795000F11D649FE00DF11D929FF00D839FF00DCE |
:10796000749FF00D659FF00D9927729FB00DE11D7A |
:10797000F91F639FB00DE11DF91FBD01CF01112457 |
:107980000895991B79E004C0991F961708F0961B7B |
:10799000881F7A95C9F780950895AA1BBB1B51E1F2 |
:1079A00007C0AA1FBB1FA617B70710F0A61BB70B6F |
:1079B000881F991F5A95A9F780959095BC01CD0114 |
:1079C000089597FB092E07260AD077FD04D0E5DF3E |
:1079D00006D000201AF4709561957F4F0895F6F750 |
:1079E000909581959F4F0895A1E21A2EAA1BBB1B6B |
:1079F000FD010DC0AA1FBB1FEE1FFF1FA217B3077B |
:107A0000E407F50720F0A21BB30BE40BF50B661F90 |
:107A1000771F881F991F1A9469F760957095809554 |
:107A200090959B01AC01BD01CF01089597FB092EF4 |
:107A300005260ED057FD04D0D7DF0AD0001C38F43D |
:107A400050954095309521953F4F4F4F5F4F08958A |
:107A5000F6F790958095709561957F4F8F4F9F4F6A |
:107A600008952F923F924F925F926F927F928F92E2 |
:107A70009F92AF92BF92CF92DF92EF92FF920F93BD |
:107A80001F93CF93DF93CDB7DEB7CA1BDB0B0FB6C7 |
:107A9000F894DEBF0FBECDBF09942A883988488884 |
:107AA0005F846E847D848C849B84AA84B984C8841A |
:107AB000DF80EE80FD800C811B81AA81B981CE0F11 |
:107AC000D11D0FB6F894DEBF0FBECDBFED010895F6 |
:047AD000F894FFCF58 |
:107AD4000A01FF64496E74656772616C4E69636B79 |
:107AE40020202020496E74656772616C526F6C6C43 |
:107AF400202020204163634E69636B2020202020D6 |
:107B040020202020416363526F6C6C2020202020B1 |
:107B1400202020204779726F476965722020202039 |
:107B240020202020486F6568656E57657274202098 |
:107B3400202020204163635A202020202020202060 |
:107B44002020202047617320202020202020202076 |
:107B5400202020204B6F6D7061737356616C7565C6 |
:107B6400202020205370616E6E756E6720202020C7 |
:107B740020202020456D7066616E67202020202023 |
:107B840020202020416E616C6F673131202020203D |
:107B9400202020204D6F746F725F566F726E6520C7 |
:107BA400202020204D6F746F725F48696E74656E7B |
:107BB400202020204D6F746F725F4C696E6B7320B0 |
:107BC400202020204D6F746F725F52656368747358 |
:107BD400202020204163635F5A2020202020202081 |
:107BE400202020204D697474656C4163634E696381 |
:107BF4006B2020204D697474656C416363526F6C13 |
:107C04006C202020496E74656772616C4572724EF7 |
:107C140069636B20496E74656772616C4572725258 |
:107C24006F6C6C204D697474656C496E744E696335 |
:107C34006B2020204D697474656C496E74526F6CAE |
:107C44006C0920004E65757472616C4E69636B201B |
:107C540020202020526F6C6C4F6666736574202060 |
:107C640020202020496E74526F6C6C2A46616B741C |
:107C74006F722020416E616C6F67323620202020A5 |
:107C840020202020446972656B74417573676C52BF |
:107C94006F6C6C204D65737377657274526F6C6C86 |
:107CA40020202020417573676C65696368526F6C8E |
:107CB4006C202020492D4C616765526F6C6C20202C |
:107CC40020202020537469636B526F6C6C20202039 |
:107CD40020202020FFFF0A016400007D0000FF0334 |
:107CE4000102030405060708090A48616C6C6F2049 |
:107CF40057656C74000000000000000000000000E4 |
:107D0400000000000000000000000000000000006F |
:107D1400000000000000000000000000000000005F |
:107D2400000000000000000000000000000000004F |
:107D3400000000000000000000000B0142656769BC |
:107D44006E6E657200004E6F726D616C0000537050 |
:107D54006F72740000640090D0030090D003001789 |
:107D6400B7D13830FB103A409696020A644664EC68 |
:047D7400FFC0070045 |
:00000001FF |
/branches/mixer/V0.68d_DarkMod/Hex-Files/Flight-Ctrl_MEGA644_V0_68d_DarkMod_0_2.hex |
---|
0,0 → 1,2014 |
:100000000C9439020C9456020C9456020C9456022D |
:100010000C9456020C9456020C9456020C94560200 |
:100020000C9456020C94DC0C0C9456020C94560260 |
:100030000C9406160C9456020C9456020C9456021C |
:100040000C9456020C9456020C94B70B0C94560266 |
:100050000C94F5040C9456020C94BF040C945602B4 |
:100060000C94880D0C9456020C9460150C94560256 |
:100070000A0A0D004E65757472616C004865616412 |
:10008000696E67486F6C64000A0D5374657565721C |
:10009000756E673A20004F4B0A0D000A0D416267EA |
:1000A0006C65696368204C756674647275636B7304 |
:1000B000656E736F722E2E000A0D42656E75747A2E |
:1000C0006520506172616D657465727361747A2028 |
:1000D0002564000A0D414343206E69636874206102 |
:1000E000626765676C696368656E21000A0D496E19 |
:1000F00069742E20454550524F4D3A2047656E6534 |
:1001000072696572652044656661756C742D506115 |
:1001100072616D657465722E2E2E000A0D3D3D3D97 |
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF |
:100130003D3D3D3D3D3D3D3D3D3D3D000A0D466C57 |
:1001400069676874436F6E74726F6C0A0D486172F0 |
:1001500064776172653A25642E25640A0D536F66D3 |
:1001600074776172653A5625642E256425632044B0 |
:1001700061726B4D6F64205625642E2564002E003D |
:1001800048693A253469202043663A2534692000BD |
:1001900047733A253469202047693A25346920009D |
:1001A0004E693A2534692020526F3A25346920007F |
:1001B00045787465726E436F6E74726F6C202000A8 |
:1001C00052616E67653A2533692D25336900537492 |
:1001D000656C6C756E673A202533690053657470E1 |
:1001E0006F696E74202025336900536572766F2025 |
:1001F0002000506F7469343A202025336900506F15 |
:100200007469333A202025336900506F7469323A9B |
:10021000202025336900506F7469313A202025333E |
:10022000690053746172743A2020202020253569BA |
:10023000004D657373776572743A20202535690027 |
:100240005269636874756E673A2020253569004BE2 |
:100250006F6D706173732020202020202000456D79 |
:1002600070662E506567656C3A253569005370617C |
:100270006E6E756E673A202025356900486F636899 |
:100280002025346920282533692900526F6C6C20A1 |
:10029000253469202825336929004E69636B2025A0 |
:1002A000346920282533692900414343202D2053F8 |
:1002B000656E736F72004769657220253469202866 |
:1002C0002533692900526F6C6C202534692028255C |
:1002D000336929004E69636B202534692028253352 |
:1002E000692900476965722025346920282533690A |
:1002F0002900526F6C6C2025346920282533692928 |
:10030000004E69636B202534692028253369290054 |
:100310004779726F202D2053656E736F72005033D2 |
:100320003A253469202050343A2534692000503170 |
:100330003A253469202050323A2534692000477329 |
:100340003A253469202047693A25346920004E69EE |
:100350003A2534692020526F3A25346920004B3702 |
:100360003A25346920204B383A25346920004B3532 |
:100370003A25346920204B363A25346920004B3326 |
:100380003A25346920204B343A25346920004B311A |
:100390003A25346920204B323A25346920004B6FCE |
:1003A0006D706173733A20202025356900526F6C9F |
:1003B0006C3A202020202020253569004E69636B8F |
:1003C0003A20202020202025356900616B742E20E2 |
:1003D0004C6167650048F668656E726567656C75A7 |
:1003E0006E67004B65696E6520004F6666202020B1 |
:1003F0002020203A20253569004C7566746472759A |
:10040000636B3A2025356900536F6C6C486F6568E3 |
:10041000653A2025356900486F6568653A202020D7 |
:1004200020202535690028632920486F6C67657294 |
:1004300020427573730053657474696E673A2025A2 |
:1004400064200048573A5625642E25642053573AB5 |
:1004500025642E25642563002B204D696B726F4B3C |
:100460006F70746572202B005B25695D005B2569E8 |
:100470005D0011241FBECFEFD0E1DEBFCDBF13E082 |
:10048000A0E0B1E0EEE1FBE702C005900D92A43AD6 |
:10049000B107D9F717E0A4EAB3E001C01D92AE3D61 |
:1004A000B107E1F70E94B2020C948D3D0C9400005C |
:1004B0009C01F999FECF32BD21BDF89A80B508950F |
:1004C0009C01F999FECF1FBA32BD21BD60BD0FB6A8 |
:1004D000F894FA9AF99A0FBE0895F999FECF22E09E |
:1004E00030E032BD21BDF89A80B5863060F0F999D0 |
:1004F000FECF1FBA32BD21BD82E080BD0FB6F89499 |
:10050000FA9AF99A0FBE08951F93182F863008F0B3 |
:1005100015E0419FC001112420E632E050E08C59E3 |
:100520009F4F0E94903AF999FECF1FBA82E090E067 |
:1005300092BD81BD10BD0FB6F894FA9AF99A0FBE1C |
:100540001F910895FB01863008F085E0489FB001B7 |
:1005500011246C597F4F28E532E050E0CF010E9412 |
:10056000743A08958F929F92AF92BF92CF92DF928A |
:10057000EF92FF920F931F93CF93DF9314B815B8A8 |
:10058000189B02C08BE001C08AE0809300018DE8D7 |
:1005900087B98FEF88B98BE184B981E085B98EE3A3 |
:1005A0008AB9579A87EF8BB984B7877F84BF8091C8 |
:1005B00060008861809360001092600080ED97E099 |
:1005C0009093C6038093C50310925C0410925B0461 |
:1005D00010921A071092190710925A041092590497 |
:1005E0001092580410925704809100018A3011F43F |
:1005F000289801C0289A42980E94700C0E94CB064D |
:100600000E94F1150E94820D0E942215789410928A |
:100610000C0684E480930D0687E080930E062091FB |
:10062000000181E090E09F938F931F921F9284E6D8 |
:1006300090E09F938F9384E490E09F938F931F9219 |
:100640001F92822F6AE00E94E63C892F90E09F93E0 |
:100650008F93822F0E94E63C90E09F938F938CE3D0 |
:1006600091E09F938F931F920E94FA088BE191E093 |
:100670009F938F931F920E94FA08299A8DB79EB775 |
:1006800044960FB6F8949EBF0FBE8DBFF999FECF6A |
:10069000C1E0D0E0D2BDC1BDF89A80B5853409F47F |
:1006A0003BC08CEE90E09F938F931F920E94FA08BC |
:1006B0000E94AC3910E00F900F900F90123039F07B |
:1006C000133019F40E948A3804C0143010F00E94CC |
:1006D0001B3947E461E477E0812F0E9484021F5FA9 |
:1006E000163061F7F999FECF1FBA82E090E092BD13 |
:1006F00081BD83E080BD0FB6F894FA9AF99A0FBED7 |
:10070000F999FECF1FBAD2BDC1BD85E480BD0FB639 |
:10071000F894FA9AF99A0FBEF999FECF84E090E026 |
:1007200092BD81BDF89A80B5853050F083ED90E0A0 |
:100730009F938F931F920E94FA080F900F900F9033 |
:100740000E946D0247E461E477E00E94A2020E94E9 |
:100750006D0290E09F938F9388EB90E09F938F932F |
:100760001F920E94FA08809149070F900F900F90F6 |
:100770000F900F9080FD03C0C8EED3E020C08BE93E |
:1007800090E09F938F931F920E94FA0888EE93E067 |
:100790000E94970CEC010E941C100F900F900F907C |
:1007A000CE010E94A10C8823D9F386E990E09F93A3 |
:1007B0008F931F920E94FA080F900F900F900E9443 |
:1007C0006621809100018A3011F4289801C0289A8E |
:1007D00080ED97E09093C6038093C50385E58093F1 |
:1007E000160688E890E09F938F931F920E94FA0864 |
:1007F000809149070F900F900F9082FF03C08CE704 |
:1008000090E002C084E790E09F938F931F920E9434 |
:10081000FA080F900F900F9080E790E09F938F93CE |
:100820001F920E94FA080E94751088E893E1909345 |
:100830008703809386030F900F900F9030E7832EED |
:1008400037E1932EA12C23E0B22E95E0C92ED12CB6 |
:1008500080E1E82E87E2F82E00E810E08091C203E4 |
:100860008823E1F31092C2030E94EC220E9424210B |
:10087000809100018A3011F4289801C0289A809153 |
:100880000301882321F081508093030112C010924C |
:10089000B4031092B50310922006109279041092BE |
:1008A000780410927B0410927A0410927D041092C6 |
:1008B0007C0480915604882329F08091560481504D |
:1008C000809356048091860390918703892BD1F4FD |
:1008D000D0928703C09286030E9431158091040351 |
:1008E000909105038F5F9F4FE9F480915F04882307 |
:1008F000C9F0F092C603E092C5031093050300937C |
:10090000040310C080918603909187030197909310 |
:10091000870380938603809100018A3011F4289820 |
:1009200001C0289A8091C203882311F40E94E60630 |
:100930000E948E07CE010E94A10C882309F48ECF5D |
:100940002091090330910A038091590790E02817FC |
:1009500039077CF480910403909105038F5F9F4FCA |
:1009600041F49092C6038092C503B0920503A09211 |
:10097000040384E690E00E94970CEC016FCF1F9275 |
:100980000F920FB60F9211248F939F93EF93FF93C3 |
:10099000809101018823E1F48091BE039091BF030F |
:1009A00001969093BF038093BE03FC01E252FB4F7C |
:1009B000E081ED3019F08639910539F41092BF03CA |
:1009C0001092BE0381E080930101E093C60004C051 |
:1009D0001092BF031092BE03FF91EF919F918F91F0 |
:1009E0000F900FBE0F901F9018951F920F920FB689 |
:1009F0000F9211242F933F934F938F939F93AF9315 |
:100A0000BF93CF93DF93EF93FF938091C6008093C2 |
:100A1000A8034091B903463910F01092B8038091B1 |
:100A2000A8038D3009F05CC08091B803823009F0D2 |
:100A300057C01092B803A42FB0E0FD01E15EF94F5A |
:100A40003081ED01C05ED94F28818091BC03909127 |
:100A5000BD03831B9109821B91099F709093BD0375 |
:100A60008093BC039C0196E0369527959A95E1F713 |
:100A7000235C2093BB03982F9F73935C9093BA03DE |
:100A80008081281729F48881981711F491E006C015 |
:100A90008091AB038F5F8093AB0390E08091A903BB |
:100AA000882309F069C0992309F466C081E0809326 |
:100AB000A9034093AC03AF5DB94F8DE08C93809157 |
:100AC0002306823509F058C02CE088E190E00FB68B |
:100AD000F894A895809360000FBE209360004CC0EE |
:100AE0008091B8038130F9F0813020F0823009F034 |
:100AF00041C024C08091A803833239F48091A903B6 |
:100B0000882319F481E08093B8038091A80380932F |
:100B1000210681E08093B9038091A8038093BC03F0 |
:100B20001092BD0329C082E08093B803E42FF0E067 |
:100B30008091A803EF5DF94F808309C0E42FF0E0B6 |
:100B40008091A803EF5DF94F8083463920F44F5F11 |
:100B50004093B90302C01092B8032091A80380917A |
:100B6000BC039091BD03820F911D9093BD038093B0 |
:100B7000BC0302C01092B803FF91EF91DF91CF91B7 |
:100B8000BF91AF919F918F914F913F912F910F9076 |
:100B90000FBE0F901F901895DC0120E030E040E080 |
:100BA00050E008C0FA01E252FB4F8081280F311D4E |
:100BB0004F5F5F4F4A175B07A8F33F70C90136E0EC |
:100BC000969587953A95E1F7835CFD01E252FB4FDC |
:100BD000808311962F73235CFD01E252FB4F20832B |
:100BE000A152BB4F8DE08C93109201018091DE04E5 |
:100BF0008093C6000895CF93DF93EA01B22F93E26A |
:100C00009093DE046093DF048093E00463E070E07F |
:100C1000A0E04EC0FE01EA0FF11D9081AF5FB15020 |
:100C200019F430E040E00FC0FE01EA0FF11D4081F1 |
:100C3000AF5FB15011F430E006C0FE01EA0FF11DC4 |
:100C40003081AF5FB150892F86958695835CFB011B |
:100C5000E252FB4F8083242F22952F70892F90E042 |
:100C60008370907054E0880F991F5A95E1F7282BF4 |
:100C7000235CFB01E152FB4F2083842F90E08F70B7 |
:100C80009070880F991F880F991F232F2295269502 |
:100C900026952370282B235CFB01E052FB4F208319 |
:100CA0003F73335CFB01EF51FB4F30836C5F7F4F31 |
:100CB000BB2309F0AFCFCB010E94CC05DF91CF91D0 |
:100CC00008951F93CF93DF93EC0170E0A22FB0E063 |
:100CD000119748C0E42FF0E0EF5DF94F30814F5F8E |
:100CE000E42FF0E0EF5DF94F50814F5FE42FF0E02B |
:100CF000EF5DF94F10814F5FE42FF0E0EF5DF94FAA |
:100D000020814F5F842F90E08A179B0774F55D5315 |
:100D1000FE01E70FF11D852F82958F703D53330F34 |
:100D2000330F382B3083613001F1912F9D537F5F5A |
:100D3000FE01E70FF11D71505295507F892F869566 |
:100D40008695582B5083623081F063507E5FFE01A0 |
:100D5000E70FF11D9295990F990F907C2D53922BCF |
:100D600090837F5F662309F0B5CFDF91CF911F910C |
:100D700008951F93182F8A3019F48DE00E94B90648 |
:100D80008091C00085FFFCCF1093C60080E090E00A |
:100D90001F9108950895E1ECF0E088E18083A0ECD4 |
:100DA000B0E08C9182608C938081806880838081A8 |
:100DB000806480838AE28093C40088EC90E00E9483 |
:100DC000970C90930B0680930A0608958091010179 |
:100DD000882309F4A2C08091A403882371F0809134 |
:100DE0000101882351F02BE046E156E06091DD04DB |
:100DF00087E40E94FB051092A40380910A0690915B |
:100E00000B060E94A10C882321F48091A60388235D |
:100E1000B1F080910101882391F022E447EB56E084 |
:100E20006091DD0484E40E94FB051092A60384EF28 |
:100E300091E00E94970C90930B0680930A066091B4 |
:100E400002016F3F89F0462F50E074E0440F551FB8 |
:100E50007A95E1F74C5F5E4F605D20E181E40E948E |
:100E6000FB058FEF809302019091F9069923A1F081 |
:100E700080910101882381F083E28093DE049093C6 |
:100E8000DF048DE08093E004109201011092F906D6 |
:100E90008091DE048093C6008091A503882359F1D8 |
:100EA00080910101882339F10E947E101092A503E0 |
:100EB0003091AE03932F9F5F9093AE03943021F057 |
:100EC0008091AF03882359F026E145E157E060E0C7 |
:100ED00084E30E94FB058FEF8093AE030CC044E1D6 |
:100EE000949FA0011124455E5C4F24E160E0832FB4 |
:100EF0008F5C0E94FB058091A703882371F080918D |
:100F00000101882351F02AE04CE056E06091DD04B5 |
:100F100086E50E94FB051092A70308951F93DF93B7 |
:100F2000CF9300D0CDB7DEB78091A903882309F411 |
:100F300006C18FEF80930301809123068B3609F45D |
:100F400079C08C3688F48336D1F1843630F481361A |
:100F5000C1F0823609F0F1C020C0873609F47BC0A9 |
:100F6000883609F0EAC042C0813709F478C0813779 |
:100F700008F49DC0843709F454C0863709F0DDC0F9 |
:100F800066C02091AC0343E062E0CE0101960E946E |
:100F90006106898180930201D0C02091AC0343E0B7 |
:100FA0006BE086E196E00E9461068091ED039091EE |
:100FB0001806892B8093ED0380911F0645C0209170 |
:100FC000AC0343E06BE086E196E00E94610680910D |
:100FD000ED0390911806892B8093ED0380911F06F5 |
:100FE0008093F90681E08093A603A7C02091AC030B |
:100FF00043E062E0CE0101960E9461068091ED031C |
:101000009981892B8093ED038A818F3F21F481E0C0 |
:101010008093AF0302C01092AF0381E08093A503D9 |
:101020008CC02091AC0343E064E080EB93E00E942D |
:10103000610683C02091AC0343E064E084EB93E05D |
:101040000E9461068091B7038093F90676C081E023 |
:101050008093A70372C081E08093A4036EC02091A7 |
:10106000AC0343E062E0CE0101960E9461068981F3 |
:101070008F3F89F0863010F085E0898347E461E492 |
:1010800077E089810E94A202898127E441E457E048 |
:101090006091DD0408C01091DD040E946D0227E418 |
:1010A00041E457E0612F855B0E94FB0546C020911B |
:1010B000AC0343E067E481E497E00E94610680911D |
:1010C000230647E461E477E08B560E948402209176 |
:1010D0002306F999FECF1FBA82E090E092BD81BD50 |
:1010E0002B5620BD0FB6F894FA9AF99A0FBE60916C |
:1010F0006C0770E080E090E024EC39E040E050E0E4 |
:101100000E94C73C609388037093890380938A038D |
:1011100090938B0360916D0770E080E090E00E94F7 |
:10112000C73C60938C0370938D0380938E039093E0 |
:101130008F030E946D020E94D2221092A9030F9089 |
:101140000F90CF91DF911F910895982F8091FA060B |
:10115000813061F48091EC03E82FF0E0E55EFC4F14 |
:1011600090838F5F8093EC0381E00895892F0E9424 |
:10117000B90608951F93182F04C080E30E94A508A4 |
:1011800011501116D4F31F9108951F93182F04C006 |
:1011900080E20E94A50811501116D4F31F91089502 |
:1011A0000F931F93CF93DF938C01EB0108C0F801DD |
:1011B0000F5F1F4FE4918E2F0E94A5082197209763 |
:1011C000B1F7DF91CF911F910F9108950F931F9366 |
:1011D000CF93DF938C01EB0106C0F80181918F0161 |
:1011E0000E94A50821972097C1F7DF91CF911F9109 |
:1011F0000F9108952F923F924F925F926F927F923C |
:101200008F929F92AF92BF92CF92DF92EF92FF9216 |
:101210000F931F93DF93CF93CDB7DEB7E5970FB64C |
:10122000F894DEBF0FBECDBF2C969FAD2C972D96A8 |
:101230004FAD2D972B968FAD2B978093FA06FDE43B |
:10124000AF2EB12CAC0EBD1E292F342FC9019DA786 |
:101250008CA71EA61FA618AA19AA9E01245D3F4F9F |
:101260003DAB2CAB0CA51DA502C00F5F1F4FF801B5 |
:10127000F490FF2019F0F5E2FF16B9F7B8012CA59C |
:101280003DA5621B730B19F0C9010E94D008FF2015 |
:1012900009F454C2A8014F5F5F4F5DA74CA71982A4 |
:1012A00044241BAA5FEF5AAB02C0C5015C01ECA548 |
:1012B000FDA5CF0101969DA78CA76491A42DB0E058 |
:1012C000A170B070653721F0862F80628837F1F405 |
:1012D000109771F0F50120813181428153812EA751 |
:1012E0003FA748AB59AB24E030E0A20EB31E0EC0BE |
:1012F000F501808191819C0140E050E02EA73FA73D |
:1013000048AB59AB42E050E0A40EB51E603221F468 |
:101310008981882351F61AC0633211F458E05AC00B |
:101320006A3221F06D3281F4C50109C0C50102960F |
:10133000D501BC91BBABB7FFB9CFB195BBABE0E179 |
:101340004E2AFFED4F22B2CF6B3211F46983ADCF3D |
:101350006E3209F03AC0ECA5FDA59F012F5F3F4F0B |
:101360003DA72CA784918A3221F0682F20E030E03D |
:1013700021C0C5010296D5014D915C9157FF02C075 |
:101380004FEF5FEF4AAB92CFC901E3E0880F991F9F |
:10139000EA95E1F7220F331F280F391F260F311D61 |
:1013A00020533040ECA5FDA5AF014F5F5F4F5DA717 |
:1013B0004CA76491862F80538A3030F3A90137FF00 |
:1013C00002C04FEF5FEF4AAB7DCF603329F444FC9E |
:1013D0006CCF50E2452A69CF862F81538930E8F4DB |
:1013E00020E030E0C90153E0880F991F5A95E1F7DA |
:1013F000220F331F280F391F260F311D2053304075 |
:10140000ECA5FDA5CF0101969DA78CA76491862F21 |
:1014100080538A3038F32BAB55CF683619F494E0FB |
:10142000492A43CF6C3619F4A1E04A2A3ECF562E02 |
:10143000F501B3E66B1741F422E030E0A20EB31ED3 |
:1014400080818C83198227C134E4631739F044E624 |
:10145000641731F059E66517C1F502C081E0482AEA |
:1014600040FE09C0A4E0B0E0AA0EBB1E208131817D |
:10147000428153810BC042E050E0A40EB51E808132 |
:1014800091819C01442737FD4095542F2EA73FA7FB |
:1014900048AB59AB8EA59FA5A8A9B9A9B7FF11C0A4 |
:1014A0002EA53FA548A959A950954095309521955D |
:1014B0003F4F4F4F5F4F2EA73FA748AB59AB3DE281 |
:1014C0003983562E0AE0302E82C04FE4641721F093 |
:1014D0005FE6651731F402C081E0482A18E0312E3A |
:1014E00075C090E76917A1F4A2E0B0E0AA0EBB1E98 |
:1014F000808191819C0140E050E02EA73FA748AB3E |
:1015000059AB30E4432AB0E13B2EA8E75A2E5EC027 |
:101510006337E1F5D501CD90DC90C114D10489F495 |
:10152000B8E2BC83EEE6ED83F5E7FE832CE62F837D |
:10153000288739E239871A86F4E0CF2ED12CCC0ED9 |
:10154000DD1E4AA947FD10C0552747FD509560E0B4 |
:1015500070E0C6010E94673A009771F0182F1C19BD |
:101560005AA951174CF009C0F60101900020E9F783 |
:1015700031971E2F1C1901C01AA982E090E0A80E15 |
:10158000B91E1982E3E75E2E40E08CC0653521F07C |
:10159000653739F4562E02C091E0492A7AE0372E99 |
:1015A00015C0683519F0683709F06FC043FE0BC0ED |
:1015B0002EA53FA548A959A9211531054105510579 |
:1015C00011F030E4432A562E60E1362E19824AA9E2 |
:1015D00047FD02C05FED45228EA59FA5A8A9B9A928 |
:1015E0000097A105B10549F49AA9992331F45CE269 |
:1015F000C52ED12CCC0EDD1E44C0EEA4FFA408A93C |
:1016000019A94CE2C42ED12CCC0EDD1E632C7724FC |
:1016100088249924C801B701A40193010E94193DAF |
:101620006A3020F430E3232E260E08C027E5222E50 |
:10163000260EA8E55A1611F4BFED2B22F6012292D0 |
:101640006F01C801B701A40193010E94193DC901AE |
:10165000DA018EA79FA7A8ABB9ABE614F70408057B |
:10166000190518F07C018D01D5CFF8E03F1649F43B |
:1016700043FE07C020E3221621F0D601E0E3EE93FB |
:101680006D011CA91C194AA90DC0662309F456C096 |
:101690006C831982562E40E011E094E0C92ED12CC3 |
:1016A000CC0EDD1E042F011B07FD00E0898188237D |
:1016B00019F0812F8F5F06C046FC02C0812F02C047 |
:1016C000812F8E5F782E700EE42CFF2480E3882E0D |
:1016D000912C8E209F208114910421F48BA98719CD |
:1016E0000E94C5088981882329F061E070E0CE015D |
:1016F000019609C0E6FE09C0F0E3FA835B8262E06E |
:1017000070E0CE0102960E94E60820E28216910463 |
:1017100021F48BA987190E94BA08802F0E94BA0869 |
:10172000612F772767FD7095C6010E94E608E4FEE9 |
:1017300099CD8BA987190E94C50894CDE5960FB65F |
:10174000F894DEBF0FBECDBFCF91DF911F910F91F7 |
:10175000FF90EF90DF90CF90BF90AF909F908F90D1 |
:101760007F906F905F904F903F902F9008951F92C1 |
:101770000F920FB60F9211242F933F935F936F93A5 |
:101780007F938F939F93AF93BF938091C9038150B1 |
:101790008093C9038F5FB9F489E08093C903809176 |
:1017A00008038F5F817080930803882319F481E018 |
:1017B0008093C2038091C0039091C10301969093DE |
:1017C000C1038093C0038091C5039091C603029723 |
:1017D000E8F08091C5039091C60301979093C603EA |
:1017E0008093C5038091C5039091C60320910403A3 |
:1017F0003091050382239323892B31F0429A809103 |
:101800000603882371F415C0429813C0429881E002 |
:10181000809306038FEF9FEF90930503809304035B |
:1018200008C0809100018A3011F45A9A09C0479A81 |
:1018300007C0809100018A3011F45A9801C047987E |
:101840008091490783FF3BC0349B0AC08091C3034A |
:101850009091C40301969093C4038093C3032FC057 |
:101860008091C3039091C403892B79F08091C303C5 |
:101870009091C403805A9F4040F48091C30390919B |
:10188000C40390934704809346048091460490914A |
:1018900047042091480430914904845E9D4F821B87 |
:1018A000930B68E671E00E94063D845B9040909344 |
:1018B0004B0480934A041092C4031092C303BF9157 |
:1018C000AF919F918F917F916F915F913F912F91F8 |
:1018D0000F900FBE0F901F901895809306030895E8 |
:1018E0008091C0039091C1030B969093CB0380939A |
:1018F000CA0382E085BD83EA84BD17BC88E788BD42 |
:1019000096E096BD83EC8093B0009093B100E0E741 |
:10191000F0E0808182608083EEE6F0E0808181608B |
:1019200080838AE08093B3001092B20008952091E2 |
:10193000C0033091C1032F5F3F4F280F391FC901EA |
:1019400008952091C0033091C103821B930B8070D6 |
:101950009078892F869508952091C0033091C10316 |
:101960002F5F3F4F280F391F8091C0039091C10313 |
:10197000A901481B590BCA0180709078892F869560 |
:1019800099F308952091C0033091C1032F5F3F4F19 |
:10199000280F391F4FEE02C040937A008091C00398 |
:1019A0009091C103B901681B790BCB0180709078CD |
:1019B000892F869589F308951F920F920FB60F9283 |
:1019C00011242F933F934F935F936F937F938F9344 |
:1019D0009F93AF93BF93CF93DF93EF93FF93809148 |
:1019E00007038150809307038F5F09F074C083E879 |
:1019F0008093B00080919D03C82FD0E0D093C8039E |
:101A0000C093C7038091760780FF1EC060910A04CF |
:101A100070910B0480910C0490910D0420E830E04B |
:101A200040E050E00E943B3DCA01B90120916307AC |
:101A300030E040E050E00E94C73C20E032E040E06F |
:101A400050E00E943B3D24C060910A0470910B0459 |
:101A500080910C0490910D0420E830E040E050E0CB |
:101A60000E943B3DCA01B9012091630730E040E08C |
:101A700050E00E94C73C20E032E040E050E00E948D |
:101A80003B3D50954095309521953F4F4F4F5F4FCF |
:101A9000C20FD31FD093C803C093C7032091C703BD |
:101AA0003091C8038091640790E02817390734F01B |
:101AB0008091650790E08217930724F49093C80300 |
:101AC0008093C7038091C7038093B300809166071A |
:101AD0008093070304C083E08093B0005F98FF9178 |
:101AE000EF91DF91CF91BF91AF919F918F917F91B6 |
:101AF0006F915F914F913F912F910F900FBE0F907B |
:101B00001F90189510927C008FEE80937A000895B4 |
:101B10001F920F920FB60F921124EF92FF920F9324 |
:101B20001F932F933F934F935F936F937F938F9365 |
:101B30009F93AF93BF93EF93FF9310927A0080919E |
:101B4000E8038F5F8093E8038150853009F486C0F5 |
:101B5000863090F4823009F440C0833030F488231A |
:101B6000F1F0813009F044C22FC0833009F441C044 |
:101B7000843009F03DC25AC0883009F4C2C08930AF |
:101B800038F4863009F483C0873009F031C29CC034 |
:101B9000893009F4D3C08A3009F02AC2AFC18091DC |
:101BA0007800909179009093E7038093E60381E0B9 |
:101BB0008093E9038091E0039091E1030196909373 |
:101BC000E1038093E00318C280917800909179003E |
:101BD0009093E5038093E40392C080917800909104 |
:101BE00079009093E3038093E20384E08093E90318 |
:101BF00003C24091090350910A03809178009091AB |
:101C000079009A01220F331F240F351F63E070E023 |
:101C10000E94F23C260F371F36952795369527955B |
:101C200030930A032093090386E0E0CF80910204F9 |
:101C3000909103042091780030917900821B930BDE |
:101C40009093FC068093FB068091FB069091FC0626 |
:101C50009093D3038093D20387E0C8CF809178001C |
:101C6000909179002091000430910104821B930B24 |
:101C700090930707809306078091060790910707C6 |
:101C80009093D5038093D4031092E903B5C180915A |
:101C900000012091E6033091E7038A3049F48091F6 |
:101CA000780090917900820F931F9695879506C0D2 |
:101CB0008091780090917900820F931F9093D103C7 |
:101CC0008093D00381E092CF809100012091E403C2 |
:101CD0003091E5038A3049F4809178009091790041 |
:101CE000820F931F9695879506C0809178009091FA |
:101CF0007900820F931F9093CF038093CE0382E0ED |
:101D000075CF809100012091E2033091E3038A3086 |
:101D100049F48091780090917900820F931F9695F5 |
:101D2000879506C08091780090917900820F931F6B |
:101D30009093CD038093CC0385E058CF60917800D9 |
:101D400070917900E0900404F0900504009106047D |
:101D500010910704882777FD8095982F0E94B03B4B |
:101D6000A80197010E94AC3A0E947D3B7093D70373 |
:101D70006093D6034091D6035091D7038091FB0620 |
:101D80009091FC06209106073091070797FF03C04A |
:101D9000909581959F4F959587959595879537FF58 |
:101DA00003C0309521953F4F35952795359527955B |
:101DB000820F931F840F951F9093D7038093D603B0 |
:101DC0008091D6039091D703029704F160910404A7 |
:101DD00070910504809106049091070420E030E0A2 |
:101DE00048E454E40E94113B88230CF03CC060910D |
:101DF00004047091050480910604909107042AE080 |
:101E000037ED43EA5CE30E94AD3A25C08091D603EA |
:101E10009091D7038F5F9F4F34F5609104047091C8 |
:101E20000504809106049091070420E030E046E12B |
:101E300054E40E94603C1816B4F46091040470915C |
:101E4000050480910604909107042AE037ED43EAE7 |
:101E50005CE30E94AC3A60930404709305048093A1 |
:101E600006049093070481E08093DD03809178005D |
:101E7000909179009093FE068093FD062091420494 |
:101E80003091430440914404509145048091D6031D |
:101E90009091D703AA2797FDA095BA2F820F931F81 |
:101EA000A41FB51F8093420490934304A09344045D |
:101EB000B0934504E0904204F09043040091440440 |
:101EC0001091450460914204709143048091440450 |
:101ED0009091450420E034E040E050E00E943B3D1A |
:101EE000E21AF30A040B150BE0924204F092430449 |
:101EF000009344041093450483E078CE80910B074F |
:101F000090910C072091780030917900820F931FF7 |
:101F100090930C0780930B07809103078F5F80934A |
:101F2000030780910307853008F462C08091780030 |
:101F3000909179009093100380930F031092030700 |
:101F40008091FF069091000720910B0730910C07BC |
:101F5000821B930B2091600430916104821B930BD0 |
:101F60009093DF038093DE0320910B0730910C07E1 |
:101F7000E0900B03F0900C0300910D0310910E0301 |
:101F8000C801B701660F771F881F991F6E0D7F1D4F |
:101F9000801F911F442737FD4095542F620F731FF8 |
:101FA000841F951F24E030E040E050E00E943B3D5C |
:101FB000C901DA0180930B0390930C03A0930D03E6 |
:101FC000B0930E032091FF063091000780910B0320 |
:101FD00090910C03A0910D03B0910E03281B390BB7 |
:101FE000309361042093600410920C0710920B0749 |
:101FF0001092E9031092E8038091E90380937C003A |
:102000008091E803882319F08FEE80937A00FF9186 |
:10201000EF91BF91AF919F918F917F916F915F9160 |
:102020004F913F912F911F910F91FF90EF900F9043 |
:102030000FBE0F901F901895EF92FF920F931F9372 |
:10204000CF93DF93F999FECF03E0E02E00E0F02E6E |
:10205000F2BCE1BCF89A80B5C82FD0E0C531D105FB |
:1020600008F02A97C7BD84E690E00E94C20C8091D8 |
:102070000F039091100382559340C8F4C0E0D0E064 |
:1020800016C0C7BD82E390E00E94C20C1F930F935D |
:102090001F920E94FA0880910F03909110030F90F5 |
:1020A0000F900F908458934038F0219602C00EE7AD |
:1020B00011E0CA3FD10528F38C2FF999FECF1FBA42 |
:1020C000F2BCE1BC80BD0FB6F894FA9AF99A0FBE43 |
:1020D000809308078CE291E00E94C20CDF91CF91BF |
:1020E0001F910F91FF90EF900895EBE1F3E080E2F4 |
:1020F000819393E0EB36F907D9F70895FF920F9398 |
:102100001F938091ED03282F30E080FF15C0809150 |
:10211000EE03882311F0815002C080916B038093FD |
:10212000EE03EBE1F3E080E2819393E0EB36F90715 |
:10213000D9F78FEF8093AE0321FF10C08091EE039B |
:102140008F5F8093EE03EBE1F3E080E2819393E015 |
:10215000EB36F907D9F78FEF8093AE032370307019 |
:102160002330310511F41092EE038091EE03282FF5 |
:1021700030E08A3040F481E18093EC033F932F9369 |
:102180008DE694E007C080E18093EC033F932F93AA |
:1021900088E694E09F938F9381E08F930E94FA08E2 |
:1021A0000F900F900F900F900F901091EE0315303D |
:1021B00009F403C2163090F4123009F4D0C0133081 |
:1021C00030F4112309F1113009F031C465C0133026 |
:1021D00009F41BC1143009F02AC46BC1183009F48A |
:1021E00021C3193038F4163009F4A1C2173009F0B0 |
:1021F0001EC4F4C21A3009F48FC31A3008F450C355 |
:102200001B3009F014C4C6C31092EC0388E594E0B7 |
:102210009F938F9311E01F930E94FA0884E18093AB |
:10222000EC032091000184E690E09F938F9384E477 |
:1022300090E09F938F931F921F92822F6AE00E94DB |
:10224000E63C892F90E09F938F93822F0E94E63C7B |
:1022500090E09F938F9383E494E09F938F931F93D9 |
:102260000E94FA0888E28093EC030E946D0290E0DD |
:102270009F938F9386E394E09F938F931F930E9485 |
:10228000FA088CE38093EC0386E294E09F938F93AB |
:102290001F930E94FA089EC28091490780FF47C0A1 |
:1022A0001092EC0380916004909161049F938F934E |
:1022B00087E194E09F938F931F930E94FA0884E133 |
:1022C0008093EC0380916204909163049F938F93B9 |
:1022D00088E094E09F938F931F930E94FA0888E20E |
:1022E0008093EC0380910F03909110039F938F9341 |
:1022F00089EF93E09F938F931F930E94FA088CE3DA |
:102300008093EC038091080790E09F938F938AEE6F |
:1023100093E09F938F931F930E94FA088DB79EB707 |
:1023200044960FB6F8949EBF0FBE8DBF85C384E15F |
:102330008093EC0383EE93E09F938F931F930E940F |
:10234000FA0888E28093EC0385ED93E09F938F93E6 |
:102350001F930E94FA088DB79EB70696E2CF10929F |
:10236000EC038BEC93E09F938F9311E01F930E94FB |
:10237000FA0884E18093EC0360910A0470910B04E5 |
:1023800080910C0490910D0420E034E040E050E096 |
:102390000E943B3D5F934F933F932F938CEB93E0D1 |
:1023A0009F938F931F930E94FA0888E28093EC0317 |
:1023B000609112047091130480911404909115049B |
:1023C00020E034E040E050E00E943B3D5F934F93BB |
:1023D0003F932F938DEA93E09F938F931F930E94D7 |
:1023E000FA088CE38093EC038091460490914704B3 |
:1023F0009F938F938EE993E09F938F931F930E94F7 |
:10240000FA088DB79EB746968CCF1092EC03809158 |
:10241000190790911A0720911707309118079F9379 |
:102420008F933F932F938EE893E09F938F9311E0C8 |
:102430001F930E94FA0884E18093EC0380911D07AA |
:1024400090911E0720911B0730911C079F938F933B |
:102450003F932F938EE793E09F938F931F930E9458 |
:10246000FA0888E28093EC0380912107909122077B |
:1024700020911F07309120079F938F933F932F93B5 |
:102480008EE693E09F938F931F930E94FA088CE34C |
:102490008093EC03809125079091260720912307D4 |
:1024A000309124079F938F933F932F938EE593E072 |
:1024B0007BC01092EC03E0914207F0E0EE0FFF1FAB |
:1024C000EB5EF84F20813181E0914107F0E0EE0FA3 |
:1024D000FF1FEB5EF84F808191813F932F939F9375 |
:1024E0008F938EE493E09F938F9311E01F930E944C |
:1024F000FA0884E18093EC03E0914407F0E0EE0FEA |
:10250000FF1FEB5EF84F20813181E0914307F0E03F |
:10251000EE0FFF1FEB5EF84F808191813F932F9369 |
:102520009F938F938EE393E09F938F931F930E94CB |
:10253000FA0888E28093EC03E0914607F0E0EE0FA2 |
:10254000FF1FEB5EF84F20813181E0914507F0E0FD |
:10255000EE0FFF1FEB5EF84F808191813F932F9329 |
:102560009F938F938EE293E09F938F931F930E948C |
:10257000FA088CE38093EC03E0914807F0E0EE0F5B |
:10258000FF1FEB5EF84F20813181E0914707F0E0BB |
:10259000EE0FFF1FEB5EF84F808191813F932F93E9 |
:1025A0009F938F938EE193E09F938F931F930E944D |
:1025B000FA088DB79EB74C96B4CE1092EC0380E12A |
:1025C00093E09F938F9311E01F930E94FA080F905E |
:1025D0000F900F90809100018A3009F052C084E181 |
:1025E0008093EC034091F6035091F7038091CC0364 |
:1025F0009091CD032091F6033091F7035F934F93B1 |
:10260000821B930B9F938F9381E093E09F938F9313 |
:102610001F930E94FA0888E28093EC034091F8032C |
:102620005091F9038091CE039091CF032091F8034C |
:102630003091F9035F934F93821B930B9F938F937A |
:1026400082EF92E09F938F931F930E94FA088CE38E |
:102650008093EC038091FA039091FB032091B007E3 |
:102660003091B1079F938F933F932F9383EE92E026 |
:102670009F938F931F930E94FA088DB79EB745963C |
:1026800050CE84E18093EC038091F6039091F703A0 |
:102690002091CC033091CD03E091F603F091F70344 |
:1026A00062E070E00E94063D7F936F932E1B3F0B0C |
:1026B0003F932F9384ED92E09F938F931F930E94FB |
:1026C000FA0888E28093EC038091F8039091F90373 |
:1026D0002091CE033091CF03E091F803F091F903FC |
:1026E00062E070E00E94063D7F936F932E1B3F0BCC |
:1026F0003F932F9385EC92E09F938F931F930E94BB |
:10270000FA088CE38093EC038091FA039091FB0329 |
:102710002091B0073091B10762E070E00E94063D61 |
:102720007F936F933F932F9386EB92E0A1CF10920C |
:10273000EC0389EA92E09F938F93FF24F394FF9236 |
:102740000E94FA0884E18093EC0380910004909148 |
:1027500001042091D4033091D5039F938F933F932D |
:102760002F938AE992E09F938F93FF920E94FA0839 |
:1027700088E28093EC0380910204909103042091FD |
:10278000D2033091D3039F938F933F932F938BE882 |
:1027900092E09F938F93FF920E94FA088CE38093BC |
:1027A000EC036091040470910504809106049091FB |
:1027B000070400919807109199070E947D3B7F9331 |
:1027C0006F931F930F938CE792E09F938F93FF92E9 |
:1027D0000E94FA088DB79EB74896A3CD84E18093F6 |
:1027E000EC038091090390910A039F938F938DE6E8 |
:1027F00092E09F938F9311E01F930E94FA0888E262 |
:102800008093EC038091560490E09F938F938EE524 |
:1028100092E09F938F931F930E94FA088DB79EB703 |
:102820000A967FCD1092EC038FE492E09F938F93F2 |
:1028300011E01F930E94FA0884E18093EC038091D9 |
:102840004A0490914B049F938F9380E492E09F936E |
:102850008F931F930E94FA0888E28093EC03809183 |
:102860004604909147049F938F9381E392E09F9356 |
:102870008F931F930E94FA088CE38093EC0380915E |
:102880004804909149049F938F9382E292E09F9332 |
:102890008F931F930E94FA088DB79EB7429641CD41 |
:1028A0001092EC0380914E0490914F049F938F936C |
:1028B00086E192E09F938F9311E01F930E94FA08A4 |
:1028C00084E18093EC0380915004909151049F9394 |
:1028D0008F938AE092E09F938F931F930E94FA0850 |
:1028E00088E28093EC0380915204909153049F936B |
:1028F0008F938EEF91E09F938F931F930E94FA081E |
:102900008CE38093EC0380915404909155049F9341 |
:102910008F9382EF91E0FDCC1092EC038AEE91E070 |
:102920009F938F9311E01F930E94FA0884E1809394 |
:10293000EC0380919D0390E09F938F938CED91E049 |
:102940009F938F931F930E94FA0888E28093EC0371 |
:102950008091C7039091C8039F938F938EEC91E071 |
:102960009F938F931F930E94FA088CE38093EC034C |
:102970008091650790E09F938F938091640790E02A |
:102980009F938F9380EC91E09F938F931F930E946E |
:10299000FA08C4CC1092EC0380EB91E09F938F93E4 |
:1029A00011E01F930E94FA0884E18093EC03809168 |
:1029B0001A06992787FD90959F938F93809119060A |
:1029C000992787FD90959F938F9380EA91E09F933D |
:1029D0008F931F930E94FA0888E28093EC03809102 |
:1029E0001B06992787FD90959F938F9380911C06D6 |
:1029F00090E09F938F9380E991E09F938F931F9333 |
:102A00000E94FA088CE38093EC038091200690E00A |
:102A10009F938F9380911D06992787FD90959F9393 |
:102A20008F9380E891E09F938F931F93D1CE1150A5 |
:102A300010936B031092EE031092ED031F910F9110 |
:102A4000FF9008951092B9008AE28093B80008952B |
:102A500085EA8093BC0080E0089584E98093BC00FF |
:102A600008954CEB50E084E9DA018C931092EF0367 |
:102A70002BEB30E0F90180811092F00380E88C9319 |
:102A80001092BD001092BA001082E9EBF0E01082C3 |
:102A9000A8EBB0E01C9210828AE28C9385EADA01FE |
:102AA0008C931082F901108285E88C93089510921E |
:102AB000B9008093BB0085E88093BC0080E0089556 |
:102AC0001F920F920FB60F9211248F939F93EF9343 |
:102AD000FF938091EF038F5F8093EF0381508330EA |
:102AE00061F1843038F48130A9F09091F0038230A4 |
:102AF000C0F40AC0853031F1853060F1863051F183 |
:102B0000873009F060C044C0892F90E08996880F13 |
:102B1000991F33C08091F0038F5F8093F003815041 |
:102B20001BC084E98093BC00943018F41092EF032A |
:102B300002C01092F00385EA25C08091F103880F4E |
:102B40008D5A1BC08091BB00E091F103F0E0E35F80 |
:102B5000F84F80838091F103813051F0813028F06B |
:102B6000823049F0833079F510C080918B0705C021 |
:102B70008091900702C08091A8071092B9008093BD |
:102B8000BB0085E88093BC001EC08091AA07F5CFEA |
:102B90008091F1039091BB00E82FF0E0E35FF84FE4 |
:102BA00094838F5F8093F103843010F01092F103CF |
:102BB00084E98093BC008AE090E09093870380933F |
:102BC00086031092EF038091BC0080688093BC0064 |
:102BD000FF91EF919F918F910F900FBE0F901F90DB |
:102BE000189583EC80938100EFE6F0E080818062AD |
:102BF00080831092FB031092FA031092F903109253 |
:102C0000F8031092F7031092F60308951F920F92A3 |
:102C10000FB60F9211240F931F932F933F934F934F |
:102C20005F936F937F938F939F93AF93BF93CF9354 |
:102C3000DF93EF93FF93209186003091870080917E |
:102C4000F4039091F503281B390B80918600909135 |
:102C500087009093F5038093F403C9018D54944049 |
:102C60000091F2031091F303835F9A4160F4043002 |
:102C7000110514F010926C0381E090E09093F3033F |
:102C80008093F2038AC00A3011050CF086C0C90196 |
:102C90008B5F9040845B914008F068C0E901C25DA1 |
:102CA000D140F801EE0FFF1FEB5EF84F808191815C |
:102CB0009E01281B390BC90137FF03C090958195F0 |
:102CC0009F4F06974CF480915604883C28F48091DD |
:102CD0005604865F80935604F801EE0FFF1FEB5EEB |
:102CE000F84F20813181C901880F991F820F931FEE |
:102CF0008C0F9D1F64E070E00E94063D9B01CE0199 |
:102D00000196861797071CF42150304006C0219782 |
:102D10006C177D0714F42F5F3F4F80915604E80134 |
:102D2000CC0FDD1F833CB8F0FE01EB5EF84F8081D5 |
:102D30009181A901481B590BCA0163E070E00E9410 |
:102D4000063DCB01880F991F860F971FC55DD84F91 |
:102D50009983888304C0C55DD84F19821882F80111 |
:102D6000EE0FFF1FEB5EF84F31832083F8013196A1 |
:102D7000F093F303E093F203E530F10511F45D9A6B |
:102D800006C05D98E630F10511F45C9A05C05C98C8 |
:102D9000379711F45B9A01C05B98FF91EF91DF9137 |
:102DA000CF91BF91AF919F918F917F916F915F91E3 |
:102DB0004F913F912F911F910F910F900FBE0F9048 |
:102DC0001F9018952F923F924F925F926F927F9231 |
:102DD0008F929F92AF92BF92CF92DF92EF92FF922B |
:102DE0000F931F93DF93CF9300D0CDB7DEB78091C1 |
:102DF000FA039091FB032091D0033091D103821B01 |
:102E0000930B9093B1078093B0078091CE0390917C |
:102E1000CF032091F8033091F903821B930B909319 |
:102E20008A07809389078091CC039091CD032091EC |
:102E3000F6033091F703821B930B909392078093D4 |
:102E400091078091890790918A079093F206809369 |
:102E5000F106E090AD07F090AE076091D403709159 |
:102E6000D503882777FD8095982F2CE030E040E04F |
:102E700050E00E94C73C0027F7FC0095102FE60E9B |
:102E8000F71E081F191FC801B70122E030E040E01B |
:102E900050E00E943B3D3093AE072093AD07E09099 |
:102EA000B707F090B8076091D2037091D3038827D9 |
:102EB00077FD8095982F2CE030E040E050E00E94B4 |
:102EC000C73C0027F7FC0095102FE60EF71E081FE1 |
:102ED000191FC801B70122E030E040E050E00E9435 |
:102EE0003B3D3093B8072093B70720919807309166 |
:102EF00099076091D6037091D703882777FD809555 |
:102F0000982F442737FD4095542F620F731F841F5D |
:102F1000951F22E030E040E050E00E943B3D3093BE |
:102F200099072093980740911A0450911B046091CF |
:102F30001C0470911D042091D4033091D503C90164 |
:102F4000880F991F820F931F880F991F880F991F51 |
:102F5000AA2797FDA095BA2F840F951FA61FB71F0C |
:102F600080931A0490931B04A0931C04B0931D0437 |
:102F700040911E0450911F0460912004709121041F |
:102F80002091D2033091D303C901880F991F820F7A |
:102F9000931F880F991F880F991FAA2797FDA09547 |
:102FA000BA2F840F951FA61FB71F80931E049093FE |
:102FB0001F04A0932004B093210460912204709117 |
:102FC00023048091240490912504E090FD06F09064 |
:102FD000FE06A0900404B0900504C0900604D090B2 |
:102FE00007040E94B03B3B014C010027F7FC009511 |
:102FF000102FC801B7010E94B03BA60195010E94A5 |
:10300000AC3A9B01AC01C401B3010E94AD3A0E94ED |
:103010007D3B609322047093230480932404909357 |
:10302000250420913A0430913B0440913C04509196 |
:103030003D048091B0079091B107AA2797FDA09514 |
:10304000BA2F820F931FA41FB51F80933A04909349 |
:103050003B04A0933C04B0933D0420913E04309186 |
:103060003F0440914004509141048091B0079091F9 |
:10307000B107AA2797FDA095BA2F820F931FA41F0F |
:10308000B51F80933E0490933F04A0934004B093F7 |
:103090004104209168042A83222309F069C08091A9 |
:1030A0006904882309F064C08091490786FF60C0E5 |
:1030B00060912A0470912B0480912C0490912D042E |
:1030C000E090B007F090B107A0907604BB24CC2428 |
:1030D000DD240027F7FC0095102F20E030E140E0D0 |
:1030E00050E00E943B3DC801B7010E94C73CA601C9 |
:1030F00095010E94C73C20E038E040E050E00E948B |
:103100003B3D2093C5043093C6044093C7045093BD |
:10311000C80460913204709133048091340490911A |
:103120003504E090B007F090B10720E030E140E0D6 |
:1031300050E00E943B3DCA01B901A60195010E94E1 |
:10314000C73C0027F7FC0095102FA80197010E94AB |
:10315000C73C20E038E040E050E00E943B3D209337 |
:10316000C1043093C2044093C3045093C40410C0FC |
:103170001092C1041092C2041092C3041092C404AD |
:103180001092C5041092C6041092C7041092C8048D |
:103190008091890790918A072090C5043090C604D9 |
:1031A0004090C7045090C804820D931D90938A07E5 |
:1031B000809389070091890710918A07A090C10424 |
:1031C000B090C204C090C304D090C404809177042E |
:1031D000682E772488249924C401B301A60195019F |
:1031E0000E94C73C20E032E040E050E00E943B3DBE |
:1031F000020F131F10938A0700938907209136044A |
:1032000030913704409138045091390480918907F6 |
:1032100090918A07AA2797FDA095BA2F820F931F36 |
:10322000A41FB51F8093360490933704A0933804ED |
:10323000B0933904409132045091330460913404C6 |
:10324000709135048091890790918A0720916404D8 |
:1032500030916504821B930BAA2797FDA095BA2F86 |
:10326000840F951FA61FB71F8093320490933304D9 |
:10327000A0933404B09335048091320490913304C8 |
:10328000A0913404B0913504E0908C03F0908D034C |
:1032900000918E0310918F03E816F9060A071B07A9 |
:1032A00004F580E197E2A0E0B0E08E199F09A00B41 |
:1032B000B10B8093320490933304A0933404B09301 |
:1032C00035048091320490913304A0913404B0917C |
:1032D00035048093360490933704A0933804B09358 |
:1032E00039042091320430913304409134045091D8 |
:1032F000350488279927DC018E199F09A00BB10B93 |
:10330000281739074A075B0704F580EF98EDAFEF00 |
:10331000BFEFE80EF91E0A1F1B1FE0923204F09265 |
:103320003304009334041093350480913204909157 |
:103330003304A0913404B091350480933604909303 |
:103340003704A0933804B09339048091CE03909150 |
:10335000CF030F9734F488E19CEF90938A07809312 |
:1033600089078091CE039091CF03079734F480E3CF |
:1033700098EF90938A078093890790910001998331 |
:103380009A30A9F48091CE039091CF03835F93404C |
:1033900034F088EE93E090938A07809389078091B8 |
:1033A000CE039091CF038A5F9340DCF014C08091EC |
:1033B000CE039091CF03855E974034F088EE93E082 |
:1033C00090938A07809389078091CE039091CF03D1 |
:1033D000835F974034F080ED97E090938A07809365 |
:1033E000890780919107909192078A199B09909380 |
:1033F0009207809391070091910710919207C40161 |
:10340000B301A20191010E94C73C20E032E040E0FC |
:1034100050E00E943B3D50954095309521953F4F9F |
:103420004F4F5F4F020F131F1093920700939107A6 |
:1034300020912E0430912F0440913004509131049A |
:103440008091910790919207AA2797FDA095BA2F96 |
:10345000820F931FA41FB51F80932E0490932F04F7 |
:10346000A0933004B093310440912A0450912B046E |
:1034700060912C0470912D04809191079091920796 |
:103480002091660430916704821B930BAA2797FD55 |
:10349000A095BA2F840F951FA61FB71F80932A04EB |
:1034A00090932B04A0932C04B0932D0480912A04B4 |
:1034B00090912B04A0912C04B0912D04E0908803EE |
:1034C000F090890300918A0310918B03E816F906A6 |
:1034D0000A071B0704F580E197E2A0E0B0E08E192F |
:1034E0009F09A00BB10B80932A0490932B04A09307 |
:1034F0002C04B0932D0480912A0490912B04A09168 |
:103500002C04B0912D0480932E0490932F04A0934B |
:103510003004B093310420912A0430912B0440915F |
:103520002C0450912D0488279927DC018E199F09BE |
:10353000A00BB10B281739074A075B0704F580EF8A |
:1035400098EDAFEFBFEFE80EF91E0A1F1B1FE092C8 |
:103550002A04F0922B0400932C0410932D048091E4 |
:103560002A0490912B04A0912C04B0912D048093F7 |
:103570002E0490932F04A0933004B09331048091D3 |
:10358000CC039091CD030F9734F488E19CEF909396 |
:103590009207809391078091CC039091CD03079778 |
:1035A00034F480E398EF9093920780939107998188 |
:1035B0009A30A9F48091CC039091CD03835F93401E |
:1035C00034F088EE93E09093920780939107809176 |
:1035D000CC039091CD038A5F9340DCF014C08091BE |
:1035E000CC039091CD03855E974034F088EE93E054 |
:1035F00090939207809391078091CC039091CD0393 |
:10360000835F974034F080ED97E09093920780932A |
:1036100091078FEE80937A0080913A0490913B0459 |
:10362000A0913C04B0913D0480932604909327041C |
:10363000A0932804B093290480912A0490912B042C |
:10364000A0912C04B0912D0480930A0490930B0454 |
:10365000A0930C04B0930D04809132049091330434 |
:10366000A0913404B0913504809312049093130414 |
:10367000A0931404B093150480912E0490912F040C |
:10368000A0913004B091310480930E0490930F0404 |
:10369000A0931004B09311048091360490913704E4 |
:1036A000A0913804B09139048093160490931704C4 |
:1036B000A0931804B09319048091490787FF63C051 |
:1036C0002A81222309F05FC080916904882309F0D0 |
:1036D0005AC08091910790919207893C91055CF0C6 |
:1036E00020919107309192078091910790919207D4 |
:1036F000885C904011C08091910790919207885307 |
:103700009F4FA4F4209191073091920780919107E7 |
:103710009091920788539F4F880F991F880F991F88 |
:10372000820F931F9093920780939107809189074E |
:1037300090918A07893C91055CF02091890730912E |
:103740008A078091890790918A07885C904011C010 |
:103750008091890790918A0788539F4FA4F4209104 |
:10376000890730918A078091890790918A07885349 |
:103770009F4F880F991F880F991F820F931F909357 |
:103780008A078093890780914507E82FF0E0EE0FC4 |
:10379000FF1FEB5EF84F8081918120914E043091A4 |
:1037A0004F0483599F4F821793071CF02F5F3F4FA1 |
:1037B0000CC08081918182599F4F821793074CF4EE |
:1037C0002115310531F02150304030934F042093C2 |
:1037D0004E0480914607E82FF0E0EE0FFF1FEB5EEE |
:1037E000F84F808191812091500430915104835988 |
:1037F0009F4F821793071CF02F5F3F4F0CC08081B3 |
:10380000918182599F4F821793074CF421153105FE |
:1038100031F0215030403093510420935004809176 |
:103820004707E82FF0E0EE0FFF1FEB5EF84F8081B7 |
:103830009181209152043091530483599F4F8217F4 |
:1038400093071CF02F5F3F4F0CC0808191818259FC |
:103850009F4F821793074CF42115310531F0215009 |
:103860003040309353042093520480914807E82F4E |
:10387000F0E0EE0FFF1FEB5EF84F80819181209109 |
:1038800054043091550483599F4F821793071CF0BD |
:103890002F5F3F4F0CC08081918182599F4F8217CB |
:1038A00093074CF42115310531F02150304030930D |
:1038B00055042093540480914E0490914F0497FF37 |
:1038C00005C010924F0410924E040AC08F3F91051C |
:1038D00039F034F08FEF90E090934F0480934E04D2 |
:1038E000809150049091510497FF05C010925104AB |
:1038F000109250040AC08F3F910539F034F08FEFD9 |
:1039000090E09093510480935004809152049091E0 |
:10391000530497FF05C010925304109252040AC03A |
:103920008F3F910539F034F08FEF90E0909353047E |
:1039300080935204809154049091550497FF05C0E0 |
:1039400010925504109254040AC08F3F910539F02B |
:1039500034F08FEF90E090935504809354040F90CF |
:103960000F90CF91DF911F910F91FF90EF90DF901B |
:10397000CF90BF90AF909F908F907F906F905F900F |
:103980004F903F902F90089510927A008091CC0331 |
:103990009091CD0390939207809391078091CE03ED |
:1039A0009091CF0390938A07809389078091D003E9 |
:1039B0009091D1039093B1078093B0076091D403A5 |
:1039C0007091D503882777FD8095982F2CE030E003 |
:1039D00040E050E00E94C73C7093AE076093AD0793 |
:1039E0006091D2037091D303882777FD8095982F3B |
:1039F0000E94C73C7093B8076093B7078091D603C5 |
:103A00009091D70390939907809398078FEE8093B6 |
:103A10007A0080914507E82FF0E0EE0FFF1FEB5E84 |
:103A2000F84F8081918120914E0430914F04835949 |
:103A30009F4F821793071CF02F5F3F4F0CC0808170 |
:103A4000918182599F4F821793074CF421153105BC |
:103A500031F02150304030934F0420934E04809138 |
:103A60004607E82FF0E0EE0FFF1FEB5EF84F808176 |
:103A70009181209150043091510483599F4F8217B6 |
:103A800093071CF02F5F3F4F0CC0808191818259BA |
:103A90009F4F821793074CF42115310531F02150C7 |
:103AA0003040309351042093500480914707E82F11 |
:103AB000F0E0EE0FFF1FEB5EF84F808191812091C7 |
:103AC00052043091530483599F4F821793071CF07F |
:103AD0002F5F3F4F0CC08081918182599F4F821789 |
:103AE00093074CF42115310531F0215030403093CB |
:103AF00053042093520480914807E82FF0E0EE0F22 |
:103B0000FF1FEB5EF84F808191812091540430912A |
:103B1000550483599F4F821793071CF02F5F3F4F27 |
:103B20000CC08081918182599F4F821793074CF47A |
:103B30002115310531F02150304030935504209348 |
:103B4000540480914E0490914F0497FF05C0109249 |
:103B50004F0410924E040AC08F3F910539F034F0A3 |
:103B60008FEF90E090934F0480934E048091500427 |
:103B70009091510497FF05C0109251041092500487 |
:103B80000AC08F3F910539F034F08FEF90E09093A9 |
:103B9000510480935004809152049091530497FFF4 |
:103BA00005C010925304109252040AC08F3F910531 |
:103BB00039F034F08FEF90E09093530480935204E7 |
:103BC000809154049091550497FF05C010925504BC |
:103BD000109254040AC08F3F910539F034F08FEFF2 |
:103BE00090E0909355048093540460916C0770E0CA |
:103BF00080E090E024EC39E040E050E00E94C73CD7 |
:103C0000609388037093890380938A0390938B0356 |
:103C100060938C0370938D0380938E0390938F0336 |
:103C2000089580914C078B3F98F08B3F19F4809159 |
:103C30004E040EC08C3F19F48091500409C08D3F92 |
:103C400019F48091520404C08E3F21F480915404F1 |
:103C50008093950380919503882319F4109295031E |
:103C600004C08F3F11F48093950380914B078B3FE5 |
:103C700098F08B3F19F480914E040EC08C3F19F4DC |
:103C80008091500409C08D3F19F48091520404C002 |
:103C90008E3F21F480915404809394038091940387 |
:103CA000882319F41092940305C0843618F084E632 |
:103CB0008093940380914D078B3F98F08B3F19F4CC |
:103CC00080914E040EC08C3F19F48091500409C0BD |
:103CD0008D3F19F48091520404C08E3F21F48091ED |
:103CE00054048093960380919603882319F41092CC |
:103CF000960305C0843618F084E68093960380917D |
:103D00004F078B3F98F08B3F19F480914E040EC003 |
:103D10008C3F19F48091500409C08D3F19F48091B3 |
:103D2000520404C08E3F21F4809154048093970381 |
:103D300080919703882319F41092970304C08F3F52 |
:103D400011F480939703809156078B3F98F08B3F37 |
:103D500019F480914E040EC08C3F19F480915004E8 |
:103D600009C08D3F19F48091520404C08E3F21F4A4 |
:103D7000809154048093980380919803882319F4C8 |
:103D80001092980304C08F3F11F4809398038091A0 |
:103D900057078B3F98F08B3F19F480914E040EC06B |
:103DA0008C3F19F48091500409C08D3F19F4809123 |
:103DB000520404C08E3F21F48091540480939903EF |
:103DC000809199038B3010F48AE002C08F3F11F488 |
:103DD00080939903809158078B3F98F08B3F19F49B |
:103DE00080914E040EC08C3F19F48091500409C09C |
:103DF0008D3F19F48091520404C08E3F21F48091CC |
:103E0000540480939A0380919A03882319F41092A2 |
:103E10009A0304C08F3F11F480939A0380915D0749 |
:103E20008B3F98F08B3F19F480914E040EC08C3F6D |
:103E300019F48091500409C08D3F19F48091520407 |
:103E400004C08E3F21F48091540480939C038091A0 |
:103E50009C03882319F410929C0304C08F3F11F433 |
:103E600080939C0380915E078B3F98F08B3F19F401 |
:103E700080914E040EC08C3F19F48091500409C00B |
:103E80008D3F19F48091520404C08E3F21F480913B |
:103E9000540480936E0480916E04882319F4109268 |
:103EA0006E0404C08F3F11F480936E0480915F070D |
:103EB0008B3F98F08B3F19F480914E040EC08C3FDD |
:103EC00019F48091500409C08D3F19F48091520477 |
:103ED00004C08E3F21F48091540480936F0480913C |
:103EE0006F04882319F410926F0404C08F3F11F4FB |
:103EF00080936F04809160078B3F98F08B3F19F49B |
:103F000080914E040EC08C3F19F48091500409C07A |
:103F10008D3F19F48091520404C08E3F21F48091AA |
:103F200054048093700480917004882319F41092D3 |
:103F3000700404C08F3F11F4809370048091610776 |
:103F40008B3F98F08B3F19F480914E040EC08C3F4C |
:103F500019F48091500409C08D3F19F480915204E6 |
:103F600004C08E3F21F480915404809371048091A9 |
:103F70007104882319F41092710404C08F3F11F466 |
:103F800080937104809171078B3F98F08B3F19F4F7 |
:103F900080914E040EC08C3F19F48091500409C0EA |
:103FA0008D3F19F48091520404C08E3F21F480911A |
:103FB00054048093720480917204882319F410923F |
:103FC000720404C08F3F11F48093720480917207D1 |
:103FD0008B3F98F08B3F19F480914E040EC08C3FBC |
:103FE00019F48091500409C08D3F19F48091520456 |
:103FF00004C08E3F21F48091540480937304809117 |
:104000007304882319F41092730404C08F3F11F4D1 |
:1040100080937304809173078B3F98F08B3F19F462 |
:1040200080914E040EC08C3F19F48091500409C059 |
:104030008D3F19F48091520404C08E3F21F4809189 |
:1040400054048093740480917404882319F41092AA |
:10405000740404C08F3F11F480937404809174073A |
:104060008B3F98F08B3F19F480914E040EC08C3F2B |
:1040700019F48091500409C08D3F19F480915204C5 |
:1040800004C08E3F21F48091540480937504809184 |
:104090007504882319F41092750404C08F3F11F43D |
:1040A00080937504809162078B3F98F08B3F19F4E1 |
:1040B00080914E040EC08C3F19F48091500409C0C9 |
:1040C0008D3F19F48091520404C08E3F21F48091F9 |
:1040D000540480939D0380919D03882319F41092CA |
:1040E0009D0304C08F3F11F480939D038091670767 |
:1040F0008B3F98F08B3F19F480914E040EC08C3F9B |
:1041000019F48091500409C08D3F19F48091520434 |
:1041100004C08E3F21F48091540480939E038091CB |
:104120009E03882319F410929E0304C08F3F11F45C |
:1041300080939E0380916A078B3F98F08B3F19F420 |
:1041400080914E040EC08C3F19F48091500409C038 |
:104150008D3F19F48091520404C08E3F21F4809168 |
:1041600054048093760480917604882319F4109285 |
:10417000760404C08F3F11F48093760480916B071E |
:104180008B3F98F08B3F19F480914E040EC08C3F0A |
:1041900019F48091500409C08D3F19F480915204A4 |
:1041A00004C08E3F21F48091540480937704809161 |
:1041B0007704882319F41092770404C08F3F11F418 |
:1041C00080937704809170078B3F98F08B3F19F4B0 |
:1041D00080914E040EC08C3F19F48091500409C0A8 |
:1041E0008D3F19F48091520404C08E3F21F48091D8 |
:1041F000540480939F0380919F03882319F41092A5 |
:104200009F0304C08F3F11F480939F0360919C0330 |
:1042100070E080E090E00E94AE3B27E137EB41ED9B |
:1042200058E30E94643C60939003709391038093E1 |
:10423000920390939303809154078093AF078091EA |
:10424000530780939307089580915F04882301F5B5 |
:104250001092900710928B071092A8071092AA074D |
:104260008091B003882311F080938B078091B10374 |
:10427000882311F0809390078091B203882311F076 |
:104280008093AA078091B303882311F08093A80735 |
:1042900080918B07E1EDF6E08093D1061092D20673 |
:1042A000809190078093D30613828091AA07809310 |
:1042B000D50615828091A8078093D70617821092A1 |
:1042C000EF031092F0030E94281508951092010444 |
:1042D00010920004109203041092020480E090E017 |
:1042E000A0E0B0E08093040490930504A09306043A |
:1042F000B09307041092F7031092F6031092F9039B |
:104300001092F8031092FB031092FA0310927604B5 |
:10431000109277040E94C41C84E690E00E94C20CB4 |
:104320000E94C41C8091490780FF10C080910F0338 |
:1043300090911003875B934038F480910F03909124 |
:1043400010038E5E924010F40E941C108091CC03EA |
:104350009091CD039093F7038093F6038091CE0361 |
:104360009091CF039093F9038093F8038091D00349 |
:104370009091D1039093FB038093FA038091F8030B |
:104380009091F9039093FD038093FC038091F603D1 |
:104390009091F7039093FF038093FE03F999FECF6A |
:1043A00024E030E032BD21BDF89A80B5853038F187 |
:1043B0008091B7079091B80797FF03C090958195BA |
:1043C0009F4F6CE070E00E94063D70930304609381 |
:1043D00002048091AD079091AE0797FF03C09095BE |
:1043E00081959F4F6CE070E00E94063D7093010440 |
:1043F000609300046091FD067091FE0642C0F99939 |
:10440000FECF32BD21BDF89A30B5F999FECF85E0D7 |
:1044100090E092BD81BDF89A20B5932F80E0820F85 |
:10442000911D9093010480930004F999FECF86E0DA |
:1044300090E092BD81BDF89A30B5F999FECF87E042 |
:1044400090E092BD81BDF89A20B5932F80E0820F55 |
:10445000911D9093030480930204F999FECF88E0A4 |
:1044600090E092BD81BDF89A30B5F999FECF89E010 |
:1044700090E092BD81BDF89A20B5732F60E0620F85 |
:10448000711D882777FD8095982F0E94B03B60931F |
:10449000040470930504809306049093070410921B |
:1044A0002A0410922B0410922C0410922D041092C6 |
:1044B0002E0410922F0410923004109231041092A6 |
:1044C0003204109233041092340410923504109286 |
:1044D0003604109237041092380410923904109266 |
:1044E0003A0410923B0410923C0410923D04109246 |
:1044F00092071092910710928A07109289071092E2 |
:10450000B1071092B00780910B0390910C03A0911A |
:104510000D03B0910E03909300078093FF06109255 |
:10452000DF031092DE0310924204109243041092B3 |
:10453000440410924504809146049091470490935E |
:104540004904809348040E943D3A82E390E09093AE |
:10455000C6038093C50360916C0770E080E090E033 |
:1045600024EC39E040E050E00E94C73C60938803AF |
:104570007093890380938A0390938B0360916D07F6 |
:1045800070E080E090E00E94C73C60938C037093E1 |
:104590008D0380938E0390938F031092A10310924A |
:1045A000A00308951F93CF93DF93182FC4E6D0E0A4 |
:1045B0000DC0115080915F04882351F4D093C6033D |
:1045C000C093C5038AEF90E00E94AC0C112389F7D9 |
:1045D000DF91CF911F9108952F923F924F925F925A |
:1045E0006F927F928F929F92AF92BF92CF92DF9203 |
:1045F000EF92FF920F931F93DF93CF93CDB7DEB768 |
:1046000028970FB6F894DEBF0FBECDBF0E94E2160A |
:10461000299A80915D0490915E049C013A832983DC |
:1046200037FF02C01A82198280915604843608F03E |
:1046300061C0809103018823B9F480E090E00E947A |
:104640006D0C80910403909105038F5F9F4F61F47F |
:1046500088E99AE39093C6038093C50380E09CE0C9 |
:1046600090930503809304038091A3049091A40484 |
:10467000009731F001979093A4048093A30404C0A1 |
:1046800010925F0410924C04809100018A3011F462 |
:10469000289A01C0289880919E0490919F04815D82 |
:1046A000974028F180915A07482F50E05A83498358 |
:1046B00081E080934C04E0914107F0E0EE0FFF1F92 |
:1046C000EB5EF84F11821082E0914207F0E0EE0FAE |
:1046D000FF1FEB5EF84F11821082E0914407F0E07B |
:1046E000EE0FFF1FEB5EF84F11821082AEC21092E8 |
:1046F0005F04ABC2809156048D3808F4A6C21092B4 |
:104700004C0480915B0722E3829FC00111249093A7 |
:10471000A4048093A30469817A81693271056CF0E5 |
:1047200080919E0490919F047FEF8F3F970729F01F |
:10473000019690939F0480939E0480919E04909193 |
:104740009F04883C910520F089819A81889704F51F |
:104750001092BD041092BE041092BF041092C004C7 |
:104760001092B9041092BA041092BB041092BC04C7 |
:1047700010923A0410923B0410923C0410923D04B3 |
:1047800010923E0410923F04109240041092410493 |
:10479000E0914307F0E0EE0FFF1FEB5EF84F8081E2 |
:1047A0009181813591050CF49CC180915F0488232F |
:1047B00009F097C180914407E82FF0E0EE0FFF1F4A |
:1047C000EB5EF84F808191818C3491050CF4C8C068 |
:1047D0008091A2048F5F8093A204893C08F481C178 |
:1047E000299810925F041092A20410929F041092D4 |
:1047F0009E0480914107482F50E0FA01EE0FFF1F01 |
:10480000EB5EF84F80819181873491059CF4E091B3 |
:104810004207F0E0EE0FFF1FEB5EF84F0190F081D2 |
:10482000E02DF7FF03C0F095E195FF4FE734F10568 |
:104830000CF478C080914207A82FB0E0FD01EE0F84 |
:10484000FF1FEB5EF84F808191818734910544F022 |
:10485000FA01EE0FFF1FEB5EF84F0190F081E02DA3 |
:10486000FD01EE0FFF1FEB5EF84F808191818734D1 |
:10487000910564F0FA01EE0FFF1FEB5EF84F8081A7 |
:1048800091818734910514F022E001C021E0FD01FF |
:10489000EE0FFF1FEB5EF84F80819181863491050A |
:1048A0005CF4FA01EE0FFF1FEB5EF84F80819181FF |
:1048B000873491050CF023E0FD01EE0FFF1FEB5E46 |
:1048C000F84F808191818A5B9F4F5CF4FA01EE0F73 |
:1048D000FF1FEB5EF84F80819181873491050CF0CA |
:1048E00024E0AA0FBB1FAB5EB84F8D919C918A5BF1 |
:1048F0009F4F5CF4440F551F4B5E584FDA018D916A |
:104900009C91863491050CF425E0F999FECF1FBAED |
:1049100082E090E092BD81BD20BD0FB6F894FA9A76 |
:10492000F99A0FBE8091490780FF10C080910F0354 |
:1049300090911003875B934038F480910F0390911E |
:1049400010038E5E924010F40E941C100E946D02B3 |
:1049500047E461E477E00E94A2020E946621BAC0A7 |
:1049600080819181855B9F4F0CF0B9C08091A2043A |
:104970008F5F8093A204893C08F4B3C02998F99909 |
:10498000FECF1FBA04E010E012BD01BD8FEF80BD65 |
:104990000FB6F894FA9AF99A0FBE10925F0410922B |
:1049A000A20410929F0410929E040E94662180919E |
:1049B000000490910104F999FECF1FBA12BD01BD08 |
:1049C00060E071E00E94063D60BD0FB6F894FA9A6F |
:1049D000F99A0FBE2091000430910104F999FECF9D |
:1049E0001FBA85E090E092BD81BDC90160E071E031 |
:1049F0000E94063D80BD0FB6F894FA9AF99A0FBE50 |
:104A00002091020430910304F999FECF1FBA86E089 |
:104A100090E092BD81BDC90160E071E00E94063D59 |
:104A200060BD0FB6F894FA9AF99A0FBE209102046D |
:104A300030910304F999FECF1FBA87E090E092BD50 |
:104A400081BDC90160E071E00E94063D80BD0FB6E6 |
:104A5000F894FA9AF99A0FBE209104043091050453 |
:104A60004091060450910704F999FECF1FBA88E0DF |
:104A700090E092BD81BDCA01B9010E947D3BDC017D |
:104A8000CB0160E071E00E94063D60BD0FB6F89476 |
:104A9000FA9AF99A0FBE20910404309105044091CE |
:104AA000060450910704F999FECF1FBA89E090E0FF |
:104AB00092BD81BDCA01B9010E947D3BDC01CB01E1 |
:104AC00060E071E00E94063D80BD0FB6F894FA9A4E |
:104AD000F99A0FBE0E946D020E94D22202C010926B |
:104AE000A204E0914307F0E0EE0FFF1FEB5EF84FEA |
:104AF000808191818B5A9F4F0CF0A7C0E0914407B1 |
:104B0000F0E0EE0FFF1FEB5EF84F80819181855B37 |
:104B10009F4F0CF07AC0E0914807F0E0EE0FFF1FC6 |
:104B2000EB5EF84F80819181893791050CF46DC05F |
:104B30008091A1048F5F8093A104893C08F467C031 |
:104B400088EC8093A10481E090E090939F0480938F |
:104B50009E0481E080935F041092B5041092B60425 |
:104B60001092B7041092B80410923A0410923B04C9 |
:104B700010923C0410923D0410923E0410923F04A7 |
:104B8000109240041092410410922A0410922B04B7 |
:104B900010922C0410922D041092320410923304BF |
:104BA000109234041092350480910A0490910B0401 |
:104BB000A0910C04B0910D0480932E0490932F04C7 |
:104BC000A0933004B09331048091120490911304A7 |
:104BD000A0911404B0911504809336049093370487 |
:104BE000A0933804B09339041092BD041092BE040F |
:104BF0001092BF041092C0041092B9041092BA042B |
:104C00001092BB041092BC0402C01092A104E09167 |
:104C10004807F0E0EE0FFF1FEB5EF84F80819181B7 |
:104C200044978CF48091A0048F5F8093A004853614 |
:104C300060F010925F0484E68093A00410929F04B9 |
:104C400010929E0402C01092A00480916C038150C7 |
:104C500080936C038F5F29F080914C04882309F4C2 |
:104C600090C30E94111E80914107882E9924F4015F |
:104C7000EE0FFF1FB5E1CB2EB7E0DB2ECE0EDF1E11 |
:104C8000D6018D919C91E0905007FF249C012E9DB0 |
:104C9000C0012F9D900D3E9D900D11244091570411 |
:104CA000509158049A01220F331F240F351F820F91 |
:104CB000931F64E070E00E94063DCB01709358049E |
:104CC00060935704E55DF84F2081318100915107D1 |
:104CD00010E0A901409F9001419F300D509F300D81 |
:104CE0001124820F931F90935804809357042091AE |
:104CF0004207A22EBB24AA0CBB1CF501EB5EF84FA9 |
:104D000080819181BC016E9DC0016F9D900D7E9D43 |
:104D1000900D11244091590450915A049A01220F88 |
:104D2000331F240F351F820F931F64E070E00E9431 |
:104D3000063DCB0170935A0460935904ABE2B7E08F |
:104D4000AA0EBB1EF50120813181A901409F90016F |
:104D5000419F300D509F300D1124820F931F90936F |
:104D60005A0480935904E0914407F0E0EE0FFF1FCE |
:104D7000EB5EF84F80819181909581959F4F909344 |
:104D80005C0480935B04E0914307F0E0EE0FFF1FAB |
:104D9000EB5EF84F8081918188589F4F90935E041D |
:104DA00080935D04D6018D919C9120917E04309179 |
:104DB0007F0497FF03C0909581959F4F281739076F |
:104DC000C4F4880C991CE5E1F7E08E0E9F1ED40117 |
:104DD000ED91FC91F0937F04E0937E04F7FF0FC008 |
:104DE000882799278E1B9F0B90937F0480937E04C6 |
:104DF00006C02150304030937F0420937E04809180 |
:104E00004207A82FB0E0FD01EE0FFF1FEB5EF84F49 |
:104E100080819181209180043091810497FF03C0AB |
:104E2000909581959F4F28173907ACF4AA0FBB1FA7 |
:104E3000AB5EB84FED91FC91F0938104E093800458 |
:104E4000F7FF0FC0882799278E1B9F0B9093810433 |
:104E50008093800406C02150304030938104209319 |
:104E6000800480914C04882341F010927F041092BA |
:104E70007E0410928104109280046091990370E086 |
:104E800080E090E00E94AE3B20E030E040E251E460 |
:104E90000E94AD3A20E030E040E85BE30E94643CD1 |
:104EA0006093B2077093B3078093B4079093B507EC |
:104EB00060919A0370E080E090E00E94AE3B20E0B9 |
:104EC00030EE4BE257E40E94153B6093A4077093C9 |
:104ED000A5078093A6079093A7078091B503882321 |
:104EE00031F08AE090E09093C6038093C5038091EF |
:104EF000B50382FF09C080916E04482F50E0440F33 |
:104F0000551F440F551F10C083FD03C040E050E003 |
:104F10000BC080916E0490E0880F991F880F991F35 |
:104F200044275527481B590B209178043091790468 |
:104F3000C901F3E0880F991FFA95E1F7821B930BE3 |
:104F4000840F951F68E070E00E94063D709379041D |
:104F5000609378048091B50384FF09C080916E044A |
:104F6000482F50E0440F551F440F551F10C085FDBA |
:104F700003C040E050E00BC080916E0490E0880FC9 |
:104F8000991F880F991F44275527481B590B2091BB |
:104F90007A0430917B04C90163E0880F991F6A95F8 |
:104FA000E1F7821B930B840F951F68E070E00E946D |
:104FB000063D70937B0460937A048091B40383FF71 |
:104FC00003C082E390E004C082FF07C08EEC9FEF35 |
:104FD00090937D0480937C0404C010927D04109211 |
:104FE0007C048091B40381FF09C08091A00390915B |
:104FF000A10301969093A1038093A0038091B40331 |
:1050000084FF09C08091A0039091A1030197909320 |
:10501000A1038093A003809178049091790468E0C3 |
:1050200070E00E94063DE0915704F0915804E60FAD |
:10503000F71FF0935804E093570480917A049091FD |
:105040007B0468E070E00E94063D40915904509155 |
:105050005A04460F571F50935A04409359046091C5 |
:105060005B0470915C0480917C0490917D04680FD6 |
:10507000791F70935C0460935B048091200680FF2D |
:105080005CC080916E04813808F457C020915007AD |
:1050900030E080911906992787FD9095DC012A9FC1 |
:1050A000C0012B9F900D3A9F900D1124E80FF91F1E |
:1050B000F0935804E093570480911A06992787FDCE |
:1050C0009095FC012E9FC0012F9F900D3E9F900D4B |
:1050D0001124480F591F50935A044093590480914A |
:1050E0001B06992787FD9095680F791F70935C04C4 |
:1050F00060935B0420914E0730E080911D06992754 |
:1051000087FD9095AC01249FC001259F900D349F91 |
:10511000900D11249093A1038093A00380911C060D |
:10512000282F30E080915D0490915E0428173907A4 |
:1051300024F430935E0420935D048091490782FF3C |
:105140000CC080E090E0A0E0B0E08093A4079093D2 |
:10515000A507A093A607B093A70720E030E040E0A2 |
:1051600050E06091B2077091B3078091B4079091BD |
:10517000B5070E94113B882364F480E090E0A0E032 |
:10518000B0E08093B2079093B307A093B407B093B5 |
:10519000B50720E030E040E050E06091A407709156 |
:1051A000A5078091A6079091A7070E94113B88232D |
:1051B00064F480E090E0A0E0B0E08093A4079093D6 |
:1051C000A507A093A607B093A70780914207A82F31 |
:1051D000B0E0FD01EE0FFF1FEB5EF84F2081318143 |
:1051E00080916807482F50E04217530744F480919C |
:1051F000750782FF04C081E080936A040FC0AA0F84 |
:10520000BB1FAB5EB84F2D913C9180916907481B45 |
:1052100051092417350714F410926A04809142074B |
:10522000A82FB0E0FD01EE0FFF1FEB5EF84F2081CD |
:10523000318180916807482F50E088279927841B87 |
:10524000950B2817390744F48091750783FF04C034 |
:1052500081E080936B0414C080916B04882381F0FB |
:10526000AA0FBB1FAB5EB84F2D913C91809169078F |
:1052700090E0841B950B8217930714F410926B0433 |
:1052800080914107A82FB0E0FD01EE0FFF1FEB5EFC |
:10529000F84F2081318180916807482F50E04217F4 |
:1052A000530744F48091750780FF04C081E0809328 |
:1052B0006D0413C080916D04882379F0AA0FBB1F81 |
:1052C000AB5EB84F2D913C9180916907481B510905 |
:1052D0002417350714F410926D0480914107A82F0C |
:1052E000B0E0FD01EE0FFF1FEB5EF84F2081318132 |
:1052F00080916807482F50E088279927841B950BD9 |
:105300002817390744F48091750781FF04C081E0B4 |
:1053100080936C0414C080916C04882381F0AA0FE0 |
:10532000BB1FAB5EB84F2D913C918091690790E017 |
:10533000841B950B8217930714F410926C048091D0 |
:105340006A04882321F480916B04882321F081E092 |
:105350008093690402C01092690480916D048823CF |
:1053600021F480916C04882351F081E080936804DB |
:105370001092690410926A0410926B0402C0109299 |
:10538000680480916904882331F084E690E090936A |
:10539000C6038093C50380916904882321F480911A |
:1053A0006804882351F08091670790E069817A81D1 |
:1053B0008617970714F49A83898380914C04882375 |
:1053C00041F110925C0410925B0410925804109208 |
:1053D000570410925A04109259048DEC9CECACECDA |
:1053E000BDE38093B2079093B307A093B407B09343 |
:1053F000B5078AE097EDA3EABBE38093A4079093F7 |
:10540000A507A093A607B093A7071092690410926E |
:10541000680420919C0730919D0740919E07509110 |
:105420009F0780910A0490910B04A0910C04B09105 |
:105430000D04820F931FA41FB51F80939C079093A8 |
:105440009D07A0939E07B0939F072091A0073091DE |
:10545000A1074091A2075091A30780911204909157 |
:105460001304A0911404B0911504820F931FA41F7C |
:10547000B51F8093A0079093A107A093A207B093B4 |
:10548000A30720919407309195074091960750917A |
:10549000970780910E0490910F04A0911004B09191 |
:1054A0001104820F931FA41FB51F8093940790933C |
:1054B0009507A0939607B093970720918C0730919A |
:1054C0008D0740918E0750918F078091160490911F |
:1054D0001704A0911804B0911904820F931FA41F00 |
:1054E000B51F80938C0790938D07A0938E07B09380 |
:1054F0008F0780916804882329F4809169048823A8 |
:1055000009F45CC010921A0410921B0410921C043F |
:1055100010921D0410921E0410921F041092200479 |
:105520001092210410929C0710929D0710929E07E2 |
:1055300010929F071092A0071092A1071092A20745 |
:105540001092A30710929407109295071092960755 |
:105550001092970710928C0710928D0710928E0769 |
:1055600010928F0780912A0490912B04A0912C0413 |
:10557000B0912D0480932E0490932F04A0933004B7 |
:10558000B09331048091320490913304A09134049B |
:10559000B09135048093360490933704A093380477 |
:1055A000B09339041092E1031092E0031092670463 |
:1055B000109266041092650410926404809168044D |
:1055C000882309F015C180916904882309F010C16E |
:1055D00060910A0470910B0480910C0490910D0469 |
:1055E000A0905507BB24CC24DD24E090AD07F090BB |
:1055F000AE07A60195010E943B3D39014A010027F3 |
:10560000F7FC0095102F6E187F08800A910A6091B0 |
:105610001204709113048091140490911504E09089 |
:10562000B707F090B807A60195010E943B3D5901CC |
:105630006A010027F7FC0095102FAE18BF08C00ABA |
:10564000D10AC401B30120E130E040E050E00E9403 |
:105650003B3D522E432E342E252E822F932FA42FE6 |
:10566000B52F3C014D01C601B50120E130E040E01D |
:1056700050E00E943B3DC22EA32ED42EB52E822F89 |
:10568000932FA42FB52F7C018D0180917E049091E2 |
:105690007F04409734F48091800490918104409776 |
:1056A000E4F0652D742D832D922D23E030E040E051 |
:1056B00050E00E943B3DC901DA013C014D016C2DD7 |
:1056C0007A2D8D2D9B2D23E030E040E050E00E94AC |
:1056D0003B3DC901DA017C018D01E0914407F0E016 |
:1056E000EE0FFF1FEB5EF84F0190F081E02DF7FF0A |
:1056F00003C0F095E195FF4F7A97C4F0C401B30160 |
:1057000023E030E040E050E00E943B3DC901DA0177 |
:105710003C014D01C801B70123E030E040E050E01A |
:105720000E943B3DC901DA017C018D0171E26716DF |
:1057300071048104910434F020E2622E712C812CDA |
:10574000912C11C080EE68168FEF78068FEF8806D7 |
:105750008FEF980644F490EE692E9FEF792E9FEF1D |
:10576000892E9FEF992E91E2E916F10401051105AA |
:1057700034F080E2E82EF12C012D112D11C0A0EEA5 |
:10578000EA16AFEFFA06AFEF0A07AFEF1A0744F4D5 |
:1057900000EEE02E0FEFF02E0FEF002F0FEF102F87 |
:1057A00080912A0490912B04A0912C04B0912D0497 |
:1057B00086199709A809B90980932A0490932B04A4 |
:1057C000A0932C04B0932D04809132049091330463 |
:1057D000A0913404B09135048E199F09A00BB10B30 |
:1057E0008093320490933304A0933404B09335042F |
:1057F0008091E0039091E1038F3F910509F008F457 |
:1058000085C580916804882309F004C580916904E6 |
:10581000882309F0FFC460919C0770919D078091D7 |
:105820009E0790919F0720E031E040E050E00E9409 |
:105830003B3DC901DA0180939C0790939D07A0939B |
:105840009E07B0939F076091A0077091A107809178 |
:10585000A2079091A30720E031E040E050E00E94D1 |
:105860003B3DC901DA018093A0079093A107A09363 |
:10587000A207B093A30720911A0430911B04409112 |
:105880001C0450911D04E0905507FF2400E010E037 |
:10589000C801B7010E94C73C20E031E040E050E081 |
:1058A0000E943B3DC901DA0180931A0490931B04C6 |
:1058B000A0931C04B0931D0420911E0430911F047A |
:1058C0004091200450912104C801B7010E94C73CB7 |
:1058D00020E031E040E050E00E943B3DC901DA01A8 |
:1058E00080931E0490931F04A0932004B09321047E |
:1058F00060912204709123048091240490912504E6 |
:1059000020E031E040E050E00E943B3DC901DA0177 |
:105910008093220490932304A0932404B09325043D |
:1059200060919C0770919D0780919E0790919F07C1 |
:1059300020911A0430911B0440911C0450911D04C5 |
:10594000621B730B840B950B6093A9047093AA04DC |
:105950008093AB049093AC04E0906E07FF2400E0CA |
:1059600010E0A80197010E943B3D59016A01209374 |
:10597000960430939704409398045093990460914F |
:10598000A0077091A1078091A2079091A307209191 |
:105990001E0430911F044091200450912104621B89 |
:1059A000730B840B950B6093A5047093A6048093EE |
:1059B000A7049093A804A80197010E943B3D790198 |
:1059C0008A0120939204309393044093940450935B |
:1059D0009504C601B50120E031E040E050E00E94AE |
:1059E0003B3D3093670420936604C801B70120E073 |
:1059F00031E040E050E00E943B3D3093650420934D |
:105A0000640480917E0490917F044097BCF480915F |
:105A100080049091810440978CF4E0914407F0E079 |
:105A2000EE0FFF1FEB5EF84F0190F081E02DF7FFC6 |
:105A300003C0F095E195FF4F7A978CF08091660452 |
:105A40009091670462E070E00E94063DCB0162E045 |
:105A500070E00E94063D7093670460936604609155 |
:105A6000940770919507809196079091970720E091 |
:105A700031E040E050E00E943B3DC901DA018093F3 |
:105A8000940790939507A0939607B093970760911A |
:105A90008C0770918D0780918E0790918F0720E081 |
:105AA00031E040E050E00E943B3DC901DA018093C3 |
:105AB0008C0790938D07A0938E07B0938F07E0908B |
:105AC0000E04F0900F0400911004109111048091C5 |
:105AD0000A0490910B04A0910C04B0910D04E81AF3 |
:105AE000F90A0A0B1B0BE092B104F092B204009386 |
:105AF000B3041093B404209116043091170440911C |
:105B00001804509119048091120490911304A091EB |
:105B10001404B0911504281B390B4A0B5B0B20931E |
:105B2000AD043093AE044093AF045093B004E092C0 |
:105B3000A904F092AA040093AB041093AC04209340 |
:105B4000A5043093A6044093A7045093A804809121 |
:105B50002E0490912F04A0913004B09131048E193D |
:105B60009F09A00BB10B80932E0490932F04A09358 |
:105B70003004B09331048091360490913704A091A1 |
:105B80003804B0913904821B930BA40BB50B80939E |
:105B9000360490933704A0933804B093390460918D |
:105BA0001A0470911B0480911C0490911D042AE139 |
:105BB00030E040E050E00E943B3D3093DC06209313 |
:105BC000DB0660911E0470911F0480912004909167 |
:105BD00021042AE130E040E050E00E943B3D309358 |
:105BE000DE062093DD068091A9049091AA0490938B |
:105BF000E0068093DF068091A5049091A60490931F |
:105C0000E2068093E10660919C0770919D07809168 |
:105C10009E0790919F072AE130E040E050E00E940B |
:105C20003B3D3093E4062093E3066091A00770911A |
:105C3000A1078091A2079091A3072AE130E040E0FC |
:105C400050E00E943B3D3093E6062093E5068091AC |
:105C50009204909193049093F4068093F3068091BC |
:105C60006404909165049C01B3E0220F331FBA9540 |
:105C7000E1F7880F991F280F391F3093F6062093FC |
:105C8000F50681E090E090939104809390048091D8 |
:105C90009C0790919D07A0919E07B0919F0720912E |
:105CA00088043091890440918A0450918B04281B08 |
:105CB000390B4A0B5B0B57FF07C050954095309549 |
:105CC00021953F4F4F4F5F4F20523E444040504040 |
:105CD0000CF0D7C02091A9043091AA044091AB04E4 |
:105CE0005091AC042130E0E13E07E0E04E07E0E0F7 |
:105CF0005E070CF453C080918F04882309F44AC0D6 |
:105D0000DA01C901FCE0B595A79597958795FA95B5 |
:105D1000D1F701969093910480939004CA01B90140 |
:105D200028E030E040E050E00E943B3DC901DA014C |
:105D30008093960490939704A0939804B093990449 |
:105D400089589341A040B04064F088E893E1A0E016 |
:105D5000B0E08093960490939704A0939804B09336 |
:105D600099046091960470919704809198049091A1 |
:105D7000990420E031E040E050E00E943B3D8091FA |
:105D8000660490916704820F931F90936704809339 |
:105D9000660406C081E080938F0402C010928F04D5 |
:105DA0004091A9045091AA046091AB047091AC0495 |
:105DB000403020EF52072FEF62072FEF72070CF0F1 |
:105DC0005DC080918E04882309F454C088279927E8 |
:105DD000DC01841B950BA60BB70BECE0B595A795E2 |
:105DE00097958795EA95D1F7209190043091910489 |
:105DF000280F391F3093910420939004CB01BA01EE |
:105E000028E030E040E050E00E943B3DC901DA016B |
:105E10008093960490939704A0939804B093990468 |
:105E200088579C4EAF4FBF4F64F488E79CEEAFEFAE |
:105E3000BFEF8093960490939704A0939804B09337 |
:105E400099046091960470919704809198049091C0 |
:105E5000990420E031E040E050E00E943B3D809119 |
:105E6000660490916704820F931F90936704809358 |
:105E700066040BC081E080938E0407C010928E04EC |
:105E800004C0109291041092900480916F07282F03 |
:105E900030E080919004909191042817390724F400 |
:105EA00030939104209390048091A9049091AA04C6 |
:105EB000A091AB04B091AC0481509440A040B0409C |
:105EC00074F08091F6039091F70320919004309143 |
:105ED0009104820F931F9093F7038093F6038091B0 |
:105EE000A9049091AA04A091AB04B091AC04805095 |
:105EF0009C4FAF4FBF4F74F48091F6039091F7031E |
:105F00002091900430919104821B930B9093F7039E |
:105F10008093F60381E090E0909391048093900445 |
:105F2000109292041092930410929404109295048B |
:105F30008091A0079091A107A091A207B091A3071B |
:105F40002091840430918504409186045091870407 |
:105F5000281B390B4A0B5B0B57FF07C05095409528 |
:105F6000309521953F4F4F4F5F4F20523E44404068 |
:105F700050400CF0DDC0E090A504F090A604009124 |
:105F8000A7041091A80471E0E71670E1F70670E02D |
:105F9000070770E017070CF458C080918D04882320 |
:105FA00009F44FC0A80197016CE0559547953795C6 |
:105FB00027956A95D1F78091900490919104820F72 |
:105FC000931F9093910480939004C801B70128E037 |
:105FD00030E040E050E00E943B3DC901DA0180938F |
:105FE000920490939304A0939404B09395048958D9 |
:105FF0009341A040B04064F088E893E1A0E0B0E0B5 |
:106000008093920490939304A0939404B093950486 |
:1060100060919204709193048091940490919504FE |
:1060200020E031E040E050E00E943B3D809164047C |
:1060300090916504820F931F90936504809364048C |
:1060400006C081E080938D0402C010928D044091BF |
:10605000A5045091A6046091A7047091A804403053 |
:10606000F0EF5F07FFEF6F07FFEF7F070CF05DC0FA |
:1060700080918C04882309F454C088279927DC0177 |
:10608000841B950BA60BB70B2CE0B595A7959795A0 |
:1060900087952A95D1F72091900430919104280F8B |
:1060A000391F3093910420939004CB01BA0128E06A |
:1060B00030E040E050E00E943B3DC901DA018093AE |
:1060C000920490939304A0939404B09395048857FA |
:1060D0009C4EAF4FBF4F64F488E79CEEAFEFBFEF2D |
:1060E0008093920490939304A0939404B0939504A6 |
:1060F000609192047091930480919404909195041E |
:1061000020E031E040E050E00E943B3D809164049B |
:1061100090916504820F931F9093650480936404AB |
:106120000BC081E080938C0407C010928C0404C0E3 |
:10613000109291041092900480916F07282F30E004 |
:1061400080919004909191042817390724F430939A |
:106150009104209390048091A5049091A604A091AD |
:10616000A704B091A80481509440A040B04074F0BE |
:106170008091F8039091F90320919004309191045B |
:10618000820F931F9093F9038093F8038091A504E5 |
:106190009091A604A091A704B091A80480509C4FB0 |
:1061A000AF4FBF4F74F48091F8039091F9032091A1 |
:1061B000900430919104821B930B9093F903809388 |
:1061C000F80380919204909193049093F006809349 |
:1061D000EF068091F6039091F7039093E806809381 |
:1061E000E7068091F8039091F9032091FC03309128 |
:1061F000FD03821B930B9C0103E0220F331F0A95C2 |
:10620000E1F7880F991F280F391F3093EA06209372 |
:10621000E90608C0109265041092640410926704A5 |
:106220001092660420E030E040E050E06091A40766 |
:106230007091A5078091A6079091A7070E94113B36 |
:10624000882341F41092650410926404109267044C |
:106250001092660480919C0790919D07A0919E07E3 |
:10626000B0919F078093880490938904A0938A0437 |
:10627000B0938B048091A0079091A107A091A207F1 |
:10628000B091A3078093840490938504A09386041F |
:10629000B093870410921A0410921B0410921C04ED |
:1062A00010921D0410921E0410921F0410922004DC |
:1062B00010922104109222041092230410922404BC |
:1062C0001092250410929C0710929D0710929E0731 |
:1062D00010929F071092A0071092A1071092A20798 |
:1062E0001092A307109294071092950710929607A8 |
:1062F0001092970710928C0710928D0710928E07BC |
:1063000010928F071092E1031092E00380915B04DA |
:1063100090915C0497FF03C0909581959F4F45979E |
:106320003CF08091490784FD03C081E080939A048A |
:10633000F0905207C0905B04D0905C04B6018827AF |
:1063400077FD8095982F2F2D30E040E050E00E949F |
:10635000C73CF601D7FE04C0EE27FF27EC19FD0964 |
:106360009F01442737FD4095542F0E94C73C20E0F1 |
:1063700032E040E050E00E943B3D89019A018F2DC0 |
:1063800090E0BC016C9DC0016D9D900D7C9D900DB9 |
:10639000112464E070E00E94063D600F711F8827A1 |
:1063A00077FD8095982F6093B5047093B604809321 |
:1063B000B7049093B80420913A0430913B04409183 |
:1063C0003C0450913D04261B370B480B590B20937E |
:1063D0003A0430933B0440933C0450933D04809135 |
:1063E0003A0490913B04A0913C04B0913D04815546 |
:1063F000934CA040B04064F080E593ECA0E0B0E0A6 |
:1064000080933A0490933B04A0933C04B0933D04E2 |
:1064100080913A0490913B04A0913C04B0913D04DA |
:10642000805B9C43AF4FBF4F64F480EB9CE3AFEFC6 |
:10643000BFEF80933A0490933B04A0933C04B09345 |
:106440003D048091460490914704892B09F498C03B |
:106450008091490783FF94C060910A0470910B04F6 |
:1064600080910C0490910D0420E032E040E050E077 |
:106470000E943B3D890137FF03C0109501951F4FD6 |
:10648000609112047091130480911404909115048A |
:1064900020E032E040E050E00E943B3DA90137FFA0 |
:1064A00003C0509541955F4F401751070CF4A80168 |
:1064B00049315105A4F480919A04882381F0809198 |
:1064C000820490918304892B51F480914604909129 |
:1064D0004704909349048093480410929A042091B1 |
:1064E000980330E0429FC001439F900D529F900D52 |
:1064F0001124B6E095958795BA95E1F7A901481B57 |
:10650000590B14161506B4F58091820490918304FA |
:10651000892B41F500913A0410913B0420913C04F1 |
:1065200030913D0480914A0490914B04BC01469FF8 |
:10653000C001479F900D569F900D112460E270E0BE |
:106540000E94063D882777FD8095982F600F711F68 |
:10655000821F931F60933A0470933B0480933C0422 |
:1065600090933D048091820490918304009741F0C0 |
:10657000019702C084EF91E090938304809382049A |
:1065800080919B04815080939B048F5F09F078C0B9 |
:1065900088E180939B0460910A0470910B048091C0 |
:1065A0000C0490910D04E0905507FF2400E010E0EA |
:1065B000A80197010E943B3D3093BA062093B9068B |
:1065C0006091120470911304809114049091150449 |
:1065D000A80197010E943B3D3093BC062093BB0667 |
:1065E0008091AD079091AE079093BE068093BD0653 |
:1065F0008091B7079091B8079093C0068093BF062B |
:106600008091B0079091B1079093C2068093C10624 |
:1066100080916004909161049093C4068093C306B6 |
:106620006091420470914304809144049091450428 |
:1066300020E032E040E050E00E943B3D3093C6064F |
:106640002093C50680914604909147049093CA0612 |
:106650008093C9068091090390910A039093CC0618 |
:106660008093CB06809156048093CD061092CE067F |
:1066700080919807909199079093DA068093D906B4 |
:10668000809168048823A9F0609191077091920726 |
:10669000882777FD8095982F0E94B03B2091B20704 |
:1066A0003091B3074091B4075091B5070E94643C04 |
:1066B00032C060910A0470910B0480910C04909197 |
:1066C0000D04E0909107F09092070E94B03B20915A |
:1066D000A4073091A5074091A6075091A7070E94F3 |
:1066E000643C5B016C010027F7FC0095102FC8018A |
:1066F000B7010E94B03B2091B2073091B30740919F |
:10670000B4075091B5070E94643C9B01AC01C601DF |
:10671000B5010E94AD3A0E947D3B70939207609351 |
:106720009107809169048823A9F06091890770918D |
:106730008A07882777FD8095982F0E94B03B20918B |
:10674000B2073091B3074091B4075091B5070E944A |
:10675000643C32C06091120470911304809114045F |
:1067600090911504E0908907F0908A070E94B03B51 |
:106770002091A4073091A5074091A6075091A70743 |
:106780000E94643C5B016C010027F7FC0095102F10 |
:10679000C801B7010E94B03B2091B2073091B30706 |
:1067A0004091B4075091B5070E94643C9B01AC0135 |
:1067B000C601B5010E94AD3A0E947D3B70938A07E5 |
:1067C000609389076091B0077091B107A09026048B |
:1067D000B0902704C0902804D0902904882777FD22 |
:1067E0008095982F0E94B03B7B018C016091B2078D |
:1067F0007091B3078091B4079091B5079B01AC01EC |
:106800000E94AD3A9B01AC01C801B7010E94643CF3 |
:106810007B018C01C601B5010E94B03B2091A40709 |
:106820003091A5074091A6075091A7070E94643CAC |
:1068300020E030E040E05FE30E94643C9B01AC015B |
:10684000C801B7010E94AD3A0E947D3B7093B10729 |
:106850006093B00760911204709113048091140446 |
:10686000909115040E94B03B2091A4073091A50798 |
:106870004091A6075091A7070E94643C0E94823B6A |
:106880007093EC066093EB068091590490915A0442 |
:106890009093F8068093F7068091890790918A0774 |
:1068A0009093F2068093F106809191079091920760 |
:1068B0008150984034F080E098E090939207809364 |
:1068C000910780919107909192078050984F34F4EE |
:1068D00080E098EF909392078093910780918907C9 |
:1068E00090918A078150984034F080E098E090932E |
:1068F0008A07809389078091890790918A07805041 |
:10690000984F34F480E098EF90938A07809389073A |
:106910008091B0079091B1078150984034F080E0A9 |
:1069200098E09093B1078093B0078091B007909161 |
:10693000B1078050984F34F480E098EF9093B107FE |
:106940008093B0078091490780FFDFC09091950345 |
:1069500081FF0EC0923310F5809160049091610424 |
:106960004497909363048093620410924D0419C07D |
:106970002091A0033091A103290F311D80914E0772 |
:1069800090E0AC01249FC001259F900D349F900D95 |
:1069900011244497909363048093620481E0809370 |
:1069A0004D0480914C04882321F0109263041092CE |
:1069B000620420916004309161044091620450911E |
:1069C0006304421753070CF0A0C080914D04882344 |
:1069D00009F49BC08091960390E0241B350BBC0109 |
:1069E000629FC001639F900D729F900D112460E122 |
:1069F00070E00E94063D5B01C090DE03D090DF0393 |
:106A00006091420470914304809144049091450444 |
:106A1000E0909703FF2400E010E020E032E040E047 |
:106A200050E00E943B3DC801B7010E94C73C20E2F4 |
:106A300030E040E050E00E943B3DF9017FEF2E3C0A |
:106A4000370714F4EEECFFEF8091940390E0DC0143 |
:106A5000AC9DC001AD9D900DBC9D900D112468E0D2 |
:106A600070E00E94063D80919C0490919D049C01E1 |
:106A7000A4E0220F331FAA95E1F7281B390B261B30 |
:106A8000370B2A193B09CF01E333F10514F082E3F8 |
:106A900090E0281B390B89819A81820F931F60E156 |
:106AA00070E00E94063D70939D0460939C042091C9 |
:106AB0004A0730E062177307ACF4E981FA81E21704 |
:106AC000F30724F030939D0420939C0480914A079F |
:106AD00090E029813A812817390724F430939D04E6 |
:106AE00020939C0480919C0490919D0449815A813B |
:106AF0004817590724F450939D0440939C046091D7 |
:106B00009C0470919D047A8369838091AF07282F3C |
:106B100030E0C9014397A981BA81A817B90724F0C9 |
:106B2000F9017497FA83E98329813A813093C80681 |
:106B30002093C7062091B0073091B1078091B5042A |
:106B40009091B604A091B704B091B8044091AF07FA |
:106B500069817A81643171051CF4222433242EC0AA |
:106B6000E42FF0E0A901481B590BCA0129813A81A1 |
:106B700035952795821793070CF49C0189819A819A |
:106B800062E070E00E94063D709561957F4FC901FB |
:106B9000261737070CF4CB019F0169817A81261BE8 |
:106BA000370B281739070CF4C90129813A812E1BAC |
:106BB0003F0B1C01821793070CF419018091910778 |
:106BC000909192074090C9045090CA04840D951D7D |
:106BD000A0915704B0915804B887AF838A1B9B0BD0 |
:106BE00090939B0780939A076090A4077090A507E5 |
:106BF0008090A6079090A70720E030E040E050E0AA |
:106C0000C401B3010E94113B882309F440C0E09005 |
:106C10000A04F0900B0400910C0410910D04609193 |
:106C2000BD047091BE048091BF049091C0040E9485 |
:106C3000B03B5B016C01C801B7010E94B03BA401ED |
:106C400093010E94643C7B018C01EF81F885E4197B |
:106C5000F509BF01882777FD8095982F0E94B03BEA |
:106C60009B01AC01C801B7010E94AC3A9B01AC0189 |
:106C7000C601B5010E94AD3A0E947D3B6093BD0400 |
:106C80007093BE048093BF049093C0041CC02091F5 |
:106C90009A0730919B07442737FD4095542F8091E8 |
:106CA000BD049091BE04A091BF04B091C004820FB6 |
:106CB000931FA41FB51F8093BD049093BE04A0939F |
:106CC000BF04B093C0048091BD049091BE04A09114 |
:106CD000BF04B091C00481589E43A040B04064F00E |
:106CE00080E89EE3A0E0B0E08093BD049093BE04F2 |
:106CF000A093BF04B093C0048091BD049091BE04E2 |
:106D0000A091BF04B091C0048058914CAF4FBF4FC9 |
:106D100064F480E891ECAFEFBFEF8093BD049093F3 |
:106D2000BE04A093BF04B093C00460919A07709111 |
:106D30009B07882777FD8095982F0E94B03B7B01A9 |
:106D40008C016091BD047091BE048091BF0490914C |
:106D5000C0040E94B03B2091900330919103409178 |
:106D60009203509193030E94643C9B01AC01C801C3 |
:106D7000B7010E94AD3A0E947D3B8B01C10137FEF5 |
:106D800004C0882799278219930995958795498189 |
:106D90005A81840F951F9C01442737FD4095542F3D |
:106DA0002B833C834D835E8320919F0330E040E042 |
:106DB00050E06B817C818D819E810E94C73C20E4E4 |
:106DC00030E040E050E00E943B3DA901622F232FBC |
:106DD000041715071CF4C801602F292FEE27FF2781 |
:106DE000E41BF50B862F922FBC016E177F070CF466 |
:106DF000BF01E981FA81E20DF31D9F01260F371FC4 |
:106E000037FF03C020E030E008C08091AF07482F73 |
:106E100050E0421753070CF49A0180919307482FD2 |
:106E200050E0241735070CF49A0120938B079F013B |
:106E3000261B370B37FF03C020E030E008C08091ED |
:106E4000AF07482F50E0421753070CF49A01809186 |
:106E50009307482F50E0C901241735070CF4CA01E5 |
:106E6000809390078091890790918A074090CB0486 |
:106E70005090CC04840D951D4091590450915A04B2 |
:106E800058874F83841B950B9093880780938707BF |
:106E90006090A4077090A5078090A6079090A70720 |
:106EA00020E030E040E050E0C401B3010E94113B1B |
:106EB000882309F441C0E0901204F090130400917B |
:106EC0001404109115046091B9047091BA04809172 |
:106ED000BB049091BC040E94B03B5B016C01C801F3 |
:106EE000B7010E94B03BA40193010E94643C7B0166 |
:106EF0008C016F81788564197509DB01BD018827D4 |
:106F000077FD8095982F0E94B03B9B01AC01C80192 |
:106F1000B7010E94AC3A9B01AC01C601B5010E94C9 |
:106F2000AD3A0E947D3B6093B9047093BA0480939C |
:106F3000BB049093BC041CC0209187073091880744 |
:106F4000442737FD4095542F8091B9049091BA049D |
:106F5000A091BB04B091BC04820F931FA41FB51F66 |
:106F60008093B9049093BA04A093BB04B093BC047B |
:106F70008091B9049091BA04A091BB04B091BC0473 |
:106F800081589E43A040B04064F080E89EE3A0E0BA |
:106F9000B0E08093B9049093BA04A093BB04B0937B |
:106FA000BC048091B9049091BA04A091BB04B09143 |
:106FB000BC048058914CAF4FBF4F64F480E891EC13 |
:106FC000AFEFBFEF8093B9049093BA04A093BB04D2 |
:106FD000B093BC046091870770918807882777FD7C |
:106FE0008095982F0E94B03B7B018C016091B90481 |
:106FF0007091BA048091BB049091BC040E94B03B94 |
:10700000209190033091910340919203509193030A |
:107010000E94643C9B01AC01C801B7010E94AD3ADB |
:107020000E947D3B7B018C0120919F0330E040E07A |
:1070300050E06B817C818D819E810E94C73C20E461 |
:1070400030E040E050E00E943B3DC901422F232F39 |
:10705000E816F90614F44E2D2F2D66277727681BA6 |
:10706000790B842F922F9C01261737070CF49B0174 |
:1070700049815A8142195309420F531F57FF03C0D8 |
:1070800040E050E008C08091AF07682F70E06417BF |
:1070900075070CF4AB0180919307682F70E04617D9 |
:1070A00057070CF4AB014093AA0749815A81421B50 |
:1070B000530B9A012219330937FF03C020E030E057 |
:1070C00007C08091AF0790E0821793070CF49C01F2 |
:1070D0008091930790E0281739070CF49C012093C6 |
:1070E000A80728960FB6F894DEBF0FBECDBFCF918C |
:1070F000DF911F910F91FF90EF90DF90CF90BF90A5 |
:10710000AF909F908F907F906F905F904F903F9047 |
:107110002F90089581E08093410722E02093420759 |
:1071200083E08093430754E05093440745E0409345 |
:10713000450736E03093460787E08093470788E0AD |
:107140008093480780EC809349079EE190934A071B |
:107150008BEF80934C078AE080934D0790934B0709 |
:1071600090934F0720934E07209350075093510759 |
:10717000309352078FE0809353078AEF8093540730 |
:107180009093550780E88093560724E6209357078D |
:107190008CE8809358078EE58093590783E28093AB |
:1071A0005A0784E180935B0710925C0780E180932B |
:1071B0005D0780E580935E0710925F07109260077D |
:1071C0001092610710927107109272071092730764 |
:1071D000109274072093620788E2809363071092ED |
:1071E000760792E39093640786E98093650740935E |
:1071F0006607909367078AE580936807909369070D |
:107200001092750780936A0740936B0720936C0771 |
:1072100020936D0780E280936E0750936F079093E1 |
:107220007007ABE7B7E0EDE6F3E08CE001900D927C |
:107230008150E1F7089581E08093410782E08093D7 |
:10724000420723E02093430754E05093440745E06E |
:107250004093450736E03093460787E08093470721 |
:1072600088E08093480780E4809349079EE19093EB |
:107270004A078BEF80934C078AE080934D079093E9 |
:107280004B0790934F0720934E072093500750933E |
:107290005107309352078FE0809353078AEF809312 |
:1072A00054079093550780E88093560790E5909394 |
:1072B000570788E7809358078EE58093590783E244 |
:1072C00080935A0784E180935B0710925C0730E259 |
:1072D00030935D0790935E0710925F0710926007EE |
:1072E0001092610710927107109272071092730743 |
:1072F0001092740724E62093620788E28093630764 |
:107300001092760792E39093640786E9809365076D |
:1073100040936607909367078AE580936807909388 |
:1073200069071092750780936A0740936B07209353 |
:107330006C0720936D0730936E0750936F078BE4B3 |
:1073400080937007ABE7B7E0E7E7F3E08CE00190EC |
:107350000D928150E1F7089581E08093410782E02A |
:107360008093420783E08093430734E030934407DF |
:1073700045E04093450786E08093460787E0809389 |
:10738000470728E02093480780E4809349079EE15F |
:1073900090934A078BEF80934C078AE080934D07C8 |
:1073A00090934B0790934F0730934E0730935007BD |
:1073B000209351078CE0809352078FE0809353070E |
:1073C0008AEF809354079093550790E8909356075F |
:1073D00080E58093570756E9509358078EE58093D0 |
:1073E000590783E280935A0784E180935B071092E8 |
:1073F0005C0780E280935D0790935E0710925F07C1 |
:107400001092600710926107109271071092720734 |
:10741000109273071092740724E62093620788E2A3 |
:10742000809363071092760782E3809364075093FA |
:10743000650740936607809367079AE5909368070E |
:10744000809369071092750790936A0740936B07C2 |
:1074500020936C0720936D0780E180936E07309333 |
:107460006F0720937007ABE7B7E0EFE7F3E08CE03E |
:1074700001900D928150E1F708958091CD04909193 |
:10748000CE04A091CF04B091D0048093D504909302 |
:10749000D604A093D704B093D8048091D1049091DE |
:1074A000D204A091D304B091D4048093D9049093D2 |
:1074B000DA04A093DB04B093DC0408951092CA04AC |
:1074C0001092C9041092CC041092CB040895FC01D0 |
:1074D0004150504030F001900616D1F73197CF015E |
:1074E0000895882799270895A0E0B0E0EAE7FAE335 |
:1074F0000C94603D7C01EB018A01690109C0CE0159 |
:107500002196F6010995F70181937F010150104002 |
:1075100001151105A1F7CDB7DEB7E8E00C947C3D6D |
:10752000A0E0B0E0E6E9FAE30C94603DEC017B01F9 |
:107530008A01690109C0F70161917F01CE0121969D |
:10754000F60109950150104001151105A1F7CDB7BD |
:10755000DEB7E8E00C947C3D5058BB27AA270ED03C |
:1075600075C166D130F06BD120F031F49F3F11F43A |
:107570001EF45BC10EF4E095E7FB51C1E92F77D112 |
:1075800080F3BA17620773078407950718F071F440 |
:107590009EF58FC10EF4E0950B2EBA2FA02D0B0196 |
:1075A000B90190010C01CA01A0011124FF27591B48 |
:1075B00099F0593F50F4503E68F11A16F040A22F4E |
:1075C000232F342F4427585FF3CF469537952795BF |
:1075D000A795F0405395C9F77EF41F16BA0B620BBE |
:1075E000730B840BBAF09150A1F0FF0FBB1F661F05 |
:1075F000771F881FC2F70EC0BA0F621F731F841F48 |
:1076000048F4879577956795B795F7959E3F08F06D |
:10761000B3CF9395880F08F09927EE0F979587952C |
:107620000895D9D008F481E008950CD00FC107D196 |
:1076300040F0FED030F021F45F3F19F0F0C051115E |
:1076400039C1F3C014D198F39923C9F35523B1F389 |
:10765000951B550BBB27AA2762177307840738F0C1 |
:107660009F5F5F4F220F331F441FAA1FA9F333D020 |
:107670000E2E3AF0E0E830D091505040E695001CD4 |
:10768000CAF729D0FE2F27D0660F771F881FBB1F90 |
:10769000261737074807AB07B0E809F0BB0B802D6A |
:1076A000BF01FF2793585F4F2AF09E3F510568F0B6 |
:1076B000B6C000C15F3FECF3983EDCF3869577954A |
:1076C0006795B795F7959F5FC9F7880F911D9695B8 |
:1076D000879597F90895E1E0660F771F881FBB1F14 |
:1076E000621773078407BA0720F0621B730B840BC1 |
:1076F000BA0BEE1F88F7E095089504D06894B11195 |
:10770000D9C00895BCD088F09F5790F0B92F992721 |
:10771000B751A0F0D1F0660F771F881F991F1AF09C |
:10772000BA95C9F712C0B13081F0C3D0B1E0089565 |
:10773000C0C0672F782F8827B85F39F0B93FCCF3E6 |
:10774000869577956795B395D9F73EF49095809592 |
:10775000709561957F4F8F4F9F4F0895E89409C0B2 |
:1077600097FB3EF490958095709561957F4F8F4F74 |
:107770009F4F9923A9F0F92F96E9BB279395F6958A |
:10778000879577956795B795F111F8CFFAF4BB0F08 |
:1077900011F460FF1BC06F5F7F4F8F4F9F4F16C06C |
:1077A000882311F096E911C0772321F09EE8872FF6 |
:1077B000762F05C0662371F096E8862F70E060E0B2 |
:1077C0002AF09A95660F771F881FDAF7880F96952B |
:1077D000879597F90895990F0008550FAA0BE0E8CF |
:1077E000FEEF16161706E807F907C0F01216130683 |
:1077F000E407F50798F0621B730B840B950B39F4C3 |
:107800000A2661F0232B242B252B21F408950A2628 |
:1078100009F4A140A6958FEF811D811D089597F968 |
:107820009F6780E870E060E008959FEF80EC089526 |
:1078300000240A941616170618060906089500244F |
:107840000A9412161306140605060895092E0394C9 |
:10785000000C11F4882352F0BB0F40F4BF2B11F43D |
:1078600060FF04C06F5F7F4F8F4F9F4F089557FD9C |
:107870009058440F551F59F05F3F71F04795880F9E |
:1078800097FB991F61F09F3F79F087950895121635 |
:1078900013061406551FF2CF4695F1DF08C01616E1 |
:1078A00017061806991FF1CF869571056105089492 |
:1078B0000895E894BB2766277727CB0197F90895A9 |
:1078C0008ADF08F48FEF08950BD0C0CFB1DF28F026 |
:1078D000B6DF18F0952309F0A2CFA7CF1124EACF85 |
:1078E000C6DFA0F3959FD1F3950F50E0551F629F1F |
:1078F000F001729FBB27F00DB11D639FAA27F00D09 |
:10790000B11DAA1F649F6627B00DA11D661F829F2F |
:107910002227B00DA11D621F739FB00DA11D621F14 |
:10792000839FA00D611D221F749F3327A00D611D31 |
:10793000231F849F600D211D822F762F6A2F112413 |
:107940009F5750408AF0E1F088234AF0EE0FFF1F66 |
:10795000BB1F661F771F881F91505040A9F79E3F9D |
:10796000510570F05CCFA6CF5F3FECF3983EDCF39F |
:10797000869577956795B795F795E7959F5FC1F7DA |
:10798000FE2B880F911D9695879597F90895629F14 |
:10799000D001739FF001829FE00DF11D649FE00D07 |
:1079A000F11D929FF00D839FF00D749FF00D659F68 |
:1079B000F00D9927729FB00DE11DF91F639FB00D67 |
:1079C000E11DF91FBD01CF0111240895991B79E034 |
:1079D00004C0991F961708F0961B881F7A95C9F75F |
:1079E00080950895AA1BBB1B51E107C0AA1FBB1FAE |
:1079F000A617B70710F0A61BB70B881F991F5A953B |
:107A0000A9F780959095BC01CD01089597FB092EAB |
:107A100007260AD077FD04D0E5DF06D000201AF44F |
:107A2000709561957F4F0895F6F7909581959F4FDA |
:107A30000895A1E21A2EAA1BBB1BFD010DC0AA1FAF |
:107A4000BB1FEE1FFF1FA217B307E407F50720F0C7 |
:107A5000A21BB30BE40BF50B661F771F881F991F42 |
:107A60001A9469F760957095809590959B01AC018B |
:107A7000BD01CF01089597FB092E05260ED057FDB5 |
:107A800004D0D7DF0AD0001C38F4509540953095CB |
:107A900021953F4F4F4F5F4F0895F6F79095809592 |
:107AA000709561957F4F8F4F9F4F08952F923F9212 |
:107AB0004F925F926F927F928F929F92AF92BF92FE |
:107AC000CF92DF92EF92FF920F931F93CF93DF93AA |
:107AD000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE07 |
:107AE000CDBF09942A88398848885F846E847D8454 |
:107AF0008C849B84AA84B984C884DF80EE80FD8056 |
:107B00000C811B81AA81B981CE0FD11D0FB6F894CB |
:0E7B1000DEBF0FBECDBFED010895F894FFCF8C |
:107B1E000A01FF64496E74656772616C4E69636B2E |
:107B2E0020202020496E74656772616C526F6C6CF8 |
:107B3E00202020204163634E69636B20202020208B |
:107B4E0020202020416363526F6C6C202020202067 |
:107B5E00202020204779726F4769657220202020EF |
:107B6E0020202020486F6568656E5765727420204E |
:107B7E00202020204163635A202020202020202016 |
:107B8E00202020204761732020202020202020202C |
:107B9E00202020204B6F6D7061737356616C75657C |
:107BAE00202020205370616E6E756E67202020207D |
:107BBE0020202020456D7066616E672020202020D9 |
:107BCE0020202020416E616C6F67313120202020F3 |
:107BDE00202020204D6F746F725F566F726E65207D |
:107BEE00202020204D6F746F725F48696E74656E31 |
:107BFE00202020204D6F746F725F4C696E6B732066 |
:107C0E00202020204D6F746F725F5265636874730D |
:107C1E00202020204163635F5A2020202020202036 |
:107C2E00202020204D697474656C4163634E696336 |
:107C3E006B2020204D697474656C416363526F6CC8 |
:107C4E006C202020496E74656772616C4572724EAD |
:107C5E0069636B20496E74656772616C457272520E |
:107C6E006F6C6C204D697474656C496E744E6963EB |
:107C7E006B2020204D697474656C496E74526F6C64 |
:107C8E006C0920004E65757472616C4E69636B20D1 |
:107C9E0020202020526F6C6C4F6666736574202016 |
:107CAE0020202020496E74526F6C6C2A46616B74D2 |
:107CBE006F722020416E616C6F673236202020205B |
:107CCE0020202020446972656B74417573676C5275 |
:107CDE006F6C6C204D65737377657274526F6C6C3C |
:107CEE0020202020417573676C65696368526F6C44 |
:107CFE006C202020492D4C616765526F6C6C2020E2 |
:107D0E0020202020537469636B526F6C6C202020EE |
:107D1E0020202020FFFF010A016400007D0000FFEB |
:107D2E00030102030405060708090A48616C6C6F1B |
:107D3E002057656C74000000000000000000000079 |
:107D4E000000000000000000000000000000000025 |
:107D5E000000000000000000000000000000000015 |
:107D6E000000000000000000000000000000000005 |
:107D7E0000000000000000000000000B01426567DB |
:107D8E00696E6E657200004E6F726D616C0000530D |
:107D9E00706F72740000640090D0030090D00300E6 |
:107DAE0017B7D13830FB103A409696020A644664F3 |
:047DBE00ECFFC0070F |
:00000001FF |
/branches/mixer/V0.68d_DarkMod/Hex-Files/WasIstWas.txt |
---|
0,0 → 1,15 |
+++++++++++++++++++++++++ |
+ Flight-Ctrl: |
+++++++++++++++++++++++++ |
BootLoader_MEGA644_20MHZ_V0_1.hex |
Der Bootloader wird per ISP eingespielt |
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde! |
Danach können Softwareupdates seriell eingespielt werden. |
Flight-Ctrl_MEGA644_Vx_yy.hex |
Aktuelle Firmware |
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt |
Flight-Ctrl SW > 0.62 benötigt das Kopter-Tool >1.47 |
/branches/mixer/V0.68d_DarkMod/Kopter-Tool/MikroKopter-Tool.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/branches/mixer/V0.68d_DarkMod/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/mixer/V0.68d_DarkMod/Settings.h |
---|
--- _Settings.h (nonexistent) |
+++ _Settings.h (revision 1109) |
@@ -0,0 +1,50 @@ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Testmodi |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define MOTOR_OFF 0 |
+#define MOTOR_TEST 0 |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Abstimmung |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define ACC_AMPLIFY 12 |
+#define FAKTOR_P 1 |
+#define FAKTOR_I 0.0001 |
+ |
+ |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+// Debug-Interface |
+// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
+#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein? |
+#define MIN_DEBUG_INTERVALL 500 // 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/mixer/V0.68d_DarkMod/analog.c |
---|
0,0 → 1,147 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
volatile char MessanzahlNick = 0, MessanzahlRoll = 0, MessanzahlGier = 0; |
volatile char messanzahl_AccNick = 0, messanzahl_AccRoll = 0, messanzahl_AccHoch = 0; |
volatile long Luftdruck = 32000; |
volatile int StartLuftdruck; |
volatile unsigned int MessLuftdruck = 1023; |
unsigned char DruckOffsetSetting; |
volatile int HoeheD = 0; |
volatile char messanzahl_Druck; |
volatile int tmpLuftdruck; |
volatile unsigned int ZaehlMessungen = 0; |
//####################################################################################### |
// |
void ADC_Init(void) |
//####################################################################################### |
{ |
ADMUX = 0;//Referenz ist extern |
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE); |
//Free Running Mode, Division Factor 128, Interrupt on |
} |
void SucheLuftruckOffset(void) |
{ |
unsigned int off; |
off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]); |
if(off > 20) off -= 10; |
OCR0A = off; |
Delay_ms_Mess(100); |
if(MessLuftdruck < 850) off = 0; |
for(; off < 250;off++) |
{ |
OCR0A = off; |
Delay_ms_Mess(50); |
printf("."); |
if(MessLuftdruck < 900) break; |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off); |
DruckOffsetSetting = off; |
Delay_ms_Mess(300); |
} |
//####################################################################################### |
// |
SIGNAL(SIG_ADC) |
//####################################################################################### |
{ |
static unsigned char kanal=0,state = 0; |
static unsigned int gier1, roll1, nick1; |
ANALOG_OFF; |
switch(state++) |
{ |
case 0: |
gier1 = ADC; |
kanal = 1; |
ZaehlMessungen++; |
break; |
case 1: |
roll1 = ADC; |
kanal = 2; |
break; |
case 2: |
nick1 = ADC; |
kanal = 4; |
break; |
case 3: |
UBat = (3 * UBat + ADC / 3) / 4;//(UBat + ((ADC * 39) / 256) + 19) / 2; |
kanal = 6; |
break; |
case 4: |
Aktuell_ay = NeutralAccY - ADC; |
AdWertAccRoll = Aktuell_ay; |
kanal = 7; |
break; |
case 5: |
Aktuell_ax = ADC - NeutralAccX; |
AdWertAccNick = Aktuell_ax; |
kanal = 0; |
break; |
case 6: |
if(PlatinenVersion == 10) AdWertGier = (ADC + gier1) / 2; |
else AdWertGier = ADC + gier1; |
kanal = 1; |
break; |
case 7: |
if(PlatinenVersion == 10) AdWertRoll = (ADC + roll1) / 2; |
else AdWertRoll = ADC + roll1; |
kanal = 2; |
break; |
case 8: |
if(PlatinenVersion == 10) AdWertNick = (ADC + nick1) / 2; |
else AdWertNick = ADC + nick1; |
//AdWertNick = 0; |
//AdWertNick += Poti2; |
kanal = 5; |
break; |
case 9: |
AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
AdWertAccHoch += abs(Aktuell_ay) / 4 + abs(Aktuell_ax) / 4; |
if(AdWertAccHoch > 1) |
{ |
if(NeutralAccZ < 800) NeutralAccZ+= 0.02; |
} |
else if(AdWertAccHoch < -1) |
{ |
if(NeutralAccZ > 600) NeutralAccZ-= 0.02; |
} |
messanzahl_AccHoch = 1; |
Aktuell_az = ADC; |
Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
kanal = 3; |
break; |
case 10: |
tmpLuftdruck += ADC; |
if(++messanzahl_Druck >= 5) |
{ |
MessLuftdruck = ADC; |
messanzahl_Druck = 0; |
HoeheD = (int)(StartLuftdruck - tmpLuftdruck - HoehenWert); // D-Anteil = neuerWert - AlterWert |
Luftdruck = (tmpLuftdruck + 3 * Luftdruck) / 4; |
HoehenWert = StartLuftdruck - Luftdruck; |
tmpLuftdruck = 0; |
} |
kanal = 0; |
state = 0; |
break; |
default: |
kanal = 0; |
state = 0; |
break; |
} |
ADMUX = kanal; |
if(state != 0) ANALOG_ON; |
} |
/branches/mixer/V0.68d_DarkMod/analog.h |
---|
0,0 → 1,24 |
/*####################################################################################### |
#######################################################################################*/ |
extern volatile int UBat; |
extern volatile int AdWertNick, AdWertRoll, AdWertGier; |
extern volatile int AdWertAccRoll,AdWertAccNick,AdWertAccHoch; |
extern volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az; |
extern volatile long Luftdruck; |
extern volatile char messanzahl_Druck; |
extern volatile unsigned int ZaehlMessungen; |
extern unsigned char DruckOffsetSetting; |
extern volatile int HoeheD; |
extern volatile unsigned int MessLuftdruck; |
extern volatile int StartLuftdruck; |
extern volatile char MessanzahlNick; |
unsigned int ReadADC(unsigned char adc_input); |
void ADC_Init(void); |
void SucheLuftruckOffset(void); |
#define ANALOG_OFF ADCSRA=0 |
#define ANALOG_ON ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADIE) |
/branches/mixer/V0.68d_DarkMod/eeprom.c |
---|
0,0 → 1,182 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Konstanten |
// + 0-250 -> normale Werte |
// + 251 -> Poti1 |
// + 252 -> Poti2 |
// + 253 -> Poti3 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
void DefaultKonstanten1(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; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*CFG_HOEHEN_SCHALTER |*/ CFG_KOMPASS_AKTIV | CFG_KOMPASS_FIX;//0x01; |
EE_Parameter.Hoehe_MinGas = 30; |
EE_Parameter.MaxHoehe = 251; // Wert : 0-250 251 -> Poti1 |
EE_Parameter.Hoehe_P = 10; // Wert : 0-32 |
EE_Parameter.Luftdruck_D = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_ACC_Wirkung = 30; // Wert : 0-250 |
EE_Parameter.Hoehe_Verstaerkung = 4; // Wert : 0-50 |
EE_Parameter.Stick_P = 4; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 8; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 12; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 150; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // 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 = 32 * 4; //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.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
EE_Parameter.AchsKopplung1 = 90; |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 16; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 100; |
memcpy(EE_Parameter.Name, "Sport\0", 12); |
} |
void DefaultKonstanten2(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; |
EE_Parameter.GlobalConfig = CFG_ACHSENKOPPLUNG_AKTIV;//CFG_HOEHENREGELUNG | /*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 = 3; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 4; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // Wert : 33-250 |
EE_Parameter.GyroAccFaktor = 30; // Wert : 1-64 |
EE_Parameter.KompassWirkung = 128; // Wert : 0-250 |
EE_Parameter.Gyro_P = 80; // Wert : 0-250 |
EE_Parameter.Gyro_I = 120; // Wert : 0-250 |
EE_Parameter.UnterspannungsWarnung = 94; // Wert : 0-250 |
EE_Parameter.NotGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
EE_Parameter.NotGasZeit = 20; // 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 = 20 * 4; // 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.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 75; |
memcpy(EE_Parameter.Name, "Normal\0", 12); |
} |
void DefaultKonstanten3(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; |
EE_Parameter.GlobalConfig = CFG_DREHRATEN_BEGRENZER | CFG_ACHSENKOPPLUNG_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 = 2; // Wert : 0-50 |
EE_Parameter.Stick_P = 2; //2 // Wert : 1-6 |
EE_Parameter.Stick_D = 4; //8 // Wert : 0-64 |
EE_Parameter.Gier_P = 6; // Wert : 1-20 |
EE_Parameter.Gas_Min = 15; // Wert : 0-32 |
EE_Parameter.Gas_Max = 250; // 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 = 140; // 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 = 20 * 4; // 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.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
EE_Parameter.AchsKopplung1 = 90; // Faktor, mit dem Gier die Achsen Roll und Nick verkoppelt |
EE_Parameter.AchsGegenKopplung1 = 5; |
EE_Parameter.WinkelUmschlagNick = 100; |
EE_Parameter.WinkelUmschlagRoll = 100; |
EE_Parameter.GyroAccAbgleich = 32; // 1/k |
EE_Parameter.Driftkomp = 4; |
EE_Parameter.DynamicStability = 50; |
memcpy(EE_Parameter.Name, "Beginner\0", 12); |
} |
/branches/mixer/V0.68d_DarkMod/fc.c |
---|
0,0 → 1,1137 |
/*####################################################################################### |
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; |
volatile int MesswertNick,MesswertRoll,MesswertGier; |
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0; |
volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0; |
volatile float NeutralAccZ = 0; |
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0; |
volatile long IntegralNick = 0,IntegralNick2 = 0; |
volatile long IntegralRoll = 0,IntegralRoll2 = 0; |
volatile long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0; |
volatile long Integral_Gier = 0; |
volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0; |
volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0; |
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0; |
volatile long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2; |
volatile long Mess_Integral_Hoch = 0; |
volatile int KompassValue = 0; |
volatile int KompassStartwert = 0; |
volatile int KompassRichtung = 0; |
unsigned char MAX_GAS,MIN_GAS; |
unsigned char Notlandung = 0; |
unsigned char HoehenReglerAktiv = 0; |
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L; |
float GyroFaktor; |
float IntegralFaktor; |
volatile int DiffNick,DiffRoll; |
int Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0; |
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
unsigned char MotorWert[5]; |
volatile unsigned char SenderOkay = 0; |
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0; |
char MotorenEin = 0; |
int HoehenWert = 0; |
int SollHoehe = 0; |
int LageKorrekturRoll = 0,LageKorrekturNick = 0; |
float Ki = FAKTOR_I; |
unsigned char Looping_Nick = 0,Looping_Roll = 0; |
unsigned char Looping_Links = 0, Looping_Rechts = 0, Looping_Unten = 0, Looping_Oben = 0; |
unsigned char Parameter_Luftdruck_D = 48; // Wert : 0-250 |
unsigned char Parameter_MaxHoehe = 251; // Wert : 0-250 |
unsigned char Parameter_Hoehe_P = 16; // Wert : 0-32 |
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250 |
unsigned char Parameter_KompassWirkung = 64; // Wert : 0-250 |
unsigned char Parameter_Gyro_P = 150; // Wert : 10-250 |
unsigned char Parameter_Gyro_I = 150; // Wert : 0-250 |
unsigned char Parameter_Gier_P = 2; // Wert : 1-20 |
unsigned char Parameter_I_Faktor = 10; // Wert : 1-20 |
unsigned char Parameter_UserParam1 = 0; |
unsigned char Parameter_UserParam2 = 0; |
unsigned char Parameter_UserParam3 = 0; |
unsigned char Parameter_UserParam4 = 0; |
unsigned char Parameter_UserParam5 = 0; |
unsigned char Parameter_UserParam6 = 0; |
unsigned char Parameter_UserParam7 = 0; |
unsigned char Parameter_UserParam8 = 0; |
unsigned char Parameter_ServoNickControl = 100; |
unsigned char Parameter_LoopGasLimit = 70; |
unsigned char Parameter_AchsKopplung1 = 0; |
unsigned char Parameter_AchsGegenKopplung1 = 0; |
unsigned char Parameter_DynamicStability = 100; |
struct mk_param_struct EE_Parameter; |
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20; |
int MaxStickNick = 0,MaxStickRoll = 0; |
extern void setBeeperOn(unsigned char ucVal); |
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) |
//############################################################################ |
{ |
NeutralAccX = 0; |
NeutralAccY = 0; |
NeutralAccZ = 0; |
AdNeutralNick = 0; |
AdNeutralRoll = 0; |
AdNeutralGier = 0; |
Parameter_AchsKopplung1 = 0; |
Parameter_AchsGegenKopplung1 = 0; |
CalibrierMittelwert(); |
Delay_ms_Mess(100); |
CalibrierMittelwert(); |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
AdNeutralNick= AdWertNick; |
AdNeutralRoll= AdWertRoll; |
AdNeutralGier= AdWertGier; |
StartNeutralRoll = AdNeutralRoll; |
StartNeutralNick = AdNeutralNick; |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4) |
{ |
NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY; |
NeutralAccX = abs(Mittelwert_AccNick) / 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]); |
} |
Mess_IntegralNick = 0; |
Mess_IntegralNick2 = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralRoll2 = 0; |
Mess_Integral_Gier = 0; |
MesswertNick = 0; |
MesswertRoll = 0; |
MesswertGier = 0; |
StartLuftdruck = Luftdruck; |
HoeheD = 0; |
Mess_Integral_Hoch = 0; |
KompassStartwert = KompassValue; |
GPS_Neutral(); |
beeptime = 50; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
ExternHoehenValue = 0; |
} |
//############################################################################ |
// Bearbeitet die Messwerte |
void Mittelwert(void) |
//############################################################################ |
{ |
static signed long tmpl,tmpl2; |
MesswertGier = (signed int) AdNeutralGier - AdWertGier; |
MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll; |
MesswertNick = (signed int) AdWertNick - AdNeutralNick; |
//DebugOut.Analog[26] = MesswertNick; |
DebugOut.Analog[28] = MesswertRoll; |
// Beschleunigungssensor ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L; |
Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L; |
Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L; |
IntegralAccNick += ACC_AMPLIFY * AdWertAccNick; |
IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll; |
IntegralAccZ += Aktuell_az - NeutralAccZ; |
// Gier ++++++++++++++++++++++++++++++++++++++++++++++++ |
Mess_Integral_Gier += MesswertGier; |
Mess_Integral_Gier2 += MesswertGier; |
// Kopplungsanteil +++++++++++++++++++++++++++++++++++++ |
if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) |
{ |
tmpl = Mess_IntegralNick / 4096L; |
tmpl *= MesswertGier; |
tmpl *= Parameter_AchsKopplung1; //125 |
tmpl /= 2048L; |
tmpl2 = Mess_IntegralRoll / 4096L; |
tmpl2 *= MesswertGier; |
tmpl2 *= Parameter_AchsKopplung1; |
tmpl2 /= 2048L; |
} |
else tmpl = tmpl2 = 0; |
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertRoll += tmpl; |
MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109 |
Mess_IntegralRoll2 += MesswertRoll; |
Mess_IntegralRoll += MesswertRoll - LageKorrekturRoll; |
if(Mess_IntegralRoll > Umschlag180Roll) |
{ |
Mess_IntegralRoll = -(Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(Mess_IntegralRoll <-Umschlag180Roll) |
{ |
Mess_IntegralRoll = (Umschlag180Roll - 10000L); |
Mess_IntegralRoll2 = Mess_IntegralRoll; |
} |
if(AdWertRoll < 15) MesswertRoll = -1000; |
if(AdWertRoll < 7) MesswertRoll = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertRoll > 1010) MesswertRoll = +1000; |
if(AdWertRoll > 1017) MesswertRoll = +2000; |
} |
else |
{ |
if(AdWertRoll > 2020) MesswertRoll = +1000; |
if(AdWertRoll > 2034) MesswertRoll = +2000; |
} |
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++ |
MesswertNick -= tmpl2; |
MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L; |
Mess_IntegralNick2 += MesswertNick; |
Mess_IntegralNick += MesswertNick - LageKorrekturNick; |
if(Mess_IntegralNick > Umschlag180Nick) |
{ |
Mess_IntegralNick = -(Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(Mess_IntegralNick <-Umschlag180Nick) |
{ |
Mess_IntegralNick = (Umschlag180Nick - 10000L); |
Mess_IntegralNick2 = Mess_IntegralNick; |
} |
if(AdWertNick < 15) MesswertNick = -1000; |
if(AdWertNick < 7) MesswertNick = -2000; |
if(PlatinenVersion == 10) |
{ |
if(AdWertNick > 1010) MesswertNick = +1000; |
if(AdWertNick > 1017) MesswertNick = +2000; |
} |
else |
{ |
if(AdWertNick > 2020) MesswertNick = +1000; |
if(AdWertNick > 2034) MesswertNick = +2000; |
} |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
// ADC einschalten |
ANALOG_ON; |
//++++++++++++++++++++++++++++++++++++++++++++++++ |
Integral_Gier = Mess_Integral_Gier; |
IntegralNick = Mess_IntegralNick; |
IntegralRoll = Mess_IntegralRoll; |
IntegralNick2 = Mess_IntegralNick2; |
IntegralRoll2 = Mess_IntegralRoll2; |
if(EE_Parameter.GlobalConfig & CFG_DREHRATEN_BEGRENZER && !Looping_Nick && !Looping_Roll) |
{ |
if(MesswertNick > 200) MesswertNick += 4 * (MesswertNick - 200); |
else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200); |
if(MesswertRoll > 200) MesswertRoll += 4 * (MesswertRoll - 200); |
else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200); |
} |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
} |
//############################################################################ |
// Messwerte beim Ermitteln der Nullage |
void CalibrierMittelwert(void) |
//############################################################################ |
{ |
// ADC auschalten, damit die Werte sich nicht während der Berechnung ändern |
ANALOG_OFF; |
MesswertNick = AdWertNick; |
MesswertRoll = AdWertRoll; |
MesswertGier = AdWertGier; |
Mittelwert_AccNick = ACC_AMPLIFY * (long)AdWertAccNick; |
Mittelwert_AccRoll = ACC_AMPLIFY * (long)AdWertAccRoll; |
Mittelwert_AccHoch = (long)AdWertAccHoch; |
// ADC einschalten |
ANALOG_ON; |
if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--; |
if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--; |
if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--; |
if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--; |
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255; |
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255; |
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255; |
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255; |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
} |
//############################################################################ |
// Senden der Motorwerte per I2C-Bus |
void SendMotorData(void) |
//############################################################################ |
{ |
if(MOTOR_OFF || !MotorenEin) |
{ |
Motor_Hinten = 0; |
Motor_Vorne = 0; |
Motor_Rechts = 0; |
Motor_Links = 0; |
if(MotorTest[0]) Motor_Vorne = MotorTest[0]; |
if(MotorTest[1]) Motor_Hinten = MotorTest[1]; |
if(MotorTest[2]) Motor_Links = MotorTest[2]; |
if(MotorTest[3]) Motor_Rechts = MotorTest[3]; |
} |
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(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;} |
CHK_POTI(Parameter_MaxHoehe,EE_Parameter.MaxHoehe,0,255); |
CHK_POTI(Parameter_Luftdruck_D,EE_Parameter.Luftdruck_D,0,100); |
CHK_POTI(Parameter_Hoehe_P,EE_Parameter.Hoehe_P,0,100); |
CHK_POTI(Parameter_Hoehe_ACC_Wirkung,EE_Parameter.Hoehe_ACC_Wirkung,0,255); |
CHK_POTI(Parameter_KompassWirkung,EE_Parameter.KompassWirkung,0,255); |
CHK_POTI(Parameter_Gyro_P,EE_Parameter.Gyro_P,10,255); |
CHK_POTI(Parameter_Gyro_I,EE_Parameter.Gyro_I,0,255); |
CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255); |
CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255); |
CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255); |
CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255); |
CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255); |
CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255); |
CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255); |
CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255); |
CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255); |
CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255); |
CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255); |
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255); |
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255); |
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255); |
Ki = (float) Parameter_I_Faktor * 0.0001; |
MAX_GAS = EE_Parameter.Gas_Max; |
MIN_GAS = EE_Parameter.Gas_Min; |
} |
//############################################################################ |
// |
void MotorRegler(void) |
//############################################################################ |
{ |
int motorwert,pd_ergebnis,h,tmp_int; |
int GierMischanteil,GasMischanteil; |
static long SummeNick=0,SummeRoll=0; |
static long sollGier = 0,tmp_long,tmp_long2; |
static long IntegralFehlerNick = 0; |
static long IntegralFehlerRoll = 0; |
static unsigned int RcLostTimer; |
static unsigned char delay_neutral = 0; |
static unsigned char delay_einschalten = 0,delay_ausschalten = 0; |
static unsigned int modell_fliegt = 0; |
static int hoehenregler = 0; |
static char TimerWerteausgabe = 0; |
static char NeueKompassRichtungMerken = 0; |
static long ausgleichNick, ausgleichRoll; |
Mittelwert(); |
GRN_ON; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gaswert ermitteln |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
GasMischanteil = StickGas; |
if(GasMischanteil < 0) GasMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang schlecht |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay < 100) |
{ |
if(!PcZugriff) |
{ |
setBeeperActive(0); |
if(BeepMuster == 0xffff) |
{ |
beeptime = 15000; |
BeepMuster = 0x0c00; |
} |
} |
if(RcLostTimer) RcLostTimer--; |
else |
{ |
MotorenEin = 0; |
Notlandung = 0; |
} |
ROT_ON; |
if(modell_fliegt > 2000) // wahrscheinlich in der Luft --> langsam absenken |
{ |
GasMischanteil = EE_Parameter.NotGas; |
Notlandung = 1; |
PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0; |
PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] = 0; |
} |
else MotorenEin = 0; |
} |
else |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Emfang gut |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(SenderOkay > 140) |
{ |
Notlandung = 0; |
RcLostTimer = EE_Parameter.NotGasZeit * 50; |
if(GasMischanteil > 40) |
{ |
if(modell_fliegt < 0xffff) modell_fliegt++; |
} |
if((modell_fliegt < 200) || (GasMischanteil < 40)) |
{ |
SummeNick = 0; |
SummeRoll = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// auf Nullwerte kalibrieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]] > 75) // Neutralwerte |
{ |
if(++delay_neutral > 200) // nicht sofort |
{ |
GRN_OFF; |
MotorenEin = 0; |
delay_neutral = 0; |
modell_fliegt = 0; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70 || abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) > 70) |
{ |
unsigned char setting=1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 1; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 2; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4; |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], setting); // aktiven Datensatz merken |
} |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung aktiviert? |
{ |
if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset(); |
} |
ReadParameterSet(GetActiveParamSetNumber(), (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
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 && PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] > 120) |
{ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Einschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(++delay_einschalten > 200) |
{ |
delay_einschalten = 200; |
modell_fliegt = 1; |
MotorenEin = 1; |
sollGier = 0; |
Mess_Integral_Gier = 0; |
Mess_Integral_Gier2 = 0; |
Mess_IntegralNick = 0; |
Mess_IntegralRoll = 0; |
Mess_IntegralNick2 = IntegralNick; |
Mess_IntegralRoll2 = IntegralRoll; |
SummeNick = 0; |
SummeRoll = 0; |
} |
} |
else delay_einschalten = 0; |
//Auf Neutralwerte setzen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Auschalten |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]]<20) |
{ |
if(++delay_ausschalten > 100) // nicht sofort |
{ |
MotorenEin = 0; |
delay_ausschalten = 100; |
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(); |
StickNick = (StickNick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4; |
StickNick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; |
StickRoll = (StickRoll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4; |
StickRoll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; |
StickGier = -PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; |
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--; |
if(Notlandung) {MaxStickNick = 0; MaxStickRoll = 0;} |
GyroFaktor = ((float)Parameter_Gyro_P + 10.0) / 256.0; |
IntegralFaktor = ((float) Parameter_Gyro_I) / 44000; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Digitale Steuerung per DubWise |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define KEY_VALUE (Parameter_UserParam1 * 4) //(Poti3 * 8) |
if(DubWiseKeys[1]) beeptime = 10; |
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickNick = (ExternStickNick * 7 + tmp_int) / 8; |
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE; else |
if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE; else tmp_int = 0; |
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8; |
if(DubWiseKeys[0] & 8) ExternStickGier = 50;else |
if(DubWiseKeys[0] & 4) ExternStickGier =-50;else ExternStickGier = 0; |
if(DubWiseKeys[0] & 2) ExternHoehenValue++; |
if(DubWiseKeys[0] & 16) ExternHoehenValue--; |
StickNick += ExternStickNick / 8; |
StickRoll += ExternStickRoll / 8; |
StickGier += ExternStickGier; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//+ Analoge Steuerung per Seriell |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(ExternControl.Config & 0x01 && Parameter_UserParam1 > 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(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor = 0; |
if(GyroFaktor < 0) GyroFaktor = 0; |
if(IntegralFaktor < 0) IntegralFaktor = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Looping? |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_LINKS) Looping_Links = 1; |
else |
{ |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Links = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_RECHTS) Looping_Rechts = 1; |
else |
{ |
if(Looping_Rechts) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Rechts = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_OBEN) Looping_Oben = 1; |
else |
{ |
if(Looping_Oben) // Hysterese |
{ |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < (EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese))) Looping_Oben = 0; |
} |
} |
if((PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -EE_Parameter.LoopThreshold) && EE_Parameter.LoopConfig & CFG_LOOP_UNTEN) Looping_Unten = 1; |
else |
{ |
if(Looping_Unten) // Hysterese |
{ |
if(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > -(EE_Parameter.LoopThreshold - EE_Parameter.LoopHysterese)) Looping_Unten = 0; |
} |
} |
if(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) beeptime = 100; |
if(Looping_Roll || Looping_Nick) |
{ |
if(GasMischanteil > EE_Parameter.LoopGasLimit) GasMischanteil = EE_Parameter.LoopGasLimit; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Bei Empfangsausfall im Flug |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(Notlandung) |
{ |
StickGier = 0; |
StickNick = 0; |
StickRoll = 0; |
GyroFaktor = 0.1; |
IntegralFaktor = 0.005; |
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) |
{ |
long tmp_long, tmp_long2; |
tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick); |
tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll); |
tmp_long /= 16; |
tmp_long2 /= 16; |
if((MaxStickNick > 15) || (MaxStickRoll > 15)) |
{ |
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; |
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) |
{ |
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 > 15) || (MaxStickRoll > 15) || (abs(PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]) > 25)) |
{ |
LageKorrekturNick /= 2; |
LageKorrekturNick /= 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; |
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; |
DebugOut.Analog[22] = MittelIntegralRoll / 26; |
//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) |
{ |
if(IntegralFehlerNick > FEHLER_LIMIT2) |
{ |
if(last_n_p) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick > 5000) ausgleichNick = 5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_p = 1; |
} else last_n_p = 0; |
if(IntegralFehlerNick < -FEHLER_LIMIT2) |
{ |
if(last_n_n) |
{ |
cnt += labs(IntegralFehlerNick) / FEHLER_LIMIT2; |
ausgleichNick = IntegralFehlerNick / 8; |
if(ausgleichNick < -5000) ausgleichNick = -5000; |
LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL; |
} |
else last_n_n = 1; |
} else last_n_n = 0; |
} else cnt = 0; |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
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) |
{ |
if(IntegralFehlerRoll > FEHLER_LIMIT2) |
{ |
if(last_r_p) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll > 5000) ausgleichRoll = 5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_p = 1; |
} else last_r_p = 0; |
if(IntegralFehlerRoll < -FEHLER_LIMIT2) |
{ |
if(last_r_n) |
{ |
cnt += labs(IntegralFehlerRoll) / FEHLER_LIMIT2; |
ausgleichRoll = IntegralFehlerRoll / 8; |
if(ausgleichRoll < -5000) ausgleichRoll = -5000; |
LageKorrekturRoll += ausgleichRoll / ABGLEICH_ANZAHL; |
} |
else last_r_n = 1; |
} else last_r_n = 0; |
} else |
{ |
cnt = 0; |
} |
if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp; |
if(IntegralFehlerRoll > FEHLER_LIMIT) AdNeutralRoll += cnt; |
if(IntegralFehlerRoll < -FEHLER_LIMIT) AdNeutralRoll -= cnt; |
DebugOut.Analog[27] = ausgleichRoll; |
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick); |
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll); |
} |
else |
{ |
LageKorrekturRoll = 0; |
LageKorrekturNick = 0; |
} |
if(!IntegralFaktor) { LageKorrekturRoll = 0; LageKorrekturNick = 0;} // z.B. bei HH |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
MittelIntegralNick_Alt = MittelIntegralNick; |
MittelIntegralRoll_Alt = MittelIntegralRoll; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
IntegralAccNick = 0; |
IntegralAccRoll = 0; |
IntegralAccZ = 0; |
MittelIntegralNick = 0; |
MittelIntegralRoll = 0; |
MittelIntegralNick2 = 0; |
MittelIntegralRoll2 = 0; |
ZaehlMessungen = 0; |
} |
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gieren |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(abs(StickGier) > 20) // war 35 |
{ |
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 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV)) |
{ |
int w,v; |
static int SignalSchlecht = 0; |
w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln |
v = abs(IntegralRoll /512); |
if(v > w) w = v; // grösste Neigung ermitteln |
if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht) |
{ |
KompassStartwert = KompassValue; |
NeueKompassRichtungMerken = 0; |
} |
w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
if(w > 0) |
{ |
if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten |
if(SignalSchlecht) SignalSchlecht--; |
} |
else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Debugwerte zuordnen |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
if(!TimerWerteausgabe--) |
{ |
TimerWerteausgabe = 24; |
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor; |
DebugOut.Analog[2] = Mittelwert_AccNick; |
DebugOut.Analog[3] = Mittelwert_AccRoll; |
DebugOut.Analog[4] = MesswertGier; |
DebugOut.Analog[5] = HoehenWert; |
DebugOut.Analog[6] =(Mess_Integral_Hoch / 512); |
DebugOut.Analog[8] = KompassValue; |
DebugOut.Analog[9] = UBat; |
DebugOut.Analog[10] = SenderOkay; |
DebugOut.Analog[16] = Mittelwert_AccHoch; |
/* 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 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//DebugOut.Analog[26] = MesswertNick; |
//DebugOut.Analog[28] = MesswertRoll; |
if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor; |
else MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor; |
if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor; |
else MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor; |
MesswertGier = MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2; |
DebugOut.Analog[25] = IntegralRoll * IntegralFaktor; |
DebugOut.Analog[31] = StickRoll;// / (26*IntegralFaktor); |
DebugOut.Analog[28] = MesswertRoll; |
// Maximalwerte abfangen |
#define MAX_SENSOR 2048 |
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 |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//OCR0B = 180 - (Poti1 + 120) / 4; |
//DruckOffsetSetting = OCR0B; |
if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)) // Höhenregelung |
{ |
int tmp_int; |
if(EE_Parameter.GlobalConfig & CFG_HOEHEN_SCHALTER) // Regler wird über Schalter gesteuert |
{ |
if(Parameter_MaxHoehe < 50) |
{ |
SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters |
HoehenReglerAktiv = 0; |
} |
else |
HoehenReglerAktiv = 1; |
} |
else |
{ |
SollHoehe = ((int) ExternHoehenValue + (int) Parameter_MaxHoehe) * (int)EE_Parameter.Hoehe_Verstaerkung - 20; |
HoehenReglerAktiv = 1; |
} |
if(Notlandung) SollHoehe = 0; |
h = HoehenWert; |
if((h > SollHoehe) && HoehenReglerAktiv) // zu hoch --> drosseln |
{ h = ((h - SollHoehe) * (int) Parameter_Hoehe_P) / 16; // Differenz bestimmen --> P-Anteil |
h = GasMischanteil - h; // vom Gas abziehen |
h -= (HoeheD * Parameter_Luftdruck_D)/8; // D-Anteil |
tmp_int = ((Mess_Integral_Hoch / 512) * (signed long) Parameter_Hoehe_ACC_Wirkung) / 32; |
if(tmp_int > 50) tmp_int = 50; |
else if(tmp_int < -50) tmp_int = -50; |
h -= tmp_int; |
hoehenregler = (hoehenregler*15 + h) / 16; |
if(hoehenregler < EE_Parameter.Hoehe_MinGas) // nicht unter MIN |
{ |
if(GasMischanteil >= EE_Parameter.Hoehe_MinGas) hoehenregler = EE_Parameter.Hoehe_MinGas; |
if(GasMischanteil < EE_Parameter.Hoehe_MinGas) hoehenregler = GasMischanteil; |
} |
if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas |
GasMischanteil = hoehenregler; |
} |
} |
if(GasMischanteil > MAX_GAS - 20) GasMischanteil = MAX_GAS - 20; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + Mischer und PI-Regler |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DebugOut.Analog[7] = GasMischanteil; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Gier-Anteil |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define MUL_G 1.0 |
GierMischanteil = MesswertGier - sollGier; // Regler für Gier |
// GierMischanteil = 0; |
if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2; |
if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2); |
if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil)); |
if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil)); |
if(GasMischanteil < 20) GierMischanteil = 0; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Nick-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffNick = MesswertNick - (StickNick - GPS_Nick); // Differenz bestimmen |
if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - (StickNick - GPS_Nick); // I-Anteil bei Winkelregelung |
else SummeNick += DiffNick; // I-Anteil bei HH |
if(SummeNick > 16000) SummeNick = 16000; |
if(SummeNick < -16000) SummeNick = -16000; |
pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick |
// Motor Vorn |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
motorwert = GasMischanteil + pd_ergebnis + GierMischanteil; // Mischer |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Vorne = motorwert; |
// Motor Heck |
motorwert = GasMischanteil - pd_ergebnis + GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Hinten = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Roll-Achse |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
DiffRoll = MesswertRoll - (StickRoll - GPS_Roll); // Differenz bestimmen |
if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - (StickRoll - GPS_Roll);// I-Anteil bei Winkelregelung |
else SummeRoll += DiffRoll; // I-Anteil bei HH |
if(SummeRoll > 16000) SummeRoll = 16000; |
if(SummeRoll < -16000) SummeRoll = -16000; |
pd_ergebnis = DiffRoll + Ki * SummeRoll; // PI-Regler für Roll |
tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64; |
if(pd_ergebnis > tmp_int) pd_ergebnis = tmp_int; |
if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int; |
// Motor Links |
motorwert = GasMischanteil + pd_ergebnis - GierMischanteil; |
#define GRENZE Poti1 |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Links = motorwert; |
// Motor Rechts |
motorwert = GasMischanteil - pd_ergebnis - GierMischanteil; |
if ((motorwert < 0)) motorwert = 0; |
else if(motorwert > MAX_GAS) motorwert = MAX_GAS; |
if (motorwert < MIN_GAS) motorwert = MIN_GAS; |
Motor_Rechts = motorwert; |
// +++++++++++++++++++++++++++++++++++++++++++++++ |
} |
/branches/mixer/V0.68d_DarkMod/fc.h |
---|
0,0 → 1,144 |
/*####################################################################################### |
Flight Control |
#######################################################################################*/ |
#ifndef _FC_H |
#define _FC_H |
extern volatile unsigned int I2CTimeout; |
extern unsigned char Sekunde,Minute; |
extern volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long IntegralAccNick,IntegralAccRoll; |
extern volatile long Mess_Integral_Hoch; |
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
extern volatile int KompassValue; |
extern volatile int KompassStartwert; |
extern volatile int KompassRichtung; |
extern int HoehenWert; |
extern int SollHoehe; |
extern volatile int MesswertNick,MesswertRoll,MesswertGier; |
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
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; |
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 volatile long IntegralNick,IntegralNick2; |
extern volatile long IntegralRoll,IntegralRoll2; |
extern volatile long Integral_Gier; |
extern volatile long Mess_IntegralNick,Mess_IntegralNick2; |
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2; |
extern volatile long Mess_Integral_Gier; |
extern volatile int DiffNick,DiffRoll; |
extern int Poti1, Poti2, Poti3, Poti4; |
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count; |
extern unsigned char MotorWert[5]; |
extern volatile unsigned char SenderOkay; |
extern int StickNick,StickRoll,StickGier; |
extern char MotorenEin; |
extern void DefaultKonstanten1(void); |
extern void DefaultKonstanten2(void); |
#define STRUCT_PARAM_LAENGE 71 |
struct mk_param_struct |
{ |
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
unsigned char Hoehe_MinGas; // Wert : 0-100 |
unsigned char Luftdruck_D; // Wert : 0-250 |
unsigned char MaxHoehe; // Wert : 0-32 |
unsigned char Hoehe_P; // Wert : 0-32 |
unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
unsigned char Stick_P; // Wert : 1-6 |
unsigned char Stick_D; // Wert : 0-64 |
unsigned char Gier_P; // Wert : 1-20 |
unsigned char Gas_Min; // Wert : 0-32 |
unsigned char Gas_Max; // Wert : 33-250 |
unsigned char GyroAccFaktor; // Wert : 1-64 |
unsigned char KompassWirkung; // Wert : 0-32 |
unsigned char Gyro_P; // Wert : 10-250 |
unsigned char Gyro_I; // Wert : 0-250 |
unsigned char UnterspannungsWarnung; // Wert : 0-250 |
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
unsigned char UfoAusrichtung; // X oder + Formation |
unsigned char I_Faktor; // Wert : 0-250 |
unsigned char UserParam1; // Wert : 0-250 |
unsigned char UserParam2; // Wert : 0-250 |
unsigned char UserParam3; // Wert : 0-250 |
unsigned char UserParam4; // Wert : 0-250 |
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung) |
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
unsigned char Driftkomp; |
unsigned char DynamicStability; |
unsigned char UserParam5; // Wert : 0-250 |
unsigned char UserParam6; // Wert : 0-250 |
unsigned char UserParam7; // Wert : 0-250 |
unsigned char UserParam8; // Wert : 0-250 |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
}; |
/* |
unsigned char ServoNickMax; // Wert : 0-250 |
unsigned char ServoNickRefresh; // |
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
//------------------------------------------------ |
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen |
unsigned char Reserved[4]; |
char Name[12]; |
*/ |
extern struct mk_param_struct EE_Parameter; |
extern unsigned char Parameter_Luftdruck_D; |
extern unsigned char Parameter_MaxHoehe; |
extern unsigned char Parameter_Hoehe_P; |
extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
extern unsigned char Parameter_KompassWirkung; |
extern unsigned char Parameter_Gyro_P; |
extern unsigned char Parameter_Gyro_I; |
extern unsigned char Parameter_Gier_P; |
extern unsigned char Parameter_ServoNickControl; |
extern unsigned char Parameter_AchsKopplung1; |
extern unsigned char Parameter_AchsGegenKopplung1; |
#endif //_FC_H |
/branches/mixer/V0.68d_DarkMod/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="fc.c"></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></Project> |
/branches/mixer/V0.68d_DarkMod/flight.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd> |
/branches/mixer/V0.68d_DarkMod/gps.h |
---|
0,0 → 1,14 |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Nick; |
extern signed int GPS_Roll; |
void GPS_Neutral(void); |
void GPS_BerechneZielrichtung(void); |
/branches/mixer/V0.68d_DarkMod/main.c |
---|
0,0 → 1,250 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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; |
// -- Parametersatz aus EEPROM lesen --- |
// number [0..5] |
void ReadParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if (number > 5) number = 5; |
eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
} |
// -- Parametersatz ins EEPROM schreiben --- |
// number [0..5] |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length) |
{ |
if(number > 5) number = 5; |
eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
} |
unsigned char GetActiveParamSetNumber(void) |
{ |
unsigned char set; |
set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
if(set > 5) |
{ |
set = 2; |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], set); // diesen Parametersatz als aktuell merken |
} |
return(set); |
} |
//############################################################################ |
//Hauptprogramm |
int main (void) |
//############################################################################ |
{ |
unsigned int timer; |
//unsigned int timer2 = 0; |
DDRB = 0x00; |
PORTB = 0x00; |
for(timer = 0; timer < 1000; timer++); // verzögern |
if(PINB & 0x01) PlatinenVersion = 11; else PlatinenVersion = 10; |
DDRC = 0x8D; // SCL, PC3, PC2 |
PORTC = 0xff; // Pullup SDA |
DDRB = 0x1B; // LEDs und Druckoffset |
PORTB = 0x01; // LED_Rot |
DDRD = 0x3E; // Speaker & TXD & J3 J4 J5 |
DDRD |=0x80; // J7 |
PORTD = 0xF7; // LED |
MCUSR &=~(1<<WDRF); |
WDTCSR |= (1<<WDCE)|(1<<WDE); |
WDTCSR = 0; |
beeptime = 2000; |
StickGier = 0; PPM_in[K_GAS] = 0;StickRoll = 0; StickNick = 0; |
ROT_OFF; |
EXT1OUT_INV_ON; |
Timer_Init(); |
UART_Init(); |
rc_sum_init(); |
ADC_Init(); |
i2c_init(); |
SPI_MasterInit(); |
sei(); |
VersionInfo.Hauptversion = VERSION_HAUPTVERSION; |
VersionInfo.Nebenversion = VERSION_NEBENVERSION; |
VersionInfo.PCKompatibel = VERSION_KOMPATIBEL; |
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c DarkMod V%d.%d",PlatinenVersion/10,PlatinenVersion%10, VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX + 'a', MAJOR_DARKMOD,MINOR_DARKMOD); |
printf("\n\r=============================="); |
GRN_ON; |
#define EE_DATENREVISION 69 // wird angepasst, wenn sich die EEPROM-Daten geändert haben |
if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID]) != EE_DATENREVISION) |
{ |
printf("\n\rInit. EEPROM: Generiere Default-Parameter..."); |
DefaultKonstanten1(); |
for (unsigned char i=0;i<6;i++) |
{ |
if(i==2) DefaultKonstanten2(); // Kamera |
if(i==3) DefaultKonstanten3(); // Beginner |
if(i>3) DefaultKonstanten2(); // Kamera |
WriteParameterSet(i, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
} |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], 3); // default-Setting |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], EE_DATENREVISION); |
} |
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; |
while (1) |
{ |
if(UpdateMotor) // ReglerIntervall |
{ |
SPI_TransmitByte(); //# |
UpdateMotor=0; |
//PORTD |= 0x08; |
MotorRegler(); |
//PORTD &= ~0x08; |
SendMotorData(); |
ROT_OFF; |
if(PcZugriff) PcZugriff--; |
else |
{ |
DubWiseKeys[0] = 0; |
DubWiseKeys[1] = 0; |
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) |
{ |
DatenUebertragung(); |
BearbeiteRxDaten(); |
} |
else BearbeiteRxDaten(); |
if(CheckDelay(timer)) |
{ |
if(UBat < EE_Parameter.UnterspannungsWarnung) |
{ |
if(BeepMuster == 0xffff) |
{ |
beeptime = 6000; |
BeepMuster = 0x0300; |
} |
} |
SPI_StartTransmitPacket();//# |
timer = SetDelay(100); |
} |
//if(UpdateMotor) DebugOut.Analog[26]++; |
} |
} |
return (1); |
} |
/branches/mixer/V0.68d_DarkMod/main.h |
---|
0,0 → 1,114 |
#ifndef _MAIN_H |
#define _MAIN_H |
//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 |
//#define SYSCLK 16000000L //Quarz Frequenz in Hz |
#endif |
// neue Hardware |
#define ROT_OFF {if(PlatinenVersion == 10) PORTB &=~0x01; else PORTB |= 0x01;} |
#define ROT_ON {if(PlatinenVersion == 10) PORTB |= 0x01; else PORTB &=~0x01;} |
#define ROT_FLASH PORTB ^= 0x01 |
#define GRN_OFF PORTB &=~0x02 |
#define GRN_ON PORTB |= 0x02 |
#define GRN_FLASH PORTB ^= 0x02 |
#define EXT1OUT_ON PORTC |= 0x04 |
#define EXT1OUT_OFF PORTC &=~ 0x04 |
#define EXT2OUT_ON PORTC |= 0x08 |
#define EXT2OUT_OFF PORTC &=~ 0x08 |
#define EXT1OUT_INV_ON EXT1OUT_OFF |
#define EXT1OUT_INV_OFF EXT1OUT_ON |
#define EXT2OUT_INV_ON EXT2OUT_OFF |
#define EXT2OUT_INV_OFF EXT2OUT_ON |
#define F_CPU SYSCLK |
//#ifndef F_CPU |
//#error ################## F_CPU nicht definiert oder ungültig ############# |
//#endif |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
#define EEPROM_ADR_VALID 1 |
#define EEPROM_ADR_ACTIVE_SET 2 |
#define EEPROM_ADR_LAST_OFFSET 3 |
#define EEPROM_ADR_ACC_NICK 4 |
#define EEPROM_ADR_ACC_ROLL 6 |
#define EEPROM_ADR_ACC_Z 8 |
#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 SYSCLK |
//extern unsigned long SYSCLK; |
extern volatile int i_Nick[20],i_Roll[20],DiffNick,DiffRoll; |
extern volatile unsigned char SenderOkay; |
extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
extern unsigned char PlatinenVersion; |
void ReadParameterSet (unsigned char number, unsigned char *buffer, unsigned char length); |
void WriteParameterSet(unsigned char number, unsigned char *buffer, unsigned char length); |
extern unsigned char GetActiveParamSetNumber(void); |
extern unsigned char EEPromArray[]; |
#include <stdlib.h> |
#include <string.h> |
#include <avr/io.h> |
#include <avr/pgmspace.h> |
#include <avr/interrupt.h> |
#include <avr/eeprom.h> |
#include <avr/boot.h> |
#include <avr/wdt.h> |
#include "old_macros.h" |
#include "_Settings.h" |
#include "printf_P.h" |
#include "timer0.h" |
#include "uart.h" |
#include "analog.h" |
#include "twimaster.h" |
#include "menu.h" |
#include "rc.h" |
#include "fc.h" |
#include "gps.h" |
#include "spi.h" |
#ifndef EEMEM |
#define EEMEM __attribute__ ((section (".eeprom"))) |
#endif |
#define DEBUG_DISPLAY_INTERVALL 123 // in ms |
#define DELAY_US(x) ((unsigned int)( (x) * 1e-6 * F_CPU )) |
#endif //_MAIN_H |
/branches/mixer/V0.68d_DarkMod/makefile |
---|
0,0 → 1,424 |
#-------------------------------------------------------------------- |
# MCU name |
MCU = atmega644 |
F_CPU = 20000000 |
#------------------------------------------------------------------- |
HAUPT_VERSION = 0 |
NEBEN_VERSION = 68 |
VERSION_INDEX = 3 |
MAJOR_DARKMOD = 0 |
MINOR_DARKMOD = 2 |
VERSION_KOMPATIBEL = 7 # PC-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_INDEX), 0) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)a_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 1) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)b_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 2) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)c_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 3) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)d_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 4) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)e_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 5) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)f_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 6) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)g_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
ifeq ($(VERSION_INDEX), 7) |
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(HAUPT_VERSION)_$(NEBEN_VERSION)h_DarkMod_$(MAJOR_DARKMOD)_$(MINOR_DARKMOD) |
endif |
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
OPT = s |
########################################################################################################## |
# 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 |
########################################################################################################## |
# 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_HAUPTVERSION=$(HAUPT_VERSION) -DVERSION_NEBENVERSION=$(NEBEN_VERSION) -DVERSION_KOMPATIBEL=$(VERSION_KOMPATIBEL) -DVERSION_INDEX=$(VERSION_INDEX) -DMAJOR_DARKMOD=$(MAJOR_DARKMOD) -DMINOR_DARKMOD=$(MINOR_DARKMOD) |
# 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. |
sizebefore: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
sizeafter: |
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); 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/mixer/V0.68d_DarkMod/menu.c |
---|
0,0 → 1,133 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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 RemoteTasten = 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) |
{ |
static unsigned char MaxMenue = 11,MenuePunkt=0; |
if(RemoteTasten & KEY1) { if(MenuePunkt) MenuePunkt--; else MenuePunkt = MaxMenue; LcdClear(); RemotePollDisplayLine = -1; } |
if(RemoteTasten & KEY2) { MenuePunkt++; LcdClear(); RemotePollDisplayLine = -1;} |
if((RemoteTasten & KEY1) && (RemoteTasten & KEY2)) MenuePunkt = 0; |
if(MenuePunkt < 10) {LCD_printfxy(17,0,"[%i]",MenuePunkt);} else {LCD_printfxy(16,0,"[%i]",MenuePunkt);}; |
switch(MenuePunkt) |
{ |
case 0: |
LCD_printfxy(0,0,"+ MikroKopter +"); |
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",PlatinenVersion/10,PlatinenVersion%10,VERSION_HAUPTVERSION, VERSION_NEBENVERSION,VERSION_INDEX+'a'); |
LCD_printfxy(0,2,"Setting: %d ",GetActiveParamSetNumber()); |
LCD_printfxy(0,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)",AdWertNick - AdNeutralNick, AdNeutralNick); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier); |
} |
else |
{ |
LCD_printfxy(0,1,"Nick %4i (%3i)",AdWertNick - AdNeutralNick, AdNeutralNick/2); |
LCD_printfxy(0,2,"Roll %4i (%3i)",AdWertRoll - AdNeutralRoll, AdNeutralRoll/2); |
LCD_printfxy(0,3,"Gier %4i (%3i)",MesswertGier, AdNeutralGier/2); |
} |
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; |
} |
RemoteTasten = 0; |
} |
/branches/mixer/V0.68d_DarkMod/menu.h |
---|
0,0 → 1,6 |
extern void Menu(void); |
extern void LcdClear(void); |
extern char DisplayBuff[80]; |
extern unsigned char DispPtr; |
extern unsigned char RemoteTasten; |
/branches/mixer/V0.68d_DarkMod/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/mixer/V0.68d_DarkMod/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/mixer/V0.68d_DarkMod/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/mixer/V0.68d_DarkMod/rc.c |
---|
0,0 → 1,86 |
/*####################################################################################### |
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 |
// PWM |
//TCCR1A = (1 << COM1B1) | (1 << WGM11) | (1 << WGM10); |
//TCCR1B |= (1 << WGM12); |
//OCR1B = 55; |
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 > (int) Parameter_UserParam2 * 10) && (signal < 8000)) |
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;} |
// tmp = (7 * (PPM_in[index]) + signal) / 8; |
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) PORTD |= 0x20; else PORTD &= ~0x20; // Servosignal an J3 anlegen |
if(index == 6) PORTD |= 0x10; else PORTD &= ~0x10; // Servosignal an J4 anlegen |
if(index == 7) PORTD |= 0x08; else PORTD &= ~0x08; // Servosignal an J5 anlegen |
} |
} |
} |
/branches/mixer/V0.68d_DarkMod/rc.h |
---|
0,0 → 1,29 |
/*####################################################################################### |
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_TEILER CK64 |
#define TIMER_RELOAD_VALUE 250 |
//#define TIMER_TEILER CK256 // bei 20MHz |
//#define TIMER_RELOAD_VALUE -78 // bei 20MHz |
#endif |
#define GAS PPM_in[2] |
extern void rc_sum_init (void); |
extern volatile int PPM_in[11]; |
extern volatile int PPM_diff[11]; // das diffenzierte Stick-Signal |
extern volatile unsigned char NewPpmData; |
#endif //_RC_H |
/branches/mixer/V0.68d_DarkMod/spi.c |
---|
0,0 → 1,113 |
// ######################## SPI - FlightCtrl ################### |
#include "main.h" |
struct str_ToNaviCtrl ToNaviCtrl; |
struct str_FromNaviCtrl FromNaviCtrl; |
unsigned char SPI_BufferIndex; |
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)]; |
unsigned char *Ptr_buffer = (unsigned char *) &ToNaviCtrl; |
unsigned char SPITransferCompleted, SPI_ChkSum; |
#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<<SPIE); // Enable SPI, Master, set clock rate fck/64 |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); |
SPITransferCompleted = 1; |
ToNaviCtrl.Sync1 = 0x81; |
ToNaviCtrl.Sync2 = 0x55; |
ToNaviCtrl.Comp = 12; |
ToNaviCtrl.IntegralNick = 12345; |
ToNaviCtrl.IntegralRoll = 56789; |
ToNaviCtrl.StickNick = 100; |
ToNaviCtrl.StickRoll = 150;//(char) StickRoll; |
ToNaviCtrl.StickGier = 200;//(char) StickGier; |
} |
//------------------------------------------------------ |
void SPI_StartTransmitPacket(void) |
{ |
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed |
if (!SPITransferCompleted) return; |
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave |
SPITransferCompleted = 0; |
UpdateSPI_Buffer(); // update buffer |
SPI_BufferIndex = 1; |
DebugOut.Analog[16]++; |
// -- Debug-Output --- |
/* DebugOut.Analog[20] = FromNaviCtrl.Comp; |
DebugOut.Analog[21] = FromNaviCtrl.GPS_Nick; |
DebugOut.Analog[22] = FromNaviCtrl.GPS_Roll; |
DebugOut.Analog[23] = FromNaviCtrl.CompassValue; |
*/ |
//---- |
SPDR = ToNaviCtrl.Sync1; // Start transmission |
ToNaviCtrl.ChkSum = ToNaviCtrl.Sync1; |
} |
//------------------------------------------------------ |
//SIGNAL(SIG_SPI) |
void SPI_TransmitByte(void) |
{ |
if (!(SPSR & (1 << SPIF))) return; |
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave |
if (SPI_BufferIndex < sizeof(FromNaviCtrl)) |
{ |
SPI_Buffer[SPI_BufferIndex]= SPDR; // get data |
// if (SPI_BufferIndex < 32 ) DebugOut.Analog[26+SPI_BufferIndex] = SPI_Buffer[SPI_BufferIndex]; |
//if(SPDR!= 0x00) DebugOut.Analog[19]++; ; |
} |
if (SPI_BufferIndex < sizeof(ToNaviCtrl)) |
{ |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); |
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"); |
SPDR = Ptr_buffer[SPI_BufferIndex]; |
ToNaviCtrl.ChkSum += Ptr_buffer[SPI_BufferIndex]; |
} |
else |
{ |
unsigned char *ptr = (unsigned char *)&FromNaviCtrl; |
SPITransferCompleted = 1; |
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer)); |
} |
SPI_BufferIndex++; |
} |
//------------------------------------------------------ |
void UpdateSPI_Buffer(void) |
{ |
/*static unsigned char i =0; |
cli(); |
ToNaviCtrl.Comp = SPI_PROTOCOL_COMP; |
ToNaviCtrl.IntegralNick = (int) (IntegralNick >> 4); |
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll >> 4); |
ToNaviCtrl.StickNick = 4; |
ToNaviCtrl.StickRoll = 5;//(char) StickRoll; |
ToNaviCtrl.StickGier = 6;//(char) StickGier; |
sei(); |
*/ |
} |
#endif |
/branches/mixer/V0.68d_DarkMod/spi.h |
---|
0,0 → 1,89 |
// ######################## SPI - FlightCtrl ################### |
#ifndef _SPI_H |
#define _SPI_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 |
struct str_ToNaviCtrl |
{ |
unsigned char Sync1, Sync2; |
unsigned char Comp; |
int IntegralNick; |
int IntegralRoll; |
char StickNick,StickRoll,StickGier; |
unsigned char ChkSum; |
}; |
struct str_FromNaviCtrl |
{ |
unsigned int Dummy; |
unsigned char Comp; |
int GPS_Nick; |
int GPS_Roll; |
int CompassValue; |
}; |
#ifdef USE_SPI_COMMUNICATION |
extern struct str_ToNaviCtrl ToNaviCtrl; |
extern struct str_FromNaviCtrl FromNaviCtrl; |
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/mixer/V0.68d_DarkMod/timer0.c |
---|
0,0 → 1,177 |
#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; |
unsigned int BeepMuster = 0xffff; |
int ServoValue = 0; |
unsigned char ucBeeperActive=1; |
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(!cnt--) |
{ |
cnt = 9; |
cnt_1ms++; |
cnt_1ms %= 2; |
if(!cnt_1ms) UpdateMotor = 1; |
CountMilliseconds++; |
} |
if(beeptime > 1) |
{ |
beeptime--; |
if(beeptime & BeepMuster) |
{ |
if(ucBeeperActive) pieper_ein = 1; |
EXT1OUT_INV_OFF; |
} |
else |
{ |
if(ucBeeperActive) pieper_ein = 0; |
EXT1OUT_INV_ON; |
} |
} |
else |
{ |
EXT1OUT_INV_ON; |
pieper_ein = 0; |
ucBeeperActive=1; |
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 < 4000)) |
{ |
KompassValue = cntKompass; |
} |
// if(cntKompass < 10) cntKompass = 10; |
// KompassValue = (unsigned long)((unsigned long)(cntKompass-10)*720L + 1L) / 703L; |
KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180; |
cntKompass = 0; |
} |
} |
} |
void setBeeperActive(unsigned char ucVal) |
{ |
ucBeeperActive=ucVal; |
} |
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; |
TCCR2A=(1<<COM2A1)|(1<<COM2A0)|3; |
TCCR2B=(0<<CS20)|(1<<CS21)|(1<<CS22); |
// TIMSK2 |= _BV(TOIE2); |
TIMSK2 |= _BV(OCIE2A); |
TIMSK0 |= _BV(TOIE0); |
OCR2A = 10; |
TCNT2 = 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)) ANALOG_ON; |
} |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// Servo ansteuern |
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
SIGNAL(SIG_OUTPUT_COMPARE2A) |
{ |
static unsigned char timer = 10; |
if(!timer--) |
{ |
TCCR2A=(1<<COM2A1)|(0<<COM2A0)|3; |
ServoValue = Parameter_ServoNickControl; |
if(EE_Parameter.ServoNickCompInvert & 0x01) ServoValue += ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
else ServoValue -= ((long) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
if(ServoValue < EE_Parameter.ServoNickMin) ServoValue = EE_Parameter.ServoNickMin; |
else if(ServoValue > EE_Parameter.ServoNickMax) ServoValue = EE_Parameter.ServoNickMax; |
OCR2A = ServoValue;// + 75; |
timer = EE_Parameter.ServoNickRefresh; |
} |
else |
{ |
TCCR2A =3; |
PORTD&=~0x80; |
} |
} |
/branches/mixer/V0.68d_DarkMod/timer0.h |
---|
0,0 → 1,16 |
#define TIMER_TEILER CK8 |
#define TIMER_RELOAD_VALUE 250 |
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; |
/branches/mixer/V0.68d_DarkMod/twimaster.c |
---|
0,0 → 1,152 |
/*############################################################################ |
############################################################################*/ |
#include "main.h" |
unsigned char twi_state = 0; |
unsigned char motor = 0; |
unsigned char motorread = 0; |
unsigned char motor_rx[8]; |
//############################################################################ |
//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); |
} |
//############################################################################ |
//Start I2C |
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); |
} |
//############################################################################ |
//Start I2C |
char i2c_write_byte(char byte) |
//############################################################################ |
{ |
TWSR = 0x00; |
TWDR = byte; |
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
return(0); |
} |
//############################################################################ |
//Start I2C |
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; |
} |
TWCR |= 0x80; |
} |
/branches/mixer/V0.68d_DarkMod/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 unsigned char twi_state; |
extern unsigned char motor; |
extern unsigned char motorread; |
extern unsigned char motor_rx[8]; |
void i2c_reset(void); |
extern void i2c_init (void); // I2C initialisieren |
extern char i2c_start (void); // Start I2C |
extern void i2c_stop (void); // Stop I2C |
extern char i2c_write_byte (char byte); // 1 Byte schreiben |
extern void i2c_reset(void); |
#endif |
/branches/mixer/V0.68d_DarkMod/uart.c |
---|
0,0 → 1,399 |
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
// + 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" |
#include "uart.h" |
unsigned char DebugGetAnforderung = 0,DebugDisplayAnforderung = 0,DebugDataAnforderung = 0,GetVersionAnforderung = 0; |
unsigned volatile char SioTmp = 0; |
unsigned volatile char SendeBuffer[MAX_SENDE_BUFF]; |
unsigned volatile char RxdBuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NMEABuffer[MAX_EMPFANGS_BUFF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char NeueKoordinateEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
unsigned volatile char PC_DebugTimeout = 0; |
unsigned char RemotePollDisplayLine = 0; |
unsigned char NurKanalAnforderung = 0; |
unsigned char DebugTextAnforderung = 255; |
unsigned char PcZugriff = 100; |
unsigned char MotorTest[4] = {0,0,0,0}; |
unsigned char DubWiseKeys[4] = {0,0,0,0}; |
unsigned char MeineSlaveAdresse; |
unsigned char ConfirmFrame; |
struct str_DebugOut DebugOut; |
struct str_ExternControl ExternControl; |
struct str_VersionInfo VersionInfo; |
int Debug_Timer; |
const unsigned char ANALOG_TEXT[32][16] = |
{ |
//1234567890123456 |
"IntegralNick ", //0 |
"IntegralRoll ", |
"AccNick ", |
"AccRoll ", |
"GyroGier ", |
"HoehenWert ", //5 |
"AccZ ", |
"Gas ", |
"KompassValue ", |
"Spannung ", |
"Empfang ", //10 |
"Analog11 ", |
"Motor_Vorne ", |
"Motor_Hinten ", |
"Motor_Links ", |
"Motor_Rechts ", //15 |
"Acc_Z ", |
"MittelAccNick ", |
"MittelAccRoll ", |
"IntegralErrNick ", |
"IntegralErrRoll ", //20 |
"MittelIntNick ", |
"MittelIntRoll ", |
"NeutralNick ", |
"RollOffset ", |
"IntRoll*Faktor ", //25 |
"Analog26 ", |
"DirektAusglRoll ", |
"MesswertRoll ", |
"AusgleichRoll ", |
"I-LageRoll ", //30 |
"StickRoll " |
}; |
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
//++ 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; |
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 modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
SendeBuffer[pt++] = '#'; // Startzeichen |
SendeBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
SendeBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
SendeBuffer[pt++] = '=' + (a >> 2); |
SendeBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
SendeBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
SendeBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
// -------------------------------------------------------------------------- |
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer |
{ |
unsigned char a,b,c,d; |
unsigned char ptr = 0; |
unsigned char x,y,z; |
while(len) |
{ |
a = RxdBuffer[ptrIn++] - '='; |
b = RxdBuffer[ptrIn++] - '='; |
c = RxdBuffer[ptrIn++] - '='; |
d = RxdBuffer[ptrIn++] - '='; |
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden |
x = (a << 2) | (b >> 4); |
y = ((b & 0x0f) << 4) | (c >> 2); |
z = ((c & 0x03) << 6) | d; |
if(len--) ptrOut[ptr++] = x; else break; |
if(len--) ptrOut[ptr++] = y; else break; |
if(len--) ptrOut[ptr++] = z; else break; |
} |
} |
// -------------------------------------------------------------------------- |
void BearbeiteRxDaten(void) |
{ |
if(!NeuerDatensatzEmpfangen) return; |
// unsigned int tmp_int_arr1[1]; |
// unsigned int tmp_int_arr2[2]; |
// unsigned int tmp_int_arr3[3]; |
unsigned char tmp_char_arr2[2]; |
// unsigned char tmp_char_arr3[3]; |
// unsigned char tmp_char_arr4[4]; |
//if(!MotorenEin) |
PcZugriff = 255; |
switch(RxdBuffer[2]) |
{ |
case 'a':// Texte der Analogwerte |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
DebugTextAnforderung = tmp_char_arr2[0]; |
break; |
case 'b': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
break; |
case 'c': |
Decode64((unsigned char *) &ExternControl,sizeof(ExternControl),3,AnzahlEmpfangsBytes); |
RemoteTasten |= ExternControl.RemoteTasten; |
ConfirmFrame = ExternControl.Frame; |
DebugDataAnforderung = 1; |
break; |
case 'h':// x-1 Displayzeilen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
RemoteTasten |= tmp_char_arr2[0]; |
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1; else NurKanalAnforderung = 0; // keine Displaydaten |
DebugDisplayAnforderung = 1; |
break; |
case 't':// Motortest |
Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes); |
break; |
case 'k':// Keys von DubWise |
Decode64((unsigned char *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,AnzahlEmpfangsBytes); |
ConfirmFrame = DubWiseKeys[3]; |
break; |
case 'v': // Version-Anforderung und Ausbaustufe |
GetVersionAnforderung = 1; |
break; |
case 'g':// "Get"-Anforderung für Debug-Daten |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
DebugGetAnforderung = 1; |
break; |
case 'q':// "Get"-Anforderung für Settings |
// Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
Decode64((unsigned char *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,AnzahlEmpfangsBytes); |
if(tmp_char_arr2[0] != 0xff) |
{ |
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; |
ReadParameterSet(tmp_char_arr2[0], (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
SendOutData('L' + tmp_char_arr2[0] -1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
} |
else |
SendOutData('L' + GetActiveParamSetNumber()-1,MeineSlaveAdresse,(unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE); |
break; |
case 'l': |
case 'm': |
case 'n': |
case 'o': |
case 'p': // Parametersatz speichern |
Decode64((unsigned char *) &EE_Parameter.Kanalbelegung[0],STRUCT_PARAM_LAENGE,3,AnzahlEmpfangsBytes); |
WriteParameterSet(RxdBuffer[2] - 'l' + 1, (unsigned char *) &EE_Parameter.Kanalbelegung[0], STRUCT_PARAM_LAENGE); |
eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], RxdBuffer[2] - 'l' + 1); // aktiven Datensatz merken |
Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L; |
Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L; |
Piep(GetActiveParamSetNumber()); |
break; |
} |
// DebugOut.AnzahlZyklen = Debug_Timer_Intervall; |
NeuerDatensatzEmpfangen = 0; |
} |
//############################################################################ |
//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(200); |
} |
//--------------------------------------------------------------------------------------------- |
void DatenUebertragung(void) |
{ |
if(!UebertragungAbgeschlossen) return; |
if(DebugGetAnforderung && UebertragungAbgeschlossen) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen |
{ |
SendOutData('G',MeineSlaveAdresse,(unsigned char *) &ExternControl,sizeof(ExternControl)); |
DebugGetAnforderung = 0; |
} |
if((CheckDelay(Debug_Timer) || DebugDataAnforderung) && UebertragungAbgeschlossen) |
{ |
SendOutData('D',MeineSlaveAdresse,(unsigned char *) &DebugOut,sizeof(DebugOut)); |
DebugDataAnforderung = 0; |
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL); |
} |
if(DebugTextAnforderung != 255) // Texte für die Analogdaten |
{ |
SendOutData('A',DebugTextAnforderung + '0',(unsigned char *) ANALOG_TEXT[DebugTextAnforderung],16); |
DebugTextAnforderung = 255; |
} |
if(ConfirmFrame && UebertragungAbgeschlossen) // Datensatz ohne CRC bestätigen |
{ |
SendeBuffer[0] = '#'; |
SendeBuffer[1] = ConfirmFrame; |
SendeBuffer[2] = '\r'; |
UebertragungAbgeschlossen = 0; |
ConfirmFrame = 0; |
UDR = SendeBuffer[0]; |
} |
if(DebugDisplayAnforderung && UebertragungAbgeschlossen) |
{ |
Menu(); |
DebugDisplayAnforderung = 0; |
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung) |
{ |
SendOutData('4',0,(unsigned char *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen |
RemotePollDisplayLine = -1; |
} |
else SendOutData('0' + RemotePollDisplayLine,0,(unsigned char *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen |
} |
if(GetVersionAnforderung && UebertragungAbgeschlossen) |
{ |
SendOutData('V',MeineSlaveAdresse,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
GetVersionAnforderung = 0; |
} |
} |
/branches/mixer/V0.68d_DarkMod/uart.h |
---|
0,0 → 1,107 |
#ifndef _UART_H |
#define _UART_H |
#define MAX_SENDE_BUFF 150 |
#define MAX_EMPFANGS_BUFF 150 |
#define DUB_KEY_UP 4 |
#define DUB_KEY_DOWN 8 |
#define DUB_KEY_RIGHT 32 |
#define DUB_KEY_LEFT 16 |
#define DUB_KEY_FIRE 64 |
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; |
extern void UART_Init (void); |
extern int uart_putchar (char c); |
extern void boot_program_page (uint32_t page, uint8_t *buf); |
extern void DatenUebertragung(void); |
extern void DecodeNMEA(void); |
extern void BearbeiteRxDaten(void); |
extern unsigned char MotorTest[4]; |
extern unsigned char DubWiseKeys[4]; |
struct str_DebugOut |
{ |
unsigned char Digital[2]; |
unsigned int Analog[32]; // Debugwerte |
}; |
extern struct str_DebugOut DebugOut; |
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 Hauptversion; |
unsigned char Nebenversion; |
unsigned char PCKompatibel; |
unsigned char Rserved[7]; |
}; |
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 |
#endif //_UART_H |
/branches/mixer/V0.68d_DarkMod/version.txt |
---|
0,0 → 1,133 |
------- |
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.68d Ausgangsversion. |
DarkRider, Thomas Kusch, 25.05.2008 |
DarkMod-Branch |
Das ist mein Sandkasten zum Anpassen der Software an meine Beduerfnisse. |
DarkMod V0.1 25.05.2008 |
- Kein Piepser bei fehlenden Empfaengersignal |
- Ausgaenge an J16/J17 aktiv |
- Beleuchtung am J16 wird im Gegentakt zu Piepser ausgeschaltet (Piepser ein -> Licht aus). |
- Kanal 8 ist "Anlasser". Motoren ein: Schalter am Kanal8 an, linker Hebel nach rechts unten. Motoren aus: Gas im Leerlauf, Schalter aus |
DarkMod V0.2 30.05.2008 |
Bei Senderausfall blinkt Beleuchtung |