diff --git a/Bin/UKSSTMS320F28335.bin b/Bin/UKSSTMS320F28335.bin index ac9196d..8d99660 100644 Binary files a/Bin/UKSSTMS320F28335.bin and b/Bin/UKSSTMS320F28335.bin differ diff --git a/Bin/UKSSTMS320F28335.hex b/Bin/UKSSTMS320F28335.hex index 12a5d2a..3c69ee1 100644 --- a/Bin/UKSSTMS320F28335.hex +++ b/Bin/UKSSTMS320F28335.hex @@ -1,4 +1,4 @@ -:20000000AA08000000000000000000000000000000000000B9B46A02000067B600FFC0DA9F +:20000000AA080000000000000000000000000000000000006AB56202000017B700FFC0DA44 :2000200000000000C1C081C1400101C3C003800241C201C6C006800741C70005C1C581C4C4 :20004000400401CCC00C800D41CD000FC1CF81CE400E000AC1CA81CB400B01C9C0098008A5 :2000600041C801D8C018801941D9001BC1DB81DA401A001EC1DE81DF401F01DDC01D801CD4 @@ -23,913 +23,923 @@ :2002C000D209320F190FEC13F212C206A30256030E00050FD80EB20C1C0C140400005C03AC :2002E0001100090500050000000019081708D50AD30AFFFFA2DE00000000FFFFA3DE0000E1 :200300000000FFFFA4DE00000000FFFFA5DE00000000F4FFB2DE0000000000000000000059 -:20032000F29F000024A00000ED9F0000E89F0000FFFF42DF00000000FFFF43DF0000000016 +:2003200008A000003AA0000003A00000FE9F0000FFFF42DF00000000FFFF43DF00000000BC :20034000FFFF44DF00000000FFFF45DF00000000FFFF46DF00000000FEFF4CDF000000000F :200360000000FEFF4EDF000000000000FFFF18DF00000000FFFF19DF00000000FEFF26DF66 :20038000000000000000FEFF28DF000000000000FEFF2ADF000000000000FEFF2CDF00004B :2003A00000000000EEFF2ADD00004A0C023E4A0C023E0000803F0000803F6C09F93B6C0981 :2003C000F93B6C09F93B6C09F93B0000803FFFFF08DE00000000FFFF09DE00000000FFFF11 :2003E0000ADE00000000FFFF0FDE00001400FFFF12DE00000100F0FFB0DA00003F00060069 -:200400005B004F0066006D007D0007007F006F00400000000000000079000000FFFF75DFE2 -:2004200000000600FFFF77DF00000000FFFF78DF00000000FEFF7CDF000000000000FFFFB7 -:200440006CDF00000000FFFF6DDF00000000FFFF6EDF00000100FEFF9CDF00005DB6000030 -:20046000FEFF9EDF00005DB60000FEFFA0DF000000000000FEFFA2DF000000000000FFFFF7 -:200480003CDD00000000FFFF3DDD00000000FBFF8EDF000008000C00100000000400FFFF9E -:2004A00098DF00000A00FFFF99DF00000100FFFFA7DF00000100FFFFA8DF00000100FCFF3E -:2004C00094DF00000000000000000000FFFF00D000000100FFFF40DE00000000FFFF41DCA3 -:1004E00000000000FFFF29DD000000000000000008 -:2004F00067360000008002FEA4C5A927013B008FC0DBC7924196A9A8AB81A98A01BEC418B5 -:2005100000E04192C4984148046CC44E026D00BE008FC0DBA9A8AB81A98A1F765C03A6CC44 -:20053000010088FFC4CDFFFDA8CAA993D8FF01F1C49601910B9982FE060010E70B0001E81E -:20055000EAFA20E740000DE8BA9E6FE819F000E7100000E7490000E70000007710E74000F7 -:200570004076C2B502E8010250E8000040769AB20600A71EA59243880960C40605610102AE -:200590004156C4000B6F00BE096FA706C40F036201BE046F01020156C400A6920600BDB25E -:2005B0007AD178D0013BBDAA808DC0DB9A92929EA985A9BD120F007700770077007789E6F1 -:2005D000010002E8401640769AB27BD11F765C0379D0013B03E226009A92929EA985A9BD08 -:2005F000120F007700770077007789E6010002E8401640769AB200D11F765C0303E228006A -:20061000008FC0DB013BA9A8A181A98A74D0C8E29400008F30DFA9A8A181A98AC49202524E -:20063000046002E8D123056F02E8E1300AE8010040769AB2013B008F2ADD0356A1010156E0 -:20065000A40001D9A192045203E2C400DA64BE86BE8B0600BDB2BDAA03E2BD0404FE005239 -:20067000A95906601F765C030B920B2B0C96A1921F765C0307540A63008FC0DB013BA9A8F3 -:20069000A181A98AC44FEDFF0102008F86DE013BA9A8A181A9837FD0008FC0DB944CC4E226 -:2006B000C500EDFFEA01A19207544F63A9A8A181A98AC44D4A6C00BEA6921F767D03A985A8 -:2006D00000D5A71E009B009207520260019B0356A8011F765C030793A99F2765013B008FBD -:2006F000C0DBA9A8A581A98AC492A9CD0080A9CC0060A8CA0A60008F86DEA9A8A581A98A0B -:2007100001DEA706C40DA71E1F767D03009B009207520260019B0356A8011F765C0301DD3A -:200730000793A99FA555DC62A6920761A985421EA706C0006FB5A71EA7BD120F0077007798 -:200750000077007789E60000A192089E1F767D03A988029242617FD0008FC0DB949316D050 -:20077000D3FF9492C1FFA8CAA940146C1F767D03019205520C6002E849280CE8010094E6A1 -:20079000080014AD0465A6920250A988A692E3FF6801A1921F765C030754E2FF8401A6400B -:2007B0000F6C79D0C8E29401007720E74000AFE2280400E72000007790E800760E6F78D07A -:2007D000C8E29401007720E74000AFE2260400E72000007790E800761F767D030392696171 -:2007F000A692E3FFDE001F767D03019202521F61A1400F6C79D0008FC0DBC8E294011F76D2 -:200810005C0320E74000AFE2280400E720003B6F78D0008FC0DBC8E294011F765C0320E708 -:200830004000AFE2260400E720002D6F08BEA192A672008FC0DB013BA9A8A681A9838076F9 -:2008500086DEA606A181A71E18D0C7929596A19206520D6378D0C8E294011F765C0320E7A8 -:200870004000AFE2220400E720000D6F78D0C8E294011F765C0320E74000AFE2240400E78C -:200890002000007716E8000D14AD136512E8401A14AD0F63A12D008F00D950E800B212357F -:2008B0000156A400407638B502E8411640769AB216D0008FC0DB26E8000D94937FD0D0FFD7 -:2008D000949232E8401AC9FFA8CAA940036C02E8001150E80148A9A8013B18D08CE6000079 -:2008F000A1818CE60900A983A9A8A181A98A13E29501432BA6BF120FC493A892CDFF01F0AC -:200910000190A980A61BECFF3461A692C852316130D09592FB9CA6540363A845186D008FC9 -:20093000C0DBA9A8A181A98A30D0A69294540F6248D0945428651F765C03A7CC01000B18BD -:20095000F7FF82FF431A10000B981D6F4392A7CD01001F765C03205097FF0B18FBFFA91852 -:20097000FFFEA9CB43970356A70207900B980B6F1F765C03A7CC0100431A01000B18EFFF8F -:2009900083FF0B981F765C030E92E0FF8C00AD5CA19283DCA45C40760080EFFF8400808DD3 -:2009B000C0DB013BA9AAA681A98A8CE6000078D078D113E2940079D092929A9EA985A9BDDE -:2009D000120F007700770077007789E604000077CFE6210002E8081840769AB21F765C034A -:2009F00003E2220002E8101CCFE621000FE8303340769AB27AD11F765C0378D0013B008F46 -:200A1000C0DB03E224009A92949EA985A9BD120F007700770077007789E6010002E80818B9 -:200A300040769AB27BD11F765C0379D0013B008FC0DB03E226009A92949EA985A9BD120F97 -:200A5000007700770077007789E6010002E8081840769AB21F765C0303E22800236FA9A84A -:200A7000013BA681A98A8CE6000078D013E2940040765C80176FA9A8A181A98A8CE600005D -:200A900018D013E294000E6F008FC0DBA9A8A181A983A9A8A181A98AC52B18D0C51A0080B2 -:200AB000942B84FEAFE2BE04BE86BE8B0600BDB2BDAA02FE0052A92706601F765C030B9210 -:200AD0000B2B0C96008FC0DB013BA9A8AB81A98AC492A94FEDFFCB00CDFF0190A92F422B71 -:200AF000AB92075260610356AB01A95A1F767D034218FFFB008DC0DEA22D1006412B22562A -:200B10000190A95D0356A201A007A98A20FFE80340764680013B019B019089FFA2954298D0 -:200B3000A82D4218FFF71006412B22560190A95D0356AC01A007A98A20FFE8034076468089 -:200B500001908AFF4298AB9206522D60029A4218FFEFA294013BA92D1006412B22560190B8 -:200B7000A95D0356AC01A007A98A20FFE80340764680013B039B0190A2958BFF4298A82D1E -:200B90004218FFDF10062256412B0190A95D0356AC01A007A98A20FFE80340764680019085 -:200BB0008CFF42984292C0FF42CDBFFF42CA008F86DE013BC0FF42CAC0FF42CAC3FF4090FD -:200BD000A8CA4296A9A8AB81A9837FD0008FC0DBC4E2C500944C416D408F30DFA9A0AB814D -:200BF000A9830356C501408F2ADD0156A500AFE2C50100E7400000778CE60000A9A8AB81E4 -:200C1000A6BF120FA98318D148D0A6929D7E95541163408F30DEA9A0AB81A983421A08007F -:200C3000A9A8C581A98AC443056CAA920360421A000142920761AA9205601F765C030B1A70 -:200C500002001F765C030E921E60AD5CAB9282DCA45C40760080176FA9A8AB81A98A8CE6EE -:200C7000000018D013E294000E6F008FC0DBA9A8AB81A983A9A8AB81A98AC52B18D0C51A3C -:200C90000080942B82FEBE86BE8B060000BE013B008FC0DBA9A8A681A98A01DE18D0A69224 -:200CB000C41800E01852942BF46400BE013B008FC0DB408F80DFA9A8A681A98A0356A601EA -:200CD0000156A50070D0C8E294001F767D0303E2C500019206521760408F30DFA9A0A6811B -:200CF000A983C59203520F60A640056D18D094288601096F008FC0DBA9A8A681A98A18D0E5 -:200D10009428300201DEA6920452D264019201521060008FC0DB1F765C03A9A80781A98AB2 -:200D3000C41A0040CC1A0040D41A0040DC1A00401F767D03019206520760008FC0DBC41A8C -:200D50000040CC1A00401F767D030692036140765C8006008076F9151F765C03408FF22B90 -:200D7000008F3E4900B61202BDB2AC2B013B1AC21EA020A81F767D0310C31F765C031C1E89 -:200D9000008F30DFA9A8AC81A98AC42B008F30DEA9A8AC81A98AAC92019CC4211052A92DBF -:200DB000F0641F767D03019206521860008F30DF408F30DEBF56C4031F765C03BF56C50131 -:200DD000BF56CC03CD2BBF56D402BF56D503BF56DC02BF56DD0210282C011F767D0301925B -:200DF00001521F601F765C03AC2B013BBF5610C8008F30DFA9A8AC81A98ABF56C403008F63 -:200E100030DEA9A8AC81A98AAC92AC9301F002910190A8CAC496AC92019CA92D0452E96451 -:200E30001F767D03009209523460008F30DF408F30DEC42BBF56C50108D0BF56CC010ED12E -:200E5000CD2BBF56D404BF56D503BF56DC04BF56DD02BF56E404BF56E505BF56EC04BF56B1 -:200E7000ED04BF56F406BF56FC05BF56940609D0BF5694070AD0BF5694060BD0BF56940601 -:200E90000CD0BF5694060DD0BF569408BF569C08AC2B013B90E50356AC01807652DF008F2C -:200EB00088DF5AFF0156A600A9A8AC81A98AC6C3408F5EDFA9A9C42B0156A500AC92019C07 -:200ED000A92D03E2C5000652E764AC2B013B00BE0356AC01008F42DC0156A400AC92019C85 -:200EF000C4C2A92D1C52F564AC2B013B0356AC01008FC0DE0156A400AC92019CC4C2A92D47 -:200F10002052F564AC2BC0762ED71235408F40D7008F00D90156A5000156A400AC92019C7D -:200F300011F68524A92D185211F68424EF64AC2B1235008FC0DD0156A400AC92019CA92DB9 -:200F5000045211F68424F5641F767D030092A993FF9D01532269A993FD9D015315690752C4 -:200F70000A61095222601F765C03BF56070FBF56080D1B6F1F765C03BF560608BF5607080B -:200F9000BF560808126F1F765C03BF560608BF560710BF560810096F1F765C03BF56060A9A -:200FB000BF560714BF560814BE8B06001F767D0305921F765C030780026104DF00D5013BF3 -:200FD00000D40356A5038076F0D8A4810156A60001DCA492C62B0852F56401DDA59202522C -:200FF000F0641F767D03019204526D61A79200D52D65013BA592A2FF008FF0D8CBFFA594B3 -:20101000A3FFA927A9A8AB81A61E0356AB04A92D019BA592ACEA189A67FFA594C699A988E5 -:20103000A2FFCBFFA594189CA3FFA92701DDA9A8AB81A98A0356AB04A92DA692ACEA019A01 -:2010500066FFC498A792A554D66200D5013B008FF0D803BEA9A8A581A71EA592A672A9A850 -:20107000A681A98A08D001DDC7929496A5920352EF641F767D030192008FF8D8025204602F -:20109000A9280003036FA928000FFC981F767D0305920961408FF0D8A58A0FDCC41AFF00E2 -:2010B000F51A003F1F767D03019206521260408FF0D8A58A0FDCC41A3000FD1A00E0CD1AC3 -:2010D0000030076F008FF8D8C41A0F00F41AFC01008FF0D8A48308DC01DDC51A0100F41AD5 -:2010F0000700FC1A00E00600BDB2BDAABDA203E2BD0403E2BD0503E2BD060CFE1F767D0394 -:201110004496019206520860449206601F765C030B920B2B0C961F765C030792008F30DEC3 -:20113000013B4494A988A9A84481A98A808DC0DBC4924696449201F0019047964492A0FF8D -:20115000A92D499603354896049AAC94A95BA9AAA681A98A457EC44FEDFFBE02008FBCDD7B -:20117000A9A84481A98A64BE4492A672C4E2C405A9AAA681A98A8CE62800408D80DF13E22F -:20119000C40044920356A9010156A1004C1E02E891340BE801E0AFE2C10020E72800407686 -:2011B0009AB2442D008FC0DD1235AFE2C10110E740000156A40003E2C100407638B5013BE5 -:2011D0008CE60000A9AA4481A6BF120FA98A70D0408F2ADD947E4C060156A500A685A9BDB5 -:2011F000120F007700770077007789E60000408D5EDF21E3C5414C0600E70C000156A10022 -:2012100000E72101AFE2C10320E7C80002E8512B0BE8010040769AB2AFE2C10110E74000AB -:20123000007703E2C1004076C2B5013B008F88DF8CE60000A9A84481A98A13E2C4004492D8 -:20125000A940ECFFAA001F765C03CFE62000AFE22A0140762A80452D008F00D912350156A3 -:20127000A400407638B54488008F30DF013BA9A8A681A98A1F765C0303E22C00C492035216 -:20129000086012E8000D14AD046390E503E22C00008F30DFA9A8A681A98AC49202520860C6 -:2012B00012E8B01414AD046390E503E22C0001E8A9FDAFE22C0508E8992740769AB21F761A -:2012D0005C03CFE606000E921660008FC0DB4588013BA9A88CE6280018D0A681A98381DE16 -:2012F000A9A8A681A98A13E295008CE6330018D013E29403013BCFE62000AFE22A01408DF6 -:201310005EDF0356A301AFE6000020E740000156A10000E70100AFE2C10020E7080002E87C -:20133000512B0BE8010040769AB2AFE2C10110E74000007703E2C1004076C2B5013B408F4C -:2013500088DF8CE60000A9A0A381A61EABBF120F68B6C63F4892A772008FC0DBA9A8A7812F -:20137000A61EA9A04681A71EAA286900C792C696A9A04481A71E4892AA72A9A8AA81A61ECB -:20139000AA286A00C792C6964892AA72A9A8AA81A98AC43F116F1F767D03019201520660C3 -:2013B000CFE62000AFE60000036FCFE620001F765C0303E22A00008F88DFA9A84481A98331 -:2013D000A9A84681A98AC8E2C400008F88DFA9A8A381A98A4488C8E2C401008FC0DBA9A8F0 -:2013F000A681A98AC8E2C505432BC492CDFF01F00190008F88DFA959A9A8A681A98A96E6DE -:20141000050096E60D00C8E2C400CFE6290020E7280040769AB201E8C9F400D50CE8D1CCA5 -:2014300094E6080014AD0B651F765C03C8E21000007794E6050014AD026501D54492013B35 -:20145000008F52DF1F765C030356A901412B0156A4001E064076468000520A614393A1CCBE -:201470000100045187FFA818FFFEA8CA4396008F88DF013BA9A8A381A98AC8E2C400CFE67B -:20149000290020E7280040769AB201E8C9F400D50CE8D1CC94E6080014AD0B651F765C032F -:2014B000C8E21000007794E6050014AD026501D5013B008F52DF1F765C030356A301412B15 -:2014D0000156A4001E064076468000520A614393A1CC0100045187FFA818FFFEA8CA43967D -:2014F0001F767D0301920652606047925E60008FC0DB013BA9A84581A98A30D0C8E2940097 -:20151000007794E6060014AD0A654393A1CC0100205187FFA818FFFEA8CA4396008F30DFB3 -:20153000A9A84481A98AC49203522760008FC0DBA9A84581A98A48D0412BC8E2940000D515 -:2015500094E6060014AD026301D54992008F94DF1F765C030356A9010156A4001E06407656 -:20157000468000520A614393A1CC0100085187FFA818FFFEA8CA4396008F30DF013BA9A882 -:201590004481A98AC49202521060008FC0DBA9A84581A98A48D0C8E29400007794E6060068 -:2015B00014AD0365431A10004492015204610352E0FF87004392E1FF84001F767803089259 -:2015D0007F601F7678032A060C192C0F036728062C1E2C8A8CE62000A9A801092C1E13E2B8 -:2015F000C4002C8A1F765C03AFE22A00A9A81F7678038CE6000001092C1E13E2C4002C8A1C -:201610008CE62B00A9A801092C1E13E2C4032C83013B008F88DFA9A001092C1EA9A8448128 -:20163000A71EC792C5962C83A9A001092C1EA9A84681A71EC792C5962C83A9A001092C1EF8 -:20165000A9A8A381A71EC792C5962C8A1F765C03A9A80109AFE22C001F7678038CE6000048 -:201670002C1E13E2C4002C8A8CE63200A9A801092C1E13E2C4022C83008FC0DBA5C4A9A80A -:201690004481A71E01DE70DF2CC2C792C5962CC5A70601092C1E1F765C0310921F76780348 -:2016B000C7962CC5A70601092C1E4392C7962CC5A70601092C1E1F765C030E92C7961F7621 -:2016D0005C030E921560AD5C459283DCA45C407600800E6F008FC0DBA9A8A681A983A9A875 -:2016F000A681A98AC52B18D0C51A0080942B8CFEAFE2BE06AFE2BE05AFE2BE04BE82BE8680 -:20171000BE8B06001B76F0FF00E2BD0030E60006422916562576006F1B76F0FF00E2BD002F -:2017300030E6000602FE422916561F7633003892419623760008267600003892382B21288A -:20175000FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FE422916563A -:201770001F763300389241962376000826760000381890002128FFFF1029103B4192389667 -:201790002576006F1B76F0FF00E2BD0030E6000602FE422916561F7633003892419623761B -:2017B000000826760000381890002128FFFF1029103B419238962576006F1B76F0FF00E2BD -:2017D000BD0030E6000602FE422916561F76330038924196237600082676000038189C00B7 -:2017F0002128FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FE4229BD -:2018100016561F76330038924196237600082676000038189E002128FFFF1029103B41921A -:2018300038962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300229241965B -:2018500023760101221868002128FFFF1029103B419222962576006F1B76F0FF00E2BD00BC -:2018700030E6000602FE422916561F76330022924196237601012292222B2128FFFF1029F6 -:20189000103B419222962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633007E -:2018B000229241962376010026760101221878002128FFFF1029103B419222962576006F43 -:2018D0001B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E66E -:2018F00000064229165610292576006F1B76F0FF00E2BD0030E600064229165610292576D2 -:20191000006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD00D4 -:2019300030E600064229165610292576006F1B76F0FF00E2BD0030E6000642291656102916 -:201950002576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2B6 -:20197000BD0030E600064229165610292576006F1B76F0FF00E2BD0030E600064229165652 -:2019900010292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF1F -:2019B00000E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E6000642299C -:2019D000165610292576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002292BA -:2019F000419623760100267601012292222B2128FFFF1029103B419222962576006F1B76D6 -:201A1000F0FF00E2BD0030E6000602FE422916561F7633002C924196237620002676390149 -:201A30002C922C2B2128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E60006DC -:201A500002FE422916561F7633002C92419623762000267639012C1832002128FFFF1029BD -:201A7000103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330092 -:201A90002292419623760100267601012218F8002128FFFF1029103B419222962576006FE1 -:201AB0001B76F0FF00E2BD0030E6000602FE422916561F763300229241962376010026767B -:201AD00001012218FA002128FFFF1029103B419222962576006F1B76F0FF00E2BD0030E62B -:201AF000000602FE422916561F763300309241962376800026760000301803002128FFFF51 -:201B10001029103B419230962576006F1B76F0FF00E2BD0030E6000602FE422916561F76E7 -:201B30003300329241962376000126760001321875002128FFFF1029103B419232962576D0 -:201B5000006F1B76F0FF00E2BD0030E6000602FE422916561F7633003292419623760001F7 -:201B7000267600013218FD002128FFFF1029103B419232962576006F1B76F0FF00E2BD00E2 -:201B900030E6000602FE422916561F7633003092419623768000267600002C18230021287C -:201BB000FFFF1029103B419230962576006F1B76F0FF00E2BD0030E6000602FE42291656DE -:201BD0001F763300329241962376000126760001321871002128FFFF1029103B419232963A -:201BF0002576006F1B76F0FF00E2BD0030E6000602FE422916561F763300329241962376BD -:201C10000001267600013292322B2128FFFF1029103B419232962576006F1B76F0FF00E223 -:201C3000BD0030E60006422916562376390110292576006F1B76F0FF00E2BD0030E6000693 -:201C5000422916562576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76AD -:201C7000F0FF00E2BD0030E6000602FE422916561F7633002C9241962376200026763901E7 -:201C90002C1837002128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E6000614 -:201CB00002FE422916561F7633002C92419623762000267639012C922C2B2128FFFF1029BC -:201CD000103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330030 -:201CF0002C92419623762000267639012C1833002128FFFF1029103B41922C962576006FCF -:201D10001B76F0FF00E2BD0030E6000602FE422916561F7633002C924196237620002676EF -:201D300039012C1822002128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E654 -:201D5000000602FE422916561F76330038924196237600082676000038189F002128FFFFBA -:201D70001029103B419238962576006F1B76F0FF00E2BD0030E6000602FE422916561F767D -:201D900033003892419623760008267600003892382B2128FFFF1029103B419238962576EE -:201DB000006F1B76F0FF00E2BD0030E60006422916562576006F1B76F0FF00E2BD0030E653 -:201DD0000006422916562376390110292576006F1B76F0FF00E2BD0030E6000642291656EE -:201DF0002376391110292576006F1B76F0FF00E2BD0030E600064229165610292576006F58 -:201E10001B76F0FF00E2BD0030E6000602FE422916561F763300309241962376800026768A -:201E30000000301801002128FFFF1029103B419230962576006F1B76F0FF00E2BD0030E6A6 -:201E5000000602FE422916561F7633003092419623768000267600002C922C2B2128FFFF23 -:201E70001029103B419230962576006F1B76F0FF00E2BD0030E6000602FE422916561F7684 -:201E900033002A92419623761000267610012A922A2B2128FFFF1029103B41922A9625760C -:201EB000006F1B76F0FF00E2BD0030E6000602FE422916561F7633002A924196237610008D -:201ED000267610012A1802002128FFFF1029103B41922A962576006F1B76F0FF00E2BD007A -:201EF00030E6000602FE422916561F76330024924196237602002676000024181F002128AF -:201F1000FFFF1029103B419224962576006F1B76F0FF00E2BD0030E6000602FE4229165686 -:201F30001F763300269241962376040026763D012692262B2128FFFF1029103B4192269660 -:201F50002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330024924196237667 -:201F700002002676000024180F002128FFFF1029103B419224962576006F1B76F0FF00E2A4 -:201F9000BD0030E6000602FE422916561F763300269241962376040026763D01261826004F -:201FB0002128FFFF1029103B419226962576006F1B76F0FF00E2BD0030E6000602FE422907 -:201FD00016561F7633002492419623760200267600002492242B2128FFFF1029103B419256 -:201FF00024962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330026924196A4 -:202010002376040026763D01261826002128FFFF1029103B419226962576006F1B76F0FFF1 -:2020300000E2BD0030E6000602FE422916561F763300249241962376020026760000241836 -:2020500008002128FFFF1029103B419224962576006F1B76F0FF00E2BD0030E6000602FECB -:20207000422916561F763300269241962376040026763D012692262B2128FFFF1029103BD7 -:20209000419226962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300249207 -:2020B0004196237602002676000024180C002128FFFF1029103B419224962576006F1B76C7 -:2020D000F0FF00E2BD0030E6000602FE422916561F763300269241962376040026763D01A1 -:2020F0002692262B2128FFFF1029103B419226962576006F1B76F0FF00E2BD0030E6000628 -:2021100002FE422916561F76330024924196237602002676000024180E002128FFFF102982 -:20213000103B419224962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300D3 -:20215000269241962376040026763D0126183E002128FFFF1029103B419226962576006F89 -:202170001B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E6C5 -:20219000000602FE422916561F76330028924196237608002676080128180F002128FFFF1D -:2021B0001029103B419228962576006F1B76F0FF00E2BD0030E6000602FE422916561F7649 -:2021D000330028924196237608002676080128180F002128FFFF1029103B4192289625769F -:2021F000006F1B76F0FF00E2BD0030E6000602FE422916561F763300289241962376080054 -:2022100026760801281803002128FFFF1029103B419228962576006F1B76F0FF00E2BD0041 -:2022300030E6000602FE422916561F76330028924196237608002676080128180300212870 -:20225000FFFF1029103B419228962576006F1B76F0FF00E2BD0030E6000602FE422916563F -:202270001F7633002A92419623760800267608012892282B2128FFFF1029103B4192289644 -:202290002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330028924196237620 -:2022B000080026760801281802002128FFFF1029103B419228962576006F1B76F0FF00E257 -:2022D000BD0030E6000602FE422916561F76330032924196237600012676000132187500E5 -:2022F0002128FFFF1029103B419232962576006F1B76F0FF00E2BD0030E6000602FE4229B8 -:2023100016561F7633003292419623760001267600013292322B2128FFFF1029103B4192E8 -:2023300032962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633003292419646 -:202350002376000126760001321831002128FFFF1029103B419232962576006F1B76F0FFCB -:2023700000E2BD0030E6000602FE422916561F76330032924196237600012676000132925D -:20239000322B2128FFFF1029103B419232962576006F1B76F0FF00E2BD0030E6000602FE25 -:2023B000422916561F7633002E92419623764000267600002E922E2B2128FFFF1029103B7E -:2023D00041922E962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002E92B2 -:2023F000419623764000267600002E1828002128FFFF1029103B41922E962576006F1B7616 -:20241000F0FF00E2BD0030E6000602FE422916561F7633002E924196237640002676000057 -:202430002E1820002128FFFF1029103B41922E962576006F1B76F0FF00E2BD0030E600067F -:2024500002FE422916561F7633002E92419623764000267600002E1838002128FFFF1029C3 -:20247000103B41922E962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330086 -:202490002E92419623764000267600002E1838002128FFFF1029103B41922E962576006F36 -:2024B0001B76F0FF00E2BD0030E6000602FE422916561F7633002E92419623764000267626 -:2024D00000002E183E002128FFFF1029103B41922E962576006F1B76F0FF00E2BD0030E6C7 -:2024F0000006422916562376390110292576006F1B76F0FF00E2BD0030E6000602FE422933 -:2025100016561F763300229241962376010026760101221848002128FFFF1029103B419294 -:2025300022962576006F06000052A888C48A096509520763FF9CC4CDF8FF0790A8CAC4963A -:20255000A69245520D614E5208614F520D60C41A2000C418BFFF086FC418DFFF056FC41AFC -:202570002000C41A4000A59201520360C4187FFF02520360C41A8000C418EFFFC418F7FF15 -:202590000600BDB200D5013B008F40DEA9A8A581A98AC47D01DDA5924652F76433D1008F72 -:2025B00040DE34D0BF569C0CBF56940C1F76400335D03BD1BF56940836D0BF56940937D01E -:2025D000BF56941038D0BF56940839D0BF56940C3AD0BF56940C3DD0BF569C053CD100929A -:2025F000FE9C949641D00092FF9C94963ED0BF56940810D0BF56DC08BF56F408BF56940D40 -:20261000BF56EC1BBF569C12BE8B0600A9BD120F00770077BDB21F7671038BE60100A48BEE -:2026300050E8094088E23C0040769AB288E6000000770077A9BF120FC18AA993B7FFFF91AF -:20265000D497C18AFF90DC96BE8B06000852A927A4C50960089A01D54E9B40762190008D13 -:202670003B03972BAB9209520B60089AA78A01D54E9B40762190008D3B03BF5697010600D0 -:20269000A71EBDB2A492BDAA0152BDA22A60008F5070C08D40D01F76410300A822761F76C3 -:2026B000BE01408F49B109CDFFF7A81A0004008F04B1099709CDFFFD1F763700A81A0001AB -:2026D00000A01F76BE0109971F76370002A81F763300321A0100321A0200237600011A7653 -:2026F00002523360008F5077C08DC0D31F764F0300A82276408F806F1F76BE01FDCDFFEFBC -:202710008076BFB0A58AA81A0020079716DD07CDFF3F1ADCA81A008007971F763700C51811 -:20273000CFFF408F7AB0C41A040004C21F763300321A04001F76370006A01F763300321A7C -:202750000800237600011A76D396A38A01D54E9B69FF089AC38640762190A2C4A2830BD0C2 -:20277000A28A0CDE0CDDC61A00400ADCC518FFDFCA18BFFFCA18DFFFCA18F7FFCA18FBFF75 -:20279000CA1A0200CA1A0100C418FFBF92CCE0FF0BD00150929640764E90A38AA70640760F -:2027B0009390D392025205601F76BF01081A0400C38A099ABF56E402A38A4076B390408D6F -:2027D00033030CD0932BA28A008D9E01932B9B2B0BDCC41A4000CA1A2000BE82BE86BE8B67 -:2027F00006001F764103BF5602011F764F03BF5602021F764003009606000002008D42038A -:20281000941E0600BDB2BDAAA486008D3A0392923660A9AA13FF6700A98A008D36030102A4 -:202830000156C4009206008D3803920F0466C28ABF56E40208D092C5A7C408D0090201DE5F -:2028500092C2C207A98A008D3603C792C4969206008D3803920F4966C28AE446FE6CA28AE3 -:20287000099A4076B390D292025205601F76BF01081A0400008D9E01922B376F008D3803BD -:20289000928A408D3803A492008D36030190A98801DC9AA89206008D3803920F0466C28A70 -:2028B000BF56E402A6920B6008D092830902C207A98AC592A7FFFF90C4960D6F08D0928327 -:2028D000A5C408D0090201DE92C2C207A98AC592FF90C496008D36039206008D3803920F66 -:2028F0000466C28AE446FE6C1F763300211A0001BE86BE8B0600BDB200BEACA0BDAAA486DD -:20291000BDA2A98201DEA61B3075FD69D292025205601F76BF010818FBFF00BE01DEA61B88 -:202930001027FD69408D3603A9AB08D09AA20109921E008D3A03922BC28AE446FE6CA28A2F -:20295000089A4076B39001BE008D38030102A30F92C21C68A7AB0902C207A98AC792C496AC -:20297000C28AE446FE6C00BE01DEA61BE803FD69A28A099A4076B390D292025210601F7633 -:20299000BF01009A081A04000B6FC28A0902A7ABBF56E401C207A98AC792C496009ABE8201 -:2029B000BE86BE8B0600BDB2BDAAA486EFFF2A01C28AFCCCFF00A958EC47EDFF1D01408D3D -:2029D000A0019A92E0FF1E01408D3B039A920152116000BE408D3D03BF569A01408D3403A2 -:2029F0009AC2408D3F039A2B408D3E039A2B0DD19A2B408D3F039A92E0FF0401408D3D03F5 -:202A10009A924F60F2C4208F0000A9A8A60F06662F8F0000A9A8A60F0867608F00000AD1F7 -:202A3000208F0000F2A09AA80CD19A923A52E0FFE900408DA0019A922E60408D34039AC41C -:202A5000A692A94001DE9AC2066DF28A0356A008C496076FF28AA9A80109F21EA092C498D5 -:202A7000008D34039206E20FE8FFCC000FD10CD0BF569A33A28A099ABF5692334076B39006 -:202A9000408D3F03008DA001BF569A01BF569201EFFFB800008D3F03BF569201EFFFB200D4 -:202AB000408D3E039A923E60A0921F760403115425611F767E031954036019921F60A0883D -:202AD000408D31039A0EA60F0560408D33039A921560A0921F767E03185407601892056154 -:202AF000408D33039A920A61408D3F03008D3D03BF569A01922BEFFF8500408D32039A785C -:202B1000408D3E039A80019A013BA7949A96A9AAA781A98A0ED1089A9C78A28A4076B390D3 -:202B3000706F9A80019A013BA7949A96A9AAA781A98A0ED19C78408D3E039A9207520E60A8 -:202B50000DD19A9210520A60408D33039A9206600A9A1F767903A0941096408D3E039A9231 -:202B700002521A60A0920DD103529A78336842523166008F40DE949203522C68A0923352C7 -:202B90000B600CD19A923A522560A09233520460008D3D03922B0DD09258408D3E03008F97 -:202BB00040DE9A9294540467A91B90012A68A28A099A4076B390408D3D039A2B0DD0408D3D -:202BD0003F03BF569A01408DA001BF569A01922B186FA28A099A4076B390408D3E039A2BF6 -:202BF0000DD0408D3D03BF569A01408D3F039A2B922B076FC28ACC18DFFFC28ACC1A2000C4 -:202C1000C28AEC46EDFFD6FE1F7633000BDC211A0001C41A4000BE86BE8B0600BDB2BDAAF4 -:202C3000A486A61EBDA2A582D292025205601F76BF010818FBFF408D360308D09AC292A216 -:202C5000008D3A03BF569201C28AE446FE6CA28A089A4076B390008D38030102921EC2838B -:202C700000BE0902BF56E501C207A98AC392A7FFFF90C496A692BE82BE86BE8B06002276FD -:202C90001F767D0316D0008F806F079294CDFCFF03901F76BE0118D0A8CA16961F767D03B4 -:202CB000089294CDFCFF03901F76BE011AD0A8CA18961F767D030992019094CDFEFF1F76E9 -:202CD000BE01A8CA1BD01A961F767D030A9201901F76BE0194CDFEFFA8CA1B961A7669FF09 -:202CF000060016D0008F806F1F767D039492039018D00796949203901AD00896949201900F -:202D10001BD00996949201900A9622761F76BE011618FCFF1818FCFF1A1A01001B1A010017 -:202D30001A7669FF06001F767D03019302531660008F880A1F76BF01A94002A8036C041A7B -:202D50000008A941036C041A0002A942036C041A8000A943036C041A080003533B60AB28A5 -:202D7000CB0BAA2800091F76BF01248F0000005202A90AA80360041A000801520360041A7E -:202D9000000202520360041A800003520360041A080004520360041A020005520360041A3D -:202DB000000106520360041A400007520360041A010008520360051A000809520360051A4D -:202DD00000010A5203600D1A20000B5203600D1A040001531E60AB2BAA28000B1F76BF0117 -:202DF000128F0000A94004A90CA8036C031A0008A941036C031A0001A942036C031A000254 -:202E1000A943036C0B1A0200A944036C0B1A1000060022761F76BE01408F806F06180000C1 -:202E30000F8F00F0A5C4071800FF08183F00091800FF1BDD0BDE1606A918C0FF161EA9A8EC -:202E500018C0A89219C0C618EFFF0B18DFFF0B18BFFFC518F7FF1A76008FC06F1F767D0393 -:202E7000BF56000109D0CC92C4FF01F0019000721F76BF010192C3FF1F767D0301F00190FD -:202E900080FF00721F76BF010192C5FF1F767D0301F0019081FF00729492C2FF01F0019093 -:202EB00082FF009400960352036104520360BF5601010152036102520360BF5601030552F0 -:202ED000036106520360BF56010607520360BF56010208520360BF560104095209610192A4 -:202EF000015208610552066106520461056FBF560105BF56060101920152036106520360DB -:202F1000BF5605010252036103520360BF5603010152036105520360BF56020101520361BD -:202F300003520360BF56040202520360BF56040103520F6101520D61065206611F76BF0143 -:202F50000D1A00100A6F1F76BF01021A8000056F1F76BF010B1A001006520E61035209613C -:202F7000015204610D1A0080096F0B1A0080066F0B1A0040036F021A800006520B610452C3 -:202F90000961025204610B1A0004066F0B1A0040036F021A000206520661045204610B1ACC -:202FB0000020036F021A0800227604520A6204522461015240610252346103522661446FAA -:202FD0000552116106524060088F8A021F76BE01059AA82801FC0AA81A1E1F76BF01021AE2 -:202FF0000800326F088F00001F76BE01049AA82801BC0AA81A1E286F088F49031F76BE014A -:2030100005020AA81A1E206FA928CB0BA82808091F76BE010A1E059AA828257C1A1E146F51 -:20303000088F8A0B1F76BE01059AA82801F80AA81A1E0A6F2FFF10161F76BE010A1E059AC6 -:20305000A82813BC1A1E1A7669FF0600BDB2BDAABDA202FE1F767D03019200D200D30252B5 -:2030700032601F76BF0116D0008FC0DB0992C1FF94CDFEFF01F016D116D00190A8CAA9CD59 -:20309000FDFF949616D0099203F01F766F030290A8CA9C9600CDFFF39492039089FFA8CAD7 -:2030B00000961F76BF010040036C0102A9860042026C02DA004A026C04DA0044026C08DA7E -:2030D00010D0947A1F767D03019201523160408DC0DBA18A1F76BF01A183877620A116DCAA -:2030F000C418FDFF16DD0992C3FFA18A03F00290C59816DCC418FBFF0992412B008F4CDF02 -:20311000C1FF01F00190A95DA606407646800356A902A18A1F766F0316D0079016DCC4982E -:2031300000CDFFE79192069089FFA8CA00961F767D03019204525B60408DC0DBA18A1F76A2 -:20315000BF0116DCC418FEFF01CC0004C9FF412BA95D008F4CDF20FFE8034076468016D99A -:203170001F76BF010190C198014B026C01DA0148026C02DA0945026C04DA0942026C08DAA3 -:20319000014A026C10DA0147026C20DA0944026C40DA0044046CA9AA8009A9860149056C7D -:2031B000A9AA18FF0100A9860941056CA9AA19FF0100A986004B056CA9AA1AFF0100A986B7 -:2031D0000045056CA9AA1BFF0100A9860940056CA9AA1CFF0100A986004A056CA9AA1DFF0A -:2031F0000100A98610D0008FC0DB947A1F767D030192065210601F76BF010046026D01DA22 -:203210000048026D02DA004B026D04DA10D0008FC0DB947A1F767D0301920552E0FF8900F4 -:203230001F76BF010945036D01DA026F10DB0944036D02DA026F40DB0042036D04DA056F0B -:20325000A9A21CFF0100A9820044036D08DA056FA9A21DFF0100A9820046036D10DA056F1B -:20327000A9A21EFF0100A9820040036D20DA056FA9A21FFF0100A9820048036D40DA056FB1 -:20329000A9A21FFF0200A982004A056DA9AA8009A986056FA9A21FFF0400A9820043066DFF -:2032B000A9AA18FF0100A986056FA9A21FFF0800A9820045066DA9AA19FF0100A986056F8D -:2032D000A9A21FFF1000A9820047066DA9AA1AFF0100A986056FA9A21FFF2000A98200417B -:2032F000066DA9AA1BFF0100A986056FA9A21FFF4000A982004B066DA9AA1CFF0100A9860A -:20331000056FA9A21FFF8000A9820049066DA9AA1DFF0100A986056FA9A21FFF0001A982B1 -:203330001F767D0310D0008FC0DB10A2947A008FC06FCC92013B1F76BF01C4FF01F00190AC -:2033500009D0A985A9860192C3FF01F0019080FFA9850156A2000192C5FF01F0019081FF51 -:20337000A9850156A2009492C2FF01F0019082FFA9850156A20017D0008FC0DB82FE947A66 -:20339000BE82BE86BE8B06001F76BF0100920093C5FFD7FF01F001F10190019190FFA9CB2D -:2033B0000092CAFF01F0019081FFA8CA060009D0008FC06F1F76BF0194CD0004D9FF09CC2A -:2033D000004090FFCDFFA9CBC492C2FF01F0019081FFA8CA06001F767803BDB20B93A988EF -:2033F0000153BDAAE0FFEC001F767D0301930653E0FFE6001F765C030D93E0FFE1001F7687 -:203410007803099308CBE0FFD9007FD0008FC0DB179394271660AB46036C1B46086CAB477F -:20343000036D1B47046D00530C600F6F0C1B900103680C288F01182B1728E803A61A0001E7 -:203450000C1B1F03E7FFB700A6920552056018930361A61A0002AC28200311300E0DA98A2B -:2034700034FFA71E608F0000A9A832FFA7070156A5002406C5962406CD97D57EDD3F4076F1 -:203490005197E596407664971F767D03008FC0DBA4C5ED9632921F767D037BDFF596308867 -:2034B0001CDC08D009D1FD7EC792A4C5008FC0DB959600D0C7929D96A9A80AD1A00DA71EC6 -:2034D000A61EA092A17218DFC7929D96A092A6C50ED1A17201D8C7929D96A0920452ED687F -:2034F0001F76780312D01992C076A4DF13D1959614D0C7929D9615D1CF92959616D0D79226 -:20351000A4C59D9618D11A921F767C0379DF959617D01892959619D0BF569D06BF569510BC -:20353000C792A4C51AD178DF9D96C792A4C51BD07ADF95961CD0C792A4C51ED11F76780366 -:203550006EDC6FDF95961DD0C792A4C5008FBCDD95961FD0C7929D9620D11E92959621D05E -:203570001F929D9622D12092959600D021929D9623D122929D9624D1A092A172949301D8BC -:20359000A0929D970452F8681F7678031B3FE5921C96A9282003ED930E0A1D970E54026068 -:2035B0000E2B0C1B200302670C0A010201562600066FBF561801036FBF560B03BE86BE8BB4 -:2035D0000600BDAAAA280100A888A9800876303BBE5AA75D008F0010A9A8A50F2B60A693D5 -:2035F0005461A75DA9A8A50F2560A693015322601F767D03019206521D601F765C030D9259 -:2036100019601F7678030B92015214610C2BC076C0DB0E2B172B162B0D2B7FDF102BC792BE -:203630001B96092B082B019ABF560B0140767897316FA75D20FF0110A50F0B601F767803DE -:203650000B9201520661A6930461A61BE8031B69A75D20FF0210A50F0460A61B20030F688D -:20367000A78020FF0310A70F0860A692015205661F767803167E0E6FAA2B0C6F1F7678034C -:203690000D7E086F0F7E066F1F767803BF560B03172BBD7A0076AA92BE8606001F7678035E -:2036B0000C9311880E92150A111C0100172B0C2B1397127E14960E2B06000876303BBE2F63 -:2036D0001F7678030B9201521860010201562400100A0F9210540566102B019A40767897BF -:2036F0001F76780317920961FF9C17960660059A407678974076DB98BD570076060008764E -:20371000303BBE2F049A40767897BD57007606000052A88005611F7678031393046F1F76B0 -:2037300078030C93005203611488026F0E88005203611227026F1127A7550366009A1B6FE5 -:20375000A692A89EA794A9082003A91B20030668A908E0FCA91B2003FC67AC28007DAB3272 -:20377000AC282800A930AB07A40D208F00000156A400C4920600A988A693A80800F00F538F -:203790003B660356A601C0763AC1A927AB0800E0A706AB0DA71EC7C52076A9284D55EFFF37 -:2037B000A000029AEFFF9D00289AEFFF9A00A9282003EFFF96001F7678030F92EFFF910040 -:2037D0001F7678032406EFFF8C001F7678032406A80EEFFF86001F767D030192EFFF8100AA -:2037F0001F767D0300927C6FA928E803796F1F7678031792756FA61B10105D68A61B8810E7 -:203810001D671F767803169304600B9301531661A692A908F0EFA988AC28CDCCA636AC2878 -:20383000150022560D93A92D2831A692AC95ABEAAB5C169240761599536FA61B00113B68C4 -:20385000A61B7C1138671F7678030C9303530468AB280300026F0C27A60800EF2606AB010B -:20387000A71EA6920360A7923B6F01520460A706A80E366F02520360AB92326F03520560E7 -:203890001F76780315922C6F84DEAC28CDCCA636AC2815002256A92DAB92AC540C690C9393 -:2038B000A692AB9F2831ABEAAC95AB5C009A40761599166F009A146F1F7678031692056182 -:2038D0001F76780313920C6F0C920A6F1F76780316920361039A046F1F7678030B920600B2 -:2038F0001F7678030B92015227601F767D030192065222600876303BBE2F7FD0008FC0DB60 -:2039100094881F7678031B0EA60F116040765197A9881F7678031C0EA60F09604076649744 -:20393000A9881F7678031D0EA60F0461039A40767897BD5700760600A9881F7678030B9221 -:20395000015217601F767D030192065212600876303BBE2F1F767803197E8076A4DF029A89 -:20397000C697CE7CD67D1A0A40767897BD5700760600608F00001F767803208F00FA28A054 -:203990002AA828062C1E2E2B2806046FA98A842BA9A81F7678032A0FFA6806000600A983BD -:2039B000C57C0600BDB2BDAABDA206FE1F767803A482BF5608010EDCEC92FF90A95AE492B3 -:2039D000FF90A988A9AA37FFA6AFA986DC92FF90A988A9AA37FFA6AFA986D492FF90A988A9 -:2039F00009D0A9AA37FFA6AFA9869492FF9008D0A9599492FF90A988A9B237FFA6AFA98B42 -:203A1000FC92FF90A988008D3203A9B237FFA6AFA98BF492FF90A988408FFFFFA9B237FFC8 -:203A3000A6AFA98BA9A210FFA101A71E441EA98A9392C7960202BF56CC3440764CB3A90E90 -:203A5000461EA28A465DA9B2407622B3419644830102A38A4076089244830102A38ABF5613 -:203A7000C534407608924192A90E461EC38AE446FE6CA9B2A38AA28340769B93C38AE44616 -:203A9000FE6CA9A210FFA101A983A38A4692A993FF91A7FFFF90C597CD960602D52BDD2BAF -:203AB0004076089286FEBE82BE86BE8B060006000600A98AC4920600A988BDB21F7671030B -:203AD000A9A8008D3203A48BBF560101BDAA10FFA101408FFFFFA71EA986A98A9193C797EF -:203AF0000202CF7E40764CB3A9CDFF00A283A7FFFF90A18AD597DD960602E52BED2B4076F1 -:203B10000892BE86BE8B0600BDB202FEA48B0EDCEC92FF90A980E492FF90A988A70637FF91 -:203B3000A6AFA71EDC92FF90A9880129A70637FFA6AFA71ED492FF90A988412BA70637FF91 -:203B5000A6AFA71EFC92FF90A9934196F492A838419620FF0080A70F0666A706415C40760D -:203B70005C9A086FAD5CA792029B81DCA45C407685A1399AA18A4076E99A82FEBE8B0600AA -:203B9000BDB2BDAA02FE1F767103A486BF5601010EDCEC92FF90A980E492FF90A988A706F2 -:203BB00037FFA6AFA71EDC92FF90A988A70637FFA6AFA71ED492FF90A988A70637FFA6AF1C -:203BD000A71E012920FF0080A70F0666A7064076E69A4196086FAD5CA792029B81DCA45CB8 -:203BF0004076C8A1A9AA008D320310FFA1011F767C03A71EA98BA98A9292408FFFFFC79642 -:203C1000BF56CF384192FF90D7964192A7FFFF90DF961292A9CDFF00A7FFFF90E197E996E7 -:203C3000060240764CB3A9CDFF0009D0A7FFA183A28AFF9008D1F597FD960A029D2B952B58 -:203C50004076089282FEBE86BE8B060002FEA61EAC281F00013B2256A60740FF0156A4009F -:203C7000C492A640036CFF90036FA7FFFF9082FE0600BDB2A48BBDAAE1C50AD09183A70687 -:203C9000A58A02194076B39BA927A706A58A01194076B39BA1C5008D3203408FFFFF0EDF1A -:203CB0000356A908AB94A95AA78A9192C7960202BF56CF3340764CB30AD0A95DE106918A45 -:203CD0000219407622B3A988A20EA60F1061008D3C03912BD192025205601F76BF01081A0C -:203CF0000400A18A099A4076B390096FA18A339A4076E99A008D3C03BF569101BE86BE8B40 -:203D10000600A4830EDDED92FF90A980E592FF90A988A70637FFA6AFA71EDD92FF90A988E1 -:203D3000A70637FFA6AFA71ED592FF90A98809D0A70637FFA6AFA71E9592FF9008D0A90E34 -:203D5000E41E9592FF90A988E40637FFA6AFE41EFD92FF90A988E40637FFA6AFE41EF592A6 -:203D7000FF90A988E40637FFA6AFE41E02020156E4000AD01F7678033A9AF4C394C3BF56DC -:203D900008014076E99A06000600BDB2BDAABDA2A482008DA00193923D61408DA0010FD02C -:203DB0009B2B935A008F40DE013BA9A8A281A98AC49203523268A91B90012F66A2923352C8 -:203DD0001A61008F40DEA9A8A281A98AC458A059408FFFFFA38A82D981D8A1880EDC0356D5 -:203DF00094089CCAA959A60640764CB3A188A90EA60F05600CD0A292937A1C6FD3920252F3 -:203E100005601F76BF01081A0400A38A099A4076B390A928FFFF0E6FD392025205601F76EA -:203E3000BF01081A0400A38A099A4076B390A928FFFFBE82BE86BE8B0600BDB206FEA48B7F -:203E50000EDCEC92FF90A90E421EE492FF90A988420637FFA6AF421EDC92FF90A988420665 -:203E700037FFA6AF421ED492FF90A98809D0420637FFA6AF421E9492FF9008D0A90E441E6F -:203E90009492FF90A988440637FFA6AF441EFC92FF90A988440637FFA6AF441EF492FF905B -:203EB000A9880DD0440637FFA6AF441E9492FF900CD0A90E461E9492FF90A9880BD04606F4 -:203ED00037FFA6AF461E9492FF90A9880AD0460637FFA6AF461E9492FF90A9880ED04606D8 -:203EF00037FFA6AF461E94CCFF0004520A61055212604206448A46C4A6934076C8A1076FEC -:203F10004206448A46C4A693407685A13C9AA18A4076E99A86FEBE8B0600BDB200BE00D052 -:203F3000408FC0DBAA2B008F80DCA9A8A00DA98A9580C427A70EAB0F0361C47F01BE01D868 -:203F5000A0928052F168A6921061408D80DC809AA18A40765DB380D0A82802019196A18AA2 -:203F7000A9287E3F407685A1BE8B0600A888A927BDB2A9A8A48B1F767E03BDAA10FFA1015B -:203F9000408FFFFFA71EA986A98AAB9219278050C73FCF960302D77E40764CB3A9CDFF00E1 -:203FB000A7FFA283008D9E01FF90A18ADD97E5960502BF56910140760892BE86BE8B0600C0 -:203FD000BDB2BDAAA486008DA10100D5A9AAA50DA71EA9AAA50DA98A01DD0EDFC79294967D -:203FF000A5920852F468A28A0EDC0356D408DCCAA9590356E408ECCAA993A11B0010126755 -:20401000A19280520967008FC0DB7F529C97156040760C99126F069AA28A029B4076439D9D -:204030001E6FA19240766E9800520760069AA28A039B4076439D136F008D9E01A11B0010C1 -:20405000BF569201036808BE026F0ABEA9AAA28A10FFA101A983A60640760892BE86BE8B59 -:204070000600BDB2BDAABDA204FEA4860EDC0356D408DCCA42960356E408ECCA4396412BEC -:20409000FF9C7D52E7FFB600429280520567809A429E435426674292A91B0010E8FFAA00A1 -:2040B000A91B0F100666A9281010429E435419674292A91B1010E8FF9D00A91B88100667B4 -:2040D000A9288810429E43540C674292A98820FF0011A60FE0FF8E0043927C52E0FF8A001A -:2040F000A9AA10FFA101A71E1F767E031992C79643920356A901BF56CF03D796421B001030 -:2041100005680876303BBE924196439200D327614292A91B00100767A358A072008FC0DB95 -:204130009488066FA392429440764899A9880356A301A98003D1A9AA10FFA101A98AA793A0 -:20415000A17304D0A693D7FF9C97A793A073A6CCFF0001DB94964392A354DB66421B0010E7 -:2041700004684192BD96007643920356A9014196A993408FFFFF039AA894A959A9AA10FF32 -:20419000A101A982A98AA10E40764CB3A9CDFF0004D09B974193A073A7FFFF9005D1939615 -:2041B0004192A172069A4194A988079A9B2BA6594194A99341929B2BA85908D0A0729B2BA2 -:2041D000932B008D9E01BF569201421B0010036805BE026F08BEA9AA10FFA101A28AA9830F -:2041F00043920356A901A694A90E40760892066F039A029BA28A4076439D84FEBE82BE861F -:20421000BE8B0600BDB210FEAD5C89DCA45DAD5CC07600C18FDCA45C08F6852400D0C0763B -:2042300009C105F68424008FC0DB942B01D8A0928052FC68A4C51F767D0300921F767D03B2 -:204250007EDFC79601920452086160D162D0BF569C0ABF569408116F1F76700300D0BF5606 -:204270002002AD5C8FDCA45C9492008F22DC949601D8A0920652F6681F767D0306921F76B8 -:204290007003BF5621651A611F767D0300880092095283DE026004BE00D00129008F34DCDD -:2042B0000356A603C07601DDA00D0156A700C792949601D8A0920852F4681F767D03019241 -:2042D0000152116000D0008FC0DBA9A8A00DA98A01D830D1A092BF569C46105248D1BF564C -:2042F0009C3CF2681F767D0301920252216000D0008FC0DBA9A8A00DA98A01D830D1A092C8 -:20431000BF569CAA065248D1BF569C96F26806D0008FC0DBA9A8A00DA98A01D830D1A092E3 -:20433000BF569C73085248D1BF569C69F2681F767D0301920352116000D0008FC0DBA9A8A9 -:20435000A00DA98A01D830D1A092BF569C46145248D1BF569C3CF2681F767D0300920952A2 -:204370001B6000D0013BAD5C89DCA480008F30DFA7069481A71E008F08DCC792949601D820 -:20439000A0920F52F1683DD1008FC0DB3ED0BF569C46BF5694461F767D0301920652256070 -:2043B000008FC0DB30D032D19428A401A4C531D09428A40133D09C2884037ADF94288403AA -:2043D00048D094282C0149D094282C014AD0942820034BD094282003C792A4C56ED16FD097 -:2043F0009C967BDFC79294961F767D0305920A6100D0008F30DC9428000801D8A0920452F7 -:20441000FB684076D38390FEBE8B0600BDB2408D80DCA9287E3FA8280201A18A4076C8A1FD -:20443000809AA18A40765DB3A98080D0A988910EA70F0E60A688012920FFFFFFA60F086161 -:204450001F767D0300887ED0910EA60F166140768F9E408DC0DB7FD0912B40761A9D1F763E -:204470007D030192015217607FD91F765C03C11A10000F28FFFF0F6F00D0008F80DC949284 -:20449000008FC0DB949601D8A0928052F7681F7670033F2BBE8B0600C4A0D41A0100060062 -:2044B000C4A0D41A02000600D493009A039100530260019A06001F76BF010118F7FF06003D -:2044D0001F76BF01011A08000600227608D0408F806F1F76BE0195CCFCFF015008960BDD99 -:2044F00008CCF7FF0450089608CCDFFF1050089608183FFF1F76BF01C51A08000118F7FF97 -:204510001A761F76C10169FF0002BF560007BF56011F022BBF56040C0A2800800B2B0C2B78 -:20453000BF560F10D42BC41E001A800006001F767A032388BDB2A48BA6921352E6FF580180 -:20455000C07612C10129A7060456A601A71EC7C52076C18A240ED40F0561BF562311EFFF86 -:20457000470108D091C5673E1F767A03232B242BD118F7FFD118FDFFEFFF3A011F76C1011D -:204590000246ECFF3501C18A1F767A03240EC407A71E1F76C10107921F767A03C796BF560F -:2045B0002313240AEFFF24011F76C1010246ECFF1F0107921F767A03BF5623112596EFFF2D -:2045D00017011F76C1010246ECFF120107921F767A03BF56230F2596EFFF0A011F76C10119 -:2045F0000246ECFF050108D091C5673E1F76C10107400B6DD118FBFF1F767A03D118FEFFAE -:20461000232B242BEFFFF4001F767A03BF562309EFFFEE001F76C1010246ECFFE9000792D0 -:204630001F767A03BF56230B2596EFFFE1001F76C1010246ECFFDC0007881F767A03257EE1 -:20465000C18A240ED40F0561BF562307EFFFD00008D091C5673E1F767A03BF562309EFFF73 -:20467000C7001F76C1010246ECFFC20007921F767A03BF5623072596EFFFBA001F76C10173 -:204690000246ECFFB50007921F767A03BF5623052596EFFFAD001F76C1010246ECFFA800B2 -:2046B000079208D01F767A03259691C5673E1F767A03BF562303EFFF9B00D140086CBF5641 -:2046D00023010AD0D11A040091C5673ED141ECFF8F001F767A030AD0BF56230DD11A080032 -:2046F00091C5673EEFFF84001F76C101BF56008F082B021A20001F767A03BF562312776F91 -:204710001F76C101BF56008FC18AE4920896021A20001F767A03BF562310696F1F76C1016A -:20473000BF56008708280003021A20001F767A03BF56230E5C6F1F76C101082B021A200075 -:204750001F767A03BF56230C526F0AD091C5673E1F76C101BF56008708280005021A2000F9 -:204770001F767A03BF56230A426F24801F76C101BF56008FC18AA706C407A71EC792089606 -:204790001F767A03240A1F76C101021A20001F767A03BF5623082B6F1F76C101BF56008F4F -:2047B000C18AE4920896021A20001F767A03BF5623061D6F0AD091C5673E1F76C101BF5631 -:2047D000008708280002021A20001F767A03BF5623040D6F1F76C101BF56008708280006E1 -:2047F000021A20001F767A03BF562302BE8B06001F763000A880A927A48E14282040000245 -:20481000008FB2DE1F767C03121E4076E19F0052FD61A792A793C0FF0191A995A880A792DC -:204830002661408FA6DEAB9220BE1F90A674A792A6540267A7881F767A03A65C0356AB01C6 -:20485000263AA90E28A82A1E008FB2DE4076D99F4076E19F0052FD61A93AA60DA98EAB92DC -:20487000A694A927A792A69EA980DE601F7630001428104006001F763000A880A927A48EF4 -:20489000142820400002008FB2DE1F767C03121E4076E19F0052FD61A792A793C0FF01915D -:2048B000A995A880A7922661408FACDEAB9220BE1F90A674A792A6540267A7881F767A03A8 -:2048D000A65C0356AB012C3AA90E2EA8301E008FB2DE4076DD9F4076E19F0052FD61A93A66 -:2048F000A60DA98EAB92A694A927A792A69EA980DE601F76300014281040060002FE1F76A7 -:204910007A0336C5008FB2DE673E22761F763400008FFFB41CA81A7669FF40760CB41F76E1 -:2049300071030F8F40423A0642A8C0006FB5A9BD120F0077007702E84116008F10DF89E622 -:20495000000040764BB42376002082FE0600BDB2BDAABDA202FEA85BA58BA4864B9303528E -:204970004197C12B146106520F60A31B00103868A31B03103566A39240766E980052326078 -:20499000BF56C1032F6FBF56C1012C6FA38820FF0010A60F0460419210521561A38820FFB6 -:2049B0001010A60F0860419228520D6150520B6178520961A38820FF0011A60F1160419259 -:2049D0007C520E60005200D11161A192A394407648999A9601D94192A154F866076FBF563A -:2049F000C102C27B4193029ACA9782FEBE82BE86BE8B0600BDB2BDAA02FE1F767C032192E6 -:204A100025611F76800108421A6D0A420A6D1F767C03FABE0A061F767C032E03A60F7269A5 -:204A300004021F768001061E0A426C6C1F767C03212B1E2B1F7680010A1E0D6F1F767C038B -:204A50000402212B1F768001081E1F767C031E921F5423661F767C031A921C610876303BD2 -:204A7000BE5A1B59AD5D1C93008F40DD1D88A1CCFF0082DD1A2BA55D417E407634A21F769E -:204A90007C03A1CD00FF1F2B42CB1E962097BD7A00761E921F5436691F7680010406A940E0 -:204AB000316D1F767C03008F40DD1F581F59012904B601D89C2504BE94AF5AFF1F92C0FF4D -:204AD0001F768001A908001F08C3A9251F767C030AC51F767C0320AF1F7680010AC21F760A -:204AF0007C031F0802001F768401161E1F767C03BF5621012EC31F76840114A91F76800187 -:204B100004C282FEBE86BE8B0600BDAA34FEA892FF9C0564105204640F9A026F009A2276BF -:204B30001F76BE01AB28F0FFAA28457F09CDFFDF013B08B6A81A0010A4A908BE099700D2B4 -:204B500009CDFF3FA81A00400997A9851F7680015AFF2AC35D56A400A0A9AB2BAA28467FF8 -:204B700008D42CC2ACA91F7684015AFF5D56AC0002A8A5A9AB28E0FFAA28457F0AC3AB0379 -:204B9000AB28FAFFAA28FFFF12C21F76800107BE00AA1F768401003A08A0101E1F768001D0 -:204BB00002A900C200BE0002011960C2601A80F2081E000260C401190C1E000201191E1EA8 -:204BD00000020119221E00020119181E14C21844FF6C16065E1E5E18FFFD5E1A00015D1882 -:204BF00000FF5D1A05005E1A7F005E18FAFF5EC416C26018FFEF6006141E1844FF6D000202 -:204C1000488F70641F768301541E088F7064541A010000A00031531A0200010200BE02A8C9 -:204C3000541A06001F768001408FC2B300D4301E54C5020232A82EA9008F97B31F76370001 -:204C500008A01F768001241E26C220C31F7637000AA81F763300321A1000321A20002376D2 -:204C700000011A761F767C0369FF000200B6182B261EB4FE22C224C3BE86060006FE00020B -:204C90001F767D030ED03C1E94A3AA8820FF001F0CD094C5A60F3D61A9A9A80EA958463FFA -:204CB000A0CC00804396A0CC00404296A0CC00204196A706A018FF1F45974392447F0052EF -:204CD0000861A092805205674692008FC0DB9496429201D80861A092805205674592008FD3 -:204CF000C0DB9496419201D80861A092805205674492008FC0DB9496A9A9455C445DA80EE6 -:204D100046934076299A1F76BF010F1A01000E6F0AD094930F91085309601F767C03A7060F -:204D30001B3F1C971D7FBF561A0186FE06001F767C031992A88809611F7680010806A9409A -:204D5000046D0A06A9403E6C02D5A692013BAB28010001B6A572AA2B1F768001A9A8A581E0 -:204D7000A98308A90AC301B6C58500915AFFA692A772A9A8A781A983C5853FFFABCAAACB26 -:204D9000A71EA9A8A681A98A1F768401C48500915AFFA6853FFFAACBABCAA81A00E0061E2D -:204DB00004C322761F76800100022E1E1A760102041E1F76BF010E1A01001F767C03BF56C4 -:204DD000190169FF060002FE22761F767D03019204520460008FADAC036F008F92A61F768B -:204DF00034001AA81A760F8F40421F76710369FF3A0642A8C0006FB5A9BD120F0077007709 -:204E100002E8D123008F08DF89E6000040764BB41F7630000C2820402376001082FE060082 -:204E3000BDB2BDAABDA2407675AC00D3103B69FF407699B5267600002F760000407647B6D8 -:204E500040767BB4407696941F767D03009A0093407612A30D9A40767E91418F00C201D4FD -:204E7000A9A04076CD90418F00C202D4A9A04076CD9040760BA24076FE93008FC06FA48373 -:204E900000D20BDC0CDDC51A0100C41A0100012920FF50C340766AB4008FC06FA48301DAB1 -:204EB000A2920EDC0FDDC51A0100C41A01000A52EF64008FC06FA4830BDC0ADDC51A0100D7 -:204ED000C41A01004076CC934076469A1F767D03109B009240765EB6407670A44076B8B52F -:204EF0001F767D030192045205614076FEAD40763784407663854076939F4076D3831F7645 -:204F10007D03019206520360407681AF1F767D03C076C0DB00927EDFC79622761F76C001AD -:204F3000BF56292F1A7669FF407687A21F765C0305926761052B00D2008FC0DB013BA9A811 -:204F5000A281A98A60D09488A6925761008F7EDFA9A8A281A98AA692C40AC4544E66408F7B -:204F7000BEDEC42BA9A0A281A98AC49280520868008FBEDE013BA9A8A281A98AC42B013B26 -:204F9000086F109AA794A9CCF0FFC4968052F167008FBEDEA9A8A281A98AC4800356A203A9 -:204FB000408FF0D8A61EA792C3FFA927A606AB0D0156A500A7CD0F00A82DC59262FFA9881A -:204FD000E161013B0A6F008FBEDEA9A8A281A98AA692A0FFA988C40AA640F66C408DBEDE71 -:204FF000013BA9B2A281A98B008FC0DB009AC193407624A4C108030001DAA29202529D64ED -:205010007FD0008FC0DB9441066C7FDCC418FDFF40768F9E7FD0008FC0DB9442066C7FDC8E -:20503000C418FBFF40761A9D7FD0008FC0DB9443066C7FDCC418F7FF4076939F7FD0008F68 -:20505000C0DB9445066C7FDCC418DFFF40765C804076B3951F767D0301920152136016D061 -:20507000408FC0DB9592A58AC1FF01F016D0A3CE0356A9027FDC0790C49895CC0400C1FFE1 -:20509000A95B019206525A607FD0008FC0DB94921F767E03A99300B6D6FFC5FF01910190F4 -:2050B000A9882792026001B6A892A7CE1B61008FC06FA4831F767D030BDDC51A004001921E -:2050D00006520761045205610DDCC41A0020056F1F76BF01041A0800008FE8031F767D03DF -:2050F00032A81F767E03289200B62797026001B6A693A7CF16611F767D0301931F76BF0145 -:205110000B1A000406530661045304610B1A0020036F021A0800008FE8031F767D0332A896 -:205130001F767E03287E1F767D03320607601F76BF010D1A00400D1A00044076FD9900D2EA -:20515000A2920461408D40D0036F408DC0D3A18A4076529CA91BFFFF53611F76BF0100BE9F -:205170000F1A01001F767D0337523CC2116237523061335208623352386103523E61065273 -:2051900038613E6F34522D6135522761396F3A5208623A5212613852186139521261306F59 -:2051B0003B5207613C522C60A18A4076AA9C286FA18A4076519C246FA18A40760E9C206F97 -:2051D000A18A4076119B1C6FA18A40764D9B186FA18A4076E49A146FA18A4076E59A106F96 -:2051F000A18A40765F9A0C6FA18A4076C69B086FA18A40766D9D046FA18A4076BE9D01DA1C -:20521000A2920252E3FF91FE9C6F1B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E248 -:20523000BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF42291656227601021F762A -:205250007C0301560A00237600102676391110291A767FD0008FC0DB944F046D69FF40761B -:2052700050AB1F765C03040A049214520468042BBF56050116D1008FC0DB7FD09C9294CA83 -:205290000190A9880C9301F10191A6CB10601F767D030193065306611F76BF010B1A00084D -:2052B000146F1F76BF010B1A00200F6F1F767D030193065306611F76BF010F1A0008056FE0 -:2052D0001F76BF010F1A00200653E1FF4B011F765C03120A12930A53E0FFA1001F767D03F4 -:2052F00001931F765C030553122B0360189322601F767D030193015305601F765C031793F1 -:2053100019601F767D03019306530F6104530D61025306611F76BF010B1A0004226F1F766D -:20533000BF010B1A00401D6F1F76BF01021A0002186F1F767D03019306530F6104530D617B -:20535000025306611F76BF010D1A00040A6F1F76BF010D1A0040056F1F76BF01041A0002E3 -:205370001F765C0316930F601F767D0301930353136101531161065319601F76BF01021A95 -:205390008000186F1F767D03019303530F6101530D61065306611F76BF010B1A00100A6F02 -:2053B0001F76BF01041A8000056F1F76BF010D1A00101F765C03179315601F767D0301932E -:2053D00006530B610353046101531561196F1F76BF010B1A0040226F1F76BF01021A8000AF -:2053F0001D6F1F767D0301930653146103530D61015306611F76BF010B1A00800F6F1F760E -:20541000BF010D1A00800A6F1F76BF010D1A0040056F1F76BF01041A020000523E601F7672 -:205430005C03128062D0940EA70F37601F767D03019303530F6101530D61065306611F76C4 -:20545000BF010D1A00100A6F1F76BF01021A8000056F1F76BF010B1A001006530E610353BF -:205470000961015304610D1A0080096F0B1A0080066F0B1A0040036F021A800006530B6188 -:2054900004530961025304610B1A0004066F0B1A0040036F021A00021F765C03009A1993B4 -:2054B00000530260019AA693A9CF04611128F401132B110AC4E21100197E12E8D01F14ADF7 -:2054D0005564130A1393019100B6112B149713930791026101B6A692157F3C601F767D033C -:2054F0000092095224611F765C0316D0BF56160194937FD0D0FF9492C9FFA8CAA940026C28 -:20551000167F0C42116D0C430C6D0C44036D172B2D6F1592009B00520260019B1797266FDF -:2055300014921796236FBF561701206F1F765C030C41BF561801036C1492026F009A0C40DF -:205550001796036D162B126F14931492189716960D6F14931488149216971896177E066FEA -:2055700069FF4076FEAF4076EA9882FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE0036 -:20559000BEC5BEC4BE83BE8ABE870300303BF1FF177602761B76F0FF0500BDABBDAABDA80C -:2055B000BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE36 -:2055D00069FF422916561F7633002292419623760100267601012218FA002128FFFF10293D -:2055F0001F765C030E9202610E0B1F765C030D92E0FF38011F765C030F920D61FF9C0F969D -:205610000A60008FC0DBA4837FDC7FDDC518EFFFC41A04001F767D030592196100D1008FD5 -:205630000871013BA9A8A181A98AD492C3FFA988008FBCDDA9A8A181A98A69FFA192C47EFB -:205650004076018601D9A1920452EA641F767D030192065237601F76C4010992C3FFA90E47 -:20567000A9BD120F0077007763D0808DC0DB8BE60000008F40D78CE6010069FF13E2920150 -:20569000407638B56ED16FD0013B008FC0DB9A92929EA985A9BD160F6FD0C8E29402007768 -:2056B00020E7800089E6090040769AB250E800C8007790E8008800778CE600001DD013E297 -:2056D00092001F767D0301920552406000D11F765C0307921F7674033D0A3D5402623D2B7B -:2056F000008F0871013BA9A83D81A98A3D2DC492C3FFA90EA9BD120F69FF008F40D71235FF -:205710000156A4008BE60000407638B5013B1F767403008F86DE8EE60000A9A83D81A98A79 -:2057300013E2C400008F30DFA9A83D81A98A01D9C492085205613D924076E482046F3D92A3 -:205750004076B780A1920652C3641F767D030492E1FF89001F76740301293E0640FFA61E09 -:20577000013B3C85A60F39691F767D03049200D13465008F0871013BA9A8A181A98A1F7631 -:2057900074033D2D1F767D03C492C3FFA90EA9BD120F0412A194A92D008F40D769FF8BE60D -:2057B000000012350156A400407638B51F767403A192013B008F86DE3D2D1F767D030433D0 -:2057D000AB72A9A8AB81A98A01D98CE60000A19213E2C4000454CE641F7674033C0A3C920A -:2057F000FF9CA9853E0F3E681F767D03049200D11F7674033C2B11651F7674033D2D1F766D -:205810007D0369FF0412A1944076B78001D91F767D03A1920454F1641F765C0306921F7668 -:205830007403029C3D0A3D5402623D2B1F767D0302931F7674033D9200530F611F765C0363 -:20585000065402600D9A1F7674033D931F765C03069F015302600C9A69FF40762094026FC1 -:205870000D0B008F0071A4831F76330019DC01DDC51A0040C41A1000BF562101103B4192DC -:2058900082FE2296AFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8AD0 -:2058B000BE86BE870300303BF1FF17760276005206601F76BF01041A0001056F1F76BF01F7 -:2058D000021A00010600005206601F76BF01041A4000056F1F76BF01021A40000600407649 -:2058F000E4A9019A4076F0A9009A4076E4A90102407663B6009A4076F0A91E02407663B69A -:205910000600009A4076F0A91E02407663B6019A4076E4A91E02407663B6009A4076E4A9EF -:205930001E02407663B60600BDB2BDAABDA20EFE00D2A98BA288A492A52D0252A65BE3FFB2 -:20595000F000A9B2026301D256FFA983AC9205640452036301D3026FAC2BAC92A58B4B2BD0 -:205970000B650A02421EA9B2C0006FB54B0AA98BAC924B54F762A9B20A650A02421EA9B2AC -:20599000C0006FB501DE58FFA98BF862A292A58BA694A988026001BEA692AC944B2B04521B -:2059B000A9880F650A02421EA9B2C0006FB5AC80A98B4B0AA69281DFFC9CA72D4B54F362DA -:2059D000AC920263AC2B019A66FFA9580152026000D08076E803A9B242C2C0006FB5441E31 -:2059F000A9B242C2C0007EB5A61E6402421EA606C0006FB5461E6402421EA9B2C0007EB5B3 -:205A1000A61E0A02421EA606C0006FB5481E0A02421EA9B2C0007EB54A1EA61E46064807CF -:205A30004407A607046000D0A02DAC5AA3921561039A013B4B96AD888ADEA6880356A90124 -:205A50000156A600C6060960AC924B5406610F024B0BC61E4B92F062A2922061019A013BBA -:205A70004B96AD5D8ADDA55D0356A9010156A5000F02C50F09614B9203520661019C0452E8 -:205A90004B96F0640B6FAD5D8ADDA55D0ABE4B920356A9010156A500C5C2009A4B2B013B5D -:205AB000AD5D8ADDA55D0356A9010156A5008076B0DAA606C507A61EC685C51E019A4B2D67 -:205AD00066FFA0CE046180020156C5004B0A4B920452E76448A3AB92AA2BFF90A927A9A95F -:205AF000AC28180037FF5AFF4A064E1E4E92FF904E964D2B4E06ABCAAACB4E1E4606009B03 -:205B1000FF903FFF5AFF4E06ABCAAACB4E1E44063B565AFF4E06ABCAAACB4E1E026F4EB256 -:205B3000408F8EDF013BA9A0A481A98A4B2BC45BA3921052246200D14E92013B0190A988DB -:205B50004E0640FF4E1EA6924076FCA901D9A1920852F364A35A00D1A293A292B0FF01906E -:205B7000A85A4076FCA901D9A1920652F66440760EAA01DB4B0A4B920452DB648EFEBE821C -:205B9000BE86BE8B060011D0008F107094920F9004520E60CCCC8001C6FF025209602276B6 -:205BB0001F76C001BF562555BF5625AA1A7669FF060022761F76C001BF5629681A7669FF82 -:205BD0000600BDB202FE1F76C001A888A9801143026C257611CC80010561227611187FFE32 -:205BF0001A762276408F1070A58AA79211D00F9001DCC41A400095CDF0FFA8CA21961A7631 -:205C1000A79204600102A98B026FA759A92880C3A828C90169FFAC1E0556A100407666AB8C -:205C3000A1A91140FF6C22761118BFFF1A76A6930153036102530A602276A69211CD7FFE64 -:205C5000039086FFA8CA11961A76A6930A60A9B2013BAC281E0040FF2256A10741FFA98B74 -:205C7000A69301530A60A9B2013BAC281E0040FF2256A10741FFA98BA69302530960A9B26F -:205C9000AC281F00013B2256A10740FFA98BA7921460A69203521160227611CC7FFFA91AD1 -:205CB000000169FF119620FFDA05407663B61F76C001111A80011A761F76710382FE69FF74 -:205CD0003AB2BE8B0600BDB202FE22761F76C001BF561A011B2B1A92036001BE046F03560C -:205CF0001A01A9881F76710342C269FF3A06C0006FB53E1E1F76C0011B92036001BE046FBB -:205D100003561B01A9881F76710342C23A06C0006FB5408D1070A18315D0008F200B3C1E32 -:205D30000CDD1F762C0094CCF8FF015014DC3596C41A04003418F7FFC51A080078768000CD -:205D50001F76C0011C1A1000A18A1C1A00041C1A00081C1A20000DDC10D91C1A00011C1A5F -:205D700000101C1A00201C1A00401C1A00801C18FBFFC41A01001D1A02001D1A04001D1AC9 -:205D900008001D1A10001D1A20001C1A04001D1A00041D1A00081D1A00101D1A00201D1AC4 -:205DB00000011D1A00021D1A00401D1A0080C11A0001201A0002201A0004201A0008201A99 -:205DD0000010201A00201A7669FF82FEBE8B0600407666AB049A029B40766EAB4076F0AB60 -:205DF000060002FE22761F762B002028FFFF2128FFFF2228FFFF2328FFFF2428FFFF252880 -:205E1000FFFF2628FFFF2728FFFF1A761F76FFCF69FF38924196399241963A9241963B92CD -:205E300041963C9241963D9241963E9241963F921F762B0041962F9201F0019082FE060058 -:205E50001B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD02FC -:205E700003E2BD0330E6000669FF4229165600D1227601021F767C0301560A00237639114E -:205E900010291A767FD0008FC0DB944F046D69FF407650AB1F765C03040A049214520668D7 -:205EB000042B1F765C03BF560501008FC06FA4831F767D0306DDC51A0100019206520E617D -:205ED00004520C61025205610FDCC41A00040A6F1F76BF010F1A0040056F1F76BF01061A48 -:205EF00000021F767D03019206520861045206611F76BF010F1A0020056F1F76BF01061AE3 -:205F1000080001021F767D033C07A61E008F204E3C1EA9A8A60F02673CA8390A39920A5236 -:205F30000264392B3592AC2B1261008FC0DBA9A8AC0DA98A62D0949239540465019A66FFC1 -:205F5000A172AC92019C3554A92DF068380A389202520265382B7FD0008FC0DB9493A89288 -:205F700016D094CAA940EDFF8300A84B586D20FF204E3C0F306938920A60013B1F766F03D5 -:205F900000D401D569FF0085407621AA1F767D03389201520A60008FC0DB013B01D569FF99 -:205FB000CC8501D4407621AAA192408DC0DB02D400D569FFD1CEA90E407621AA1F767D0390 -:205FD000389202527B60013B03D400D5D985407621AA746F3892076000D4000200D569FFCA -:205FF000407621AA1F767D0338920152076001D4000200D569FF407621AA02D4000200D535 -:2060100069FF407621AA1F767D0338920252566003D4000200D5407621AA506F389208607E -:2060300020FFB82200D401D569FF407621AA1F767D0338920152086020FFB82201D401D586 -:2060500069FF407621AAA10E02D400D569FF407621AA1F767D03389202523060012903D440 -:2060700000D520FFFFFF407621AA286F69FF4076E2B538920760013B00D404D534854076C8 -:2060900021AA1F767D03389201520760013B01D404D53485407621AA1F767D0302D400D5A8 -:2060B0003A06407621AA1F767D033892025206603A0603D400D5407621AAAFE2BE03AFE226 -:2060D000BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF177673 -:2060F000027602FE2276008F57A81F7635000AA81A7669FF407633B61F763300221A2000BB -:20611000237601001F767D03019206522360008F00711F76C401D4CCF0FF05500296DCCCD4 -:20613000F0FF0350039603CC1FFF1050039603CCFFF1A91A0005039603CCFF0FA91A00408E -:206150000396E4CCF0FF0750049604CC0FFF205004961F767D03019203521460008F0071AD -:206170001F76C401D4CCF0FF02500296DC18F0FF03CC1FFF1050039603CCFFF0A91A0002F0 -:2061900003961F767D03019201522860008F00711F76C401D4CCF0FF06500296DCCCF0FF65 -:2061B0000550039603CC0FFF4050039603CCFFF7A91A0007039603CCFF0FA91A002003965A -:2061D000E4CCF0FF0350049604CC0FFF6050049604CCFFF1A91A000104961F767D03019235 -:2061F00002520960408F0071A58A02DCC418F0FFDD18F0FF019205524C60408F0071A58AD1 -:206210001F76C40102DCC41A0F00DDCCF0FF0250039603CC3FFF3050039603CCFFF0A91A1F -:206230000006039603CCFF0FA91A00C00396E5CCF8FF0A50049604CCBFFFB050049604CC22 -:20625000FFF7A91A0007049604CCFF0FA91A00400496EDCCF0FF0550059605CC1FFF105072 -:20627000059605CCFFFEA91A000E05960518FF0FF5CCF8FF08500696061AF00006CCFFFD84 -:20629000A91A000D069606CCFF0FA91A00900696408F0071C0760068A5C41F76C401A78AE1 -:2062B0001AD019DD01DEC61A000119DC011A0008C51A1000001A10000018BFFF001A000FFE -:2062D000011A00401F763300BF5621011F76A001C41A000819CCFFFCA91A0004199697CC7F -:2062F000FFFDA91A00011A96BF56098000CC7FFCA91A0001009600CCFFE3A91A00080096D0 -:2063100000CC001CC9FFA92D019A66FFA98800CC800304600102AC1E086F00CC8003013B34 -:20633000C6FF80FFA985AC1E013BA6851F7671034456A900421E3A06C0006FB5008FA60E97 -:2063500042A8C0006FB51F767D0301931F76A00105960018FCFF025303602502026FBB02C5 -:206370001F76740382FE3E1E0600009A019C1952FE640600005206601F76BF010D1A0010D1 -:20639000056F1F76BF010B1A00100600BDB21F76BF01BDAA0D1A0008BDA2A95B0102407673 -:2063B00063B600D1808DC06FA28AA392CEFF0BDCC41A0080407647AFA39280FFA95B0102CD -:2063D000407663B60DDA0102C21A0080407663B601D9A1921052E7641F76BF010B1A00088D -:2063F000BE82BE86BE8B06001F767D03BF562A052B287017008F59021F767803BF56203C1C -:206410001F767803BF5621A01F7678031F2870171F767D0330A80600BDB2BDAABDA202FE80 -:2064300079D0008FC0DBAC1E013BA98B94854C82A61E4456A90042A2C0006FB578D0A98375 -:2064500042A2215694004456A100C0006FB57FD0A607A5039449046C7AD0013B9485A918CD -:20647000FF0FA95AA91A0080407653AF7BD0A9B2408FC0DB34FF957AA61EA9B242A232FF7A -:20649000A607C0006FB5A98A42A2C802AC1EA9B24456A900C0006FB51CD0A49E82FE289CBC -:2064B0009596BE82BE86BE8B0600A9280290407653AF1F767D03019206520F6104520D617F -:2064D000025206611F76BF010F1A00040A6F1F76BF010F1A0040056F1F76BF01061A00024D -:2064F000060002FE1F767D03320604610102415632002A922C0A2C546F6630062C2B4C6088 -:206510007FD0008FC0DB9447176C2B92C0FF2D5402672D0A2B922D0A2D5402672D96C4E2B0 -:206530002D00C4E22B014FE800C84FE80980007710E74000086F2E922D2B90E5019CA9187D -:20655000FF032E968EE600002D802B88A9BF120F2E931F7678031E7F1F7678031F7E1F7658 -:20657000780322960D617FD094480A6D1F767D032B88013BA98542C2407699AF2D6F407642 -:20659000E2AF1F767D03008FC0DBBF562E017FDCC418FFFE216F30060119A61E301E20FF92 -:2065B0005802A60F136120FFF401300F0F6120FF9001300F0B6120FF2C01300F0761C8026D -:2065D000300F04616402300F07604076E2AF1F767D03BF562E0182FE06001B76F0FF050050 -:2065F000BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E61F -:20661000000602FE69FF422916561F76330032924196237600012676000132187500212883 -:20663000FFFF1029408FC0D369FFA58A40768A9140768F91103B4192329682FEAFE2BE03BB -:20665000AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FFE9 -:20667000177602761B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0173 -:2066900003E2BD0203E2BD0330E6000602FE69FF422916561F763300329241962376000149 -:2066B00026760001321871002128FFFF1029408FC0D369FFA58A40768A9140766092103B35 -:2066D0004192329682FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83E7 -:2066F000BE8ABE870300303BF1FF177602761B76F0FF0500BDABBDA8BDA0BDC2BDC300E20A -:20671000BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF422916561F762E -:2067300033003292419623760001267600013218FD002128FFFF1029408F40D069FFA58A07 -:2067500040768A9140768F91103B4192329682FEAFE2BE03AFE2BE02AFE2BE01AFE2BE00DA -:2067700080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF177602761B76F0FF0500BDABC6 -:20679000BDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E60006DF -:2067B00002FE69FF422916561F7633003292419623760001267600013292322B2128FFFF88 -:2067D0001029408F40D069FFA58A40768A9140766092103B4192329682FEAFE2BE03AFE238 -:2067F000BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF17764C -:2068100002762276008F806FA483A4C41F76BE0126DDC51A030027DE261A0C00A483261A5A -:206830003000261AC000261A000317DD261A000C261A0030261A00C0C61A0300271A0C00F5 -:20685000271A3000271AC000271A0003271A000C271A0030271A00C0C51A0300A48328DDA5 -:20687000171A0C0016DC171A3000171AC000171A0003171A000C171A0030171A00C0C51AE5 -:206890000300281A0C00281A3000281AC000281A0003281A000C281A0030281A00C0C41A3E -:2068B00000C0161AC000161A0030161A000C1A7669FF06002276008F806FA4C4A4831F7644 -:2068D000BE0118DEC61A030019DD181A0C00181A3000181AC000181A0003181A000C181AE3 -:2068F0000030181A00C0C51A0300A48369FF191A0C0014DD15DC191A3000191AC000191A4B -:206910000003191A000C191A0030191A00C0C51A0300141A0C00141A3000141AC000141A39 -:206930000003141A000C141A0030141A00C0C41A0300151A0C00151A3000151AC000151A25 -:206950000003151A000C151A0030151A00C040768EB10600227615D0008F200B1F762C00A8 -:2069700094CCF8FFA483A4C5A4C40150359614DDC518FCFF0CDF3418F7FFA4830DDE341A46 -:206990000400C41A60000EDDC41A1C00C41A0300C41A0030C41A000EC41A8001CC1A400060 -:2069B000C41A0040C41A0080211A0300C71A60002C1A1C002C1A03002C1A00302C1A000E57 -:2069D0002C1A8001C61A40002C1A00402C1A00802D1A0300C51A6000A4830FDD2E1A1C0074 -:2069F00018DC2E1A03002E1A00302E1A000E2E1A8001C51A40002E1A00402E1A00802F1AF9 -:206A10000300C41A0700381A38001A7669FF40768EB107F6007769FF0600BD3ABDB2BDAA58 -:206A3000BDA202FE0129A9BF120F58FF5B61A85C7F91A8088000421EA493D6FFA85CA9BF05 -:206A5000160F6761A85D7F91A8088000A859A958A593D6FFA85DA493A571A8180001A69795 -:206A7000A418FF00A518FF007FDCA492A59EA7964D64A90801FF3E62A193A09236FFA859E0 -:206A9000A958420635FF0EF6A11FA95BA3010AF6A11F2D56A204A32DA03640FF0BF6A11F6E -:206AB00033FF009B30FF54FFA20CA39540FFA70801001FF677FF200940FFA70801001FF6EA -:206AD00077FF5AFFA7922265A90801FF1363A9A946FF7F91A85BA95AA625A79596FFA20CF9 -:206AF000A395A9BD120F82FEBE82BE86BE8BBE8E0600009B57FFA8087FFF5AFFA693F26025 -:206B1000A8280080AA71AB92ED6F20FF0000EA6F5AFFA493A818000196FFA85CA9A9A808FD -:206B30007FFFA81C0080A4CBDD6F58FF5AFF00BE25610129A6920190A958A60640FFA4074A -:206B5000A71EC793A640046DA892C7FFA92DA09201520460A8CCFF00A92DAC58A592A0F2DA -:206B700001DEA092FF90A958A592408FC0DAC7FF9570A95DA9A9A60FDE66A5920600A71EA6 -:206B90008076C0DA0A6FA5928470FF90A95881DFA592C7FF9670A95DA706F660A592060078 -:206BB0000052A927FF76FFFF00BE3365A9A8013BA681A983A793C592FF90A92FAA71A880BF -:206BD000009AA740046DB0FFA880056FB0FFA81C01A0A880019C0852F564A9A8013BA68128 -:206BF000A983A793C592C7FFA92FAA71A880009AA740046DB0FFA880056FB0FFA81C01A096 -:206C1000A880019C0852F56401DEAB92A654CF62A79206001B76F0FF00E2BD0030E600062B -:206C300002FE422916561F7633003292419623760001267600013292322B2128FFFF102932 -:206C500001021F767C03180A1F768001061E1F763300211A0001103B419282FE329680E2E5 -:206C7000BE00303BF1FF177602761B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2B4 -:206C9000BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF422916561F763300329254 -:206CB000419623760001267600013292322B2128FFFF1029008F006169FF4076CBA31F7604 -:206CD000800102020C1E1F763300211A0001103B4192329682FEAFE2BE03AFE2BE02AFE257 -:206CF000BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF1776027600021E -:206D10001F763000008F000C0119021E1F767C03408F100C000200A81F763000062B011910 -:206D3000072BE41A1000041A20001F763000008F080C0A1E1F76300000020119121E1F768F -:206D5000300000020E2B0F2B1F767C0308A810A0021E1F763000162B172B1F763000E41ADF -:206D70001000E51A10000C1A20001F763000141A20001F767C03121E0A1E060000E0E45005 -:206D900003E2F40188E61000C48303E2D500C483F52BC483FD2BC483E51A1000C483E51A18 -:206DB0002000C483E518FFFBC483E518FFF7C4830002E51A0040D41E06000129BDB240FFD3 -:206DD000BDAAA98B00D208611002407663B601DAA9B2A20FFA66BE86BE8B06001F76C001BC -:206DF000201A001040768EB12276008F200BA4C4A4831F762C000ED015DE14DDC618F8FF0B -:206E1000C51A03003418F7FF3418FBFF94CCBFFF20502E960FDC2ECCE3FF08502E962ECCC9 -:206E3000FCFF01502E962ECCFFDFA91A00102E962ECCFFF7A91A00062E962E187FFEC418A7 -:206E5000BFFF2E18FFBF2E18FF7F2F1A03001A7607F6007769FF0600AD28000469FF1F5628 -:206E700016561A5610E6000240291F76000002291B762276A92867B6A828000001091B6198 -:206E9000C07667B604290F6F009BA92401DF046C0429A82401DFA61EA1F78624A706A1817E -:206EB0000109A71EA92403635CFF043BA95901DF0900ECFF1A76A928FFFFA828FFFF010919 -:206ED0000E61FF76FFFF066F01DFBDC3A71E673EBEC5A92401DFA82458FFF7604076FFB56D -:206EF00040761CB61B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0168 -:206F100003E2BD0203E2BD0330E6000669FF42291656227601021F767C0301561200008F16 -:206F3000B2DE69FF1F767A0338C5673E1A76AFE2BE03AFE2BE02AFE2BE01AFE2BE0080E261 -:206F5000BE00BEC5BEC4BE83BE8ABE870300303BF1FF17760276BDB2CFE6010008D003E24B -:206F7000BD040ED103E2BD0503E2BD0603E2BD07AFE2F400AFE2D40510E394040CD012E31E -:206F90009C1F0ED118E394DA0AE3C4A000E3E4C600E7BB0110E700010CD010E7C00003E2ED -:206FB0009C0203E2940008D0F406941E03E2F401AFE2BE07AFE2BE06AFE2BE05AFE2BE04FA -:206FD000BE8B0600022904295F565AFF42065F56421E00021FF617564200AB063256022965 -:206FF0002076022904295F565AFF420656FF421E00021FF6175642003256022920765AFF20 -:2070100000021FF617564200A9A920765AFF00021FF6175642002076103B1F7633002018B2 -:20703000FEFF222B242B69FF262B282B2A2B2C2B2E2B302B322B342B362B382B232B252B1D -:20705000272B292B2B2B2D2B2F2B312B332B352B372B392B06001F763300201A0100212840 -:20707000FFFF102969FF06000000A0E514AD0962A0E51F76740314AD90E5B4562901156F2B -:207090004FE803C092E601008CB5050000E7CA00007700E78A000077CFE812F0007700E700 -:2070B0005100007700E74000060002FE1F767D03360AC4E23600007712E8D01F14AD116404 -:2070D000370A3792362B0A520260372B3734570434963A0603610002036F000201193A1EF9 -:2070F00082FE0600A928FFFFAA28FFFFAB28FFFFA828FFFFAB0F04ED00D400BE0B6FA92735 -:20711000A928FFFFA92FA4A9C488A928FFFF0209A98AA69240769DA406000077006F1F7662 -:207130007E03BDB21EC5A959673E1F767E0322C5A70603ECA192673E1F767E03200603EC29 -:20715000A71E673E40761AB6BE8B060022761F76C00169FF1C1A0800787680001A761F76B9 -:20717000C401028FE64969FFBF5618E0A9A8407663B60600408F00C0008F000D2276009A82 -:2071900085C4019C805284C2FC641A7669FF06001F767E031CA806001F767E031EA80600C1 -:1471B00006001F767E031897199606000119C356FFFF060014 -:2071C4001201000000C0A78B0000A78B0000A78B0000A78B0000A78B0000A78B0000A78B7A -:2071E4000000A78B0000A78B0000A78B0000A78B0000A78B0000A78B0000758C0000688C6A -:207204000000F88F00009A8B00000F890000B18B0000828C0000458A00003A8A00002F8A90 -:207224000000248A0000198A00000E8A0000038A0000F8890000ED890000668A00005B8A08 -:207244000000508A0000DD8A0000C28A00000F890000B9890000A089000005900000718A0A -:207264000000D2890000078E0000D18D00009B8D0000658D00002F8D0000F98C00000F89C9 -:2072840000000F890000228E0000EC8D0000B68D0000808D00004A8D0000148D00000F89C9 -:2072A40000000F890000CF8E0000B48E0000998E00007E8E0000638E0000488E00000F8901 -:2072C40000000F890000DE8C0000C38C00000F8900000F8900000F8900000F8900000F8961 -:2072E40000000F890000A78A00008C8A0000F28B0000BC8B00000D8C0000D78B00000F8954 -:2073040000000F890000DD8F0000C28F0000A78F00008C8F0000718F0000568F00000F8946 -:2073240000000F890000A88C00008D8C00000F8900000F890000498B0000F88A00000F8946 -:2073440000000F8900007F8B00002E8B0000648B0000138B00003B8F0000058F0000208F34 -:207364000000EA8E00000F8900000F8900000F8900000F8900000F8900000F8900000F8969 -:2073840000000F8900000F8900000F8900000F8900000F8900000F8900000F8900000F8929 -:2073A40000000F890000858900006A8900004F89000034890000198900000F890000288CAD -:2073C4000000438C00002C012C01000000000F00160014000A003C000A00080006000800E1 -:0A73E4000600080033000B000A0049 -:2073EE004800000012C1EAA0000077A10000D8A0000067A10000CBA0000059A10000BEA07F -:20740E00000042A10000A4A0000032A1000097A0000028A100007BA000001BA100006EA07F -:20742E0000000DA1000061A0000001A100004BA0000036A000005A9900005E990000F399B6 -:20744E000000E99900006199000064990000689900006D99000072990000789900007D996C -:18746E00000081990000CD990000ED99000084990000F9990000000051 +:200400005B004F0066006D007D0007007F006F00400000000000000079000000FFFF81DFD6 +:2004200000000600FFFF83DF00000000FFFF84DF00000000FEFF88DF000000000000FFFF93 +:2004400055DF00000000FFFF56DF00000000FFFF57DF00000100FEFF9EDF00000DB70000C2 +:20046000FEFFA0DF00000DB70000FEFFA2DF000000000000FEFFA4DF000000000000FFFF40 +:200480003CDD00000000FFFF3DDD00000000FBFF90DF000008000C00100000000400FFFF9C +:2004A0009ADF00000A00FFFF9BDF00000100FCFF96DF00000000000000000000FFFF00D002 +:2004C00000000100FFFF40DE00000000FFFF41DC00000000FFFF29DD0000000000000000E0 +:2004E00017370000008002FEA4C5A927013B008FC0DBC7924196A9A8AB81A98A01BEC41814 +:2005000000E04192C4984148046CC44E026D00BE008FC0DBA9A8AB81A98A1F765C03A6CC54 +:20052000010088FFC4CDFFFDA8CAA993D8FF01F1C49601910B9982FE060010E70B0001E82E +:20054000EAFA20E740000DE8BA9E6FE819F000E7100000E7490000E70000007710E7400007 +:20056000407672B602E8010250E8000040764BB30600A71EA59243880960C406056101025B +:200580004156C4000B6F00BE096FA706C40F036201BE046F01020156C400A6920600BDB26E +:2005A0007AD178D0013BBDAA808DC0DB9A92929EA985A9BD120F007700770077007789E601 +:2005C000010002E8401640764BB37BD11F765C0379D0013B03E226009A92929EA985A9BD66 +:2005E000120F007700770077007789E6010002E8401640764BB300D11F765C0303E22800C8 +:20060000008FC0DB013BA9A8A181A98A74D0C8E29400008F30DFA9A8A181A98AC49202525E +:20062000046002E8D123056F02E8E1300AE8010040764BB3013B008F2ADD0356A10101563E +:20064000A40001D9A192045203E2C400DA64BE86BE8B0600BDB2BDAA03E2BD0404FE005249 +:20066000A95906601F765C030B920B2B0C96A1921F765C0307540A63008FC0DB013BA9A803 +:20068000A181A98AC44FEDFF0102008F86DE013BA9A8A181A9837FD0008FC0DB944CC4E236 +:2006A000C500EDFFEA01A19207544F63A9A8A181A98AC44D4A6C00BEA6921F767D03A985B8 +:2006C00000D5A71E009B009207520260019B0356A8011F765C030793A99F2765013B008FCD +:2006E000C0DBA9A8A581A98AC492A9CD0080A9CC0060A8CA0A60008F86DEA9A8A581A98A1B +:2007000001DEA706C40DA71E1F767D03009B009207520260019B0356A8011F765C0301DD4A +:200720000793A99FA555DC62A6920761A985421EA706C00020B6A71EA7BD120F00770077F6 +:200740000077007789E60000A192089E1F767D03A988029242617FD0008FC0DB949316D060 +:20076000D3FF9492C1FFA8CAA940146C1F767D03019205520C6002E849280CE8010094E6B1 +:20078000080014AD0465A6920250A988A692E3FF6801A1921F765C030754E2FF8401A6401B +:2007A0000F6C79D0C8E29401007720E74000AFE2280400E72000007790E800760E6F78D08A +:2007C000C8E29401007720E74000AFE2260400E72000007790E800761F767D030392696181 +:2007E000A692E3FFDE001F767D03019202521F61A1400F6C79D0008FC0DBC8E294011F76E2 +:200800005C0320E74000AFE2280400E720003B6F78D0008FC0DBC8E294011F765C0320E718 +:200820004000AFE2260400E720002D6F08BEA192A672008FC0DB013BA9A8A681A983807609 +:2008400086DEA606A181A71E18D0C7929596A19206520D6378D0C8E294011F765C0320E7B8 +:200860004000AFE2220400E720000D6F78D0C8E294011F765C0320E74000AFE2240400E79C +:200880002000007716E8000D14AD136512E8401A14AD0F63A12D008F00D950E800B212358F +:2008A0000156A4004076E9B502E8411640764BB316D0008FC0DB26E8000D94937FD0D0FF84 +:2008C000949232E8401AC9FFA8CAA940036C02E8001150E80148A9A8013B18D08CE6000089 +:2008E000A1818CE60900A983A9A8A181A98A13E29501432BA6BF120FC493A892CDFF01F0BC +:200900000190A980A61BECFF3461A692C852316130D09592FB9CA6540363A845186D008FD9 +:20092000C0DBA9A8A181A98A30D0A69294540F6248D0945428651F765C03A7CC01000B18CD +:20094000F7FF82FF431A10000B981D6F4392A7CD01001F765C03205097FF0B18FBFFA91862 +:20096000FFFEA9CB43970356A70207900B980B6F1F765C03A7CC0100431A01000B18EFFF9F +:2009800083FF0B981F765C030E92E0FF8C00AD5CA19283DCA45C40760080EFFF8400808DE3 +:2009A000C0DB013BA9AAA681A98A8CE6000078D078D113E2940079D092929A9EA985A9BDEE +:2009C000120F007700770077007789E604000077CFE6210002E8081840764BB31F765C03A8 +:2009E00003E2220002E8101CCFE621000FE8303340764BB37AD11F765C0378D0013B008FA4 +:200A0000C0DB03E224009A92949EA985A9BD120F007700770077007789E6010002E80818C9 +:200A200040764BB37BD11F765C0379D0013B008FC0DB03E226009A92949EA985A9BD120FF5 +:200A4000007700770077007789E6010002E8081840764BB31F765C0303E22800236FA9A8A8 +:200A6000013BA681A98A8CE6000078D013E2940040765C80176FA9A8A181A98A8CE600006D +:200A800018D013E294000E6F008FC0DBA9A8A181A983A9A8A181A98AC52B18D0C51A0080C2 +:200AA000942B84FEAFE2BE04BE86BE8B0600BDB2BDAA02FE0052A92706601F765C030B9220 +:200AC0000B2B0C96008FC0DB013BA9A8AB81A98AC492A94FEDFFCB00CDFF0190A92F422B81 +:200AE000AB92075260610356AB01A95A1F767D034218FFFB008DC0DEA22D1006412B22563A +:200B00000190A95D0356A201A007A98A20FFE80340764680013B019B019089FFA2954298E0 +:200B2000A82D4218FFF71006412B22560190A95D0356AC01A007A98A20FFE8034076468099 +:200B400001908AFF4298AB9206522D60029A4218FFEFA294013BA92D1006412B22560190C8 +:200B6000A95D0356AC01A007A98A20FFE80340764680013B039B0190A2958BFF4298A82D2E +:200B80004218FFDF10062256412B0190A95D0356AC01A007A98A20FFE80340764680019095 +:200BA0008CFF42984292C0FF42CDBFFF42CA008F86DE013BC0FF42CAC0FF42CAC3FF40900D +:200BC000A8CA4296A9A8AB81A9837FD0008FC0DBC4E2C500944C416D408F30DFA9A0AB815D +:200BE000A9830356C501408F2ADD0156A500AFE2C50100E7400000778CE60000A9A8AB81F4 +:200C0000A6BF120FA98318D148D0A6929D7E95541163408F30DEA9A0AB81A983421A08008F +:200C2000A9A8C581A98AC443056CAA920360421A000142920761AA9205601F765C030B1A80 +:200C400002001F765C030E921E60AD5CAB9282DCA45C40760080176FA9A8AB81A98A8CE6FE +:200C6000000018D013E294000E6F008FC0DBA9A8AB81A983A9A8AB81A98AC52B18D0C51A4C +:200C80000080942B82FEBE86BE8B060000BE013B008FC0DBA9A8A681A98A01DE18D0A69234 +:200CA000C41800E01852942BF46400BE013B008FC0DB408F78DFA9A8A681A98A0356A60102 +:200CC0000156A50070D0C8E294001F767D0303E2C500019206521760408F30DFA9A0A6812B +:200CE000A983C59203520F60A640056D18D094288601096F008FC0DBA9A8A681A98A18D0F5 +:200D00009428300201DEA6920452D264019201521060008FC0DB1F765C03A9A80781A98AC2 +:200D2000C41A0040CC1A0040D41A0040DC1A00401F767D03019206520760008FC0DBC41A9C +:200D40000040CC1A00401F767D030692036140765C8006008076F9151F765C03408FF22BA0 +:200D6000008F3E4900B61202BDB2AC2B013B1AC21EA020A81F767D0310C31F765C031C1E99 +:200D8000008F30DFA9A8AC81A98AC42B008F30DEA9A8AC81A98AAC92019CC4211052A92DCF +:200DA000F0641F767D03019206521860008F30DF408F30DEBF56C4031F765C03BF56C50141 +:200DC000BF56CC03CD2BBF56D402BF56D503BF56DC02BF56DD0210282C011F767D0301926B +:200DE00001521F601F765C03AC2B013BBF5610C8008F30DFA9A8AC81A98ABF56C403008F73 +:200E000030DEA9A8AC81A98AAC92AC9301F002910190A8CAC496AC92019CA92D0452E96461 +:200E20001F767D03009209523460008F30DF408F30DEC42BBF56C50108D0BF56CC010ED13E +:200E4000CD2BBF56D404BF56D503BF56DC04BF56DD02BF56E404BF56E505BF56EC04BF56C1 +:200E6000ED04BF56F406BF56FC05BF56940609D0BF5694070AD0BF5694060BD0BF56940611 +:200E80000CD0BF5694060DD0BF569408BF569C08AC2B013B90E50356AC01807660DF008F2E +:200EA0008ADF5AFF0156A600A9A8AC81A98AC6C3408F6CDFA9A9C42B0156A500AC92019C07 +:200EC000A92D03E2C5000652E764AC2B013B00BE0356AC01008F42DC0156A400AC92019C95 +:200EE000C4C2A92D1C52F564AC2B013B0356AC01008FC0DE0156A400AC92019CC4C2A92D57 +:200F00002052F564AC2BC0762ED71235408F40D7008F00D90156A5000156A400AC92019C8D +:200F200011F68524A92D185211F68424EF64AC2B1235008FC0DD0156A400AC92019CA92DC9 +:200F4000045211F68424F5641F767D030092A993FF9D01532269A993FD9D015315690752D4 +:200F60000A61095222601F765C03BF56070FBF56080D1B6F1F765C03BF560608BF5607081B +:200F8000BF560808126F1F765C03BF560608BF560710BF560810096F1F765C03BF56060AAA +:200FA000BF560714BF560814BE8B06001F767D0305921F765C030780026104DF00D5013B03 +:200FC00000D40356A5038076F0D8A4810156A60001DCA492C62B0852F56401DDA59202523C +:200FE000F0641F767D03019204526D61A79200D52D65013BA592A2FF008FF0D8CBFFA594C3 +:20100000A3FFA927A9A8AB81A61E0356AB04A92D019BA592ACEA189A67FFA594C699A988F5 +:20102000A2FFCBFFA594189CA3FFA92701DDA9A8AB81A98A0356AB04A92DA692ACEA019A11 +:2010400066FFC498A792A554D66200D5013B008FF0D803BEA9A8A581A71EA592A672A9A860 +:20106000A681A98A08D001DDC7929496A5920352EF641F767D030192008FF8D8025204603F +:20108000A9280003036FA928000FFC981F767D0305920961408FF0D8A58A0FDCC41AFF00F2 +:2010A000F51A003F1F767D03019206521260408FF0D8A58A0FDCC41A3000FD1A00E0CD1AD3 +:2010C0000030076F008FF8D8C41A0F00F41AFC01008FF0D8A48308DC01DDC51A0100F41AE5 +:2010E0000700FC1A00E00600BDB2BDAABDA203E2BD0403E2BD0503E2BD060CFE1F767D03A4 +:201100004496019206520860449206601F765C030B920B2B0C961F765C030792008F30DED3 +:20112000013B4494A988A9A84481A98A808DC0DBC4924696449201F0019047964492A0FF9D +:20114000A92D499603354896049AAC94A95BA9AAA681A98A457EC44FEDFFBE02008FBCDD8B +:20116000A9A84481A98A64BE4492A672C4E2C405A9AAA681A98A8CE62800408D78DF13E247 +:20118000C40044920356A9010156A1004C1E02E891340BE801E0AFE2C10020E72800407696 +:2011A0004BB3442D008FC0DD1235AFE2C10110E740000156A40003E2C1004076E9B5013B92 +:2011C0008CE60000A9AA4481A6BF120FA98A70D0408F2ADD947E4C060156A500A685A9BDC5 +:2011E000120F007700770077007789E60000408D6CDF21E3C5414C0600E70C000156A10024 +:2012000000E72101AFE2C10320E7C80002E8512B0BE8010040764BB3AFE2C10110E7400009 +:20122000007703E2C100407672B6013B008F8ADF8CE60000A9A84481A98A13E2C400449235 +:20124000A940ECFFAA001F765C03CFE62000AFE22A0140762A80452D008F00D912350156B3 +:20126000A4004076E9B54488008F30DF013BA9A8A681A98A1F765C0303E22C00C492035275 +:20128000086012E8000D14AD046390E503E22C00008F30DFA9A8A681A98AC49202520860D6 +:2012A00012E8B01414AD046390E503E22C0001E8A9FDAFE22C0508E8992740764BB31F7678 +:2012C0005C03CFE606000E921660008FC0DB4588013BA9A88CE6280018D0A681A98381DE26 +:2012E000A9A8A681A98A13E295008CE6330018D013E29403013BCFE62000AFE22A01408D06 +:201300006CDF0356A301AFE6000020E740000156A10000E70100AFE2C10020E7080002E87E +:20132000512B0BE8010040764BB3AFE2C10110E74000007703E2C100407672B6013B408FF9 +:201340008ADF8CE60000A9A0A381A61EABBF120F68B6C63F4892A772008FC0DBA9A8A7813D +:20136000A61EA9A04681A71EAA286900C792C696A9A04481A71E4892AA72A9A8AA81A61EDB +:20138000AA286A00C792C6964892AA72A9A8AA81A98AC43F116F1F767D03019201520660D3 +:2013A000CFE62000AFE60000036FCFE620001F765C0303E22A00008F8ADFA9A84481A9833F +:2013C000A9A84681A98AC8E2C400008F8ADFA9A8A381A98A4488C8E2C401008FC0DBA9A8FE +:2013E000A681A98AC8E2C505432BC492CDFF01F00190008F8ADFA959A9A8A681A98A96E6EC +:20140000050096E60D00C8E2C400CFE6290020E7280040764BB301E8C9F400D50CE8D1CC03 +:2014200094E6080014AD0B651F765C03C8E21000007794E6050014AD026501D54492013B45 +:20144000008F60DF1F765C030356A901412B0156A4001E064076468000520A614393A1CCC0 +:201460000100045187FFA818FFFEA8CA4396008F8ADF013BA9A8A381A98AC8E2C400CFE689 +:20148000290020E7280040764BB301E8C9F400D50CE8D1CC94E6080014AD0B651F765C038D +:2014A000C8E21000007794E6050014AD026501D5013B008F60DF1F765C030356A301412B17 +:2014C0000156A4001E064076468000520A614393A1CC0100045187FFA818FFFEA8CA43968D +:2014E0001F767D0301920652606047925E60008FC0DB013BA9A84581A98A30D0C8E29400A7 +:20150000007794E6060014AD0A654393A1CC0100205187FFA818FFFEA8CA4396008F30DFC3 +:20152000A9A84481A98AC49203522760008FC0DBA9A84581A98A48D0412BC8E2940000D525 +:2015400094E6060014AD026301D54992008F96DF1F765C030356A9010156A4001E06407664 +:20156000468000520A614393A1CC0100085187FFA818FFFEA8CA4396008F30DF013BA9A892 +:201580004481A98AC49202521060008FC0DBA9A84581A98A48D0C8E29400007794E6060078 +:2015A00014AD0365431A10004492015204610352E0FF87004392E1FF84001F767803089269 +:2015C0007F601F7678032A060C192C0F036728062C1E2C8A8CE62000A9A801092C1E13E2C8 +:2015E000C4002C8A1F765C03AFE22A00A9A81F7678038CE6000001092C1E13E2C4002C8A2C +:201600008CE62B00A9A801092C1E13E2C4032C83013B008F8ADFA9A001092C1EA9A8448136 +:20162000A71EC792C5962C83A9A001092C1EA9A84681A71EC792C5962C83A9A001092C1E08 +:20164000A9A8A381A71EC792C5962C8A1F765C03A9A80109AFE22C001F7678038CE6000058 +:201660002C1E13E2C4002C8A8CE63200A9A801092C1E13E2C4022C83008FC0DBA5C4A9A81A +:201680004481A71E01DE70DF2CC2C792C5962CC5A70601092C1E1F765C0310921F76780358 +:2016A000C7962CC5A70601092C1E4392C7962CC5A70601092C1E1F765C030E92C7961F7631 +:2016C0005C030E921560AD5C459283DCA45C407600800E6F008FC0DBA9A8A681A983A9A885 +:2016E000A681A98AC52B18D0C51A0080942B8CFEAFE2BE06AFE2BE05AFE2BE04BE82BE8690 +:20170000BE8B06001B76F0FF00E2BD0030E60006422916562576006F1B76F0FF00E2BD003F +:2017200030E6000602FE422916561F7633003892419623760008267600003892382B21289A +:20174000FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FE422916564A +:201760001F763300389241962376000826760000381890002128FFFF1029103B4192389677 +:201780002576006F1B76F0FF00E2BD0030E6000602FE422916561F7633003892419623762B +:2017A000000826760000381890002128FFFF1029103B419238962576006F1B76F0FF00E2CD +:2017C000BD0030E6000602FE422916561F76330038924196237600082676000038189C00C7 +:2017E0002128FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FE4229CD +:2018000016561F76330038924196237600082676000038189E002128FFFF1029103B41922A +:2018200038962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300229241966B +:2018400023760101221868002128FFFF1029103B419222962576006F1B76F0FF00E2BD00CC +:2018600030E6000602FE422916561F76330022924196237601012292222B2128FFFF102906 +:20188000103B419222962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633008E +:2018A000229241962376010026760101221878002128FFFF1029103B419222962576006F53 +:2018C0001B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E67E +:2018E00000064229165610292576006F1B76F0FF00E2BD0030E600064229165610292576E2 +:20190000006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD00E4 +:2019200030E600064229165610292576006F1B76F0FF00E2BD0030E6000642291656102926 +:201940002576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2C6 +:20196000BD0030E600064229165610292576006F1B76F0FF00E2BD0030E600064229165662 +:2019800010292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF2F +:2019A00000E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E600064229AC +:2019C000165610292576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002292CA +:2019E000419623760100267601012292222B2128FFFF1029103B419222962576006F1B76E6 +:201A0000F0FF00E2BD0030E6000602FE422916561F7633002C924196237620002676390159 +:201A20002C922C2B2128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E60006EC +:201A400002FE422916561F7633002C92419623762000267639012C1832002128FFFF1029CD +:201A6000103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300A2 +:201A80002292419623760100267601012218F8002128FFFF1029103B419222962576006FF1 +:201AA0001B76F0FF00E2BD0030E6000602FE422916561F763300229241962376010026768B +:201AC00001012218FA002128FFFF1029103B419222962576006F1B76F0FF00E2BD0030E63B +:201AE000000602FE422916561F763300309241962376800026760000301803002128FFFF61 +:201B00001029103B419230962576006F1B76F0FF00E2BD0030E6000602FE422916561F76F7 +:201B20003300329241962376000126760001321875002128FFFF1029103B419232962576E0 +:201B4000006F1B76F0FF00E2BD0030E6000602FE422916561F763300329241962376000107 +:201B6000267600013218FD002128FFFF1029103B419232962576006F1B76F0FF00E2BD00F2 +:201B800030E6000602FE422916561F7633003092419623768000267600002C18230021288C +:201BA000FFFF1029103B419230962576006F1B76F0FF00E2BD0030E6000602FE42291656EE +:201BC0001F763300329241962376000126760001321871002128FFFF1029103B419232964A +:201BE0002576006F1B76F0FF00E2BD0030E6000602FE422916561F763300329241962376CD +:201C00000001267600013292322B2128FFFF1029103B419232962576006F1B76F0FF00E233 +:201C2000BD0030E60006422916562376390110292576006F1B76F0FF00E2BD0030E60006A3 +:201C4000422916562576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76BD +:201C6000F0FF00E2BD0030E6000602FE422916561F7633002C9241962376200026763901F7 +:201C80002C1837002128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E6000624 +:201CA00002FE422916561F7633002C92419623762000267639012C922C2B2128FFFF1029CC +:201CC000103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330040 +:201CE0002C92419623762000267639012C1833002128FFFF1029103B41922C962576006FDF +:201D00001B76F0FF00E2BD0030E6000602FE422916561F7633002C924196237620002676FF +:201D200039012C1822002128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E664 +:201D4000000602FE422916561F76330038924196237600082676000038189F002128FFFFCA +:201D60001029103B419238962576006F1B76F0FF00E2BD0030E6000602FE422916561F768D +:201D800033003892419623760008267600003892382B2128FFFF1029103B419238962576FE +:201DA000006F1B76F0FF00E2BD0030E60006422916562576006F1B76F0FF00E2BD0030E663 +:201DC0000006422916562376390110292576006F1B76F0FF00E2BD0030E6000642291656FE +:201DE0002376391110292576006F1B76F0FF00E2BD0030E600064229165610292576006F68 +:201E00001B76F0FF00E2BD0030E6000602FE422916561F763300309241962376800026769A +:201E20000000301801002128FFFF1029103B419230962576006F1B76F0FF00E2BD0030E6B6 +:201E4000000602FE422916561F7633003092419623768000267600002C922C2B2128FFFF33 +:201E60001029103B419230962576006F1B76F0FF00E2BD0030E6000602FE422916561F7694 +:201E800033002A92419623761000267610012A922A2B2128FFFF1029103B41922A9625761C +:201EA000006F1B76F0FF00E2BD0030E6000602FE422916561F7633002A924196237610009D +:201EC000267610012A1802002128FFFF1029103B41922A962576006F1B76F0FF00E2BD008A +:201EE00030E6000602FE422916561F76330024924196237602002676000024181F002128BF +:201F0000FFFF1029103B419224962576006F1B76F0FF00E2BD0030E6000602FE4229165696 +:201F20001F763300269241962376040026763D012692262B2128FFFF1029103B4192269670 +:201F40002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330024924196237677 +:201F600002002676000024180F002128FFFF1029103B419224962576006F1B76F0FF00E2B4 +:201F8000BD0030E6000602FE422916561F763300269241962376040026763D01261826005F +:201FA0002128FFFF1029103B419226962576006F1B76F0FF00E2BD0030E6000602FE422917 +:201FC00016561F7633002492419623760200267600002492242B2128FFFF1029103B419266 +:201FE00024962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330026924196B4 +:202000002376040026763D01261826002128FFFF1029103B419226962576006F1B76F0FF01 +:2020200000E2BD0030E6000602FE422916561F763300249241962376020026760000241846 +:2020400008002128FFFF1029103B419224962576006F1B76F0FF00E2BD0030E6000602FEDB +:20206000422916561F763300269241962376040026763D012692262B2128FFFF1029103BE7 +:20208000419226962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300249217 +:2020A0004196237602002676000024180C002128FFFF1029103B419224962576006F1B76D7 +:2020C000F0FF00E2BD0030E6000602FE422916561F763300269241962376040026763D01B1 +:2020E0002692262B2128FFFF1029103B419226962576006F1B76F0FF00E2BD0030E6000638 +:2021000002FE422916561F76330024924196237602002676000024180E002128FFFF102992 +:20212000103B419224962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300E3 +:20214000269241962376040026763D0126183E002128FFFF1029103B419226962576006F99 +:202160001B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E6D5 +:20218000000602FE422916561F76330028924196237608002676080128180F002128FFFF2D +:2021A0001029103B419228962576006F1B76F0FF00E2BD0030E6000602FE422916561F7659 +:2021C000330028924196237608002676080128180F002128FFFF1029103B419228962576AF +:2021E000006F1B76F0FF00E2BD0030E6000602FE422916561F763300289241962376080064 +:2022000026760801281803002128FFFF1029103B419228962576006F1B76F0FF00E2BD0051 +:2022200030E6000602FE422916561F76330028924196237608002676080128180300212880 +:20224000FFFF1029103B419228962576006F1B76F0FF00E2BD0030E6000602FE422916564F +:202260001F7633002A92419623760800267608012892282B2128FFFF1029103B4192289654 +:202280002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330028924196237630 +:2022A000080026760801281802002128FFFF1029103B419228962576006F1B76F0FF00E267 +:2022C000BD0030E6000602FE422916561F76330032924196237600012676000132187500F5 +:2022E0002128FFFF1029103B419232962576006F1B76F0FF00E2BD0030E6000602FE4229C8 +:2023000016561F7633003292419623760001267600013292322B2128FFFF1029103B4192F8 +:2023200032962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633003292419656 +:202340002376000126760001321831002128FFFF1029103B419232962576006F1B76F0FFDB +:2023600000E2BD0030E6000602FE422916561F76330032924196237600012676000132926D +:20238000322B2128FFFF1029103B419232962576006F1B76F0FF00E2BD0030E6000602FE35 +:2023A000422916561F7633002E92419623764000267600002E922E2B2128FFFF1029103B8E +:2023C00041922E962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002E92C2 +:2023E000419623764000267600002E1828002128FFFF1029103B41922E962576006F1B7626 +:20240000F0FF00E2BD0030E6000602FE422916561F7633002E924196237640002676000067 +:202420002E1820002128FFFF1029103B41922E962576006F1B76F0FF00E2BD0030E600068F +:2024400002FE422916561F7633002E92419623764000267600002E1838002128FFFF1029D3 +:20246000103B41922E962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330096 +:202480002E92419623764000267600002E1838002128FFFF1029103B41922E962576006F46 +:2024A0001B76F0FF00E2BD0030E6000602FE422916561F7633002E92419623764000267636 +:2024C00000002E183E002128FFFF1029103B41922E962576006F1B76F0FF00E2BD0030E6D7 +:2024E0000006422916562376390110292576006F1B76F0FF00E2BD0030E6000602FE422943 +:2025000016561F763300229241962376010026760101221848002128FFFF1029103B4192A4 +:2025200022962576006F06000052A888C48A096509520763FF9CC4CDF8FF0790A8CAC4964A +:20254000A69245520D614E5208614F520D60C41A2000C418BFFF086FC418DFFF056FC41A0C +:202560002000C41A4000A59201520360C4187FFF02520360C41A8000C418EFFFC418F7FF25 +:202580000600BDB200D5013B008F40DEA9A8A581A98AC47D01DDA5924652F76433D1008F82 +:2025A00040DE34D0BF569C0CBF56940C1F76400335D03BD1BF56940836D0BF56940937D02E +:2025C000BF56941038D0BF56940839D0BF56940C3AD0BF56940C3DD0BF569C053CD10092AA +:2025E000FE9C949641D00092FF9C94963ED0BF56940810D0BF56DC08BF56F408BF56940D50 +:20260000BF56EC1BBF569C12BE8B0600A9BD120F00770077BDB21F7671038BE60100A48BFE +:2026200050E8094088E23C0040764BB388E6000000770077A9BF120FC18AA993B7FFFF910D +:20264000D497C18AFF90DC96BE8B06000852A927A4C50960089A01D54E9B40762190008D23 +:202660003B03972BAB9209520B60089AA78A01D54E9B40762190008D3B03BF5697010600E0 +:20268000A71EBDB2A492BDAA0152BDA22A60008F5070C08D40D01F76410300A822761F76D3 +:2026A000BE01408FFAB109CDFFF7A81A0004008FB5B1099709CDFFFD1F763700A81A000159 +:2026C00000A01F76BE0109971F76370002A81F763300321A0100321A0200237600011A7663 +:2026E00002523360008F5077C08DC0D31F764F0300A82276408F806F1F76BE01FDCDFFEFCC +:20270000807670B1A58AA81A0020079716DD07CDFF3F1ADCA81A008007971F763700C5186F +:20272000CFFF408F2BB1C41A040004C21F763300321A04001F76370006A01F763300321ADA +:202740000800237600011A76D396A38A01D54E9B69FF089AC38640762190A2C4A2830BD0D2 +:20276000A28A0CDE0CDDC61A00400ADCC518FFDFCA18BFFFCA18DFFFCA18F7FFCA18FBFF85 +:20278000CA1A0200CA1A0100C418FFBF92CCE0FF0BD00150929640764E90A38AA70640761F +:2027A0009390D392025205601F76BF01081A0400C38A099ABF56E402A38A4076B390408D7F +:2027C00033030CD0932BA28A008D9E01932B9B2B0BDCC41A4000CA1A2000BE82BE86BE8B77 +:2027E00006001F764103BF5602011F764F03BF5602021F764003009606000002008D42039A +:20280000941E0600BDB2BDAAA486008D3A0392923660A9AA13FF6700A98A008D36030102B4 +:202820000156C4009206008D3803920F0466C28ABF56E40208D092C5A7C408D0090201DE6F +:2028400092C2C207A98A008D3603C792C4969206008D3803920F4966C28AE446FE6CA28AF3 +:20286000099A4076B390D292025205601F76BF01081A0400008D9E01922B376F008D3803CD +:20288000928A408D3803A492008D36030190A98801DC9AA89206008D3803920F0466C28A80 +:2028A000BF56E402A6920B6008D092830902C207A98AC592A7FFFF90C4960D6F08D0928337 +:2028C000A5C408D0090201DE92C2C207A98AC592FF90C496008D36039206008D3803920F76 +:2028E0000466C28AE446FE6C1F763300211A0001BE86BE8B0600BDB200BEACA0BDAAA486ED +:20290000BDA2A98201DEA61B3075FD69D292025205601F76BF010818FBFF00BE01DEA61B98 +:202920001027FD69408D3603A9AB08D09AA20109921E008D3A03922BC28AE446FE6CA28A3F +:20294000089A4076B39001BE008D38030102A30F92C21C68A7AB0902C207A98AC792C496BC +:20296000C28AE446FE6C00BE01DEA61BE803FD69A28A099A4076B390D292025210601F7643 +:20298000BF01009A081A04000B6FC28A0902A7ABBF56E401C207A98AC792C496009ABE8211 +:2029A000BE86BE8B0600BDB2BDAAA486EFFF2A01C28AFCCCFF00A958EC47EDFF1D01408D4D +:2029C000A0019A92E0FF1E01408D3B039A920152116000BE408D3D03BF569A01408D3403B2 +:2029E0009AC2408D3F039A2B408D3E039A2B0DD19A2B408D3F039A92E0FF0401408D3D0305 +:202A00009A924F60F2C4208F0000A9A8A60F06662F8F0000A9A8A60F0867608F00000AD107 +:202A2000208F0000F2A09AA80CD19A923A52E0FFE900408DA0019A922E60408D34039AC42C +:202A4000A692A94001DE9AC2066DF28A0356A008C496076FF28AA9A80109F21EA092C498E5 +:202A6000008D34039206E20FE8FFCC000FD10CD0BF569A33A28A099ABF5692334076B39016 +:202A8000408D3F03008DA001BF569A01BF569201EFFFB800008D3F03BF569201EFFFB200E4 +:202AA000408D3E039A923E60A0921F760403115425611F767E031B5403601B921F60A08849 +:202AC000408D31039A0EA60F0560408D33039A921560A0921F767E031A5407601A92056160 +:202AE000408D33039A920A61408D3F03008D3D03BF569A01922BEFFF8500408D32039A786C +:202B0000408D3E039A80019A013BA7949A96A9AAA781A98A0ED1089A9C78A28A4076B390E3 +:202B2000706F9A80019A013BA7949A96A9AAA781A98A0ED19C78408D3E039A9207520E60B8 +:202B40000DD19A9210520A60408D33039A9206600A9A1F767903A0941096408D3E039A9241 +:202B600002521A60A0920DD103529A78336842523166008F40DE949203522C68A0923352D7 +:202B80000B600CD19A923A522560A09233520460008D3D03922B0DD09258408D3E03008FA7 +:202BA00040DE9A9294540467A91B90012A68A28A099A4076B390408D3D039A2B0DD0408D4D +:202BC0003F03BF569A01408DA001BF569A01922B186FA28A099A4076B390408D3E039A2B06 +:202BE0000DD0408D3D03BF569A01408D3F039A2B922B076FC28ACC18DFFFC28ACC1A2000D4 +:202C0000C28AEC46EDFFD6FE1F7633000BDC211A0001C41A4000BE86BE8B0600BDB2BDAA04 +:202C2000A486A61EBDA2A582D292025205601F76BF010818FBFF408D360308D09AC292A226 +:202C4000008D3A03BF569201C28AE446FE6CA28A089A4076B390008D38030102921EC2839B +:202C600000BE0902BF56E501C207A98AC392A7FFFF90C496A692BE82BE86BE8B060022760D +:202C80001F767D0316D0008F806F079294CDFCFF03901F76BE0118D0A8CA16961F767D03C4 +:202CA000089294CDFCFF03901F76BE011AD0A8CA18961F767D030992019094CDFEFF1F76F9 +:202CC000BE01A8CA1BD01A961F767D030A9201901F76BE0194CDFEFFA8CA1B961A7669FF19 +:202CE000060016D0008F806F1F767D039492039018D00796949203901AD00896949201901F +:202D00001BD00996949201900A9622761F76BE011618FCFF1818FCFF1A1A01001B1A010027 +:202D20001A7669FF06001F767D03019302531660008F880A1F76BF01A94002A8036C041A8B +:202D40000008A941036C041A0002A942036C041A8000A943036C041A080003533B60AB28B5 +:202D6000CB0BAA2800091F76BF01248F0000005202A90AA80360041A000801520360041A8E +:202D8000000202520360041A800003520360041A080004520360041A020005520360041A4D +:202DA000000106520360041A400007520360041A010008520360051A000809520360051A5D +:202DC00000010A5203600D1A20000B5203600D1A040001531E60AB2BAA28000B1F76BF0127 +:202DE000128F0000A94004A90CA8036C031A0008A941036C031A0001A942036C031A000264 +:202E0000A943036C0B1A0200A944036C0B1A1000060022761F76BE01408F806F06180000D1 +:202E20000F8F00F0A5C4071800FF08183F00091800FF1BDD0BDE1606A918C0FF161EA9A8FC +:202E400018C0A89219C0C618EFFF0B18DFFF0B18BFFFC518F7FF1A76008FC06F1F767D03A3 +:202E6000BF56000109D0CC92C4FF01F0019000721F76BF010192C3FF1F767D0301F001900D +:202E800080FF00721F76BF010192C5FF1F767D0301F0019081FF00729492C2FF01F00190A3 +:202EA00082FF009400960352036104520360BF5601010152036102520360BF560103055200 +:202EC000036106520360BF56010607520360BF56010208520360BF560104095209610192B4 +:202EE000015208610552066106520461056FBF560105BF56060101920152036106520360EB +:202F0000BF5605010252036103520360BF5603010152036105520360BF56020101520361CD +:202F200003520360BF56040202520360BF56040103520F6101520D61065206611F76BF0153 +:202F40000D1A00100A6F1F76BF01021A8000056F1F76BF010B1A001006520E61035209614C +:202F6000015204610D1A0080096F0B1A0080066F0B1A0040036F021A800006520B610452D3 +:202F80000961025204610B1A0004066F0B1A0040036F021A000206520661045204610B1ADC +:202FA0000020036F021A0800227604520A6204522461015240610252346103522661446FBA +:202FC0000552116106524060088F8A021F76BE01059AA82801FC0AA81A1E1F76BF01021AF2 +:202FE0000800326F088F00001F76BE01049AA82801BC0AA81A1E286F088F49031F76BE015A +:2030000005020AA81A1E206FA928CB0BA82808091F76BE010A1E059AA828257C1A1E146F61 +:20302000088F8A0B1F76BE01059AA82801F80AA81A1E0A6F2FFF10161F76BE010A1E059AD6 +:20304000A82813BC1A1E1A7669FF0600BDB2BDAABDA202FE1F767D03019200D200D30252C5 +:2030600032601F76BF0116D0008FC0DB0992C1FF94CDFEFF01F016D116D00190A8CAA9CD69 +:20308000FDFF949616D0099203F01F766F030290A8CA9C9600CDFFF39492039089FFA8CAE7 +:2030A00000961F76BF010040036C0102A9860042026C02DA004A026C04DA0044026C08DA8E +:2030C00010D0947A1F767D03019201523160408DC0DBA18A1F76BF01A183877620A116DCBA +:2030E000C418FDFF16DD0992C3FFA18A03F00290C59816DCC418FBFF0992412B008F4CDF12 +:20310000C1FF01F00190A95DA606407646800356A902A18A1F766F0316D0079016DCC4983E +:2031200000CDFFE79192069089FFA8CA00961F767D03019204525B60408DC0DBA18A1F76B2 +:20314000BF0116DCC418FEFF01CC0004C9FF412BA95D008F4CDF20FFE8034076468016D9AA +:203160001F76BF010190C198014B026C01DA0148026C02DA0945026C04DA0942026C08DAB3 +:20318000014A026C10DA0147026C20DA0944026C40DA0044046CA9AA8009A9860149056C8D +:2031A000A9AA18FF0100A9860941056CA9AA19FF0100A986004B056CA9AA1AFF0100A986C7 +:2031C0000045056CA9AA1BFF0100A9860940056CA9AA1CFF0100A986004A056CA9AA1DFF1A +:2031E0000100A98610D0008FC0DB947A1F767D030192065210601F76BF010046026D01DA32 +:203200000048026D02DA004B026D04DA10D0008FC0DB947A1F767D0301920552E0FF890004 +:203220001F76BF010945036D01DA026F10DB0944036D02DA026F40DB0042036D04DA056F1B +:20324000A9A21CFF0100A9820044036D08DA056FA9A21DFF0100A9820046036D10DA056F2B +:20326000A9A21EFF0100A9820040036D20DA056FA9A21FFF0100A9820048036D40DA056FC1 +:20328000A9A21FFF0200A982004A056DA9AA8009A986056FA9A21FFF0400A9820043066D0F +:2032A000A9AA18FF0100A986056FA9A21FFF0800A9820045066DA9AA19FF0100A986056F9D +:2032C000A9A21FFF1000A9820047066DA9AA1AFF0100A986056FA9A21FFF2000A98200418B +:2032E000066DA9AA1BFF0100A986056FA9A21FFF4000A982004B066DA9AA1CFF0100A9861A +:20330000056FA9A21FFF8000A9820049066DA9AA1DFF0100A986056FA9A21FFF0001A982C1 +:203320001F767D0310D0008FC0DB10A2947A008FC06FCC92013B1F76BF01C4FF01F00190BC +:2033400009D0A985A9860192C3FF01F0019080FFA9850156A2000192C5FF01F0019081FF61 +:20336000A9850156A2009492C2FF01F0019082FFA9850156A20017D0008FC0DB82FE947A76 +:20338000BE82BE86BE8B06001F76BF0100920093C5FFD7FF01F001F10190019190FFA9CB3D +:2033A0000092CAFF01F0019081FFA8CA060009D0008FC06F1F76BF0194CD0004D9FF09CC3A +:2033C000004090FFCDFFA9CBC492C2FF01F0019081FFA8CA06001F767803BDB20B93A988FF +:2033E0000153BDAAE0FFEC001F767D0301930653E0FFE6001F765C030D93E0FFE1001F7697 +:203400007803099308CBE0FFD9007FD0008FC0DB179394271660AB46036C1B46086CAB478F +:20342000036D1B47046D00530C600F6F0C1B900103680C288F01182B1728E803A61A0001F7 +:203440000C1B1F03E7FFB700A6920552056018930361A61A0002AC28200311300E0DA98A3B +:2034600034FFA71E608F0000A9A832FFA7070156A5002406C5962406CD97D57EDD3F407601 +:203480005197E596407664971F767D03008FC0DBA4C5ED961A061F767D037BDFF596188833 +:2034A0001CDC08D009D1FD7EC792A4C5008FC0DB959600D0C7929D96A9A80AD1A00DA71ED6 +:2034C000A61EA092A17218DFC7929D96A092A6C50ED1A17201D8C7929D96A0920452ED688F +:2034E0001F76780312D01992C076A6DF13D1959614D0C7929D9615D1CF92959616D0D79234 +:20350000A4C59D9618D11A921F767C0379DF959617D01892959619D0BF569D06BF569510CC +:20352000C792A4C51AD178DF9D96C792A4C51BD07ADF95961CD0C792A4C51ED11F76780376 +:203540006EDC6FDF95961DD0C792A4C5008FBCDD95961FD0C7929D9620D11E92959621D06E +:203560001F929D9622D12092959600D021929D9623D122929D9624D1A092A172949301D8CC +:20358000A0929D970452F8681F7678031B3FE5921C96A9282003ED930E0A1D970E54026078 +:2035A0000E2B0C1B200302670C0A010201562600066FBF561801036FBF560B03BE86BE8BC4 +:2035C0000600BDAAAA280100A888A9800876303BBE5AA75D008F0010A9A8A50F2B60A693E5 +:2035E0005461A75DA9A8A50F2560A693015322601F767D03019206521D601F765C030D9269 +:2036000019601F7678030B92015214610C2B7FD00E2B172B162B008FC0DB0D2B102B9492B7 +:203620001B96092B082B019ABF560B0140767897316FA75D20FF0110A50F0B601F767803EE +:203640000B9201520661A6930461A61BE8031B69A75D20FF0210A50F0460A61B20030F689D +:20366000A78020FF0310A70F0860A692015205661F767803167E0E6FAA2B0C6F1F7678035C +:203680000D7E086F0F7E066F1F767803BF560B03172BBD7A0076AA92BE8606001F7678036E +:2036A0000C9311880E92150A111C0100172B0C2B1397127E14960E2B06000876303BBE2F73 +:2036C0001F7678030B9201521860010201562400100A0F9210540566102B019A40767897CF +:2036E0001F76780317920961FF9C17960660059A407678974076DB98BD570076060008765E +:20370000303BBE2F049A40767897BD57007606000052A88005611F7678031393046F1F76C0 +:2037200078030C93005203611488026F0E88005203611227026F1127A7550366009A1B6FF5 +:20374000A692A89EA794A9082003A91B20030668A908E0FCA91B2003FC67AC28007DAB3282 +:20376000AC282800A930AB07A40D208F00000156A400C4920600A988A693A80800F00F539F +:203780003B660356A601C0763AC1A927AB0800E0A706AB0DA71EC7C52076A9284D55EFFF47 +:2037A000A000029AEFFF9D00289AEFFF9A00A9282003EFFF96001F7678030F92EFFF910050 +:2037C0001F7678032406EFFF8C001F7678032406A80EEFFF86001F767D030192EFFF8100BA +:2037E0001F767D0300927C6FA928E803796F1F7678031792756FA61B10105D68A61B8810F7 +:203800001D671F767803169304600B9301531661A692A908F0EFA988AC28CDCCA636AC2888 +:20382000150022560D93A92D2831A692AC95ABEAAB5C169240761599536FA61B00113B68D4 +:20384000A61B7C1138671F7678030C9303530468AB280300026F0C27A60800EF2606AB011B +:20386000A71EA6920360A7923B6F01520460A706A80E366F02520360AB92326F03520560F7 +:203880001F76780315922C6F84DEAC28CDCCA636AC2815002256A92DAB92AC540C690C93A3 +:2038A000A692AB9F2831ABEAAC95AB5C009A40761599166F009A146F1F7678031692056192 +:2038C0001F76780313920C6F0C920A6F1F76780316920361039A046F1F7678030B920600C2 +:2038E0001F7678030B92015227601F767D030192065222600876303BBE2F7FD0008FC0DB70 +:2039000094881F7678031B0EA60F116040765197A9881F7678031C0EA60F09604076649754 +:20392000A9881F7678031D0EA60F0461039A40767897BD5700760600A9881F7678030B9231 +:20394000015217601F767D030192065212600876303BBE2F1F767803197E8076A6DF029A97 +:20396000C697CE7CD67D1A0A40767897BD5700760600608F00001F767803208F00FA28A064 +:203980002AA828062C1E2E2B2806046FA98A842BA9A81F7678032A0FFA680600BDB200BED2 +:2039A00000D0408FC0DBAA2B008F80DCA9A8A00DA98A9580C427A70EAB0F0361C47F01BE07 +:2039C00001D8A0928052F168A6921061408D80DC809AA18A40760EB480D0A82802019196D8 +:2039E000A18AA9287E3F40769BA1BE8B0600A888A927BDB2A9A8A48B1F767E03BDAA10FF52 +:203A0000A101408FFFFFA71EA986A98AAB921B278050C73FCF960302D77E4076FDB3A9CD20 +:203A2000FF00A7FFA283008D9E01FF90A18ADD97E5960502BF56910140760892BE86BE8B5C +:203A40000600BDB2BDAAA486008DA10100D5A9AAA50DA71EA9AAA50DA98A01DD0EDFC79236 +:203A60009496A5920852F468A28A0EDC0356D408DCCAA9590356E408ECCAA993A11B001039 +:203A80001667A19280520D677F520561008FC0DB9C97186FA89240769CA540760C99126F08 +:203AA000069AA28A029B4076849A1E6FA19240766E9800520760069AA28A039B4076849A56 +:203AC000136F008D9E01A11B0010BF569201036808BE026F0ABEA9AAA28A10FFA101A983FE +:203AE000A60640760892BE86BE8B0600BDB2BDAABDA204FEA4860EDC0356D408DCCA429639 +:203B00000356E408ECCA4396412BFF9C7D52E7FFB600429280520567809A429E435426672F +:203B20004292A91B0010E8FFAA00A91B0F100666A9281010429E435419674292A91B10105D +:203B4000E8FF9D00A91B88100667A9288810429E43540C674292A98820FF0011A60FE0FFFC +:203B60008E0043927C52E0FF8A00A9AA10FFA101A71E1F767E031B92C79643920356A901EA +:203B8000BF56CF03D796421B001005680876303BBE924196439200D327614292A91B00100F +:203BA0000767A358A072008FC0DB9488066FA392429440764899A9880356A301A98003D102 +:203BC000A9AA10FFA101A98AA793A17304D0A693D7FF9C97A793A073A6CCFF0001DB949686 +:203BE0004392A354DB66421B001004684192BD96007643920356A9014196A993408FFFFF8B +:203C0000039AA894A959A9AA10FFA101A982A98AA10E4076FDB3A9CDFF0004D09B97419303 +:203C2000A073A7FFFF9005D193964192A172069A4194A988079A9B2BA6594194A993419267 +:203C40009B2BA85908D0A0729B2B932B008D9E01BF569201421B0010036805BE026F08BE89 +:203C6000A9AA10FFA101A28AA98343920356A901A694A90E40760892066F039A029BA28AF4 +:203C80004076849A84FEBE82BE86BE8B0600BDB210FEAD5C89DCA45DAD5CC07600C18FDCA4 +:203CA000A45C08F6852400D0C07609C105F68424008FC0DB1F767D03019206520460A0922A +:203CC0007F520261942B01D8A0928052F4684076D2A4008FC0DBA4C51F767D0300921F76BD +:203CE0007D037EDFC79601920452086160D162D0BF569C0ABF569408116F1F76700300D011 +:203D0000BF562002AD5C8FDCA45C9492008F22DC949601D8A0920652F6681F767D030692AD +:203D20001F767003BF5621651A611F767D0300880092095283DE026004BE00D00129008FCD +:203D400034DC0356A603C07601DDA00D0156A700C792949601D8A0920852F4681F767D0339 +:203D600001920152116000D0008FC0DBA9A8A00DA98A01D830D1A092BF569C46105248D143 +:203D8000BF569C3CF2681F767D0301920252216000D0008FC0DBA9A8A00DA98A01D830D15A +:203DA000A092BF569CAA065248D1BF569C96F26806D0008FC0DBA9A8A00DA98A01D830D159 +:203DC000A092BF569C73085248D1BF569C69F2681F767D0301920352116000D0008FC0DB3E +:203DE000A9A8A00DA98A01D830D1A092BF569C46145248D1BF569C3CF2681F767D03009222 +:203E000009521B6000D0013BAD5C89DCA480008F30DFA7069481A71E008F08DCC792949613 +:203E200001D8A0920F52F1683DD1008FC0DB3ED0BF569C46BF5694461F767D030192065291 +:203E40002560008FC0DB30D032D19428A401A4C531D09428A40133D09C2884037ADF942821 +:203E6000840348D094282C0149D094282C014AD0942820034BD094282003C792A4C56ED1C4 +:203E80006FD09C967BDFC79294961F767D0305920A6100D0008F30DC9428000801D8A09283 +:203EA0000452FB684076D38390FEBE8B0600BDB2408D80DCA9287E3FA8280201A18A407686 +:203EC000DEA1809AA18A40760EB4A98080D0A988910EA70F0E60A688012920FFFFFFA60F0F +:203EE00008611F767D0300887ED0910EA60F15614076D49B4076D2A440765B9A1F767D0393 +:203F0000019201521F601F7670033F1A10001F765C030F28FFFF166F00D01F767D030192A5 +:203F200006520460A0927F520761008F80DC9492008FC0DB949601D8A0928052EF6840760B +:203F4000D2A4BE8B06000600A983C57C0600BDB2BDAABDA206FE1F767803A482BF56080196 +:203F60000EDCEC92FF90A95AE492FF90A988A9AA37FFA6AFA986DC92FF90A988A9AA37FF4D +:203F8000A6AFA986D492FF90A98809D0A9AA37FFA6AFA9869492FF9008D0A9599492FF904D +:203FA000A988A9B237FFA6AFA98BFC92FF90A988008D3203A9B237FFA6AFA98BF492FF9077 +:203FC000A988408FFFFFA9B237FFA6AFA98BA9A210FFA101A71E441EA98A9392C7960202ED +:203FE000BF56CC344076FDB3A90E461EA28A465DA9B24076D3B3419644830102A38A407641 +:20400000089244830102A38ABF56C534407608924192A90E461EC38AE446FE6CA9B2A38A5A +:20402000A28340769B93C38AE446FE6CA9A210FFA101A983A38A4692A993FF91A7FFFF9068 +:20404000C597CD960602D52BDD2B4076089286FEBE82BE86BE8B060006000600A98AC49255 +:204060000600A988BDB21F767103A9A8008D3203A48BBF560101BDAA10FFA101408FFFFF53 +:20408000A71EA986A98A9193C7970202CF7E4076FDB3A9CDFF00A283A7FFFF90A18AD5975A +:2040A000DD960602E52BED2B40760892BE86BE8B0600BDB202FEA48B0EDCEC92FF90A980BC +:2040C000E492FF90A988A70637FFA6AFA71EDC92FF90A9880129A70637FFA6AFA71ED492F2 +:2040E000FF90A988412BA70637FFA6AFA71EFC92FF90A9934196F492A838419620FF00808B +:20410000A70F0666A706415C4076319D086FAD5CA792029B81DCA45C40769BA1399AA18A0C +:204120004076BE9D82FEBE8B0600BDB2BDAA02FE1F767103A486BF5601010EDCEC92FF9088 +:20414000A980E492FF90A988A70637FFA6AFA71EDC92FF90A988A70637FFA6AFA71ED49272 +:20416000FF90A988A70637FFA6AFA71E012920FF0080A70F0666A7064076BB9D4196086F8E +:20418000AD5CA792029B81DCA45C4076DEA1A9AA008D320310FFA1011F767C03A71EA98BDB +:2041A000A98A9292408FFFFFC796BF56CF384192FF90D7964192A7FFFF90DF961292A9CDFC +:2041C000FF00A7FFFF90E197E99606024076FDB3A9CDFF0009D0A7FFA183A28AFF9008D19A +:2041E000F597FD960A029D2B952B4076089282FEBE86BE8B060002FEA61EAC281F00013BB6 +:204200002256A60740FF0156A400C492A640036CFF90036FA7FFFF9082FE0600BDB2A48B3A +:20422000BDAAE1C50AD09183A706A58A02194076889EA927A706A58A01194076889EA1C5A8 +:20424000008D3203408FFFFF0EDF0356A908AB94A95AA78A9192C7960202BF56CF33407614 +:20426000FDB30AD0A95DE106918A02194076D3B3A988A20EA60F1061008D3C03912BD19263 +:20428000025205601F76BF01081A0400A18A099A4076B390096FA18A339A4076BE9D008D15 +:2042A0003C03BF569101BE86BE8B0600A4830EDDED92FF90A980E592FF90A988A70637FF22 +:2042C000A6AFA71EDD92FF90A988A70637FFA6AFA71ED592FF90A98809D0A70637FFA6AF60 +:2042E000A71E9592FF9008D0A90EE41E9592FF90A988E40637FFA6AFE41EFD92FF90A98805 +:20430000E40637FFA6AFE41EF592FF90A988E40637FFA6AFE41E02020156E4000AD01F76BA +:2043200078033A9AF4C394C3BF5608014076BE9D06000600BDB2BDAABDA2A482008DA0015C +:2043400093923D61408DA0010FD09B2B935A008F40DE013BA9A8A281A98AC49203523268C5 +:20436000A91B90012F66A29233521A61008F40DEA9A8A281A98AC458A059408FFFFFA38ABC +:2043800082D981D8A1880EDC035694089CCAA959A6064076FDB3A188A90EA60F05600CD011 +:2043A000A292937A1C6FD392025205601F76BF01081A0400A38A099A4076B390A928FFFF00 +:2043C0000E6FD392025205601F76BF01081A0400A38A099A4076B390A928FFFFBE82BE86AB +:2043E000BE8B0600BDB206FEA48B0EDCEC92FF90A90E421EE492FF90A988420637FFA6AFB5 +:20440000421EDC92FF90A988420637FFA6AF421ED492FF90A98809D0420637FFA6AF421EA9 +:204420009492FF9008D0A90E441E9492FF90A988440637FFA6AF441EFC92FF90A988440621 +:2044400037FFA6AF441EF492FF90A9880DD0440637FFA6AF441E9492FF900CD0A90E461E69 +:204460009492FF90A9880BD0460637FFA6AF461E9492FF90A9880AD0460637FFA6AF461E45 +:204480009492FF90A9880ED0460637FFA6AF461E94CCFF0004520A61055212604206448A1E +:2044A00046C4A6934076DEA1076F4206448A46C4A69340769BA13C9AA18A4076BE9D86FE2D +:2044C000BE8B0600C4A0D41A01000600C4A0D41A02000600D493009A039100530260019AF5 +:2044E00006001F76BF010118F7FF06001F76BF01011A08000600227608D0408F806F1F760B +:20450000BE0195CCFCFF015008960BDD08CCF7FF0450089608CCDFFF1050089608183FFFDF +:204520001F76BF01C51A08000118F7FF1A761F76C10169FF0002BF560007BF56011F022B61 +:20454000BF56040C0A2800800B2B0C2BBF560F10D42BC41E001A800006001F767A032388A5 +:20456000BDB2A48BA6921352E6FF5801C07612C10129A7060456A601A71EC7C52076C18AAF +:20458000240ED40F0561BF562311EFFF470108D091C5673E1F767A03232B242BD118F7FFC0 +:2045A000D118FDFFEFFF3A011F76C1010246ECFF3501C18A1F767A03240EC407A71E1F7679 +:2045C000C10107921F767A03C796BF562313240AEFFF24011F76C1010246ECFF1F01079242 +:2045E0001F767A03BF5623112596EFFF17011F76C1010246ECFF120107921F767A03BF5642 +:20460000230F2596EFFF0A011F76C1010246ECFF050108D091C5673E1F76C10107400B6D3B +:20462000D118FBFF1F767A03D118FEFF232B242BEFFFF4001F767A03BF562309EFFFEE00F1 +:204640001F76C1010246ECFFE90007921F767A03BF56230B2596EFFFE1001F76C1010246D0 +:20466000ECFFDC0007881F767A03257EC18A240ED40F0561BF562307EFFFD00008D091C53E +:20468000673E1F767A03BF562309EFFFC7001F76C1010246ECFFC20007921F767A03BF5661 +:2046A00023072596EFFFBA001F76C1010246ECFFB50007921F767A03BF5623052596EFFF9D +:2046C000AD001F76C1010246ECFFA800079208D01F767A03259691C5673E1F767A03BF569B +:2046E0002303EFFF9B00D140086CBF5623010AD0D11A040091C5673ED141ECFF8F001F7668 +:204700007A030AD0BF56230DD11A080091C5673EEFFF84001F76C101BF56008F082B021A53 +:2047200020001F767A03BF562312776F1F76C101BF56008FC18AE4920896021A20001F76EC +:204740007A03BF562310696F1F76C101BF56008708280003021A20001F767A03BF56230E02 +:204760005C6F1F76C101082B021A20001F767A03BF56230C526F0AD091C5673E1F76C10165 +:20478000BF56008708280005021A20001F767A03BF56230A426F24801F76C101BF56008F68 +:2047A000C18AA706C407A71EC79208961F767A03240A1F76C101021A20001F767A03BF5680 +:2047C00023082B6F1F76C101BF56008FC18AE4920896021A20001F767A03BF5623061D6FA2 +:2047E0000AD091C5673E1F76C101BF56008708280002021A20001F767A03BF5623040D6FB9 +:204800001F76C101BF56008708280006021A20001F767A03BF562302BE8B06001F763000D3 +:20482000A880A927A48E142820400002008FB2DE1F767C03121E4076F79F0052FD61A79218 +:20484000A793C0FF0191A995A880A7922661408FA6DEAB9220BE1F90A674A792A6540267D4 +:20486000A7881F767A03A65C0356AB01263AA90E28A82A1E008FB2DE4076EF9F4076F79F12 +:204880000052FD61A93AA60DA98EAB92A694A927A792A69EA980DE601F763000142810401F +:2048A00006001F763000A880A927A48E142820400002008FB2DE1F767C03121E4076F79FB6 +:2048C0000052FD61A792A793C0FF0191A995A880A7922661408FACDEAB9220BE1F90A67401 +:2048E000A792A6540267A7881F767A03A65C0356AB012C3AA90E2EA8301E008FB2DE4076BE +:20490000F39F4076F79F0052FD61A93AA60DA98EAB92A694A927A792A69EA980DE601F767C +:20492000300014281040060002FE1F767A0336C5008FB2DE673E22761F763400008FB0B58F +:204940001CA81A7669FF4076BDB41F7671030F8F40423A0642A8C00020B6A9BD120F00778D +:20496000007702E84116008F10DF89E600004076FCB42376002082FE0600BDB2BDAABDA2B8 +:2049800002FEA85BA58BA4864B9303524197C12B146106520F60A31B00103868A31B031048 +:2049A0003566A39240766E9800523260BF56C1032F6FBF56C1012C6FA38820FF0010A60F8F +:2049C0000460419210521561A38820FF1010A60F0860419228520D6150520B617852096144 +:2049E000A38820FF0011A60F116041927C520E60005200D11161A192A394407648999A9661 +:204A000001D94192A154F866076FBF56C102C27B4193029ACA9782FEBE82BE86BE8B0600E7 +:204A2000BDB2BDAA02FE1F767C03219225611F76800108421A6D0A420A6D1F767C03FABEDD +:204A40000A061F767C032E03A60F726904021F768001061E0A426C6C1F767C03212B1E2B64 +:204A60001F7680010A1E0D6F1F767C030402212B1F768001081E1F767C031E921F5423661A +:204A80001F767C031A921C610876303BBE5A1B59AD5D1C93008F40DD1D88A1CCFF0082DD8F +:204AA0001A2BA55D417E40764AA21F767C03A1CD00FF1F2B42CB1E962097BD7A00761E92AE +:204AC0001F5436691F7680010406A940316D1F767C03008F40DD1F581F59012904B601D8B1 +:204AE0009C2504BE94AF5AFF1F92C0FF1F768001A908001F08C3A9251F767C030AC51F7630 +:204B00007C0320AF1F7680010AC21F767C031F0802001F768401161E1F767C03BF5621018F +:204B20002EC31F76840114A91F76800104C282FEBE86BE8B0600BDAA34FEA892FF9C0564E7 +:204B4000105204640F9A026F009A22761F76BE01AB28F0FFAA28457F09CDFFDF013B08B6E5 +:204B6000A81A0010A4A908BE099700D209CDFF3FA81A00400997A9851F7680015AFF2AC39E +:204B80005D56A400A0A9AB2BAA28467F08D42CC2ACA91F7684015AFF5D56AC0002A8A5A91F +:204BA000AB28E0FFAA28457F0AC3AB03AB28FAFFAA28FFFF12C21F76800107BE00AA1F76A8 +:204BC0008401003A08A0101E1F76800102A900C200BE0002011960C2601A80F2081E0002AD +:204BE00060C401190C1E000201191E1E00020119221E00020119181E14C21844FF6C16068E +:204C00005E1E5E18FFFD5E1A00015D1800FF5D1A05005E1A7F005E18FAFF5EC416C2601865 +:204C2000FFEF6006141E1844FF6D0002488F70641F768301541E088F7064541A010000A074 +:204C40000031531A0200010200BE02A8541A06001F768001408F73B400D4301E54C502028A +:204C600032A82EA9008F48B41F76370008A01F768001241E26C220C31F7637000AA81F764E +:204C80003300321A1000321A2000237600011A761F767C0369FF000200B6182B261EB4FE82 +:204CA00022C224C3BE860600BDB2BDAA08FE00021F767E030ED0081E9406481E4792A980E5 +:204CC0000CD094C420FF001FA70F11600AD094920F9008524C60A6061F767C03A80E489345 +:204CE0001B971C961D7EBF561A01416F4806A80EA95AA9CC008000D14396A292A9CC004046 +:204D00004296A292A9CC00204196A218FF1FA606A80E489346974596447EAD5C83DCA45C24 +:204D20009C921561A292805212677F520A61AD5C86DCA45CA2589C92008FC0DB9496076FB7 +:204D4000AD5C86DCA45C9C9240769CA501D9A19201DA0352E3684806455C445DA80E46931C +:204D60004076299A1F76BF010F1A010088FEBE86BE8B06001F767C031992A88809611F7634 +:204D800080010806A940046D0A06A9403E6C02D5A692013BAB28010001B6A572AA2B1F7630 +:204DA0008001A9A8A581A98308A90AC301B6C58500915AFFA692A772A9A8A781A983C58526 +:204DC0003FFFABCAAACBA71EA9A8A681A98A1F768401C48500915AFFA6853FFFAACBABCA9B +:204DE000A81A00E0061E04C322761F76800100022E1E1A760102041E1F76BF010E1A0100F7 +:204E00001F767C03BF56190169FF0600009A019C1952FE640600005206601F76BF010D1AA3 +:204E20000010056F1F76BF010B1A00100600BDB21F76BF01BDAA0D1A0008BDA2A95B01029E +:204E4000407613B700D1808DC06FA28AA392CEFF0BDCC41A0080407698A4A39280FFA95BA8 +:204E60000102407613B70DDA0102C21A0080407613B701D9A1921052E7641F76BF010B1AB5 +:204E80000008BE82BE86BE8B06000876303BBE931F767D030192065206617FD0008FC0DB1D +:204EA000942B066F008FC0DB7FDCC418C000BD9700760600CC920461CC0B0260D42B0600CC +:204EC000A980A8881F767D031E0EA70F1A61008FC06FA4831F76BF010DDDC51A00400D1A9D +:204EE00000041F767D031E92015204600BDCC41A00401E92025205601F76BF010B1A000446 +:204F0000A6881F767D031F0EA60F24611F9212601F767D03019206520861045206611F7609 +:204F2000BF010B1A0020166F1F76BF01021A0800116F1F767D0301920652086104520661C8 +:204F40001F76BF010D1A0020056F1F76BF01041A08001F767D031D0E1A1E06000876303B5F +:204F6000BE271F767D0301921F767D031E881F9306520A6014920861008F5CDF4076E7A45B +:204F8000A6924076EDA4BD3F00760600C496CC2BD42BDC2B06000876303BBE931F767D036E +:204FA0000192065224607FD0008FC0DB9492008F5CDF407653A5008FC06FA4830DDDC51ABD +:204FC000004001921F76BF010D1A000406520761045205610BDCC41A0020036F021A080087 +:204FE00000BE1F767D031AC2BF561401BD9700760600A988C4925EFFC47EA6CEA646096D0C +:20500000A9470D6CBF56D401CC97BF56DC01076FA946056CBF56D402CC97DC2B0600087639 +:20502000303BBE271F767D037FD0008FC0DB1E2F1F801F767D039496019306530F601F7676 +:205040007D0314930B61A828E803008F5CDF407686A5AA92A7934076EDA4BD3F0076060022 +:205060001F767D03BF56120513287017008F59021F767803BF56203C1F767803BF5621A0DC +:205080001F7678031F2870171F767D0318A80600BDB2BDAABDA202FE79D0008FC0DBAC1EE5 +:2050A000013BA98B94854C82A61E4456A90042A2C00020B678D0A98342A22156940044561B +:2050C000A100C00020B67FD0A607A5039449046C7AD0013B9485A918FF0FA95AA91A0080F4 +:2050E0004076A4A47BD0A9B2408FC0DB34FF957AA61EA9B242A232FFA607C00020B6A98AB6 +:2051000042A2C802AC1EA9B24456A900C00020B61CD0A49E82FE289C9596BE82BE86BE8B79 +:205120000600A92802904076A4A41F767D03019206520F6104520D61025206611F76BF01C4 +:205140000F1A00040A6F1F76BF010F1A0040056F1F76BF01061A0002060002FE1F767D03E5 +:205160001292150A15546F661806152B4C607FD0008FC0DB9447176C1392C0FF1654026716 +:20518000160A1392160A165402671696C4E21600C4E213014FE800C84FE80980007710E708 +:2051A0004000086F1792162B90E5019CA918FF0317968EE6000016801388A9BF120F1793F4 +:2051C0001F7678031E7F1F7678031F7E1F76780322960D617FD094480A6D1F767D031388ED +:2051E000013BA98542C24076D5A52D6F40761EA61F767D03008FC0DBBF5617017FDCC41858 +:20520000FFFE216F18060119A61E181E20FF5802A60F136120FFF401180F0F6120FF9001D2 +:20522000180F0B6120FF2C01180F0761C802180F04616402180F076040761EA61F767D0327 +:20524000BF56170182FE060002FE22761F767D03019204520460008F96AE036F008F79A8AC +:205260001F7634001AA81A760F8F40421F76710369FF3A0642A8C00020B6A9BD120F0077C4 +:20528000007702E8D123008F08DF89E600004076FCB41F7630000C2820402376001082FEEC +:2052A0000600BDB2BDAABDA240765EAE00D3103B69FF40764AB6267600002F7600004076BE +:2052C000F7B640762CB5407696941F767D03009A0093407628A30D9A40767E91418F00C2E9 +:2052E00001D4A9A04076CD90418F00C202D4A9A04076CD90407621A24076FE93008FC06F3B +:20530000A48300D20BDC0CDDC51A0100C41A0100012920FF50C340761BB5008FC06FA4833E +:2053200001DAA2920EDC0FDDC51A0100C41A01000A52EF64008FC06FA4830BDC0ADDC51A88 +:205340000100C41A01004076CC934076469A1F767D03109B009240760EB74076B1A6407632 +:2053600069B61F767D030192045205614076E7AF40763784407663854076E49C4076D3830D +:205380001F767D030192065203604076BDA5407658A51F767D03C076C0DB00927EDFC796AD +:2053A00022761F76C001BF56292F1A7669FF40769DA21F765C0305926761052B00D2008FC1 +:2053C000C0DB013BA9A8A281A98A60D09488A6925761008FA9DFA9A8A281A98AA692C40A4F +:2053E000C4544E66408FBEDEC42BA9A0A281A98AC49280520868008FBEDE013BA9A8A28175 +:20540000A98AC42B013B086F109AA794A9CCF0FFC4968052F167008FBEDEA9A8A281A98A18 +:20542000C4800356A203408FF0D8A61EA792C3FFA927A606AB0D0156A500A7CD0F00A82D4C +:20544000C59262FFA988E161013B0A6F008FBEDEA9A8A281A98AA692A0FFA988C40AA640DE +:20546000F66C408DBEDE013BA9B2A281A98B008FC0DB009AC193407647A4C108030001DA13 +:20548000A29202529D647FD0008FC0DB9441066C7FDCC418FDFF4076D49B7FD0008FC0DBF2 +:2054A0009442066C7FDCC418FBFF40765B9A7FD0008FC0DB9443066C7FDCC418F7FF407623 +:2054C000E49C7FD0008FC0DB9445066C7FDCC418DFFF40765C804076B3951F767D0301923B +:2054E0000152136016D0408FC0DB9592A58AC1FF01F016D0A3CE0356A9027FDC0790C498E6 +:2055000095CC0400C1FFA95B4076FD9900D2A2920461408D40D0036F408DC0D3A18A40761B +:20552000279FA91BFFFF53611F76BF0100BE0F1A01001F767E03375208C2116237523061FC +:20554000335208623352386103523E61065238613E6F34522D6135522761396F3A520862EB +:205560003A5212613852186139521261306F3B5207613C522C60A18A40767F9F286FA18ABC +:205580004076269F246FA18A4076E39E206FA18A4076E69D1C6FA18A4076229E186FA18ACA +:2055A0004076B99D146FA18A4076BA9D106FA18A4076349D0C6FA18A40769B9E086FA18ABC +:2055C0004076AE9A046FA18A4076039B01DAA2920252E3FFEDFE9C6F1B76F0FF0500BDABB3 +:2055E000BDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E60006A1 +:2056000002FE69FF42291656227601021F767C0301560A00237600102676391110291A76E3 +:205620007FD0008FC0DB944F046D69FF407639AD1F765C03040A049214520468042BBF56EB +:20564000050116D1008FC0DB7FD09C9294CA0190A9880C9301F10191A6CB10601F767D037D +:205660000193065306611F76BF010B1A0008146F1F76BF010B1A00200F6F1F767D03019310 +:20568000065306611F76BF010F1A0008056F1F76BF010F1A00200653E1FF4B011F765C0339 +:2056A000120A12930A53E0FFA1001F767D0301931F765C030553122B0360189322601F76F5 +:2056C0007D030193015305601F765C03179319601F767D03019306530F6104530D6102535A +:2056E00006611F76BF010B1A0004226F1F76BF010B1A00401D6F1F76BF01021A0002186FF4 +:205700001F767D03019306530F6104530D61025306611F76BF010D1A00040A6F1F76BF0148 +:205720000D1A0040056F1F76BF01041A00021F765C0316930F601F767D030193035313619A +:2057400001531161065319601F76BF01021A8000186F1F767D03019303530F6101530D6108 +:20576000065306611F76BF010B1A00100A6F1F76BF01041A8000056F1F76BF010D1A001073 +:205780001F765C03179315601F767D03019306530B610353046101531561196F1F76BF0126 +:2057A0000B1A0040226F1F76BF01021A80001D6F1F767D0301930653146103530D610153E7 +:2057C00006611F76BF010B1A00800F6F1F76BF010D1A00800A6F1F76BF010D1A0040056F45 +:2057E0001F76BF01041A020000523E601F765C03128062D0940EA70F37601F767D030193F4 +:2058000003530F6101530D61065306611F76BF010D1A00100A6F1F76BF01021A8000056FD6 +:205820001F76BF010B1A001006530E6103530961015304610D1A0080096F0B1A0080066F64 +:205840000B1A0040036F021A800006530B6104530961025304610B1A0004066F0B1A004092 +:20586000036F021A00021F765C03009A199300530260019AA693A9CF04611128F401132B8C +:20588000110AC4E21100197E12E8D01F14AD5764130A1393019100B6112B1497139307910A +:2058A000026101B6A692157F3C601F767D030092095224611F765C0316D0BF5616019493B2 +:2058C0007FD0D0FF9492C9FFA8CAA940026C167F0C42116D0C430C6D0C44036D172B2F6F2A +:2058E0001592009B00520260019B1797286F14921796256FBF561701226F1F765C030C41EB +:20590000BF561801036C1492026F009A0C401796036D162B146F14931492189716960F6FE6 +:2059200014931488149216971896177E086F69FF40763BA540763AA64076EA9882FEAFE23A +:20594000BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303B35 +:20596000F1FF177602761B76F0FF0500BDABBDAABDA8BDA0BDC2BDC300E2BD0003E2BD00DC +:2059800003E2BD0103E2BD0203E2BD0330E6000602FE69FF422916561F763300229241966D +:2059A00023760100267601012218FA002128FFFF10291F765C030E9202610E0B1F765C03F7 +:2059C0000D92E0FF38011F765C030F920D61FF9C0F960A60008FC0DBA4837FDC7FDDC5187E +:2059E000EFFFC41A04001F767D030592196100D1008F0871013BA9A8A181A98AD492C3FFCE +:205A0000A988008FBCDDA9A8A181A98A69FFA192C47E4076018601D9A1920452EA641F7627 +:205A20007D030192065237601F76C4010992C3FFA90EA9BD120F0077007763D0808DC0DBA6 +:205A40008BE60000008F40D78CE6010069FF13E292014076E9B56ED16FD0013B008FC0DB94 +:205A60009A92929EA985A9BD160F6FD0C8E29402007720E7800089E6090040764BB350E830 +:205A800000C8007790E8008800778CE600001DD013E292001F767D0301920552406000D1FA +:205AA0001F765C0307921F7674033D0A3D5402623D2B008F0871013BA9A83D81A98A3D2DB9 +:205AC000C492C3FFA90EA9BD120F69FF008F40D712350156A4008BE600004076E9B5013B1F +:205AE0001F767403008F86DE8EE60000A9A83D81A98A13E2C400008F30DFA9A83D81A98A58 +:205B000001D9C492085205613D924076E482046F3D924076B780A1920652C3641F767D03B4 +:205B20000492E1FF89001F76740301293E0640FFA61E013B3C85A60F39691F767D030492EA +:205B400000D13465008F0871013BA9A8A181A98A1F7674033D2D1F767D03C492C3FFA90E97 +:205B6000A9BD120F0412A194A92D008F40D769FF8BE6000012350156A4004076E9B51F76D3 +:205B80007403A192013B008F86DE3D2D1F767D030433AB72A9A8AB81A98A01D98CE600005D +:205BA000A19213E2C4000454CE641F7674033C0A3C92FF9CA9853E0F3E681F767D030492E8 +:205BC00000D11F7674033C2B11651F7674033D2D1F767D0369FF0412A1944076B78001D906 +:205BE0001F767D03A1920454F1641F765C0306921F767403029C3D0A3D5402623D2B1F7641 +:205C00007D0302931F7674033D9200530F611F765C03065402600D9A1F7674033D931F7609 +:205C20005C03069F015302600C9A69FF40762094026F0D0B008F0071A4831F76330019DCC5 +:205C400001DDC51A0040C41A1000BF562101103B419282FE2296AFE2BE03AFE2BE02AFE298 +:205C6000BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE86BE870300303BF1FF177602767C +:205C8000005206601F76BF01041A0001056F1F76BF01021A00010600005206601F76BF01DF +:205CA000041A4000056F1F76BF01021A400006004076CDAB019A4076D9AB009A4076CDAB90 +:205CC0000102407613B7009A4076D9AB1E02407613B70600009A4076D9AB1E02407613B753 +:205CE000019A4076CDAB1E02407613B7009A4076CDAB1E02407613B70600BDB2BDAABDA298 +:205D00000EFE00D2A98BA288A492A52D0252A65BE3FFF000A9B2026301D256FFA983AC92C6 +:205D200005640452036301D3026FAC2BAC92A58B4B2B0B650A02421EA9B2C00020B64B0A1C +:205D4000A98BAC924B54F762A9B20A650A02421EA9B2C00020B601DE58FFA98BF862A292BA +:205D6000A58BA694A988026001BEA692AC944B2B0452A9880F650A02421EA9B2C00020B621 +:205D8000AC80A98B4B0AA69281DFFC9CA72D4B54F362AC920263AC2B019A66FFA958015288 +:205DA000026000D08076E803A9B242C2C00020B6441EA9B242C2C0002FB6A61E6402421EEB +:205DC000A606C00020B6461E6402421EA9B2C0002FB6A61E0A02421EA606C00020B6481E7F +:205DE0000A02421EA9B2C0002FB64A1EA61E460648074407A607046000D0A02DAC5AA3923C +:205E00001561039A013B4B96AD888ADEA6880356A9010156A600C6060960AC924B5406610E +:205E20000F024B0BC61E4B92F062A2922061019A013B4B96AD5D8ADDA55D0356A9010156AE +:205E4000A5000F02C50F09614B9203520661019C04524B96F0640B6FAD5D8ADDA55D0ABED8 +:205E60004B920356A9010156A500C5C2009A4B2B013BAD5D8ADDA55D0356A9010156A50001 +:205E80008076B0DAA606C507A61EC685C51E019A4B2D66FFA0CE046180020156C5004B0ADA +:205EA0004B920452E76448A3AB92AA2BFF90A927A9A9AC28180037FF5AFF4A064E1E4E929F +:205EC000FF904E964D2B4E06ABCAAACB4E1E4606009BFF903FFF5AFF4E06ABCAAACB4E1E76 +:205EE00044063B565AFF4E06ABCAAACB4E1E026F4EB2408F90DF013BA9A0A481A98A4B2BC2 +:205F0000C45BA3921052246200D14E92013B0190A9884E0640FF4E1EA6924076E5AB01D93F +:205F2000A1920852F364A35A00D1A293A292B0FF0190A85A4076E5AB01D9A1920652F664FF +:205F40004076F7AB01DB4B0A4B920452DB648EFEBE82BE86BE8B060011D0008F10709492D1 +:205F60000F9004520E60CCCC8001C6FF0252096022761F76C001BF562555BF5625AA1A7632 +:205F800069FF060022761F76C001BF5629681A7669FF0600BDB202FE1F76C001A888A980E3 +:205FA0001143026C257611CC80010561227611187FFE1A762276408F1070A58AA79211D0C2 +:205FC0000F9001DCC41A400095CDF0FFA8CA21961A76A79204600102A98B026FA759A92807 +:205FE00080C3A828C90169FFAC1E0556A10040764FADA1A91140FF6C22761118BFFF1A76CF +:20600000A6930153036102530A602276A69211CD7FFE039086FFA8CA11961A76A6930A6041 +:20602000A9B2013BAC281E0040FF2256A10741FFA98BA69301530A60A9B2013BAC281E0084 +:2060400040FF2256A10741FFA98BA69302530960A9B2AC281F00013B2256A10740FFA98B59 +:20606000A7921460A69203521160227611CC7FFFA91A000169FF119620FFDA05407613B731 +:206080001F76C001111A80011A761F76710382FE69FF3AB2BE8B0600BDB202FE22761F76A6 +:2060A000C001BF561A011B2B1A92036001BE046F03561A01A9881F76710342C269FF3A060E +:2060C000C00020B63E1E1F76C0011B92036001BE046F03561B01A9881F76710342C23A0643 +:2060E000C00020B6408D1070A18315D0008F200B3C1E0CDD1F762C0094CCF8FF015014DC5E +:206100003596C41A04003418F7FFC51A0800787680001F76C0011C1A1000A18A1C1A00043A +:206120001C1A00081C1A20000DDC10D91C1A00011C1A00101C1A00201C1A00401C1A0080FA +:206140001C18FBFFC41A01001D1A02001D1A04001D1A08001D1A10001D1A20001C1A0400A7 +:206160001D1A00041D1A00081D1A00101D1A00201D1A00011D1A00021D1A00401D1A008068 +:20618000C11A0001201A0002201A0004201A0008201A0010201A00201A7669FF82FEBE8B02 +:2061A000060040764FAD049A029B407657AD4076D9AD060002FE22761F762B002028FFFF52 +:2061C0002128FFFF2228FFFF2328FFFF2428FFFF2528FFFF2628FFFF2728FFFF1A761F7694 +:2061E000FFCF69FF38924196399241963A9241963B9241963C9241963D9241963E924196ED +:206200003F921F762B0041962F9201F0019082FE06001B76F0FF0500BDABBDA8BDA0BDC21F +:20622000BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000669FF4229165656 +:2062400000D1227601021F767C0301560A002376391110291A767FD0008FC0DB944F046DE4 +:2062600069FF407639AD1F765C03040A049214520668042B1F765C03BF560501008FC06FB2 +:20628000A4831F767D0306DDC51A0100019206520E6104520C61025205610FDCC41A00045B +:2062A0000A6F1F76BF010F1A0040056F1F76BF01061A00021F767D030192065208610452FD +:2062C00006611F76BF010F1A0020056F1F76BF01061A080001021F767E030807A61E008F4D +:2062E000204E081EA9A8A60F026708A8050A05920A520264052B0192AC2B1261008FC0DB4C +:20630000A9A8AC0DA98A62D0949205540465019A66FFA172AC92019C0154A92DF068040AA7 +:20632000049202520265042B7FD0008FC0DB9493A89216D094CAA940EDFF8300A84B586DAF +:2063400020FF204E080F306904920A60013B1F766F0300D401D569FF008540760AAC1F7625 +:206360007E03049201520A60008FC0DB013B01D569FFCC8501D440760AACA192408DC0DB78 +:2063800002D400D569FFD1CEA90E40760AAC1F767E03049202527B60013B03D400D5D98507 +:2063A00040760AAC746F0492076000D4000200D569FF40760AAC1F767E03049201520760AC +:2063C00001D4000200D569FF40760AAC02D4000200D569FF40760AAC1F767E0304920252BC +:2063E000566003D4000200D540760AAC506F0492086020FFB82200D401D569FF40760AAC99 +:206400001F767E0304920152086020FFB82201D401D569FF40760AACA10E02D400D569FFDB +:2064200040760AAC1F767E03049202523060012903D400D520FFFFFF40760AAC286F69FF02 +:20644000407692B604920760013B00D404D5008540760AAC1F767E03049201520760013BC5 +:2064600001D404D5008540760AAC1F767E0302D400D5060640760AAC1F767E030492025244 +:206480000660060603D400D540760AACAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE0010 +:2064A000BEC5BEC4BE83BE8ABE870300303BF1FF1776027602FE2276008F40AA1F763500CB +:2064C0000AA81A7669FF4076E3B61F763300221A2000237601001F767D0301920652236082 +:2064E000008F00711F76C401D4CCF0FF05500296DCCCF0FF0350039603CC1FFF105003965D +:2065000003CCFFF1A91A0005039603CCFF0FA91A00400396E4CCF0FF0750049604CC0FFF74 +:20652000205004961F767D03019203521460008F00711F76C401D4CCF0FF02500296DC1819 +:20654000F0FF03CC1FFF1050039603CCFFF0A91A000203961F767D03019201522860008F38 +:2065600000711F76C401D4CCF0FF06500296DCCCF0FF0550039603CC0FFF4050039603CC79 +:20658000FFF7A91A0007039603CCFF0FA91A00200396E4CCF0FF0350049604CC0FFF60502F +:2065A000049604CCFFF1A91A000104961F767D03019202520960408F0071A58A02DCC41895 +:2065C000F0FFDD18F0FF019205524C60408F0071A58A1F76C40102DCC41A0F00DDCCF0FF26 +:2065E0000250039603CC3FFF3050039603CCFFF0A91A0006039603CCFF0FA91A00C0039671 +:20660000E5CCF8FF0A50049604CCBFFFB050049604CCFFF7A91A0007049604CCFF0FA91AEB +:2066200000400496EDCCF0FF0550059605CC1FFF1050059605CCFFFEA91A000E05960518A7 +:20664000FF0FF5CCF8FF08500696061AF00006CCFFFDA91A000D069606CCFF0FA91A009003 +:206660000696408F0071C0760068A5C41F76C401A78A1AD019DD01DEC61A000119DC011AFC +:206680000008C51A1000001A10000018BFFF001A000F011A00401F763300BF5621011F76EB +:2066A000A001C41A000819CCFFFCA91A0004199697CCFFFDA91A00011A96BF56098000CCC0 +:2066C0007FFCA91A0001009600CCFFE3A91A0008009600CC001CC9FFA92D019A66FFA9881F +:2066E00000CC800304600102AC1E086F00CC8003013BC6FF80FFA985AC1E013BA6851F76E0 +:2067000071034456A900421E3A06C00020B6008FA60E42A8C00020B61F767D0301931F768B +:20672000A00105960018FCFF025303602502026FBB021F76740382FE3E1E06001B76F0FF8F +:206740000500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD03DE +:2067600030E6000602FE69FF422916561F7633003292419623760001267600013218750065 +:206780002128FFFF1029408FC0D369FFA58A40768A9140768F91103B4192329682FEAFE2E2 +:2067A000BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BC7 +:2067C000F1FF177602761B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2F0 +:2067E000BD0103E2BD0203E2BD0330E6000602FE69FF422916561F7633003292419623763B +:20680000000126760001321871002128FFFF1029408FC0D369FFA58A40768A91407660922D +:20682000103B4192329682FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC48B +:20684000BE83BE8ABE870300303BF1FF177602761B76F0FF0500BDABBDA8BDA0BDC2BDC359 +:2068600000E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF4229165690 +:206880001F7633003292419623760001267600013218FD002128FFFF1029408F40D069FF50 +:2068A000A58A40768A9140768F91103B4192329682FEAFE2BE03AFE2BE02AFE2BE01AFE218 +:2068C000BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF177602761B76F0FF05001F +:2068E000BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E62C +:20690000000602FE69FF422916561F7633003292419623760001267600013292322B21282E +:20692000FFFF1029408F40D069FFA58A40768A9140766092103B4192329682FEAFE2BE0379 +:20694000AFE2BE02AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FFF6 +:20696000177602762276008F806FA483A4C41F76BE0126DDC51A030027DE261A0C00A483BC +:20698000261A3000261AC000261A000317DD261A000C261A0030261A00C0C61A0300271A70 +:2069A0000C00271A3000271AC000271A0003271A000C271A0030271A00C0C51A0300A4834D +:2069C00028DD171A0C0016DC171A3000171AC000171A0003171A000C171A0030171A00C06E +:2069E000C51A0300281A0C00281A3000281AC000281A0003281A000C281A0030281A00C0EC +:206A0000C41A00C0161AC000161A0030161A000C1A7669FF06002276008F806FA4C4A483A9 +:206A20001F76BE0118DEC61A030019DD181A0C00181A3000181AC000181A0003181A000C2E +:206A4000181A0030181A00C0C51A0300A48369FF191A0C0014DD15DC191A3000191AC000FA +:206A6000191A0003191A000C191A0030191A00C0C51A0300141A0C00141A3000141AC000E3 +:206A8000141A0003141A000C141A0030141A00C0C41A0300151A0C00151A3000151AC000D5 +:206AA000151A0003151A000C151A0030151A00C040763FB20600227615D0008F200B1F76A2 +:206AC0002C0094CCF8FFA483A4C5A4C40150359614DDC518FCFF0CDF3418F7FFA4830DDE17 +:206AE000341A0400C41A60000EDDC41A1C00C41A0300C41A0030C41A000EC41A8001CC1A01 +:206B00004000C41A0040C41A0080211A0300C71A60002C1A1C002C1A03002C1A00302C1AD3 +:206B2000000E2C1A8001C61A40002C1A00402C1A00802D1A0300C51A6000A4830FDD2E1A30 +:206B40001C0018DC2E1A03002E1A00302E1A000E2E1A8001C51A40002E1A00402E1A0080D4 +:206B60002F1A0300C41A0700381A38001A7669FF40763FB207F6007769FF0600BD3ABDB273 +:206B8000BDAABDA202FE0129A9BF120F58FF5B61A85C7F91A8088000421EA493D6FFA85CB5 +:206BA000A9BF160F6761A85D7F91A8088000A859A958A593D6FFA85DA493A571A818000119 +:206BC000A697A418FF00A518FF007FDCA492A59EA7964D64A90801FF3E62A193A09236FF53 +:206BE000A859A958420635FF0EF6A11FA95BA3010AF6A11F2D56A204A32DA03640FF0BF6DC +:206C0000A11F33FF009B30FF54FFA20CA39540FFA70801001FF677FF200940FFA7080100ED +:206C20001FF677FF5AFFA7922265A90801FF1363A9A946FF7F91A85BA95AA625A79596FF40 +:206C4000A20CA395A9BD120F82FEBE82BE86BE8BBE8E0600009B57FFA8087FFF5AFFA69377 +:206C6000F260A8280080AA71AB92ED6F20FF0000EA6F5AFFA493A818000196FFA85CA9A90A +:206C8000A8087FFFA81C0080A4CBDD6F58FF5AFF00BE25610129A6920190A958A60640FFF4 +:206CA000A407A71EC793A640046DA892C7FFA92DA09201520460A8CCFF00A92DAC58A59270 +:206CC000A0F201DEA092FF90A958A592408FC0DAC7FF9570A95DA9A9A60FDE66A592060088 +:206CE000A71E8076C0DA0A6FA5928470FF90A95881DFA592C7FF9670A95DA706F660A59268 +:206D000006000052A927FF76FFFF00BE3365A9A8013BA681A983A793C592FF90A92FAA718F +:206D2000A880009AA740046DB0FFA880056FB0FFA81C01A0A880019C0852F564A9A8013BD5 +:206D4000A681A983A793C592C7FFA92FAA71A880009AA740046DB0FFA880056FB0FFA81CBE +:206D600001A0A880019C0852F56401DEAB92A654CF62A79206001B76F0FF00E2BD0030E63F +:206D8000000602FE422916561F7633003292419623760001267600013292322B2128FFFF14 +:206DA000102901021F767C03180A1F768001061E1F763300211A0001103B419282FE3296BD +:206DC00080E2BE00303BF1FF177602761B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD00E6 +:206DE00003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF422916561F763300E2 +:206E00003292419623760001267600013292322B2128FFFF1029008F006169FF4076E1A36D +:206E20001F76800102020C1E1F763300211A0001103B4192329682FEAFE2BE03AFE2BE0201 +:206E4000AFE2BE01AFE2BE0080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF177602763D +:206E600000021F763000008F000C0119021E1F767C03408F100C000200A81F763000062BD7 +:206E80000119072BE41A1000041A20001F763000008F080C0A1E1F76300000020119121EB9 +:206EA0001F76300000020E2B0F2B1F767C0308A810A0021E1F763000162B172B1F763000F7 +:206EC000E41A1000E51A10000C1A20001F763000141A20001F767C03121E0A1E060000E0EA +:206EE000E45003E2F40188E61000C48303E2D500C483F52BC483FD2BC483E51A1000C48392 +:206F0000E51A2000C483E518FFFBC483E518FFF7C4830002E51A0040D41E06000129BDB2C1 +:206F200040FFBDAAA98B00D208611002407613B701DAA9B2A20FFA66BE86BE8B06001F763B +:206F4000C001201A001040763FB22276008F200BA4C4A4831F762C000ED015DE14DDC6183D +:206F6000F8FFC51A03003418F7FF3418FBFF94CCBFFF20502E960FDC2ECCE3FF08502E967B +:206F80002ECCFCFF01502E962ECCFFDFA91A00102E962ECCFFF7A91A00062E962E187FFE38 +:206FA000C418BFFF2E18FFBF2E18FF7F2F1A03001A7607F6007769FF0600AD28000469FF70 +:206FC0001F5616561A5610E6000240291F76000002291B762276A92817B7A828000001099D +:206FE0001B61C07617B704290F6F009BA92401DF046C0429A82401DFA61EA1F78624A70622 +:20700000A1810109A71EA92403635CFF043BA95901DF0900ECFF1A76A928FFFFA828FFFFAF +:2070200001090E61FF76FFFF066F01DFBDC3A71E673EBEC5A92401DFA82458FFF7604076C5 +:20704000AFB64076CCB61B76F0FF0500BDABBDA8BDA0BDC2BDC300E2BD0003E2BD0003E2BF +:20706000BD0103E2BD0203E2BD0330E6000669FF42291656227601021F767C030156120096 +:20708000008FB2DE69FF1F767A0338C5673E1A76AFE2BE03AFE2BE02AFE2BE01AFE2BE00E3 +:2070A00080E2BE00BEC5BEC4BE83BE8ABE870300303BF1FF17760276BDB2CFE6010008D07D +:2070C00003E2BD040ED103E2BD0503E2BD0603E2BD07AFE2F400AFE2D40510E394040CD0DD +:2070E00012E39C1F0ED118E394DA0AE3C4A000E3E4C600E7BB0110E700010CD010E7C0008C +:2071000003E29C0203E2940008D0F406941E03E2F401AFE2BE07AFE2BE06AFE2BE05AFE285 +:20712000BE04BE8B0600022904295F565AFF42065F56421E00021FF617564200AB0632567C +:2071400002292076022904295F565AFF420656FF421E00021FF617564200325602292076FC +:207160005AFF00021FF617564200A9A920765AFF00021FF6175642002076103B1F76330040 +:207180002018FEFF222B242B69FF262B282B2A2B2C2B2E2B302B322B342B362B382B232BE4 +:2071A000252B272B292B2B2B2D2B2F2B312B332B352B372B392B06001F763300201A0100E8 +:2071C0002128FFFF102969FF0600A0E514AD0962A0E51F76740314AD90E5B4562901156F91 +:2071E0004FE803C092E601008CB5050000E7CA00007700E78A000077CFE812F0007700E7AF +:207200005100007700E74000060002FE1F767E03020AC4E20200007712E8D01F14AD116419 +:20722000030A0392022B0A520260032B033457040096060603610002036F00020119061E47 +:2072400082FE0600A928FFFFAA28FFFFAB28FFFFA828FFFFAB0F04ED00D400BE0B6FA927E3 +:20726000A928FFFFA92FA4A9C488A928FFFF0209A98AA6924076DEA606000077006F1F76CE +:207280007E03BDB220C5A959673E1F767E0324C5A70603ECA192673E1F767E03220603ECD2 +:2072A000A71E673E4076CAB6BE8B060022761F76C00169FF1C1A0800787680001A761F76B8 +:2072C000C401028FE64969FFBF5618E0A9A8407613B70600408F00C0008F000D2276009A80 +:2072E00085C4019C805284C2FC641A7669FF06001F767E031EA806001F767E0320A806006C +:1473000006001F767E031A971B9606000119C356FFFF0600BE +:207314001201000000C0A78B0000A78B0000A78B0000A78B0000A78B0000A78B0000A78B28 +:207334000000A78B0000A78B0000A78B0000A78B0000A78B0000A78B0000758C0000688C18 +:207354000000F88F00009A8B00000F890000B18B0000828C0000458A00003A8A00002F8A3F +:207374000000248A0000198A00000E8A0000038A0000F8890000ED890000668A00005B8AB7 +:207394000000508A0000DD8A0000C28A00000F890000B9890000A089000005900000718AB9 +:2073B4000000D2890000078E0000D18D00009B8D0000658D00002F8D0000F98C00000F8978 +:2073D40000000F890000228E0000EC8D0000B68D0000808D00004A8D0000148D00000F8978 +:2073F40000000F890000CF8E0000B48E0000998E00007E8E0000638E0000488E00000F89B0 +:2074140000000F890000DE8C0000C38C00000F8900000F8900000F8900000F8900000F890F +:2074340000000F890000A78A00008C8A0000F28B0000BC8B00000D8C0000D78B00000F8902 +:2074540000000F890000DD8F0000C28F0000A78F00008C8F0000718F0000568F00000F89F5 +:2074740000000F890000A88C00008D8C00000F8900000F890000498B0000F88A00000F89F5 +:2074940000000F8900007F8B00002E8B0000648B0000138B00003B8F0000058F0000208FE3 +:2074B4000000EA8E00000F8900000F8900000F8900000F8900000F8900000F8900000F8918 +:2074D40000000F8900000F8900000F8900000F8900000F8900000F8900000F8900000F89D8 +:2074F40000000F890000858900006A8900004F89000034890000198900000F890000288C5C +:207514000000438C00002C012C01000000000F00160014000A003C000A000800060008008F +:0A7534000600080033000B000A00F7 +:20753E004800000012C100A100008DA10000EEA000007DA10000E1A000006FA10000D4A092 +:20755E00000058A10000BAA0000048A10000ADA000003EA1000091A0000031A1000084A07E +:20757E00000023A1000077A0000017A1000061A000004CA000005A9900005E990000F399F7 +:20759E000000E99900006199000064990000689900006D99000072990000789900007D991B +:1875BE00000081990000CD990000ED99000084990000F9990000000000 :00000001FF diff --git a/Bin/UKSSTMS320F28335.map b/Bin/UKSSTMS320F28335.map index a2ea084..2671665 100644 --- a/Bin/UKSSTMS320F28335.map +++ b/Bin/UKSSTMS320F28335.map @@ -2,7 +2,7 @@ TMS320C2000 Hex Converter v5.2.7 ******************************************************************************** -INPUT FILE NAME: +INPUT FILE NAME: OUTPUT FORMAT: Binary PHYSICAL MEMORY PARAMETERS @@ -12,18 +12,18 @@ PHYSICAL MEMORY PARAMETERS BOOT LOADER PARAMETERS Table Type: SERIAL PORT (SCI 8 bit Mode) - Entry Point: 0x0000b4b9 + Entry Point: 0x0000b56a OUTPUT TRANSLATION MAP -------------------------------------------------------------------------------- 00000000..003fffff Page=0 Memory Width=8 ROM Width=8 -------------------------------------------------------------------------------- - OUTPUT FILES: UKSSTMS320F28335_e8cb0244.bin [b0..b7] + OUTPUT FILES: c:\Temp\166-sifu-build-vq3o6iha\UKSSTMS320F28335.bin [b0..b7] - CONTENTS: 00000000..00007485 BOOT TABLE - .cinit : dest=0000b667 size=0000026a width=00000002 - .text : dest=00008000 size=00003667 width=00000002 + CONTENTS: 00000000..000075d5 BOOT TABLE + .cinit : dest=0000b717 size=00000262 width=00000002 + .text : dest=00008000 size=00003717 width=00000002 .econst : dest=0000c000 size=00000112 width=00000002 .switch : dest=0000c112 size=00000048 width=00000002 diff --git a/Bin/UKSSTMS320F28335.out b/Bin/UKSSTMS320F28335.out index 738d25a..7bba338 100644 Binary files a/Bin/UKSSTMS320F28335.out and b/Bin/UKSSTMS320F28335.out differ diff --git a/Doc/SIFU_START_STOP.md b/Doc/SIFU_START_STOP.md new file mode 100644 index 0000000..db0e27e --- /dev/null +++ b/Doc/SIFU_START_STOP.md @@ -0,0 +1,104 @@ +# START/STOP СИФУ в 166: обработка без ожиданиÑ� оÑ�новного цикла + +## Что изменено + +До иÑ�правлениÑ� main опрашивал поÑ�леднее Ñ�оÑ�тоÑ�ние команды. Короткий ноль +между двумÑ� единицами мог не попаÑ�ть в опроÑ�; запиÑ�ÑŒ EEPROM задерживала +как выдачу, так и Ñ�нÑ�тие диÑ�крета. Теперь каждое принÑ�тое по CAN Ñ�лово 127 +передаётÑ�Ñ� в UMP_commands_write прÑ�мо в CAN ISR. Полный подтверждённый +CRC RS-пакет вызывает ту же функцию из ReceiveCommandModbus6. + +ИÑ�ториÑ� фронтов общаÑ� длÑ� CAN и RS. ПовторнаÑ� передача единицы не Ñ�влÑ�етÑ�Ñ� +новым Ñ�обытием. Ð�овое 0→1 обрабатываетÑ�Ñ� Ñ�разу, без очереди и ожиданиÑ� main. +Это не гарантирует приём каждого физичеÑ�кого CAN-кадра при перегрузке шины; +обрабатываютÑ�Ñ� кадры, которые дейÑ�твительно дошли до Handlai. + +| Событие | Результат | +|---|---| +| START 0→1, STOP=0 | START_DPTB включаетÑ�Ñ�, RES_OUT_2 активируетÑ�Ñ� | +| START оÑ�таётÑ�Ñ� 1 | ИмпульÑ� не продлеваетÑ�Ñ� | +| Ð�овый START 0→1 во времÑ� START | ОÑ�тавшееÑ�Ñ� времÑ� Ñ�нова 1000 тиков | +| STOP 0→1 во времÑ� START | START Ñ�нимаетÑ�Ñ�, включаетÑ�Ñ� STOP, RES_OUT_2 Ñ�нимаетÑ�Ñ� | +| START и STOP пришли одновременно | Только STOP, без кратковременного START | +| START изменÑ�етÑ�Ñ� при STOP=1 | ПуÑ�к подавлÑ�етÑ�Ñ� и не Ñ�тавитÑ�Ñ� в очередь | +| STOP Ñ�нÑ�Ñ‚, START оÑ�талÑ�Ñ� 1 | СамопуÑ�ка нет; нужен новый 0→1 START | +| STOP Ñ�нÑ�Ñ‚ и пришёл Ñ�вежий фронт START | Переключение STOP→START без перекрытиÑ� | +| ИÑ�текли 1000 тиков | Ð�ктивный диÑ�крет Ñ�нимаетÑ�Ñ�; RES_OUT_2 Ñ�охранÑ�ет Ñ�оÑ�тоÑ�ние | + +Таймер 1 кГц вызывает UMP_pulse_tick перед Load_runner. main больше не +пишет START/STOP и не отÑ�читывает IMPowse. Ð�оминальнаÑ� длительноÑ�ть импульÑ�а +около Ñ�екунды (фаза первого тика даёт до 1 мÑ� разброÑ�а). Задержки/запреты IRQ +могут удлинÑ�ть реальное времÑ�: Ñ�то не аппаратный одновибратор. + +Функции автомата иÑ�пользуют короткий запрет IRQ Ñ� воÑ�Ñ�тановлением Ñ�тарой +маÑ�ки. Ð’ них нет EEPROM, передачи UART, ожиданиÑ� ACK или обхода маÑ�Ñ�ива. +volatile опиÑ�ывает общие данные; целоÑ�тноÑ�ть изменениÑ� Ñ�оÑ�тоÑ�ниÑ� обеÑ�печивает +критичеÑ�каÑ� Ñ�екциÑ�, а не Ñ�амо ключевое Ñ�лово. + +## Включение платы и параметры + +До UMP_pulse_init команды запиÑ�ываютÑ�Ñ� в карту, но не выдают диÑ�крет. +ИнициализациÑ� поÑ�ле Load_params/Setup_DAC_time Ñ�нимает выходы и запоминает +текущую команду. Уже активнаÑ� единица не запуÑ�кает СИФУ задним чиÑ�лом. +При начальном нуле перваÑ� Ñ�вежаÑ� единица принимаетÑ�Ñ� без предварительного +прохода оÑ�новного цикла. Потерю/перезапуÑ�к питаниÑ� контроллер должен учитывать +Ñ�воим протоколом: перед новым запуÑ�ком передать ноль. + +Default_params и Load_params длÑ� dsk_LOAD не копируют и не обнулÑ�ÑŽÑ‚ Ñ�лово +127 как обычный параметр. Служебные биты Ñ�браÑ�ываютÑ�Ñ� отдельно, START/STOP +Ñ�охранÑ�ÑŽÑ‚Ñ�Ñ�. ПоÑ�тому чтение EEPROM не подменÑ�ет живую команду Ñ�тарым значением +даже на один тик прерываниÑ�. ОÑ�тальные типы платы Ñ�охранÑ�ÑŽÑ‚ прежний Ñ�броÑ�. + +## Что ещё может задерживатьÑ�Ñ� + +- RS: байты принимает ISR, но CRC и иÑ�полнение FC06 проиÑ�ходÑ�Ñ‚ в main. + ЕÑ�ли main ждёт EEPROM, RS-команда ещё не Ñ�читаетÑ�Ñ� принÑ�той обработчиком. +- EEPROM: Ñ�инхронное ожидание без тайм-аута Ñ�охранено. Оно не задерживает + уже принÑ�тые CAN-пуÑ�ки и Ñ�нÑ�тие импульÑ�а, пока обÑ�луживаютÑ�Ñ� прерываниÑ�. +- ЦÐ�П: начальнаÑ� пауза примерно 3 Ñ� и профиль 6..16 мÐ� Ñ�охранены. + LOAD_TIME=30 Ñ� уÑ�корением второй половины даёт около 22.5 Ñ� разгона. + START/STOP диÑ�креты и раÑ�чёт ЦÐ�П — разные механизмы; приоритет STOP + отноÑ�итÑ�Ñ� к диÑ�кретам, не перепиÑ�ывает алгоритм аналогового заданиÑ�. +- Повторный фронт во времÑ� активного START продлевает выÑ�окий уровень, + не Ñ�оздаёт отдельный Ñ�лектричеÑ�кий импульÑ� Ñ� паузой между ними. +- ПроизвольнаÑ� запиÑ�ÑŒ памÑ�ти Ñ�ервиÑ�ным загрузчиком не Ñ�читаетÑ�Ñ� обычной + CAN/RS-командой и не проходит автомат фронтов. + +## Код и комментарии + +- Include/ump_pulse.h — проверÑ�емый автомат без GPIO. +- Include/ump_control_impl.h — аппаратнаÑ� обёртка, подключённаÑ� только в DAC.c. +- ecan.c/message.c — точки приёма полного командного Ñ�лова. +- measure.c — владелец временной базы диÑ�кретов. +- package.h/DAC.h — volatile-доÑ�туп к команде и диагноÑ�тичеÑ�кому IMPowse. + +Во вÑ�ех 17 Ñ�обÑ�твенных C-модулÑ�Ñ… и оÑ�новных заголовках добавлены руÑ�Ñ�кие +комментарии: назначениÑ�, контекÑ�ты main/ISR, единицы и ограничениÑ�. +Кодировки иÑ�ходников Ñ�охранены (CP1251). Код TI и внешние библиотеки не менÑ�лиÑ�ÑŒ. +29 файлов Ñ� изменением только комментариев проверены Ñ�равнением токенов +Ñ� HEAD поÑ�ле удалениÑ� комментариев: иÑ�полнÑ�емый текÑ�Ñ‚ в них Ñ�овпадает. + +## Проверка + +- Host-теÑ�Ñ‚ tests/ump_pulse/control_test.c включает наÑ�тоÑ�щий автомат и + аппаратную обёртку Ñ� подменёнными GPIO/IRQ. ПроверÑ�ет Ñ�тартовую защиту, + короткий ноль, удержание, повторный фронт, STOP, отÑ�утÑ�твие перекрытиÑ� + на каждой запиÑ�и GPIO, завершение без main, параметры и вложенный запрет IRQ. +- ТеÑ�Ñ‚ региÑ�тратора tests/ump_logger прошёл; Ñ�ущеÑ�твующие 7 теÑ�тов модели + ограничениÑ� DAC проекта 167 также прошли (Ñ�то отдельный иÑ�торичеÑ�кий анализ). +- Ð’Ñ�е 27 C/ASM-файлов Ñ�обраны и Ñ�линкованы TI C2000 22.6.1.LTS, Debug/O1, + COFF/FPU32. ОÑ�талиÑ�ÑŒ шеÑ�ть прежних предупреждений measure.c/peripher.c. +- MAP: RAML0 занÑ�то 0x3979 из 0x4000 Ñ�лов, RAML5 — 0xFAB из 0x3000; + .logg — 0xFA00 Ñ�лов во внешней памÑ�ти. Стек выделен 0x3F0 Ñ�лов; + макÑ�имальное реальное иÑ�пользование Ñ�тека на уÑ�тройÑ�тве не измерÑ�лоÑ�ÑŒ. +- Из проверенной Ñ�борки обновлены штатные OUT/HEX/BIN и карта преобразованиÑ�. + +ЗапуÑ�к теÑ�тов на Windows: `py -3 tests/ump_pulse/run_test.py` и +`py -3 tests/ump_logger/run_test.py`; нужен Clang/lld либо MSVC в PATH, +или параметр `--compiler "полный путь к cl.exe"`. + +Проверка на плате не выполнÑ�лаÑ�ÑŒ. Ð�а Ñ�тенде проверить GPIO62/GPIO58 и +RES_OUT_2 оÑ�циллографом: CAN-пуÑ�к во времÑ� Save_params, короткий Ñ�броÑ�, +одновременный START/STOP, оÑ�танов во времÑ� пуÑ�ка, длительноÑ�ть импульÑ�а +при нагрузке CAN и работа Ñ� включённым логгером. ПривÑ�зать результат к +принÑ�тым CAN-командам и выходам в архиве SetGUI. diff --git a/Doc/START_STOP_weak_points.md b/Doc/START_STOP_weak_points.md index 88436cf..093b1c4 100644 --- a/Doc/START_STOP_weak_points.md +++ b/Doc/START_STOP_weak_points.md @@ -1,5 +1,9 @@ # Слабые меÑ�та обработки START/STOP +> ИÑ�торичеÑ�кий анализ до переноÑ�а обработки в приём команды и таймер. +> Текущее поведение, иÑ�правлениÑ� и оÑ�тавшиеÑ�Ñ� ограничениÑ� опиÑ�аны в +> [SIFU_START_STOP.md](SIFU_START_STOP.md). + Дата: 22.09.2026. Проверен код проекта 166 поÑ�ле переноÑ�а иÑ�правлениÑ� из коммита `799e6ba` проекта 167. Документ опиÑ�ывает результаты проÑ�мотра кода; Ñ�ценарии на уÑ�тройÑ�тве не воÑ�производилиÑ�ÑŒ. Предлагаемые ниже diff --git a/Doc/UMP_LOGGER.md b/Doc/UMP_LOGGER.md index c2ee27c..a05af57 100644 --- a/Doc/UMP_LOGGER.md +++ b/Doc/UMP_LOGGER.md @@ -1,5 +1,9 @@ # Логгер запуÑ�ка и отключениÑ� УМП: прошивка Бальзам 166 и SetGUI +ТекущаÑ� логика диÑ�кретов опиÑ�ана в [SIFU_START_STOP.md](SIFU_START_STOP.md): +CAN-фронты обрабатываютÑ�Ñ� при приёме, импульÑ�Ñ‹ Ñ�нимаютÑ�Ñ� таймером, STOP +имеет приоритет. Формат запиÑ�и v2 и интерфейÑ� SetGUI Ñ�охранены. + ## Ð�азначение и работа оператора Ð’ SetGUI открыть **periph_28335 → rs232_periph_28335 → Ð�аÑ�тройки**, diff --git a/Source/Internal/ADC.c b/Source/Internal/ADC.c index 9877a08..753f799 100644 --- a/Source/Internal/ADC.c +++ b/Source/Internal/ADC.c @@ -1,3 +1,9 @@ +/* Íàñòðîéêà ÀÖÏ è îáðàáîòêà àíàëîãîâûõ âûáîðîê. adc_isr îáíîâëÿåò + * adc_table_lem[0..3] èç ADCRESULT2..5 >> 4 è âûçûâàåò ðàñ÷¸ò èçìåðåíèé. + * READY â 166 ÿâëÿåòñÿ ñ÷¸ò÷èêîì äî íóëÿ, íå ôëàãîì ãîòîâíîñòè. + * WAKE çàäà¸ò îòäåëüíîå âðåìÿ óñòàíîâëåíèÿ èçìåðèòåëüíûõ öåïåé. + * Íå äîáàâëÿòü îæèäàíèÿ EEPROM/UART â îáðàáîò÷èê âûáîðîê. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File #include "DSP2833x_Examples.h" // DSP281x Examples Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" diff --git a/Source/Internal/DAC.c b/Source/Internal/DAC.c index 31f14f9..5a67284 100644 --- a/Source/Internal/DAC.c +++ b/Source/Internal/DAC.c @@ -1,3 +1,10 @@ +/* ÖÀÏ íàãðóçêè è àïïàðàòíàÿ îá¸ðòêà èìïóëüñîâ ÑÈÔÓ. Load_runner + * âûçûâàåòñÿ òàéìåðîì 1 êÃö, ðàñ÷¸ò ÖÀÏ äåëèòñÿ äî DAC_FREQ. + * Ôîðìóëà 166 çàäà¸ò ôèêñèðîâàííûé ðàçãîí 6..16 ìÀ. DAC_min/max + * ïåðåâîäÿò ïîëîæåíèå â êîä, cCalibrDac âûáèðàåò ðó÷íîé êîä. + * WAKEpowse îòíîñèòñÿ ê ÖÀÏ, íå ÿâëÿåòñÿ ðàçðåøåíèåì äèñêðåòà çàïóñêà. + * Àâòîìàò ÑÈÔÓ ïîäêëþ÷¸í â êîíöå ôàéëà ÷åðåç ump_control_impl.h. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" #include "filter_bat2.h" @@ -11,6 +18,7 @@ #include "peripher.h" #include "log_to_mem.h" +#include "ump_pulse.h" #define dCLK_1() GpioDataRegs.GPBSET.bit.GPIO63=1 #define dCLK_0() GpioDataRegs.GPBCLEAR.bit.GPIO63=1 @@ -18,9 +26,12 @@ #define dCS_0() GpioDataRegs.GPBCLEAR.bit.GPIO59=1 unsigned long WAKEpowse; -unsigned long IMPowse; +volatile unsigned long IMPowse; unsigned int period_dac, time_dac; +/* Èíèöèàëèçàöèÿ, íå îáðàáîòêà êàæäîãî START. 601 îòñ÷¸ò ïðè 200 Ãö + * äàþò îêîëî 3 ñåêóíä äî ðàáî÷åãî ðàñ÷¸òà ÖÀÏ ïîñëå âêëþ÷åíèÿ. + */ void Setup_DAC_time(void) { WAKEpowse = 3L * DAC_FREQ +1; @@ -65,6 +76,10 @@ void Init_DAC(void) dSEND(0x9002|0x0000); toggle_RES_OUT_1(); } +/* vrot/maxx — äîëÿ äèàïàçîíà ìåæäó êîäàìè 4 è 20 ìÀ. Ìàñêà 0xFFF + * ñîõðàíÿåò 12 áèò, íî íå ÿâëÿåòñÿ íàñûùåíèåì. modbus[0x1C] ñîäåðæèò + * ðàñ÷¸òíîå çàäàíèå, íå èçìåðåííûé òîê íà âûõîäíûõ êëåììàõ. + */ void Anal_output(long vrot, long maxx) { long out; @@ -101,13 +116,17 @@ Log_to_mem(modbus[0x1D]); } +/* Ïîñëå ïîëîâèíû time_dac ñ÷¸ò÷èê ðàñò¸ò äâàæäû çà âûçîâ. Ïîýòîìó + * LOAD_TIME=30 äà¸ò ïðèìåðíî 22.5 ñ äî êîíöà ðàçãîíà ïðè 200 Ãö. + * Ñóùåñòâóþùèé ïðîôèëü 166 èñïðàâëåíèå èìïóëüñà ÑÈÔÓ íå ìåíÿåò. + */ void Load_runner() { static unsigned int count_dac=0, count_load=0, x=1; float sinus=0; int kod; - if(IMPowse) IMPowse--; + /* IMPowse îáíîâëÿåòñÿ UMP_pulse_tick(), à íå àëãîðèòìîì ÖÀÏ. */ if(++count_dac >= period_dac) { count_dac=0; @@ -158,3 +177,6 @@ void Load_runner() Anal_output(kod, time_dac); } } } } + + +#include "ump_control_impl.h" diff --git a/Source/Internal/Include/ADC.h b/Source/Internal/Include/ADC.h index 479c307..9d9ba53 100644 --- a/Source/Internal/Include/ADC.h +++ b/Source/Internal/Include/ADC.h @@ -1,3 +1,6 @@ +/* Òàáëèöû âûáîðîê îáíîâëÿåò ADC ISR. Ñîãëàñîâàííûé ñíèìîê íåñêîëüêèõ + * êàíàëîâ òðåáóåò çàùèòû êîïèðîâàíèÿ, îäíîãî óêàçàòåëÿ íåäîñòàòî÷íî. + */ extern Uint16 adc_table_lem[]; diff --git a/Source/Internal/Include/DAC.h b/Source/Internal/Include/DAC.h index 257b94f..7c960a1 100644 --- a/Source/Internal/Include/DAC.h +++ b/Source/Internal/Include/DAC.h @@ -1,8 +1,18 @@ +/* Èíòåðôåéñ ÖÀÏ è ÑÈÔÓ. Âõîäÿùèå êîìàíäû — UMP_commands_write, + * îêîí÷àíèå èìïóëüñà — UMP_pulse_tick. IMPowse òîëüêî äëÿ äèàãíîñòèêè. + */ void Load_runner(void); void Anal_output(long vrot, long maxx); void Init_DAC(void); void Setup_DAC_time(void); /* Ñ÷¸ò÷èê ïóñêîâîãî èìïóëüñà è âûäåðæêè èíèöèàëèçàöèè äîñòóïíû ëîããåðó. */ -extern unsigned long IMPowse, WAKEpowse; +extern volatile unsigned long IMPowse; +extern unsigned long WAKEpowse; extern unsigned int period_dac, time_dac; + +/* Âñå îïåðàöèè áåçîïàñíû äëÿ âûçîâà èç main è îáðàáîò÷èêîâ IRQ. */ +void UMP_pulse_init(void); +void UMP_commands_write(unsigned int commands); +void UMP_pulse_tick(void); +void UMP_reset_parameter_commands(void); diff --git a/Source/Internal/Include/GPIO_table.h b/Source/Internal/Include/GPIO_table.h index ac37198..6a40e7d 100644 --- a/Source/Internal/Include/GPIO_table.h +++ b/Source/Internal/Include/GPIO_table.h @@ -1,3 +1,6 @@ +/* Íàïðàâëåíèÿ GPIO äëÿ àïïàðàòíûõ èñïîëíåíèé. Åäèíèöà îçíà÷àåò + * âûõîä; àêòèâíóþ ïîëÿðíîñòü çàäàþò peripher.h è ñõåìà ïëàòû. + */ #define COMM_gpio00_dir 0L #define COMM_gpio01_dir 0L #define COMM_gpio02_dir 0L diff --git a/Source/Internal/Include/RS485.h b/Source/Internal/Include/RS485.h index ff3a413..3cb18d4 100644 --- a/Source/Internal/Include/RS485.h +++ b/Source/Internal/Include/RS485.h @@ -1,3 +1,6 @@ +/* Áóôåðû UART ðàçäåëÿþòñÿ ISR è main. main îáðàáàòûâàåò + * çàêîí÷åííûé RS_Header. Ðàçìåðû ñâåðÿòü ñ 16-áèòíîé ABI DSP. + */ #ifndef _RS485 #define _RS485 diff --git a/Source/Internal/Include/bios_dsp.h b/Source/Internal/Include/bios_dsp.h index 75477d7..71c3c3b 100644 --- a/Source/Internal/Include/bios_dsp.h +++ b/Source/Internal/Include/bios_dsp.h @@ -1,3 +1,6 @@ +/* Êîäû CMD_* ÿâëÿþòñÿ ÷àñòüþ ôîðìàòà îáìåíà ñ ÏÊ. Íîâûå êîìàíäû + * äîáàâëÿþòñÿ áåç ïåðåíóìåðàöèè ñóùåñòâóþùèõ çíà÷åíèé. + */ #ifndef _BIOS_DSP #define _BIOS_DSP diff --git a/Source/Internal/Include/caliber.h b/Source/Internal/Include/caliber.h index 03afaa9..4e7ed21 100644 --- a/Source/Internal/Include/caliber.h +++ b/Source/Internal/Include/caliber.h @@ -1,3 +1,6 @@ +/* Çàâîäñêèå êàëèáðîâêè ïî âåðñèè BALSAM è òèïó ïëàòû. Çäåñü + * îïðåäåëÿþòñÿ ìàññèâû, à íå òîëüêî extern; íå äóáëèðîâàòü ïîäêëþ÷åíèå. + */ #if BALSAM == 166 //------------------------------------------------------------- int def_cal[][8] = { diff --git a/Source/Internal/Include/cntrl_adr.h b/Source/Internal/Include/cntrl_adr.h index 2a8567c..af5fb23 100644 --- a/Source/Internal/Include/cntrl_adr.h +++ b/Source/Internal/Include/cntrl_adr.h @@ -1,3 +1,6 @@ +/* Ñîáñòâåííûé, îáùèé è ñïåöèàëüíûå àäðåñà ïîñëåäîâàòåëüíîãî îáìåíà. + * main çàäà¸ò àäðåñà ÷åðåç set_cntrl_addr äî íà÷àëà îáìåíà. + */ #ifndef _CNTRL_ADR #define _CNTRL_ADR diff --git a/Source/Internal/Include/crc16.h b/Source/Internal/Include/crc16.h index a1787cc..8885beb 100644 --- a/Source/Internal/Include/crc16.h +++ b/Source/Internal/Include/crc16.h @@ -1,3 +1,6 @@ +/* Èíòåðôåéñû CRC. Ðàçëè÷àòü áóôåð êàäðà è ìàññèâ ñëîâ EEPROM; + * ðåçóëüòàò çàâèñèò îò ïîðÿäêà îáðàáîòêè áàéòîâ. + */ typedef unsigned short WORD; typedef unsigned char byte; diff --git a/Source/Internal/Include/ecan.h b/Source/Internal/Include/ecan.h index 36cf526..bf17d0a 100644 --- a/Source/Internal/Include/ecan.h +++ b/Source/Internal/Include/ecan.h @@ -1,3 +1,6 @@ +/* Òåëåìåòðèÿ eCAN è ôîíîâàÿ âûäà÷à îòâåòîâ ëîããåðà. + * UMP_CAN_service âûçûâàåòñÿ èç main, íå èç ïðè¸ìíîãî IRQ. + */ void InitCan(int Port, int DevNum); void CAN_send(int Port, int data[], int Addr); extern int CAN_input_data[]; diff --git a/Source/Internal/Include/filter_bat2.h b/Source/Internal/Include/filter_bat2.h index 9357ab2..50f6879 100644 --- a/Source/Internal/Include/filter_bat2.h +++ b/Source/Internal/Include/filter_bat2.h @@ -1,3 +1,6 @@ +/* Êîýôôèöèåíòû è èçìåíÿåìàÿ èñòîðèÿ ôèëüòðà. Êàæäûé íåçàâèñèìûé + * êàíàë äîëæåí èìåòü îòäåëüíûé ýêçåìïëÿð FILTERBAT. + */ #ifndef _FILTER_BAT2 #define _FILTER_BAT2 diff --git a/Source/Internal/Include/kanal.h b/Source/Internal/Include/kanal.h index fce5473..94917d8 100644 --- a/Source/Internal/Include/kanal.h +++ b/Source/Internal/Include/kanal.h @@ -1 +1,4 @@ +/* Èíòåðôåéñ êàíàëà èíäèêàöèè. Îí íå ôîðìèðóåò START_DPTB + * è íå äîëæåí èñïîëüçîâàòüñÿ âìåñòî ôóíêöèé óïðàâëåíèÿ íàãðóçêîé. + */ void kanal_Send(int adr, long dat, int dot); diff --git a/Source/Internal/Include/log_to_mem.h b/Source/Internal/Include/log_to_mem.h index a4afb52..57c36c4 100644 --- a/Source/Internal/Include/log_to_mem.h +++ b/Source/Internal/Include/log_to_mem.h @@ -1,3 +1,6 @@ +/* Êîíòðàêò ëîããåðà ñ SetGUI: ðàçìåð çàïèñè, âåðñèÿ è àäðåñà. + * ×òåíèå öåëîãî áëîêà çàùèùàåòñÿ îò IRQ íà ñòîðîíå RS/CAN îáðàáîò÷èêà. + */ #ifndef _LOG_TO_MEM #define _LOG_TO_MEM diff --git a/Source/Internal/Include/measure.h b/Source/Internal/Include/measure.h index 37eb02d..f81b792 100644 --- a/Source/Internal/Include/measure.h +++ b/Source/Internal/Include/measure.h @@ -1,3 +1,6 @@ +/* ×àñòîòû è ñîñòîÿíèÿ èçìåðåíèé. READY â 166 — ñ÷¸ò÷èê äî íóëÿ. + * READY_FREQ çàäà¸ò òàéìåð ÑÈÔÓ, DAC_FREQ — ðàñ÷¸ò ÖÀÏ. + */ #ifndef _MEASURE #define _MEASURE diff --git a/Source/Internal/Include/message.h b/Source/Internal/Include/message.h index 878b4c7..2ddb361 100644 --- a/Source/Internal/Include/message.h +++ b/Source/Internal/Include/message.h @@ -1,3 +1,6 @@ +/* Òåõíîëîãè÷åñêèå ðåãèñòðû è Modbus. ANSWER_LEN îãðàíè÷èâàåò + * ìàññèâ modbus; àäðåñîì ëîããåðà 0x1000 èíäåêñèðîâàòü åãî íåëüçÿ. + */ #ifndef MESSAGE_H #define MESSAGE_H diff --git a/Source/Internal/Include/package.h b/Source/Internal/Include/package.h index cad7f2d..dd97020 100644 --- a/Source/Internal/Include/package.h +++ b/Source/Internal/Include/package.h @@ -1,3 +1,7 @@ +/* Ìàêðîñû îáðàùàþòñÿ ê îáùåé êàðòå modbus, íå ê ëîêàëüíûì äàííûì. + * START/STOP ÷èòàþòñÿ ÷åðåç volatile. Âõîäÿùàÿ çàïèñü ñëîâà 127 + * äîëæíà ïðîéòè UMP_commands_write äëÿ ôèêñàöèè ôðîíòà. + */ #ifndef PACKAGE #define PACKAGE @@ -131,7 +135,8 @@ #define LastMode Modbus[126].all -#define Commands Modbus[127].all +/* Ñëîâî ìåíÿåòñÿ èç CAN/RS; ÷òåíèå êîìàíäû íå äîëæíî êåøèðîâàòüñÿ. */ +#define Commands (((volatile WORDE *)modbus)[127].all) #define cTestLamp Modbus[127].bit.bit0 #define cDefParam Modbus[127].bit.bit1 #define cSaveParam Modbus[127].bit.bit2 @@ -140,8 +145,8 @@ #define cTermoCal Modbus[127].bit.bit4 #define cKoefCalc Modbus[127].bit.bit5 -#define cUMPreset Modbus[127].bit.bit6 -#define cUMPstart Modbus[127].bit.bit7 +#define cUMPreset (((volatile WORDE *)modbus)[127].bit.bit6) +#define cUMPstart (((volatile WORDE *)modbus)[127].bit.bit7) #define cInitDac Modbus[127].bit.bit8 #define cCalibrDac Modbus[127].bit.bit9 diff --git a/Source/Internal/Include/peripher.h b/Source/Internal/Include/peripher.h index e157654..b482fd8 100644 --- a/Source/Internal/Include/peripher.h +++ b/Source/Internal/Include/peripher.h @@ -1,3 +1,7 @@ +/* Ôèçè÷åñêèå GPIO ñ ó÷¸òîì ðåæèìà è ïîëÿðíîñòè. set îçíà÷àåò + * àêòèâèðîâàòü ôóíêöèþ, íå âñåãäà âûñòàâèòü 1. START/STOP íàãðóçêè + * àêòèâíû åäèíèöåé, RES_OUT_2 íóë¸ì. Äèñêðåòàìè âëàäååò àâòîìàò ÑÈÔÓ. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File extern int Mode,Desk,TermoAD,TermoRS,TermoSW,Kurrent,Kalibro; diff --git a/Source/Internal/Include/pulto.h b/Source/Internal/Include/pulto.h index fb41363..f3f1bb9 100644 --- a/Source/Internal/Include/pulto.h +++ b/Source/Internal/Include/pulto.h @@ -1,3 +1,6 @@ +/* Ñîñòîÿíèÿ ïóëüòà dsk_EPLT. Îáðàáîò÷èê òàéìåðà íàãðóçêè + * îïðåäåë¸í îòäåëüíî â measure.c. + */ //void what_is(void); interrupt void cpu_timer1_isr_PULT(void); diff --git a/Source/Internal/Include/spise2p.h b/Source/Internal/Include/spise2p.h index 286c879..0f84d10 100644 --- a/Source/Internal/Include/spise2p.h +++ b/Source/Internal/Include/spise2p.h @@ -1,3 +1,6 @@ +/* Àâòîìàò SPI EEPROM ïðîäâèãàåò òàéìåð 2. Ñèíõðîííîå îæèäàíèå + * òðåáóåò ðàçðåø¸ííûõ IRQ. PAGE_LEN/WORD_LEN çàäàþò àäðåñàöèþ ñòðàíèö. + */ #ifndef __SPISE2P_H__ #define __SPISE2P_H__ diff --git a/Source/Internal/Include/tools.h b/Source/Internal/Include/tools.h index 27df89b..bdb03f9 100644 --- a/Source/Internal/Include/tools.h +++ b/Source/Internal/Include/tools.h @@ -1,3 +1,6 @@ +/* Èíèöèàëèçàöèÿ ïàìÿòè è çàäåðæêè. pause_us íå èñïîëüçîâàòü + * äëÿ äëèòåëüíîñòè äèñêðåòîâ; èõ îòñ÷èòûâàåò àïïàðàòíûé òàéìåð. + */ #ifndef TOOLS_H #define TOOLS_H diff --git a/Source/Internal/Include/ump_control_impl.h b/Source/Internal/Include/ump_control_impl.h new file mode 100644 index 0000000..de544fe --- /dev/null +++ b/Source/Internal/Include/ump_control_impl.h @@ -0,0 +1,83 @@ +/* Ïîäêëþ÷àåòñÿ òîëüêî èç DAC.c; â host-òåñòå — ñ ïîäìåíîé GPIO/IRQ. */ +#ifndef UMP_CONTROL_IMPL_H +#define UMP_CONTROL_IMPL_H +/* Àïïàðàòíàÿ îá¸ðòêà àâòîìàòà. Õðàíèì å¸ â ñóùåñòâóþùåì DAC.c, ÷òîáû + * ñòàðûé ïðîåêò CCS è íîâûé CCS12 ñîáèðàëè îäèíàêîâûé íàáîð èñõîäíèêîâ. + * Âñå âõîäû íèæå ñîõðàíÿþò ïðåæíþþ ìàñêó IRQ; íåëüçÿ ïðîñòî äåëàòü EINT + * ïðè âûõîäå, ïîñêîëüêó âûçîâ âîçìîæåí èç óæå çàùèù¸ííîãî îáðàáîò÷èêà. */ +static volatile UMP_PULSE_STATE ump_pulse; +static volatile unsigned int ump_pulse_enabled; + +static void UMP_apply_outputs(unsigned int previous_output, unsigned int previous_relay) +{ + if (previous_output != ump_pulse.output) { + /* Ñíà÷àëà ñíèìàåì ñòàðûé ñèãíàë, çàòåì âûñòàâëÿåì íîâûé. + * Ïðîìåæóòî÷íîå ñîñòîÿíèå — îáà âûêëþ÷åíû, à íå îáà âêëþ÷åíû. */ + clear_START_DPTB(); + clear_STOP_DPTB(); + if (ump_pulse.output == UMP_PULSE_START) set_START_DPTB(); + if (ump_pulse.output == UMP_PULSE_STOP) set_STOP_DPTB(); + } + if (previous_relay != ump_pulse.relay) { + if (ump_pulse.relay) set_RES_OUT_2(); + else clear_RES_OUT_2(); + } + /* Ñòàðîå èìÿ îñòàâëåíî äëÿ ïðîòîêîëà ëîããåðà. Ýòî òåïåðü îòðàæåíèå + * òàéìåðà àâòîìàòà, à íå ïåðåìåííàÿ, êîòîðóþ îäíîâðåìåííî ïðàâèò main. */ + IMPowse = ump_pulse.remaining; +} + +void UMP_pulse_init(void) +{ + unsigned int saved = __disable_interrupts(); + if (Desk == dsk_LOAD) { + ump_pulse_init(&ump_pulse, Commands); + clear_START_DPTB(); clear_STOP_DPTB(); clear_RES_OUT_2(); + IMPowse = 0; + /* Ðàçðåøàåì îáðàáîòêó òîëüêî ïîñëå çàãðóçêè ïàðàìåòðîâ è íàñòðîéêè + * ÖÀÏ. Êîìàíäû äî ýòîé òî÷êè íå èñïîëíÿþòñÿ çàäíèì ÷èñëîì. */ + ump_pulse_enabled = 1; + } + __restore_interrupts(saved); +} + +void UMP_commands_write(unsigned int commands) +{ + unsigned int saved = __disable_interrupts(); + unsigned int output = ump_pulse.output, relay = ump_pulse.relay; + Commands = commands; + if (Desk == dsk_LOAD && ump_pulse_enabled) { + /* Âûïîëíÿåì ôðîíò â ìîìåíò ïðèíÿòèÿ ñëîâà. Íåò î÷åðåäè, êîòîðóþ + * main äîëæåí îïðîñèòü ïîñëå äëèòåëüíîãî îáðàùåíèÿ ê EEPROM. + * Çäåñü òîëüêî íåñêîëüêî îïåðàöèé ñ ïàìÿòüþ/GPIO, áåç îæèäàíèé. */ + ump_pulse_accept(&ump_pulse, commands, (unsigned int)READY_FREQ); + UMP_apply_outputs(output, relay); + } + __restore_interrupts(saved); +} + +void UMP_pulse_tick(void) +{ + unsigned int saved = __disable_interrupts(); + unsigned int output = ump_pulse.output, relay = ump_pulse.relay; + if (Desk == dsk_LOAD && ump_pulse_enabled) { + ump_pulse_tick(&ump_pulse); + UMP_apply_outputs(output, relay); + } + __restore_interrupts(saved); +} + +void UMP_reset_parameter_commands(void) +{ + unsigned int saved = __disable_interrupts(); + /* EEPROM ñîäåðæèò ïàðàìåòðû, íî íå ÿâëÿåòñÿ èñòî÷íèêîì êîìàíä ïóñêà. + * Ñîõðàíÿåì ïîñëåäíèå ïðèíÿòûå START/STOP è èñòîðèþ ôðîíòîâ àâòîìàòà. + * Íåëüçÿ îáíóëèòü èõ ïðè Load/Default: òàéìåð ÖÀÏ ÷èòàåò òîò æå óðîâåíü, + * à ñëåäóþùèé ïîâòîð ïàêåòà ñ åäèíèöåé íå äîëæåí ñòàòü ëîæíûì ôðîíòîì. + * Äðóãèå ðåæèìû ïëàòû ñîõðàíÿþò ïðåæíåå ïîâåäåíèå ïîëíîãî ñáðîñà. */ + if (Desk == dsk_LOAD) Commands &= UMP_START_MASK | UMP_STOP_MASK; + else Commands = 0; + __restore_interrupts(saved); +} + +#endif diff --git a/Source/Internal/Include/ump_pulse.h b/Source/Internal/Include/ump_pulse.h new file mode 100644 index 0000000..408446f --- /dev/null +++ b/Source/Internal/Include/ump_pulse.h @@ -0,0 +1,69 @@ +/* Óïðàâëåíèå èìïóëüñàìè ÑÈÔÓ. ×èñòûé àâòîìàò áåç äîñòóïà ê GPIO. + * Îäèí è òîò æå êîä èñïîëüçóåòñÿ ïðîøèâêîé è host-òåñòîì. + * ÂÀÆÍÎ: âûçûâàþùàÿ ñòîðîíà ñåðèàëèçóåò init/accept/tick çàïðåòîì IRQ. + * volatile îáåñïå÷èâàåò îáðàùåíèÿ ê îáùåìó ñîñòîÿíèþ, íî íå çàìåíÿåò + * êðèòè÷åñêóþ ñåêöèþ: îáíîâëåíèå íåñêîëüêèõ ïîëåé íå ÿâëÿåòñÿ àòîìàðíûì. + */ +#ifndef UMP_PULSE_H +#define UMP_PULSE_H +#define UMP_START_MASK 0x0080U +#define UMP_STOP_MASK 0x0040U +#define UMP_PULSE_NONE 0U +#define UMP_PULSE_START 1U +#define UMP_PULSE_STOP 2U + +typedef struct { + unsigned int previous; + unsigned int remaining; + unsigned int output; + unsigned int relay; +} UMP_PULSE_STATE; + +static void ump_pulse_init(volatile UMP_PULSE_STATE *s, unsigned int commands) +{ + /* Óæå àêòèâíàÿ êîìàíäà ïðè îêîí÷àíèè çàãðóçêè íå ÿâëÿåòñÿ íîâûì ïóñêîì. + * Ñíèìàåì ôèçè÷åñêèå âûõîäû îòäåëüíî â àïïàðàòíîé îá¸ðòêå. + * Åñëè íà÷àëüíîå ñëîâî íóëåâîå, ïåðâàÿ ñâåæàÿ åäèíèöà áóäåò ïðèíÿòà: + * áîëüøå íå íóæåí ñëó÷àéíûé ïðîõîä main, óñïåâøèé ïðî÷èòàòü íîëü. */ + s->previous = commands; + s->remaining = 0; + s->output = UMP_PULSE_NONE; + s->relay = 0; +} + +static void ump_pulse_accept(volatile UMP_PULSE_STATE *s, + unsigned int commands, unsigned int ticks) +{ + unsigned int rising = commands & ~s->previous; + /* Èñòîðèÿ îòíîñèòñÿ ê êàæäîìó ïðèíÿòîìó ñëîâó CAN/RS, à íå ê ðåäêèì + * ñíèìêàì main. Ïîýòîìó äàæå 1->0->1 ìåæäó ïðîõîäàìè main çàìå÷àåòñÿ. + * Ïîâòîðíûå ïàêåòû ñ óäåðæèâàåìîé åäèíèöåé íå ïðîäëåâàþò èìïóëüñ. */ + s->previous = commands; + if (commands & UMP_STOP_MASK) { + /* STOP èìååò ïðèîðèòåò äàæå ïðè îäíîâðåìåííîì ôðîíòå START. + * Åãî óäåðæàíèå çàïðåùàåò íîâûé START. Çàïðåù¸ííûé ïóñê íå ñòàâèì + * â î÷åðåäü: ñíÿòèå STOP íå äîëæíî íåîæèäàííî çàïóñêàòü ÑÈÔÓ. */ + if (rising & UMP_STOP_MASK) { + s->output = UMP_PULSE_STOP; + s->remaining = ticks; + s->relay = 0; + } + } else if (rising & UMP_START_MASK) { + /* Íîâûé START ïîñëå ñíÿòèÿ êîìàíäû STOP ïåðåêëþ÷àåò âûõîäû. + * Íîâûé ôðîíò âî âðåìÿ START ïðîäëåâàåò ñóùåñòâóþùèé èìïóëüñ, + * êàê ðàíüøå; îòäåëüíûé ýëåêòðè÷åñêèé ôðîíò çäåñü íå îáåùàåòñÿ. */ + s->output = UMP_PULSE_START; + s->remaining = ticks; + s->relay = 1; + } +} + +static void ump_pulse_tick(volatile UMP_PULSE_STATE *s) +{ + /* Åäèíñòâåííûé âëàäåëåö îòñ÷¸òà — òàéìåð 1 êÃö. main íå ó÷àñòâóåò + * â çàâåðøåíèè èìïóëüñà, ïîýòîìó EEPROM íå ðàñòÿãèâàåò åãî. + * RES_OUT_2 ñîõðàíÿåò ïîñëåäíåå ñîñòîÿíèå ïîñëå êîíöà èìïóëüñà. */ + if (s->remaining && --s->remaining == 0) + s->output = UMP_PULSE_NONE; +} +#endif diff --git a/Source/Internal/RS485.c b/Source/Internal/RS485.c index 91a8248..b91e8ac 100644 --- a/Source/Internal/RS485.c +++ b/Source/Internal/RS485.c @@ -1,3 +1,9 @@ +/* Íèçêîóðîâíåâûé UART äâóõ ïîðòîâ. RX ISR ñîáèðàåò RS_Header, + * TX ISR ïðîäîëæàåò ïåðåäà÷ó. RS_DataReady ïåðåäà¸ò ãîòîâûé êàäð + * â main äëÿ ïðîâåðêè CRC; ïðè¸ì áàéòîâ åù¸ íå îçíà÷àåò èñïîëíåíèÿ. + * RS_Send ñîäåðæèò îæèäàíèÿ UART è íå îòíîñèòñÿ ê áûñòðîìó ïóòè ÑÈÔÓ. + * Ðàçìåðû áóôåðîâ íóæíî ïîíèìàòü ñ ó÷¸òîì 16-áèòíîé ABI C2000. + */ //#include "big_dsp_module.h" @@ -321,6 +327,9 @@ void RS_SetBitMode(RS_DATA *rs_arr,int n) @param buf àäðåñ ìàññèâà @param len êîëè÷åñòâî áàéò @see RS_BSend, RS_TRANSMIT_INTR */ +/* Ïåðåäà÷ó ïðîäîëæàåò TX ISR. Çäåñü åñòü ñòàðûå ïðîãðàììíûå ïàóçû + * è îæèäàíèÿ UART: íå âûçûâàòü èç CAN ISR èëè ñåêöèè àâòîìàòà ÑÈÔÓ. + */ int RS_Send(RS_DATA *rs_arr,unsigned int *pBuf,unsigned long len) { unsigned int i; diff --git a/Source/Internal/bios.c b/Source/Internal/bios.c index 02eb806..f16d6ad 100644 --- a/Source/Internal/bios.c +++ b/Source/Internal/bios.c @@ -1,3 +1,9 @@ +/* Ñëóæåáíûå êîìàíäû äîñòóïà ê ïàìÿòè è çàãðóçêè. get_command + * ïðîâåðÿåò çàâåðø¸ííûé RS-êàäð è CRC ïåðåä äèñïåò÷åðèçàöèåé â main. + * Ïðîèçâîëüíàÿ çàïèñü ïàìÿòè ñåðâèñíîé êîìàíäîé íå ïðîõîäèò + * àâòîìàò ôðîíòîâ ÑÈÔÓ. Ôîðìàò CMD_* ñîãëàñîâàí ñ çàãðóç÷èêîì ÏÊ; + * íåëüçÿ ïåðåíóìåðîâûâàòü êîìàíäû ïðè ðàñøèðåíèè ïðîòîêîëà. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "RS485.h" #include "bios_dsp.h" diff --git a/Source/Internal/cntrl_adr.c b/Source/Internal/cntrl_adr.c index c7c7a96..1328ae0 100644 --- a/Source/Internal/cntrl_adr.c +++ b/Source/Internal/cntrl_adr.c @@ -1,3 +1,8 @@ +/* Àäðåñàöèÿ ïîñëåäîâàòåëüíîãî ïðîòîêîëà. set_cntrl_addr çàäà¸ò + * ñîáñòâåííûé è îáùèé àäðåñ. CAN ID âû÷èñëÿåòñÿ îòäåëüíî èç Mode. + * Îáùèé RS-àäðåñ íå çàìåíÿåò ñîáñòâåííûé âî âñåõ îòâåòàõ: äëÿ + * ëîããåðà SetGUI èñïîëüçîâàòü ñîáñòâåííûé àäðåñ ïëàòû (îáû÷íî 5/6). + */ #include "cntrl_adr.h" #define ADDR_FOR_ALL_DEF 10 diff --git a/Source/Internal/crc16.c b/Source/Internal/crc16.c index 756fa01..0e32263 100644 --- a/Source/Internal/crc16.c +++ b/Source/Internal/crc16.c @@ -1,3 +1,9 @@ +/* CRC êàäðîâ îáìåíà è ïàðàìåòðîâ EEPROM. get_crc_16 ðàáîòàåò + * ñ ïðåäñòàâëåíèåì áóôåðà ïðîòîêîëà, get_crc16 îáðàáàòûâàåò îáà + * áàéòà êàæäîãî ñëîâà ïàðàìåòðîâ. Ïîðÿäîê áàéòîâ ñóùåñòâåíåí. + * Íåëüçÿ çàìåíÿòü ýòè ôóíêöèè ðåàëèçàöèåé äëÿ ÏÊ áåç ïðîâåðêè + * ïðåäñòàâëåíèÿ äàííûõ è îñîáåííîñòåé 16-áèòíîé ABI C2000. + */ #include "crc16.h" #define MAKE_TABS 0 /* Builds tables below */ #define FAST_CRC 1 /* If fast CRC should be used */ diff --git a/Source/Internal/ecan.c b/Source/Internal/ecan.c index cf586c7..f3aa798 100644 --- a/Source/Internal/ecan.c +++ b/Source/Internal/ecan.c @@ -1,3 +1,9 @@ +/* Êîìàíäû è òåëåìåòðèÿ eCAN. MBOX1 ïðèíèìàåò êàäðû, MBOX0 ïåðåäà¸ò + * òåõíîëîãè÷åñêèå ðåãèñòðû, MBOX2 âûäåëåí ïîä îòâåòû ëîããåðà. + * Ñëîâî 127 ïðîõîäèò UMP_commands_write íåïîñðåäñòâåííî â CAN ISR. + * Çàïðîñ àðõèâà ISR ëèøü ñòàâèò íà îáñëóæèâàíèå; ôðàãìåíòàöèÿ + * îòâåòîâ âûïîëíÿåòñÿ UMP_CAN_service èç ôîíîâîãî öèêëà. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" @@ -13,6 +19,7 @@ #include "peripher.h" #include "log_to_mem.h" #include "ump_can_protocol.h" +#include "DAC.h" // Prototype statements for functions found within this file. @@ -162,6 +169,9 @@ void InitCan(int Port, int DevNum) MessageTransivedCount=0; } +/* Ïðè çàíÿòîì MBOX0 âîçâðàùàåòñÿ áåç îæèäàíèÿ ACK â öèêëå. + * Ýòî îòëè÷àåòñÿ îò áëîêèðóþùèõ UART/EEPROM îïåðàöèé main. + */ void CAN_send(int Port, int data[], int Addr) { unsigned long hiword,loword; @@ -234,9 +244,19 @@ void Handlai(volatile struct ECAN_MBOXES * ECanMboxes) Data[1] = (loword>>16) & 0xffff; Data[2] = (loword ) & 0xffff; - if(bit[0]) if(adr < ANSWER_LEN) modbus[adr] = Data[0]; adr++; - if(bit[1]) if(adr < ANSWER_LEN) modbus[adr] = Data[1]; adr++; - if(bit[2]) if(adr < ANSWER_LEN) modbus[adr] = Data[2]; + /* Êàæäîå ðàçðåø¸ííîå ñëîâî èìååò ñîáñòâåííûé àäðåñ. Íå îïðàøèâàåì + * Commands ïîñëå êàäðà áåçóñëîâíî: ïàêåò òåëåìåòðèè íå äîëæåí + * ïðåâðàùàòü âíóòðåííèé ñáðîñ ïàðàìåòðîâ â êîìàíäíûé ôðîíò. + * Àäðåñ 127 ïðîõîäèò ÷åðåç åäèíûé îáðàáîò÷èê ïîëíîãî ñëîâà. */ + { + unsigned int i; + for (i = 0; i < 3; i++, adr++) { + if (bit[i] && adr < ANSWER_LEN) { + if (adr == 127) UMP_commands_write((unsigned int)Data[i]); + else modbus[adr] = Data[i]; + } + } + } /* Ôèêñèðóåì ïðèìåí¸ííóþ êîìàíäó äî âûõîäà èç îáðàáîò÷èêà CAN. */ ump_log_can((unsigned int)(hiword >> 16), Data[0], Data[1], Data[2]); diff --git a/Source/Internal/filter_bat2.c b/Source/Internal/filter_bat2.c index a577836..b462f22 100644 --- a/Source/Internal/filter_bat2.c +++ b/Source/Internal/filter_bat2.c @@ -1,3 +1,8 @@ +/* Ðåêóðñèâíûé ôèëüòð. FILTERBAT õðàíèò êîýôôèöèåíòû è èñòîðèþ + * äâóõ âõîäîâ/âûõîäîâ; êàæäûé âûçîâ èçìåíÿåò ïåðåäàííûé ýêçåìïëÿð. + * Íåçàâèñèìûì êàíàëàì íóæíû îòäåëüíûå ñîñòîÿíèÿ. Ñèíõðîíèçàöèè + * çäåñü íåò: ñìåíó êîýôôèöèåíòîâ ñîãëàñîâûâàåò âûçûâàþùèé êîä. + */ #include "filter_bat2.h" float filterbat(FILTERBAT *b, float InpVarCurr) diff --git a/Source/Internal/kanal.c b/Source/Internal/kanal.c index c719f08..b45382c 100644 --- a/Source/Internal/kanal.c +++ b/Source/Internal/kanal.c @@ -1,3 +1,8 @@ +/* Ïðîãðàììíûé êàíàë èíäèêàöèè. digits/readr çàäàþò ñèìâîëû è âûáîð + * ýëåìåíòîâ, DCLK/DOUT è kanal_Send ôîðìèðóþò ïîñëåäîâàòåëüíîñòü GPIO. + * Ýòî äðóãîé èíòåðôåéñ, ÷åì dCLK/dCS â DAC.c. Ïîõîæèå èìåíà íå + * îçíà÷àþò îáùèé ÖÀÏ èëè îáùèé âûõîä çàïóñêà íàãðóçêè. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" #include "filter_bat2.h" diff --git a/Source/Internal/log_to_mem.c b/Source/Internal/log_to_mem.c index 301e969..aa3870b 100644 --- a/Source/Internal/log_to_mem.c +++ b/Source/Internal/log_to_mem.c @@ -1,3 +1,9 @@ +/* Ðåãèñòðàòîð ÓÌÏ âî âíåøíåé ïàìÿòè .logg: äâà áàíêà ïî 800 çàïèñåé + * èç 40 ñëîâ äëÿ SetGUI. Àðõèâ îòêëþ÷åíèÿ íå ìåøàåò äàëüíåéøåé çàïèñè. + * Ïèñàòåëè èç main/CAN/òàéìåðà çàùèùàþòñÿ êîðîòêèìè ñåêöèÿìè IRQ + * ñ âîññòàíîâëåíèåì ïðåæíåé ìàñêè. Àðõèâ íå ýíåðãîíåçàâèñèìûé. + * clear_mem âûïîëíÿåòñÿ ïðè çàïóñêå äî âêëþ÷åíèÿ ïðåðûâàíèé. + */ #include "DSP2833x_Device.h" #include "filter_bat2.h" #include "measure.h" diff --git a/Source/Internal/main.c b/Source/Internal/main.c index e21da0f..1e9c576 100644 --- a/Source/Internal/main.c +++ b/Source/Internal/main.c @@ -1,3 +1,9 @@ +/* Èíèöèàëèçàöèÿ è ôîíîâûé öèêë ïëàòû. Ïîñëå íàñòðîéêè GPIO, îáìåíà, + * ïàðàìåòðîâ è ÖÀÏ UMP_pulse_init ðàçðåøàåò ñâåæèå êîìàíäû ÑÈÔÓ. + *  main îñòàþòñÿ òåëåìåòðèÿ, EEPROM è ðàçáîð ãîòîâûõ RS-ïàêåòîâ. + * CAN-ïóñê è îêîí÷àíèå èìïóëüñà ðàáîòàþò â IRQ, íå îæèäàÿ main. + * RS-êîìàíäà åù¸ äîëæíà ïðîéòè ïðîâåðêó CRC â get_command èç main. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "cntrl_adr.h" @@ -39,8 +45,6 @@ void main() { int i,j,mask; static unsigned int cancount[2], cancell[2]; - static int preCstart=1,preCstop=1; - int umpstart,umpstop; RS_DATA * rs; int presbyt=0; @@ -96,6 +100,8 @@ void main() if(Desk==dsk_LOAD) Setup_DAC_time(); + /* Çàâåðøåíà íà÷àëüíàÿ íàñòðîéêà: òîëüêî òåïåðü ðàçðåøàåì äèñêðåòû. */ + UMP_pulse_init(); LastMode = Mode; EALLOW; @@ -163,27 +169,8 @@ void main() presbyt = bTermoCal; } - if(Desk==dsk_LOAD) - { - umpstart = cUMPstart; - umpstop = cUMPreset; - - if(umpstart & !preCstart) - { - set_START_DPTB(); set_RES_OUT_2(); - IMPowse = READY_FREQ; - } - preCstart = umpstart; - - if(umpstop & !preCstop) - { - set_STOP_DPTB(); clear_RES_OUT_2(); - IMPowse = READY_FREQ; - } - preCstop = umpstop; - - if(!IMPowse) { clear_START_DPTB(); clear_STOP_DPTB(); } - } + /* START/STOP èñïîëíÿþòñÿ ïðè ïðè¸ìå CAN/RS, ñíèìàþòñÿ òàéìåðîì. + * Çäåñü áîëüøå íåò îïðîñà óðîâíÿ: main ìîæåò îæèäàòü EEPROM. */ /* Ñíèìîê ïîñëå îáíîâëåíèÿ âõîäîâ è ôîðìèðîâàíèÿ ïóñêîâûõ âûõîäîâ. */ ump_log_io(); diff --git a/Source/Internal/measure.c b/Source/Internal/measure.c index 837d0d5..4909173 100644 --- a/Source/Internal/measure.c +++ b/Source/Internal/measure.c @@ -1,3 +1,9 @@ +/* Èçìåðåíèÿ, äèàãíîñòèêà è ïåðèîäè÷åñêîå îáñëóæèâàíèå. ADC ISR + * ïîñòàâëÿåò âûáîðêè; òàéìåð 1 îáñëóæèâàåò èíäèêàöèþ è òåëåìåòðèþ. + * Äëÿ dsk_LOAD îí ñíà÷àëà çàâåðøàåò èìïóëüñ ÑÈÔÓ, çàòåì âûçûâàåò + * ðàñ÷¸ò ÖÀÏ è ñíèìîê ëîããåðà. ×àñòîòû íàõîäÿòñÿ â measure.h; + * ïðè èõ èçìåíåíèè òðåáóåòñÿ ïåðåñ÷èòàòü çàâèñèìûå èíòåðâàëû. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" #include "filter_bat2.h" @@ -134,6 +140,8 @@ interrupt void cpu_timer1_isr_SENS(void) if(Desk==dsk_LOAD) { + /* Ñíÿòü èñò¸êøèé èìïóëüñ äî ðàñ÷¸òà ÖÀÏ, íåçàâèñèìî îò main. */ + UMP_pulse_tick(); Load_runner(); /* Áàçà âðåìåíè 1 ìñ; ñíèìîê ñîäåðæèò ðåçóëüòàò òåêóùåãî øàãà ÖÀÏ. */ ump_log_tick(); diff --git a/Source/Internal/message.c b/Source/Internal/message.c index 42a3c6f..7662a0a 100644 --- a/Source/Internal/message.c +++ b/Source/Internal/message.c @@ -1,3 +1,9 @@ +/* Ïàðàìåòðû è îáðàáîò÷èêè Modbus ïîñëå ïðîâåðêè CRC. Ìàññèâ modbus + * ñîäåðæèò îáû÷íûå àäðåñà 0..127, îáëàñòü 0x1000 îáñëóæèâàåò ëîããåð. + * EEPROM õðàíèò ïàðàìåòðû, íî íå ÿâëÿåòñÿ èñòî÷íèêîì START/STOP: + * ïðè çàãðóçêå ñîõðàíÿåòñÿ ïîñëåäíÿÿ æèâàÿ êîìàíäà íàãðóçêè. + * Ôóíêöèè âûçûâàþòñÿ èç main; EEPROM áëîêèðóåò ýòîò êîíòåêñò. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "package.h" #include "RS485.h" @@ -18,6 +24,7 @@ #include "caliber.h" #include "log_to_mem.h" +#include "DAC.h" int modbus[ANSWER_LEN+1]; unsigned int param[ANSWER_LEN+1]; @@ -40,9 +47,11 @@ void Default_params() for(i=0;iflag_TIMEOUT_to_Send=true; diff --git a/Source/Internal/peripher.c b/Source/Internal/peripher.c index 0efc38a..1dcf311 100644 --- a/Source/Internal/peripher.c +++ b/Source/Internal/peripher.c @@ -1,3 +1,9 @@ +/* Âûáîð òèïà ïëàòû, íàïðàâëåíèÿ GPIO è ÷òåíèå âõîäîâ. get_Mode + * ÷èòàåò àïïàðàòíûé àäðåñ è âûáèðàåò Desk. Îäèí âûâîä â ðàçíûõ + * ðåæèìàõ ìîæåò èìåòü ðàçíîå íàçíà÷åíèå. Äëÿ íàãðóçêè START=GPIO62, + * STOP=GPIO58, RES_OUT_2=GPIO3 (àêòèâíûé íîëü). Íàïðàâëåíèÿ çàäàíû + * â GPIO_table.h; èçìåíåíèå ðàñïèíîâêè òðåáóåò ñâåðêè ñî ñõåìîé. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File #include "filter_bat2.h" #include "measure.h" diff --git a/Source/Internal/pulto.c b/Source/Internal/pulto.c index 9772213..2f2ee91 100644 --- a/Source/Internal/pulto.c +++ b/Source/Internal/pulto.c @@ -1,3 +1,8 @@ +/* Ëîãèêà ïóëüòà è èíäèêàöèè. cpu_timer1_isr_PULT âûáèðàåòñÿ + * òîëüêî äëÿ dsk_EPLT; äëÿ íàãðóçêè ðàáîòàåò îáðàáîò÷èê èç measure.c. + * Lonely îòíîñèòñÿ ê àêòèâíîñòè îáìåíà, íå ê çàäåðæêå ïóñêà ÑÈÔÓ. + * Íå ñìåøèâàòü ôóíêöèè äâóõ ðåæèìîâ ïðè èçìåíåíèè îáùåãî òàéìåðà. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_SWPrioritizedIsrLevels.h" diff --git a/Source/Internal/spise2p.c b/Source/Internal/spise2p.c index 918b3f5..8020cda 100644 --- a/Source/Internal/spise2p.c +++ b/Source/Internal/spise2p.c @@ -1,3 +1,9 @@ +/* SPI EEPROM. Seeprom_read/write ðàçáèâàþò çàïðîñ íà ñòðàíèöû + * è ñèíõðîííî æäóò spiSe2pFree. SPI-àâòîìàò ïðîäâèãàåò òàéìåð 2 + * êàæäûå 100 ìêñ. Ïðè çàïðåòå ýòîãî IRQ îæèäàíèå íå çàâåðøèòñÿ. + * Òàéì-àóò â ñòàðîì äðàéâåðå îòñóòñòâóåò. Äèñêðåòû ÑÈÔÓ òåïåðü + * íå çàâèñÿò îò òîãî, çàâåðøèëîñü ëè ýòî îæèäàíèå â main. + */ #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "spise2p.h" @@ -19,6 +25,9 @@ int ccc=0; /******* SPI bus Serial EEPROM driver Initialization routine ********/ /********************************************************************/ +/* Áëîêèðóåò main äî çàâåðøåíèÿ ñòðàíèö. Çàïðåò IRQ îñòàíîâèò + * SPI-àâòîìàò. CAN è òàéìåð ÑÈÔÓ äîëæíû ïðåðûâàòü ýòî îæèäàíèå. + */ void Seeprom_write( unsigned int adres, unsigned int buf[], unsigned int size) @@ -50,6 +59,9 @@ void Seeprom_write( unsigned int adres, CpuTimer2Regs.TCR.all = 0x4010; // Use write-only instruction to set TSS bit = 1 } +/* ×òåíèå òàêæå ñèíõðîííîå äëÿ main, òàéì-àóò íå ðåàëèçîâàí. + * Ïðè çàâèñàíèè ïðîâåðèòü step/SPI è ðàáîòó òàéìåðà 2. + */ void Seeprom_read( unsigned int adres, unsigned int buf[], unsigned int size) diff --git a/Source/Internal/tools.c b/Source/Internal/tools.c index 382de8b..71f9ac6 100644 --- a/Source/Internal/tools.c +++ b/Source/Internal/tools.c @@ -1,3 +1,8 @@ +/* Âíåøíÿÿ ïàìÿòü è ïðîãðàììíûå çàäåðæêè. init_zone7 ãîòîâèò XINTF + * äî ïåðâîãî îáðàùåíèÿ ê .logg; âðåìåíà øèíû çàâèñÿò îò ÷àñòîòû DSP + * è àïïàðàòíîé ïàìÿòè. pause_us çàíèìàåò CPU öèêëîì è èñïîëüçóåòñÿ + * ïðè èíèöèàëèçàöèè. Äëèòåëüíîñòü ÑÈÔÓ äîëæíà çàäàâàòüñÿ òàéìåðîì. + */ #include "DSP2833x_Device.h" // DSP281x Headerfile Include File // Configure the timing paramaters for Zone 7. diff --git a/tests/ump_logger/recorder_test.c b/tests/ump_logger/recorder_test.c index 87d5c82..07fbb92 100644 --- a/tests/ump_logger/recorder_test.c +++ b/tests/ump_logger/recorder_test.c @@ -4,7 +4,8 @@ struct mock_gpio GpioDataRegs; int READY = 0, Desk = 6, Mode = 5; int modbus[128]; int CanTimeOutErrorTR; -unsigned long IMPowse, WAKEpowse; +volatile unsigned long IMPowse; +unsigned long WAKEpowse; unsigned int adc_table_lem[4]; #define CHECK(x) if (!(x)) return __LINE__ diff --git a/tests/ump_logger/stubs/DAC.h b/tests/ump_logger/stubs/DAC.h index a7c38cf..8bdb2d3 100644 --- a/tests/ump_logger/stubs/DAC.h +++ b/tests/ump_logger/stubs/DAC.h @@ -1 +1,2 @@ -extern unsigned long IMPowse, WAKEpowse; +extern volatile unsigned long IMPowse; +extern unsigned long WAKEpowse; diff --git a/tests/ump_pulse/control_test.c b/tests/ump_pulse/control_test.c new file mode 100644 index 0000000..0dac131 --- /dev/null +++ b/tests/ump_pulse/control_test.c @@ -0,0 +1,97 @@ +/* ИÑ�полнÑ�етÑ�Ñ� наÑ�тоÑ�щий автомат и аппаратнаÑ� обёртка прошивки. + * GPIO здеÑ�ÑŒ заменены Ñ�чётчиками: каждое переключение проверÑ�етÑ�Ñ� + * отдельно, в том чиÑ�ле отÑ�утÑ�твие кратковременного START+STOP. + * Ð’ теÑ�те нет main прошивки: Ñ�тим воÑ�производитÑ�Ñ� его задержка на EEPROM. + */ +#include "ump_pulse.h" +static unsigned int irq_mask, start_pin, stop_pin, relay_pin, overlap; +static unsigned int start_edges, stop_edges; +int Desk = 6; +#define dsk_LOAD 6 +#define READY_FREQ 1000 +static volatile unsigned int command_word; +#define Commands command_word +volatile unsigned long IMPowse; +static unsigned int __disable_interrupts(void) +{ unsigned int old = irq_mask; irq_mask = 1; return old; } +static void __restore_interrupts(unsigned int old) { irq_mask = old; } +static void clear_START_DPTB(void) { start_pin = 0; } +static void clear_STOP_DPTB(void) { stop_pin = 0; } +static void set_START_DPTB(void) +{ if (!start_pin) start_edges++; start_pin = 1; if (stop_pin) overlap++; } +static void set_STOP_DPTB(void) +{ if (!stop_pin) stop_edges++; stop_pin = 1; if (start_pin) overlap++; } +static void set_RES_OUT_2(void) { relay_pin = 1; } +static void clear_RES_OUT_2(void) { relay_pin = 0; } +#include "ump_control_impl.h" +#define CHECK(x) do { if (!(x)) return __LINE__; } while (0) +__declspec(dllexport) int run_tests(void) +{ + unsigned int i, edges; + /* Команда до окончаниÑ� инициализации не иÑ�полнÑ�етÑ�Ñ�; разрешение + * обработки не воÑ�производит её задним чиÑ�лом. */ + UMP_commands_write(0x80); + CHECK(!start_pin && !stop_pin); + UMP_pulse_init(); + UMP_commands_write(0x80); + CHECK(!start_pin); + UMP_commands_write(0); + UMP_commands_write(0x80); + CHECK(start_pin && !stop_pin && relay_pin && IMPowse == 1000); + CHECK(!irq_mask); + /* ДлительнаÑ� единица не продлевает импульÑ�. Ровно тыÑ�Ñ�ча вызовов + * таймера Ñ�нимает выход; оÑ�новной цикл ни разу не вызывалÑ�Ñ�. */ + for (i = 0; i < 999; i++) { + UMP_commands_write(0x80); + UMP_pulse_tick(); + } + CHECK(start_pin && IMPowse == 1); + UMP_pulse_tick(); + CHECK(!start_pin && !stop_pin && relay_pin && !IMPowse); + UMP_commands_write(0x80); + CHECK(!start_pin); + /* Короткий ноль замечаетÑ�Ñ� непоÑ�редÑ�твенно в приёмном обработчике. */ + UMP_commands_write(0); UMP_commands_write(0x80); + CHECK(start_pin && IMPowse == 1000 && start_edges == 2); + UMP_pulse_tick(); + UMP_commands_write(0); UMP_commands_write(0x80); + CHECK(IMPowse == 1000 && start_edges == 2); + /* STOP прерывает активный START. ОдновременнаÑ� команда не выдаёт + * даже короткого START; проверÑ�етÑ�Ñ� каждаÑ� запиÑ�ÑŒ мокового GPIO. */ + UMP_commands_write(0xC0); + CHECK(!start_pin && stop_pin && !relay_pin && !overlap); + edges = start_edges; + for (i = 0; i < 1000; i++) UMP_pulse_tick(); + UMP_commands_write(0xC0); + CHECK(!start_pin && !stop_pin && !IMPowse); + UMP_commands_write(0x80); + CHECK(!start_pin && start_edges == edges); + UMP_commands_write(0); UMP_commands_write(0xC0); + CHECK(!start_pin && stop_pin && start_edges == edges); + UMP_commands_write(0x40); UMP_commands_write(0xC0); + CHECK(!start_pin && !overlap); + /* СнÑ�тый STOP + Ñ�вежий фронт START могут переключить выход до + * окончаниÑ� STOP-импульÑ�а, но никогда не Ñ�оздают перекрытие. */ + UMP_commands_write(0); UMP_commands_write(0x80); + CHECK(start_pin && !stop_pin && relay_pin && !overlap); + /* Default/Load удалÑ�ÑŽÑ‚ Ñ�лужебные биты, Ñ�охранÑ�Ñ� уровень команды + * и иÑ�торию фронтов. Случайный повтор пакета не перезапуÑ�кает импульÑ�. */ + UMP_commands_write(0x88); UMP_pulse_tick(); + UMP_reset_parameter_commands(); + CHECK(Commands == 0x80 && IMPowse == 999); + UMP_commands_write(0x80); + CHECK(IMPowse == 999); + /* Вложенный вызов не разрешает IRQ, еÑ�ли они были запрещены. */ + irq_mask = 1; + UMP_commands_write(0x40); UMP_pulse_tick(); UMP_reset_parameter_commands(); + CHECK(irq_mask == 1 && stop_pin && !start_pin && !overlap); + irq_mask = 0; + /* Другие типы платы не получают диÑ�креты нагрузки. */ + for (i = 0; i < 1000; i++) UMP_pulse_tick(); + Desk = 1; edges = start_edges; + UMP_commands_write(0); UMP_commands_write(0x80); + CHECK(Commands == 0x80 && start_edges == edges && !start_pin); + UMP_reset_parameter_commands(); + CHECK(Commands == 0); + return 0; +} diff --git a/tests/ump_pulse/run_test.py b/tests/ump_pulse/run_test.py new file mode 100644 index 0000000..b102631 --- /dev/null +++ b/tests/ump_pulse/run_test.py @@ -0,0 +1,38 @@ +"""Host test of the 166 START/STOP controller. Requires Clang/lld or MSVC (Windows). + +Example: py -3 tests/ump_pulse/run_test.py --compiler "C:/path/to/cl.exe" +All build products are written to a temporary directory. +""" +import argparse +import os +from pathlib import Path +import shutil +import subprocess +import tempfile + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument('--compiler', default=shutil.which('clang') or shutil.which('cl')) +args = parser.parse_args() +if not args.compiler: + parser.error('Provide --compiler pointing to clang.exe or cl.exe') +root = Path(__file__).resolve().parents[2] +with tempfile.TemporaryDirectory(prefix='ump-recorder-') as directory: + output = Path(directory) + library = output / 'recorder_test.dll' + includes = [root / 'Source/Internal/Include'] + source = root / 'tests/ump_pulse/control_test.c' + if Path(args.compiler).stem.lower() == 'cl': + command = [args.compiler, '/nologo', '/LD', '/GS-', '/wd4068', '/wd4312', + *['/I' + str(p) for p in includes], str(source), + '/Fo' + str(output / 'recorder.obj'), '/link', '/NOENTRY', + '/NODEFAULTLIB', '/OUT:' + str(library)] + else: + command = [args.compiler, '-shared', '-nostdlib', '-fuse-ld=lld', + '-Wl,/noentry,/nodefaultlib', '-Wno-unknown-pragmas', + '-Wno-int-to-pointer-cast', *['-I' + str(p) for p in includes], + str(source), '-o', str(library)] + subprocess.run(command, cwd=output, check=True) + subprocess.run([os.sys.executable, '-c', + 'import ctypes,sys; r=ctypes.CDLL(sys.argv[1]).run_tests(); ' + 'print("PASS" if r==0 else f"FAIL: C line {r}"); sys.exit(bool(r))', + str(library)], check=True)