diff --git a/ExampleData/ais.kystverket.no/Ais1000Lines.nm4 b/ExampleData/ais.kystverket.no/Ais1000Lines.nm4 new file mode 100644 index 0000000..3dfa5e3 --- /dev/null +++ b/ExampleData/ais.kystverket.no/Ais1000Lines.nm4 @@ -0,0 +1,1000 @@ +\c:1565218798*53\!BSVDM,1,1,,A,13mb9U0P00PRk8fT5nw>4?wj2006,0*5D +\c:1565218798*53\!BSVDM,1,1,,A,33mkDd1000QbddT`LhTnCiKh0Dfr,0*68 +\c:1565218798*53\!BSVDM,1,1,,A,344hiT50001FqB:WoVAN46Oj0JKh,0*3D +\c:1565218798*53\!ABVDM,1,1,,A,13tfH:022;PhpibQUS:FkUKj06kd,0*3A +\c:1565218798*53\!ABVDM,1,1,,B,33m@`i5000Pgt@6Qqfh6wj7b0BwJ,0*25 +\c:1565218798*53\!BSVDM,1,1,,B,13mHJ20OiO1RrQt`A9tQSiMl08QU,0*24 +\c:1565218798*53\!BSVDM,1,1,,A,144OcRP0191>TbF`CrPQSiSf0D0:,0*46 +\c:1565218798*53\!BSVDM,1,1,,B,13mfj40P00R54?wj2HQU,0*22 +\c:1565218798*53\!BSVDM,1,1,,A,13mJ>L0P0011jPFVOqguFwwl0@QV,0*53 +\c:1565218798*53\!BSVDM,1,1,,A,33n=sl500011ka4VP264Eo3f0000,0*01 +\c:1565218798*53\!BSVDM,1,1,,B,13meWM?00016NMhVO2SP06kj0<08,0*64 +\c:1565218798*53\!BSVDM,1,1,,A,13m9ERPP00Pp5p>UivL3?Owh000L,0*03 +\g:1-2-9999,c:1565218798*53\!BSVDM,2,1,3,A,53nPnh800000ha@J2218UH60U@4hT6000000000t2PD33t?P008000000000,0*72 +\g:2-2-9999,c:1565218798*53\!BSVDM,2,2,3,A,00000000000,2*3E +\c:1565218798*53\!BSVDM,1,1,,B,18L9hn00@0PFv4HRTIG9n5ah08Qe,0*75 +\g:1-2-9999,c:1565218798*53\!BSVDM,2,1,0,B,53nLMevM,0*2C +\g:2-2-9999,c:1565218798*53\!BSVDM,2,2,0,A,e<888888880,2*64 +\g:1-2-9999,c:1565218798*53\!BSVDM,2,1,1,B,53o53:025l<mF5pk0FR0CSnDmCQ1,0*1D +\g:2-2-9999,c:1565218798*53\!BSVDM,2,2,1,B,E0000000000,2*4A +\c:1565218798*53\!BSVDM,1,1,,B,33m9WJwP001;herWFtgq4?wj29VS,0*4C +\g:1-2-9999,c:1565218798*53\!AIVDM,2,1,2,B,53n:lV42Dk:Dh<9R220hu10tEV2222222222220`1H@3561c02Pj877wwh0HR1,0*7D +\c:1565218798*53\!BSVDM,1,1,,B,13n;880uiNPC85NS97O9:W7j2L0Q,0*5D +\c:1565218798*53\!BSVDM,1,1,,B,13mI3r7P0014uTjWKWMh0?wh0@R1,0*1F +\c:1565218798*53\!BSVDM,1,1,,A,13ndpB001J0wdQ:VHEkQRAAh0HR6,0*71 +\c:1565218798*53\!BSVDM,1,1,,B,13megA700@2?:SH`8UHjvWL6rf4?wl2@RC,0*37 +\c:1565218798*53\!BSVDM,1,1,,B,13m6nc7P00Q1CgtW3V6h0?wl28RC,0*5C +\c:1565218798*53\!BSVDM,1,1,,B,33nEcr5000PKl0vQe=>sAHQm0000,0*43 +\c:1565218798*53\!BSVDM,1,1,,B,13mknB0000Q:iPnWI0<@08Ul26kd,0*40 +\c:1565218798*53\!BSVDM,1,1,,A,13mJEo?P00PdIdIJ1000QHUh6`3ETpCa;mP000,0*59 +\c:1565218800*5D\!BSVDM,1,1,,A,13pr;mS00J0lWLve=anA?i;n06kd,0*5D +\g:1-2-9999,c:1565218800*5D\!BSVDM,2,1,6,B,53nmVp42Dkb@hML=M=,0*65 +\g:2-2-9999,c:1565218800*5D\!BSVDM,2,2,6,B,uf000000000,2*2B +\c:1565218800*5D\!BSVDM,1,1,,B,13m7wk0P000tB62VuA2bOOwn2@RK,0*5A +\c:1565218800*5D\!BSVDM,1,1,,B,144MR0001O0BLu`T6iGjGR5j0@RK,0*72 +\c:1565218800*5D\!BSVDM,1,1,,B,13mvnv001b0I?4dQl=d5m4bp8<2q,0*25 +\c:1565218800*5D\!BSVDM,1,1,,B,13oRUj00120HV8HSf>5S;BQl0D0s,0*7F +\c:1565218800*5D\!BSVDM,1,1,,B,13abQn001S0MferPju:0UPN000Rd,0*64 +\c:1565218800*5D\!BSVDM,1,1,,A,13m@?n?P001E6GbWuLIrGwwn26kd,0*3E +\c:1565218800*5D\!BSVDM,1,1,,A,13mWPm0000Q2f82W2s>6M2Qh0HRN,0*09 +\c:1565218800*5D\!BSVDM,1,1,,B,13nFBv001W0HAIlRBk4eL:gl0HRN,0*6B +\c:1565218800*5D\!BSVDM,1,1,,A,13mqeB0000Q4vjtWKRrkm7Cj06kd,0*26 +\c:1565218800*5D\!BSVDM,1,1,,B,13mN=8701C0dCMLQT<0`m75n0@RS,0*62 +\c:1565218800*5D\!BSVDM,1,1,,B,13mKG6000B0Uaf4?wl20RL,0*01 +\c:1565218800*5D\!BSVDM,1,1,,A,33NuFB10010c1:PTJL=L59goP000,0*4F +\c:1565218800*5D\!BSVDM,1,1,,B,13m6Jo00000KJo6QcoSrrB;n0`Rb,0*2B +\c:1565218800*5D\!BSVDM,1,1,,B,33:f?T50000OD6NQERleq@En0000,0*18 +\c:1565218800*5D\!BSVDM,1,1,,B,13mH0a00000M2JNSfBqJm2wn00RW,0*0E +\c:1565218800*5D\!BSVDM,1,1,,B,13oHlj00160H?;bQvKt6Q58020S2,0*27 +\c:1565218800*5D\!BSVDM,1,1,,B,13m9TWg0h014wJNWKSLWanUn0D0K,0*7F +\c:1565218800*5D\!BSVDM,1,1,,A,1INS=Q001C0u03Pd96A=6:Mn0P00,0*0A +\c:1565218800*5D\!BSVDM,1,1,,B,13m:W>0004PaM4PTIQE:r8Kl0HRe,0*0D +\c:1565218800*5D\!BSVDM,1,1,,A,13nEkf?P00PRIrbT5s9>4?wn26kd,0*23 +\g:1-2-9999,c:1565218800*5D\!BSVDM,2,1,7,A,53m=1802?s7lh50:221A8tp@PDTmKnRVg8W:5V00L0K,0*30 +\c:1565218800*5D\!BSVDM,1,1,,B,13mCpv800014wB0WKcVaTh`000SP,0*39 +\c:1565218800*5D\!BSVDM,1,1,,B,13mWQ>0P000uuUBVtngja?vF0D0S,0*14 +\g:1-2-9999,c:1565218800*5D\!BSVDM,2,1,4,A,53nai482E4Shh@td0010E8hDp00000000000001?0`<6663U05@RCQ0C0000,0*70 +\g:2-2-9999,c:1565218800*5D\!BSVDM,2,2,4,A,00000000000,2*39 +\c:1565218800*5D\!BSVDM,1,1,,B,13m8>f00000IsS8SbHNRfiOl08Rq,0*30 +\c:1565218800*5D\!BSVDM,1,1,,B,13mQqM70000R3SNT506cRv09ui`T00Dkr,0*1E +\c:1565218800*5D\!BSVDM,1,1,,A,13omwv00120MOR6SpGLt1qh008S1,0*45 +\c:1565218800*5D\!BSVDM,1,1,,B,34cnOJ001L0HB3HQW937WV9n00u0,0*27 +\c:1565218800*5D\!BSVDM,1,1,,B,13o7rh000c0hdRLV9jEPaPWn0HS3,0*0D +\c:1565218800*5D\!BSVDM,1,1,,B,13m7970P000Gj4>RG3U9W?wn0@S4,0*31 +\c:1565218800*5D\!BSVDM,1,1,,B,13ePoN0026PKKpTQ;OSU@lAl0@S5,0*6E +\g:1-2-9999,c:1565218800*5D\!BSVDM,2,1,9,A,53n09042CGC8hDdj220q>0I85T`622222222221S2a<6>63l0>m0CPCQiD`8,0*4D +\g:2-2-9999,c:1565218800*5D\!BSVDM,2,2,9,A,88888888880,2*34 +\c:1565218800*5D\!BSVDM,1,1,,A,13mq3O0000PJqiRQnrv>497n2L0K,0*59 +\c:1565218800*5D\!BSVDM,1,1,,A,13oWer00001:DM4W2iB:D@L000S8,0*43 +\c:1565218800*5D\!BSVDM,1,1,,A,13me8V?PAI0G2pdRk@UDjSh>0PS8,0*61 +\c:1565218800*5D\!BSVDM,1,1,,A,B3m8Fn003P;7W7`IuGaoswuUkP06,0*30 +\c:1565218800*5D\!BSVDM,1,1,,B,15E8dv001;PBqoNQkDtCWjp22L0I,0*2E +\c:1565218800*5D\!BSVDM,1,1,,B,33P><4A0000UwI8QB<=DUUl20Dv:,0*78 +\c:1565218800*5D\!BSVDM,1,1,,B,13oCM2000kQ>tfH`0h4AT000000001DL8wCN63A0GkSj1U00000,0*24 +\g:2-2-9999,c:1565218800*5D\!BSVDM,2,2,6,B,00000000000,2*38 +\c:1565218801*5C\!BSVDM,1,1,,A,13oNcj0P?w4?v20l06,0*32 +\g:1-2-9999,c:1565218801*5C\!BSVDM,2,1,8,A,53mvnv42DP7Php=4000H58h4p@0000000000001?1Q8996480;i5DhERBh00,0*56 +\g:2-2-9999,c:1565218801*5C\!BSVDM,2,2,8,A,00000000000,2*35 +\c:1565218801*5C\!BSVDM,1,1,,A,13m:N?00000HbM@RJg`:n7An080@,0*27 +\g:1-2-9999,c:1565218801*5C\!BSVDM,2,1,2,A,53:f?T02;oQkD89C:2175SD000000000001HT8DdF0<5@Q8Tr08uTG8N0000040Ht00000000000,0*7C +\g:2-2-9999,c:1565218801*5C\!BSVDM,2,2,6,A,0000000000<,2*37 +\c:1565218801*5C\!BSVDM,1,1,,B,14`Utn00001VVNN`jSpm:i62080P,0*5C +\c:1565218801*5C\!BSVDM,1,1,,A,34QsG5E0000d8=>TQ3LI28An0000,0*64 +\g:1-2-9999,c:1565218801*5C\!BSVDM,2,1,4,A,53uE6G4000014?v2200S,0*65 +\c:1565218801*5C\!BSVDM,1,1,,A,13mOAO7000PtApBVu@H@07222<0G,0*54 +\c:1565218802*5F\!BSVDM,1,1,,B,1C`j8N0PA9Pw=jrdMSW4j3n40P00,0*52 +\c:1565218802*5F\!BSVDM,1,1,,A,13mucU8P00PpHO@UAJWv4?v226p0,0*68 +\c:1565218802*5F\!BSVDM,1,1,,B,33mk37000;PfMLPVrRK17in2012h,0*07 +\c:1565218802*5F\!BSVDM,1,1,,B,15VpTB001e0jechUUN2WrnB20<03,0*20 +\c:1565218802*5F\!BSVDM,1,1,,B,13v40`7000Pk8bDQfC`v41J4281;,0*17 +\c:1565218802*5F\!BSVDM,1,1,,A,13m7kR00000o0H`UTFtUqTH4081;,0*24 +\c:1565218802*5F\!BSVDM,1,1,,B,13mePK7000PJ2bHSc6nsB6t40<0G,0*7C +\c:1565218802*5F\!BSVDM,1,1,,B,14aEfF0P000O2v@Q?0Bc7?v006p0,0*51 +\c:1565218802*5F\!BSVDM,1,1,,A,13o1PV7P@DOH8f``TH5`onB400RU,0*66 +\c:1565218802*5F\!BSVDM,1,1,,A,13mV7H700=0bPPJQNsiQW1T40d0=,0*60 +\c:1565218802*5F\!BSVDM,1,1,,A,33n?MN50000H5G4QmuGesUN4P000,0*01 +\c:1565218802*5F\!BSVDM,1,1,,A,1CmCVCoP3rPg`00TCD=Ergv22000,0*27 +\c:1565218802*5F\!BSVDM,1,1,,B,13otUn001K1STfh`JSPQh1T4281>,0*18 +\g:1-2-9999,c:1565218802*5F\!BSVDM,2,1,4,A,53oEQn01ST8PhT@B221=A85DmHTf22222222220Q4P;454rdR7RnDm1PDU88,0*45 +\g:2-2-9999,c:1565218802*5F\!BSVDM,2,2,4,A,88888888880,2*39 +\c:1565218802*5F\!BSVDM,1,1,,B,13mG?2?001Ql=u6`chDv49442D09,0*7F +\c:1565218802*5F\!BSVDM,1,1,,A,13mU4v7P15PkaPhVjO89rgv22<01,0*6A +\c:1565218802*5F\!BSVDM,1,1,,B,13m9qG7w001FjlpWncef45b20L0a,0*38 +\c:1565218802*5F\!BSVDM,1,1,,A,13m9FeP022PL4`RSdgd2`B<00<1J,0*6F +\c:1565218802*5F\!BSVDM,1,1,,B,13mCIk?P000WbMrTRtmP0?v206p0,0*25 +\c:1565218802*5F\!BSVDM,1,1,,A,13mjmL00160CRw8S074PiPp08<2D,0*49 +\c:1565218802*5F\!BSVDM,1,1,,B,13mk;D?P000TV4rT?5DN4?v4081H,0*30 +\c:1565218802*5F\!BSVDM,1,1,,B,33m8@B50000J@bFQgai947:4P000,0*1A +\g:1-2-9999,c:1565218802*5F\!BSVDM,2,1,4,A,54cnGV029Jb;Q04cN20HE98v22222222222222169H=956400E0CPCQiD`8,0*15 +\g:2-2-9999,c:1565218802*5F\!BSVDM,2,2,1,A,88888888880,2*3C +\c:1565218802*5F\!BSVDM,1,1,,A,13nM0b?0000L1H2Sg`aE>3B60<1f,0*26 +\g:1-2-9999,c:1565218802*5F\!ABVDM,2,1,7,A,53nR`2027k54hTqN220Npnr0@4ppEHTN2222220Q0hE6163c08m<3ThQDQsh,0*78 +\g:2-2-9999,c:1565218802*5F\!ABVDM,2,2,7,A,Sk0DSQH8880,2*16 +\c:1565218802*5F\!BSVDM,1,1,,A,13m7TH00000HDofRBNk>41`40<0l,0*44 +\c:1565218802*5F\!BSVDM,1,1,,A,13nnIb0wB00Jl?lQiUSHL6h600R8,0*5E +\c:1565218802*5F\!BSVDM,1,1,,B,13m00000F?22RcsAigm2606p0,0*6E +\c:1565218802*5F\!BSVDM,1,1,,A,13m9Tq0000Q112NVwmgJFFd00H1Q,0*4C +\c:1565218802*5F\!BSVDM,1,1,,A,13mIVV?P00PlP6NU5:mf4?v42<0:,0*7E +\c:1565218802*5F\!BSVDM,1,1,,A,13n1pE7P000GiwTR6?uc@gv600R>,0*4B +\c:1565218802*5F\!BSVDM,1,1,,A,13m;d80016QSrj>`BMTRt2Mp081S,0*6C +\g:1-2-9999,c:1565218802*5F\!BSVDM,2,1,5,A,53oW>b024?v426p0,0*4D +\c:1565218803*5E\!BSVDM,1,1,,B,13LJ54001a0oWbNV:wDQQQAp0`1W,0*44 +\c:1565218803*5E\!BSVDM,1,1,,B,33ooQ`50000I6dpQrb6HT=1HjHip606p0,0*75 +\g:1-2-9999,c:1565218803*5E\!BSVDM,2,1,2,B,54cnOJ421vdCQ04cV210iE@v22222222222222168hB956540TKSi>4?v420Rr,0*69 +\c:1565218804*59\!BSVDM,1,1,,B,13n6CR00000Lvk6QrT6I`iJ60<03,0*52 +\c:1565218804*59\!ABVDM,1,1,,B,13m@G<0P00PhSVnR9J@:6wv62D0;,0*6E +\c:1565218804*59\!BSVDM,1,1,,A,13ne400PAP1@lCPWT350u@V40D04,0*5F +\c:1565218804*59\!BSVDM,1,1,,B,B3m;AT0008FQ=09vWm6;CwQ5oP06,0*0D +\c:1565218804*59\!BSVDM,1,1,,A,13mGqC?P0015mtBVof;L7?v62<0?,0*74 +\c:1565218804*59\!BSVDM,1,1,,A,13mAp400000p?`tUgo99s5r40<0h,0*37 +\c:1565218804*59\!BSVDM,1,1,,A,13cnbw00380R<>pQ1CT3UBp20L0H,0*2B +\c:1565218804*59\!BSVDM,1,1,,B,13m>R:0P00PuMu>Vw22>4?v426p0,0*54 +\c:1565218804*59\!BSVDM,1,1,,A,14`Uv8002oPqTCj`02J03@:400Rc,0*14 +\c:1565218804*59\!BSVDM,1,1,,A,13m6lu0P00PflgpQlLa>4?v6200g,0*62 +\c:1565218804*59\!BSVDM,1,1,,B,3815Jcm000PH236R05;78m@42000,0*10 +\c:1565218804*59\!BSVDM,1,1,,B,33m9BaU0000SJVPT7H8;3b`40000,0*2C +\c:1565218804*59\!BSVDM,1,1,,B,13m6m200010:1pbR=kB=JJt80<0H,0*51 +\c:1565218804*59\!BSVDM,1,1,,B,18UOn<0Oh4PNS=DT`?1aA9F60@1p,0*08 +\c:1565218804*59\!BSVDM,1,1,,A,13mboc700B0HGEPQDg:;:9@40<09,0*60 +\c:1565218804*59\!BSVDM,1,1,,B,13mb1H00000REjPT5SHc>7v82L1Q,0*15 +\c:1565218804*59\!BSVDM,1,1,,A,13oNsJ00000SIHJT7RatqP8626p0,0*42 +\c:1565218804*59\!BSVDM,1,1,,A,13m>56000iR=dqj`Ho84pkh8081u,0*68 +\c:1565218804*59\!BSVDM,1,1,,A,13JNRl002aPe`?tU7vsWLUt2081v,0*6A +\c:1565218804*59\!BSVDM,1,1,,A,13oV@:0P0015?T`WOUlejgv4081v,0*55 +\c:1565218804*59\!BSVDM,1,1,,A,13m8>T0000QdFqR`KwP6QQn40@1w,0*04 +\c:1565218804*59\!BSVDM,1,1,,A,13nAsc00001Fi7dWnPndHVf80@20,0*1E +\g:1-2-9999,c:1565218804*59\!BSVDM,2,1,8,B,53m9WJl00000000000000000000000000000001@000006DeWP3A`80@22,0*23 +\c:1565218804*59\!BSVDM,1,1,,B,13ngLF0000PS8FBT4MJiKjn800S>,0*16 +\c:1565218804*59\!BSVDM,1,1,,B,33nSr45000P`bttQNA;`;FR80000,0*02 +\c:1565218804*59\!BSVDM,1,1,,A,13o8mF001c0gkL@R2sRURDH60<0P,0*33 +\g:1-2-9999,c:1565218804*59\!BSVDM,2,1,2,A,53m9gt`00000hKK?S<1@DppPthlDp0000000001J0H722t00000000000000,0*76 +\g:2-2-9999,c:1565218804*59\!BSVDM,2,2,2,A,00000000000,2*3F +\c:1565218804*59\!BSVDM,1,1,,B,13m=v400000S`ATT6sH0,0*66 +\c:1565218804*59\!BSVDM,1,1,,B,13ojU>30000jlGbTsisdrEp806p0,0*20 +\c:1565218804*59\!BSVDM,1,1,,B,177esR001vPTH:TPn9`HV6sj0H2;,0*0B +\c:1565218804*59\!ABVDM,1,1,,A,13m6rP8P?w4?wp0`2<,0*3E +\c:1565218804*59\!BSVDM,1,1,,B,13mAwp00000MQ4RSlEibuV>800So,0*37 +\c:1565218804*59\!BSVDM,1,1,,B,33o86N50000GddFSKLfsG868P000,0*77 +\c:1565218804*59\!BSVDM,1,1,,B,144iO9PP1N0BojhRkqruqK840<3B,0*76 +\g:1-2-9999,c:1565218805*58\!BSVDM,2,1,5,B,58KUTL025l1WUH8sP004v80dU4Sk381RAC,0*58 +\g:2-2-9999,c:1565218805*58\!BSVDM,2,2,5,B,184;Le00000,2*14 +\c:1565218805*58\!BSVDM,1,1,,B,33mGCf10000H?SNQuiTeMbT60000,0*59 +\c:1565218805*58\!BSVDM,1,1,,A,13neKL001Q0s0TdUugh493F60000,0*73 +\c:1565218805*58\!BSVDM,1,1,,A,13AV060021PUH7:TguKHbFp40H2J,0*4A +\c:1565218805*58\!BSVDM,1,1,,B,13n?GW?P000I4?wV00Rf,0*00 +\g:1-2-9999,c:1565218805*58\!BSVDM,2,1,8,A,53mTRV400000hOOCWP1HT8DdF0<5@Q8Tp000000N1H4334`Ht6@QDS1EP@Ah,0*46 +\g:2-2-9999,c:1565218805*58\!BSVDM,2,2,8,A,00000000000,2*35 +\g:1-2-9999,c:1565218805*58\!BSVDM,2,1,6,B,53mAdK000000ho;;SB0hTppD622222222222220N0h93140Ht00000000000,0*43 +\g:2-2-9999,c:1565218805*58\!BSVDM,2,2,6,B,00000000000,2*38 +\c:1565218805*58\!BSVDM,1,1,,A,13uKnD0P00P`WI@QN;k;Nwv:20SE,0*32 +\c:1565218805*58\!BSVDM,1,1,,A,13nh7D00000jmw:Tsv4rsR@:082T,0*10 +\c:1565218805*58\!BSVDM,1,1,,B,13uOkNgP00PkWubQQnQv4?v8282S,0*0A +\c:1565218805*58\!BSVDM,1,1,,A,13mCci7P00Qu4?v82@2a,0*7C +\c:1565218805*58\!BSVDM,1,1,,B,35@TmB5P000O736Q?9vh0?v60P00,0*4F +\g:1-2-9999,c:1565218805*58\!BSVDM,2,1,4,A,53mNA242F;HdhHQB2219Dp62222222222222220O0pA4540Ht554SkDkp888,0*2E +\g:2-2-9999,c:1565218805*58\!BSVDM,2,2,4,A,88888888880,2*39 +\c:1565218805*58\!BSVDM,1,1,,A,344fQCU0001FuVlWognW?G@40000,0*4F +\c:1565218805*58\!BSVDM,1,1,,B,15UP?t0wB8Pbd;>Q4:qqdof600SL,0*03 +\c:1565218806*5B\!BSVDM,1,1,,B,33n8N=1P00PLPwvSkl>00?v82DiJ,0*7B +\c:1565218806*5B\!BSVDM,1,1,,B,13mk@j0vimQ9Jl0P000j7V4Qiug@0?v8282r,0*6D +\c:1565218807*5A\!BSVDM,1,1,,A,33m:e50OiK0U4:PQ>58h00260000,0*50 +\c:1565218807*5A\!BSVDM,1,1,,B,13m6Cc00000LaP8QHI51@nr800S8,0*6B +\c:1565218807*5A\!BSVDM,1,1,,A,13mFun00000c4?v:20RS,0*5E +\c:1565218807*5A\!BSVDM,1,1,,A,13m97B7P000vGVLW2u`00?v:0<01,0*6E +\c:1565218807*5A\!BSVDM,1,1,,A,13oQ48700@PfIgFQVPuUKl><00SE,0*62 +\c:1565218807*5A\!BSVDM,1,1,,B,13nWHf002;11M`bVccWnBU280D0C,0*1A +\c:1565218807*5A\!BSVDM,1,1,,A,1Sm8pDP0000d@q8TLAL9p8H80000,0*15 +\c:1565218807*5A\!BSVDM,1,1,,B,13mNn90P001E6:BWuMA1fwv:0H3Q,0*48 +\c:1565218807*5A\!BSVDM,1,1,,A,33m75jP0000Gki:RIjV80@`807Ok,0*01 +\g:1-2-9999,c:1565218807*5A\!BSVDM,2,1,5,B,53Q;7rl2Btiq`@eWR21<4p1@DTLp000000168h;6666h06rrf:0553,0*79 +\c:1565218807*5A\!BSVDM,1,1,,B,13oV8F001R0FdHPR3Tl52Ct:26p0,0*07 +\g:1-2-9999,c:1565218807*5A\!BSVDM,2,1,3,A,53m@5>000000hPhl001HDe@58Dp000000000000k0H@354rdR08888888888,0*27 +\g:2-2-9999,c:1565218807*5A\!BSVDM,2,2,3,A,88888888880,2*3E +\g:1-2-9999,c:1565218807*5A\!BSVDM,2,1,4,B,53nImR01=Ho4h`hl000480MuM,0*61 +\g:2-2-9999,c:1565218807*5A\!BSVDM,2,2,7,A,MLH88888880,2*4B +\c:1565218807*5A\!BSVDM,1,1,,A,145=F:70091FuHLbrQPRd1f80<02,0*00 +\c:1565218807*5A\!BSVDM,1,1,,B,13o?3j00000US8pT@rG6nI<>00ST,0*7C +\g:1-2-9999,c:1565218807*5A\!BSVDM,2,1,1,A,53m7q`800000hS;;CF0QTA8v0HhuN2222222220W1@I75u;iN42nDSn@C`88,0*13 +\g:2-2-9999,c:1565218807*5A\!BSVDM,2,2,1,A,88888888880,2*3C +\c:1565218807*5A\!BSVDM,1,1,,A,13n;o000000KMVNQLUG311T<2D0F,0*4D +\c:1565218807*5A\!BSVDM,1,1,,B,13n8cp0vD7Pf4=JQTk;04P6:083n,0*63 +\c:1565218807*5A\!BSVDM,1,1,,A,13mpSM?000PSQR0T7Evs=U>606p0,0*04 +\g:1-2-9999,c:1565218807*5A\!BSVDM,2,1,0,B,53mmQD02;`R8hhqL0008t@t000000000000000122Pt9940Ht9@Si3sCClji,0*2B +\g:2-2-9999,c:1565218807*5A\!BSVDM,2,2,0,B,CQDh0000000,2*00 +\c:1565218807*5A\!BSVDM,1,1,,A,13m8ES`000Q50fBWKaq6G8T:00Rd,0*43 +\c:1565218807*5A\!BSVDM,1,1,,B,13mC6<70000IpP4SbFFGKnr>00S6,0*0A +\c:1565218807*5A\!BSVDM,1,1,,A,13m=7H00000Ga1`REgGuwb4>0<1;,0*0E +\c:1565218807*5A\!BSVDM,1,1,,B,13mFkH0P00PSddbT@Nkf4?v<2D0F,0*21 +\c:1565218807*5A\!BSVDM,1,1,,A,13o=:d7000PiiEbQkQA>46t<0@3v,0*2A +\c:1565218808*55\!BSVDM,1,1,,A,13m<2D7P000usutVtwRtCgv<083v,0*1A +\c:1565218808*55\!BSVDM,1,1,,A,13mV;B?000PoDq:V`>8m`oJ:283w,0*2C +\c:1565218808*55\!BSVDM,1,1,,A,13nTdn0P000SIh06p0,0*45 +\c:1565218808*55\!BSVDM,1,1,,A,144MST001>1DK@l`=3@Aq1R:0<0b,0*40 +\c:1565218808*55\!BSVDM,1,1,,A,144hA40P0029V5fWqVPN4?v<0D0B,0*54 +\c:1565218808*55\!BSVDM,1,1,,A,13n>M100000o?OnV3BTnK0L<00S2,0*27 +\c:1565218808*55\!BSVDM,1,1,,A,13mDDD7000PGQsNSMMuT1HR>26p0,0*4B +\c:1565218808*55\!BSVDM,1,1,,B,13cNo:001s0hgO>U`6P`Fnf>06p0,0*4F +\c:1565218808*55\!BSVDM,1,1,,B,13mHw9000011rCfVPDC>1Pp>0H43,0*6D +\c:1565218808*55\!BSVDM,1,1,,A,1>jUlGk001PG4CvQnAdqq1L<00SG,0*27 +\c:1565218808*55\!BSVDM,1,1,,B,13mDvq0P00PVk`nTOHf>4?v<2846,0*51 +\c:1565218808*55\!BSVDM,1,1,,B,13mKK000001OK6>`4acaTFp>0847,0*3E +\c:1565218808*55\!BSVDM,1,1,,A,13m:gv0000Pr9;nVekHP`Bv20l0S,0*2C +\c:1565218808*55\!BSVDM,1,1,,A,13mvmJ7P00PiowLU7fA>4?v>20SO,0*2D +\c:1565218808*55\!BSVDM,1,1,,B,13M6Tf001dPGbV@Q`m306p0,0*15 +\c:1565218808*55\!BSVDM,1,1,,B,13mwH;?000PuNnTVw3pMH7V606p0,0*7F +\c:1565218808*55\!BSVDM,1,1,,A,33m7C75000PK6BDRGQ>0hn>80DfJ,0*2D +\c:1565218808*55\!BSVDM,1,1,,A,13cg8u002mPFMhvSWLSH2FN:0D0j,0*13 +\c:1565218808*55\!BSVDM,1,1,,B,13m?b27P00QAtmNWiS;bn?v>26p0,0*75 +\c:1565218808*55\!BSVDM,1,1,,A,13KuI830000L>rlSgblR2;>>084;,0*4B +\c:1565218808*55\!BSVDM,1,1,,B,13di`2002CPvHDPVEL0RA1p@0H4;,0*60 +\c:1565218808*55\!BSVDM,1,1,,A,13m6Rc000019@QFW9Dr8>Vf00D0=,0*2F +\c:1565218808*55\!BSVDM,1,1,,A,13oOn0000E0UBnTUroVoJF4>0@4=,0*25 +\c:1565218808*55\!BSVDM,1,1,,B,15AJ;F001F0Hf4DQTeg6F58@06p0,0*2B +\c:1565218808*55\!BSVDM,1,1,,A,13m@U17P000ReqFQ2Aw3,0*1A +\c:1565218808*55\!BSVDM,1,1,,B,34cfo8001sPFFS`Q>I7FfUH<06Ck,0*76 +\g:1-2-9999,c:1565218808*55\!BSVDM,2,1,5,A,53ma>=400000hi14000thF0DiH4p00000000000N1P;16t0Ht7P000000000,0*77 +\g:2-2-9999,c:1565218808*55\!BSVDM,2,2,5,A,00000000000,2*38 +\c:1565218808*55\!BSVDM,1,1,,B,13mJh200000PU:RRlmO=G`b:0@4D,0*40 +\c:1565218808*55\!BSVDM,1,1,,A,34cbF4001D0Ep70000,0*5F +\c:1565218808*55\!BSVDM,1,1,,A,13mHAm0P00PjQdDQiS<:KOv@26p0,0*04 +\c:1565218808*55\!BSVDM,1,1,,A,13mC3hWc>>8sOv<0@4G,0*37 +\c:1565218808*55\!BSVDM,1,1,,A,13mI7g00?w1:pprVubtf44T@0<07,0*34 +\c:1565218808*55\!BSVDM,1,1,,A,13o9T>00000jQcDQiRpbLIf00d0T,0*36 +\c:1565218808*55\!BSVDM,1,1,,A,13mNj?00000vIt6W2wK6uGj>00Rp,0*2D +\c:1565218808*55\!BSVDM,1,1,,A,33mRqr50001;godWGU46dG6AP000,0*13 +\c:1565218808*55\!BSVDM,1,1,,A,13lTu4001f1;oE:W:5S9sWf@084K,0*4E +\c:1565218808*55\!BSVDM,1,1,,B,13m4?v>2@4K,0*7A +\c:1565218808*55\!BSVDM,1,1,,A,33nmVp500010`4M,0*67 +\c:1565218808*55\!BSVDM,1,1,,A,13mh3e7P00Pr;tDVeaq1?wv>2H4M,0*31 +\c:1565218808*55\!BSVDM,1,1,,B,13v7vR02ip16UTJW`HhQnQR>06p0,0*5F +\c:1565218808*55\!BSVDM,1,1,,B,13mT2;0000PIQppQf9N@:pD80@4N,0*7A +\c:1565218808*55\!BSVDM,1,1,,B,14cnc8000W0E06p0,0*26 +\g:1-2-9999,c:1565218808*55\!BSVDM,2,1,5,A,53mFAD82Eo;HhE@F220eU=@9DpdE:0TV2222221@3p?4664;09B1C34iRSlQ,0*5D +\g:2-2-9999,c:1565218808*55\!BSVDM,2,2,5,A,1C`88888880,2*12 +\c:1565218808*55\!BSVDM,1,1,,B,13m:0bg`J@0D09,0*02 +\c:1565218808*55\!BSVDM,1,1,,B,13n2AE0P00QIkqF`23A>4?v>20Rk,0*24 +\c:1565218808*55\!BSVDM,1,1,,A,13nB9F7OiD1NJv``>u<`lFn@084T,0*03 +\g:1-2-9999,c:1565218809*54\!BSVDM,2,1,8,A,54QsF8P1prc5K84?v>20S0,0*59 +\c:1565218809*54\!BSVDM,1,1,,A,13m=`b0P00Pt8V:VpD9>4?v>284V,0*31 +\c:1565218809*54\!BSVDM,1,1,,B,13n19n001A0fGBBTf5E7WUr>00S>,0*01 +\c:1565218809*54\!BSVDM,1,1,,A,B3m>Kr003HR06p0,0*7E +\c:1565218809*54\!BSVDM,1,1,,B,34`bWG5000PG7MpS@0G7o2p>0ljr,0*35 +\c:1565218809*54\!BSVDM,1,1,,B,13n4ev00000`OFTTM:suQV0@4l,0*42 +\c:1565218809*54\!BSVDM,1,1,,B,13n0JU?000QBfhBWVlIidbT>06p0,0*48 +\c:1565218809*54\!BSVDM,1,1,,B,13n5Tb001D0cGP4TJ:phw@b@0<0R,0*11 +\c:1565218809*54\!BSVDM,1,1,,A,13mnri0P0016TUJWD2c;agv@0d0C,0*67 +\c:1565218809*54\!BSVDM,1,1,,B,33mVSq0Oh00tU4jV>FHTpD6>00u@,0*76 +\c:1565218809*54\!BSVDM,1,1,,B,13m=Db8000Q0;qnVFq@8SVFB084t,0*55 +\c:1565218809*54\!BSVDM,1,1,,B,13mOjd00001AvkHWiJubR8JB06p0,0*70 +\c:1565218809*54\!BSVDM,1,1,,A,33nBnA50000eunBQhW?cdm0CR000,0*1F +\g:1-2-9999,c:1565218809*54\!BSVDM,2,1,2,A,53nQU`029tRlhMLP0018TL9?P00PdIRbQjRlsegv@26p0,0*3C +\g:1-2-9999,c:1565218809*54\!BSVDM,2,1,2,B,53@of2D2;lsHuEM7:204l4hTF2222222222222169H>83646081S3lSiH888,0*34 +\g:2-2-9999,c:1565218809*54\!BSVDM,2,2,2,B,88888888880,2*3C +\c:1565218809*54\!BSVDM,1,1,,A,13m:QQ00001hpbr`Wr37h7h@0<06,0*6F +\c:1565218809*54\!BSVDM,1,1,,B,33ufeF000B0jNF8QUm4F0m@@01r@,0*61 +\c:1565218809*54\!BSVDM,1,1,,A,13mSw3700p1v4l2`fvOA1AD4i@H4m,0*75 +\g:2-2-9999,c:1565218810*5C\!BSVDM,2,2,8,A,0EPCQiD`880,2*4F +\c:1565218810*5C\!BSVDM,1,1,,A,13mS3c0P00PNIWRSoWDbS1@B00SM,0*52 +\g:1-2-9999,c:1565218811*5D\!BSVDM,2,1,0,A,53m9Q6`00000hKK?;T0dtl4LH`u8B0000000000R10731t0Ht01RDj81PDSD,0*2B +\g:2-2-9999,c:1565218811*5D\!BSVDM,2,2,0,A,h0000000000,2*65 +\c:1565218811*5D\!BSVDM,1,1,,A,13mW=C001?0dI0jVQeN:4onB085I,0*25 +\c:1565218811*5D\!BSVDM,1,1,,A,13nSVR0P000HndB0<0h,0*33 +\c:1565218811*5D\!BSVDM,1,1,,B,13mIe`0P00PpahJUiG37WOvD0@5O,0*43 +\c:1565218811*5D\!BSVDM,1,1,,A,13n5E2001LQ1BtRVuF;<=af>0000,0*0E +\c:1565218811*5D\!BSVDM,1,1,,B,3815;`m0000d3AtQlrv=7IN@0000,0*13 +\c:1565218811*5D\!BSVDM,1,1,,A,13m:Ul000011>EVRVR0=;G>B0FKr,0*7D +\c:1565218811*5D\!ABVDM,1,1,,A,13m`1@0P00PgsTdQqVd6dOv@0006,0*78 +\c:1565218811*5D\!ABVDM,1,1,,B,13mNGc90000gWjRQrLuuE4bD06p0,0*64 +\c:1565218811*5D\!BSVDM,1,1,,B,33A;p>002iPNdVdQ;pNTfSj>07o3,0*21 +\c:1565218811*5D\!BSVDM,1,1,,B,13otmN0000PuS1BV>3=WhkbH0@5w,0*29 +\c:1565218811*5D\!BSVDM,1,1,,B,15@`ST0PA?04:>D0H61,0*6E +\c:1565218811*5D\!BSVDM,1,1,,B,13m;w700000IQghQf9KKopF<00SE,0*72 +\c:1565218811*5D\!BSVDM,1,1,,B,13m@828P000SiNJT?K22222216395::63h0?D3k0DPPDiH,0*2A +\g:2-2-9999,c:1565218811*5D\!BSVDM,2,2,1,A,4LH88888880,2*34 +\c:1565218811*5D\!BSVDM,1,1,,A,33m88lU000PqlrnUilP0PofB0DFr,0*61 +\c:1565218811*5D\!BSVDM,1,1,,B,13mS;p8P00Qo9Sr`WTS>4?vD26p0,0*76 +\c:1565218811*5D\!BSVDM,1,1,,A,13nNb800000EU4vRisG6BU:B0<0h,0*27 +\c:1565218811*5D\!BSVDM,1,1,,A,13mJRh701LPD7tjQefmhcP`D00SN,0*3A +\c:1565218811*5D\!BSVDM,1,1,,A,13n0kv7000QLC=N`0llr4H4F2D0K,0*24 +\c:1565218811*5D\!BSVDM,1,1,,A,13m?4H0OiP0hI2tQht9@VPdF086:,0*16 +\c:1565218811*5D\!BSVDM,1,1,,A,13mM?60P00Q71hRV`E2>4?vD20S8,0*36 +\c:1565218811*5D\!BSVDM,1,1,,B,13m6@o?P?w4?wv0h6@,0*53 +\c:1565218812*5E\!BSVDM,1,1,,B,14`?:f0vjV0GWkBRvGtm=l:B086@,0*64 +\c:1565218812*5E\!BSVDM,1,1,,A,13mB5g0P000tTwFV>FWuswvD06p0,0*7D +\c:1565218812*5E\!BSVDM,1,1,,B,13m9Ur000012c`2W2eSablHB086A,0*36 +\c:1565218812*5E\!BSVDM,1,1,,A,13m69DP0000Fcu8Rb3SHuktB00RG,0*06 +\c:1565218812*5E\!BSVDM,1,1,,B,13nJot001e0Do029GT`Pw?;?V1LE=B0E14?vF20Ra,0*1B +\g:1-2-9999,c:1565218812*5E\!BSVDM,2,1,8,B,53n8cp02?6o`aLpF221=E0E9=0DDB3:22222220t2ru==6400@kSk0Dgg12j,0*57 +\g:2-2-9999,c:1565218812*5E\!BSVDM,2,2,8,B,2D`88888880,2*18 +\c:1565218812*5E\!BSVDM,1,1,,B,13mH@b?000Q4vMHWKdopp@hH00S<,0*38 +\c:1565218812*5E\!ABVDM,1,1,,A,13mlA?7000Pihb@QkMoGSVnH0<0R,0*36 +\c:1565218812*5E\!BSVDM,1,1,,A,13nL=p5Oij0BE1`S;Gla478F0D0T,0*02 +\c:1565218812*5E\!BSVDM,1,1,,A,33mR;25v000HCo4RSuDSdHpGP000,0*32 +\c:1565218812*5E\!BSVDM,1,1,,A,13m9GagP00PWa=lTRs6>4?vF2@6a,0*2C +\c:1565218812*5E\!BSVDM,1,1,,A,13mek;?P000uO?dVw4r4?vD286c,0*50 +\c:1565218812*5E\!BSVDM,1,1,,B,13nET60000PIliLSV`HnLk:J06p0,0*75 +\g:1-2-9999,c:1565218812*5E\!BSVDM,2,1,0,A,53mK?B01mpmHhU@f22184m@TpB2222222222220t28N2:4b>08hSS`888888,0*65 +\g:2-2-9999,c:1565218812*5E\!BSVDM,2,2,0,A,88888888880,2*3D +\c:1565218812*5E\!BSVDM,1,1,,B,13moPA7P000Lc`TSjnqP0?vD06sd,0*3B +\c:1565218812*5E\!BSVDM,1,1,,A,13oEMt?000PsqSjVoobDAhFH06p0,0*5B +\c:1565218812*5E\!BSVDM,1,1,,B,13o7W>30010S@4:bH06p0,0*01 +\c:1565218812*5E\!BSVDM,1,1,,A,33KKdcPqiN0IQ8FQQeWV54nD`0lA,0*5A +\c:1565218812*5E\!BSVDM,1,1,,A,33m?Qc70001nqc0`WIbiQahF02ki,0*4E +\c:1565218812*5E\!BSVDM,1,1,,B,15UmS>0OiR0UGdhQ>LU3NRmp086n,0*13 +\c:1565218812*5E\!BSVDM,1,1,,B,13mL>;5000Q3h`tW4?vH20RT,0*43 +\g:1-2-9999,c:1565218813*5F\!BSVDM,2,1,2,B,53mn4I800000hEU@001=@u8B34000000000000152hI445Wn08hQDQiCP000,0*74 +\g:2-2-9999,c:1565218813*5F\!BSVDM,2,2,2,B,00000000000,2*3C +\c:1565218813*5F\!BSVDM,1,1,,B,13mNHn;000QFpKfWoOTKLV@B06p0,0*4C +\c:1565218813*5F\!BSVDM,1,1,,B,353Vp650000HFf2RSm6:w9JH0000,0*5A +\c:1565218813*5F\!BSVDM,1,1,,B,33mNBV50000SIOdT7AM:=K2H0000,0*56 +\c:1565218813*5F\!BSVDM,1,1,,B,13eFjt0001PMrwpRHJBQLaVD0<01,0*1B +\c:1565218813*5F\!BSVDM,1,1,,B,144j6J300b0hQlhV8;5Pq0ND0<06,0*36 +\c:1565218813*5F\!ABVDM,1,1,,A,13nVeh00000grGpR0CltpFj80D0L,0*5D +\c:1565218813*5F\!BSVDM,1,1,,A,13nB`V00000HDSBRSpTLhlDJ0H7N,0*68 +\c:1565218813*5F\!BSVDM,1,1,,A,13n4137P000FDCpRtts;uOvH00SI,0*07 +\g:1-2-9999,c:1565218813*5F\!BSVDM,2,1,5,A,53mt@u41hKtDhqMN221408F0Der,0*67 +\c:1565218813*5F\!BSVDM,1,1,,B,13ml`c0P0014w;pWKc`;LwvD0@7R,0*5D +\g:1-2-9999,c:1565218813*5F\!BSVDM,2,1,3,B,53m>kg800000hf3G?;UH4htEU@Tp@0000000000N000004@pt7TSlURBh000,0*6D +\g:2-2-9999,c:1565218813*5F\!BSVDM,2,2,3,B,00000000008,2*35 +\c:1565218813*5F\!BSVDM,1,1,,A,13@o`PP525QEwSt>4?vH06p0,0*29 +\c:1565218813*5F\!BSVDM,1,1,,B,1815=GPPAQ0?wJ4R=Nc2R24J0@7U,0*21 +\c:1565218814*58\!BSVDM,1,1,,A,13mjm390001;hT4WG`VIa2:J0@7a,0*05 +\c:1565218814*58\!BSVDM,1,1,,A,33v7c00Oip0NUMvQ;EKTGCRF00IP,0*62 +\c:1565218814*58\!BSVDM,1,1,,B,13mDcG?0000c6vNQd8;JUW8H087e,0*35 +\c:1565218814*58\!BSVDM,1,1,,A,33mrSU700B0KoSvQ:RILF:2J00tP,0*7E +\c:1565218814*58\!BSVDM,1,1,,B,B3mC4e0008L>9E:9vP=oO002;0I1L>QnqMlDkPL087u,0*6B +\c:1565218814*58\!BSVDM,1,1,,A,1DVfvN100d0vFf:dcep20i`L0P00,0*7E +\g:1-2-9999,c:1565218814*58\!AIVDM,2,1,5,A,53mbL0H80,0*53 +\c:1565218814*58\!BSVDM,1,1,,B,13n0qm7P0017jMpWT1UL7OvJ0<7a,0*7F +\c:1565218814*58\!BSVDM,1,1,,B,13ncBf0000PSIwFT7O8>45HJ2H84,0*33 +\c:1565218814*58\!AIVDM,1,1,,B,13oChT00271T5Of`A;LlW3`H0<0E,0*44 +\c:1565218814*58\!BSVDM,1,1,,A,13mAiU0P00PfmpBQmBu>4?vJ2D0;,0*5B +\c:1565218814*58\!BSVDM,1,1,,A,13muCG0P00PO`s`Swe@f4?vJ26p0,0*39 +\c:1565218814*58\!BSVDM,1,1,,B,13m7c;0000PphvpUQdVf41TJ20S>,0*56 +\c:1565218814*58\!BSVDM,1,1,,B,B3mhgn0008?Gl?9giFeUkwVUoP06,0*05 +\c:1565218814*58\!BSVDM,1,1,,B,13mDAv80000VW=JT9;C1C@lL00S9,0*03 +\g:1-2-9999,c:1565218814*58\!BSVDM,2,1,1,A,53oteb02Aa:o=T4N220tJ088>,0*77 +\c:1565218814*58\!BSVDM,1,1,,B,13@3SD000W0P>INPpo8C?2dJ0D06,0*01 +\c:1565218814*58\!BSVDM,1,1,,A,337I6t0vR30lTS4UpBi`oW2J02si,0*7D +\c:1565218814*58\!BSVDM,1,1,,A,13m9ClP000P`D0VTJNvHa70000v@n:VB?TWG8RL088C,0*58 +\g:1-2-9999,c:1565218814*58\!BSVDM,2,1,6,B,53mB@G400000ho;G3T0e8U=@Tp4000000000000N0P82200Ht56000000000,0*73 +\g:2-2-9999,c:1565218814*58\!BSVDM,2,2,6,B,00000000000,2*38 +\c:1565218814*58\!BSVDM,1,1,,B,13mLOm7P00PkI7tU7<`f4?vL20RI,0*1B +\c:1565218814*58\!BSVDM,1,1,,B,19NSCjh01iQjbC4`vbRk5jLJ0D09,0*47 +\c:1565218814*58\!BSVDM,1,1,,A,13u=nOP0000jIL:Qde03dj@N00S<,0*6D +\c:1565218815*59\!ABVDM,1,1,,B,13oHU:00000hi>@R0H9hb@PL2<0u,0*25 +\c:1565218815*59\!BSVDM,1,1,,A,13mI9n?P00PTh?hT:gPN4?vL2@8F,0*30 +\c:1565218815*59\!BSVDM,1,1,,B,137gh:30020@<2`Rj4R:U@vN0<0`,0*36 +\g:1-2-9999,c:1565218815*59\!BSVDM,2,1,8,B,53m=Db400000haHR221<4i@P4llE:2222222221?2073340Ht:2CSQ6D`888,0*39 +\g:2-2-9999,c:1565218815*59\!BSVDM,2,2,8,B,88888888880,2*36 +\c:1565218815*59\!BSVDM,1,1,,B,13nVUt0P1A14Nq:VOARrVgvJ0@8K,0*41 +\g:1-2-9999,c:1565218815*59\!BSVDM,2,1,7,A,53o<<<02=IA6400000000000000,0*2B +\g:2-2-9999,c:1565218815*59\!BSVDM,2,2,7,A,00000000000,2*3A +\c:1565218815*59\!BSVDM,1,1,,A,13m9pb0P00PeRVtTLc@>4?vL2<0=,0*69 +\c:1565218815*59\!BSVDM,1,1,,A,13mqtQ800012gaVW32Pr0P00PoTQpV`h6>4?vL2@8U,0*1D +\c:1565218815*59\!BSVDM,1,1,,A,13m92h7P1@Q3JIVWPJL3sOvL288U,0*41 +\c:1565218815*59\!BSVDM,1,1,,B,13nQ:B00000FiEhRjpV7LIfN0H8`,0*6F +\c:1565218815*59\!BSVDM,1,1,,B,H3m63U04pr1b,0*3C +\c:1565218815*59\!BSVDM,1,1,,B,13m:JGP01IPJV18Pp9MhD@4?vL288f,0*13 +\c:1565218816*5A\!BSVDM,1,1,,B,13m?MR?P000usb9500>0>V=takqVQQOwW5oP06,0*70 +\c:1565218816*5A\!BSVDM,1,1,,A,13mUw;0000Q2gWDW33toiQNJ0H8v,0*18 +\c:1565218816*5A\!BSVDM,1,1,,A,13n1Qc0000Q5>THWOVRv48LN288v,0*36 +\c:1565218816*5A\!BSVDM,1,1,,B,14cpkn001WQ>BKlWt101k1RN0D418N0D0D,0*78 +\c:1565218816*5A\!BSVDM,1,1,,A,13nIJ80Oh;0F6PdRA4Qug;c`dh5I7N20U001l0j3T8QJ42P0@98,0*01 +\g:1-2-9999,c:1565218816*5A\!BSVDM,2,1,4,B,53m;F@000000hgO7CV1@tpqV0l58TF222222220N0`:3340Ht8m31ce=f<><,0*36 +\g:2-2-9999,c:1565218816*5A\!BSVDM,2,2,4,B,Md888888880,2*13 +\c:1565218816*5A\!BSVDM,1,1,,A,13m:KP0000PMuSTSv9e79AVP289:,0*27 +\c:1565218816*5A\!BSVDM,1,1,,A,13m69r0wP00iwtTTt@dEjp0NPD04,0*31 +\c:1565218816*5A\!BSVDM,1,1,,B,13mnaU0000QdEQP`KuOeD7bN0@9:,0*20 +\c:1565218816*5A\!BSVDM,1,1,,B,13mnvB0000PqkC2V5sM0AjlN0D06,0*24 +\c:1565218816*5A\!BSVDM,1,1,,B,13m7Qu00000c6AHQclI;O2@P0@9;,0*1F +\c:1565218816*5A\!BSVDM,1,1,,A,13maq;7000Q51StWKWOrU::J06p0,0*21 +\c:1565218816*5A\!BSVDM,1,1,,A,13Qg1H002N0CTFLRped7B5lL06p0,0*26 +\c:1565218816*5A\!BSVDM,1,1,,B,B3mhnO00005sDN8NAjP03wWUkP06,0*63 +\c:1565218816*5A\!BSVDM,1,1,,A,13m9gNS000POWCDStCiEK1fL06p0,0*32 +\c:1565218816*5A\!BSVDM,1,1,,B,13P;@@k0000AqMDS66jA10lL0`9k,0*5C +\g:1-2-9999,c:1565218816*5A\!BSVDM,2,1,8,A,53m:m8026G3PhITV2210P00Pj7MlQiwE>4?vN2D0<,0*1D +\c:1565218816*5A\!BSVDM,1,1,,B,13nP?d002H0fb>JTgLQ8VVrJ089B,0*3C +\c:1565218816*5A\!BSVDM,1,1,,A,13mBbn501aPSsUnQ;iC9gohP20Rg,0*7E +\c:1565218816*5A\!BSVDM,1,1,,B,13mRLW00000NIIPSoo@MWnFP0<0v,0*0F +\g:1-2-9999,c:1565218816*5A\!BSVDM,2,1,5,A,53oOBn01t4olh`8@000qT8t0000000000000000N68D76400000000000000,0*59 +\g:2-2-9999,c:1565218816*5A\!BSVDM,2,2,5,A,00000000000,2*38 +\g:1-2-9999,c:1565218816*5A\!BSVDM,2,1,5,A,53mQSv82F;4@hHQ22218tp`60EQ0hu8E:222221620n4>4rdR7`888888888,0*0F +\g:2-2-9999,c:1565218816*5A\!BSVDM,2,2,5,A,88888888880,2*38 +\g:1-2-9999,c:1565218816*5A\!BSVDM,2,1,1,A,53@oGOP25Hv0uT9;:20hThhM9DpB22222222221<1`:455dR05hQBjjPDURB,0*1B +\g:2-2-9999,c:1565218816*5A\!BSVDM,2,2,1,A,p8888888880,2*74 +\c:1565218816*5A\!BSVDM,1,1,,B,13m==??000Pw`>pVTOAAFlVN2<0=,0*16 +\c:1565218817*5B\!BSVDM,1,1,,B,13m6;50P00PG5ndSKNi:>wvL0<0R,0*3B +\c:1565218817*5B\!BSVDM,1,1,,A,34cnGV0Oi60U3r4V4?vN20Sn,0*0F +\c:1565218817*5B\!BSVDM,1,1,,A,33mTeR7P@:PWow8QEGcpD9NR00s0,0*69 +\c:1565218817*5B\!BSVDM,1,1,,B,13m;:s?000PEOAjS0FVv41jP20SM,0*79 +\c:1565218817*5B\!BSVDM,1,1,,B,33mMFL00000QUJ6RwgD0Jn>N0000,0*3C +\c:1565218817*5B\!BSVDM,1,1,,A,13mR280P0APe>g4Vk3VRKgvP20Rq,0*60 +\c:1565218817*5B\!BSVDM,1,1,,A,13A23D0v1dP@d`rRpF0DFkDN0D0C,0*7C +\g:1-2-9999,c:1565218817*5B\!BSVDM,2,1,4,A,53m6ir400000aL4t000dpn1HTdDp00000000000S0`H264rdR08000000000,0*27 +\g:2-2-9999,c:1565218817*5B\!BSVDM,2,2,4,A,00000000000,2*39 +\c:1565218817*5B\!BSVDM,1,1,,B,13mALf00011JcR50000GwbPR715GuFbR0Dir,0*28 +\g:1-2-9999,c:1565218817*5B\!BSVDM,2,1,8,A,53mB3j823JA`h5HR220E8iV2222222222222220N20:344000:3SlU24i@H8,0*58 +\g:2-2-9999,c:1565218817*5B\!BSVDM,2,2,8,A,88888888880,2*35 +\g:1-2-9999,c:1565218817*5B\!ABVDM,2,1,9,B,53n=Mv400000hq4:221LN,0*5E +\g:2-2-9999,c:1565218817*5B\!BSVDM,2,2,3,A,00?w0J4W0R;K1N48@P0p9s,0*68 +\c:1565218817*5B\!BSVDM,1,1,,A,13mS1f000309w9fR=fnVP:DR20Sm,0*07 +\c:1565218818*54\!BSVDM,1,1,,B,13mjD?00000qaQ`UvQ<>40lP06p0,0*5D +\c:1565218818*54\!BSVDM,1,1,,A,13mmnk7000QE6=fWuLt0AVnL0@:1,0*22 +\c:1565218818*54\!BSVDM,1,1,,A,13mF3a0P000tnU00000ERjrRirk5vG:P0@:6,0*68 +\c:1565218818*54\!BSVDM,1,1,,A,13nVqN0000Q4G7tWGACmW`VT0D00,0*65 +\g:1-2-9999,c:1565218818*54\!BSVDM,2,1,9,A,54hB`;80?LMm`LDC<00DiU22222222220n1p7457000000h4hb221A9Di>222222222222220m0P:2263F00:u=p>MN>L<,0*7D +\g:2-2-9999,c:1565218818*54\!BSVDM,2,2,1,B,=eH88888880,2*17 +\c:1565218818*54\!ABVDM,1,1,,A,13uCJ:0000PjHTnQd`SsO3RT06p0,0*68 +\c:1565218818*54\!BSVDM,1,1,,A,13nFut00000ldH@TpH?lj4jT28:M,0*06 +\c:1565218818*54\!BSVDM,1,1,,B,B3m8;Q00485j9T8LCIqMsw`UoP06,0*06 +\c:1565218818*54\!BSVDM,1,1,,A,33m9LaU0000H64DR>e3sQ20P0DqJ,0*18 +\c:1565218818*54\!BSVDM,1,1,,A,13:AGr0tinRA7Ar`R`RL89bR2L01,0*25 +\c:1565218818*54\!BSVDM,1,1,,B,13m6tn70080>:44RHw;bOQjT00Rq,0*73 +\c:1565218818*54\!BSVDM,1,1,,B,13mbDr0000Q2gUpW31b=m96P0<0k,0*49 +\c:1565218818*54\!BSVDM,1,1,,A,13mSc8?P0019nvjWblFh0?vR06p0,0*57 +\c:1565218818*54\!BSVDM,1,1,,A,13nOhL00001AvhlWiOl;Fn6R06p0,0*16 +\c:1565218818*54\!BSVDM,1,1,,A,13ml5r0Oh00rwf2Uwu7VU5@R0Vp0,0*5F +\c:1565218818*54\!BSVDM,1,1,,A,13m,0*75 +\c:1565218818*54\!BSVDM,1,1,,A,13ng4r00001:2;JWFLcf492T0<08,0*0D +\c:1565218818*54\!BSVDM,1,1,,B,13f2cR001P0HMC4QUVR>0K4T0D0w,0*6E +\c:1565218818*54\!BSVDM,1,1,,A,13n60000000mfrRU?U0=nETT0D0G,0*64 +\c:1565218818*54\!BSVDM,1,1,,A,13m;jjU7HbJQgvT0H:`,0*72 +\c:1565218819*55\!AIVDM,1,1,,B,146dg`0P00286St`JlE58OvT0@:W,0*70 +\c:1565218819*55\!BSVDM,1,1,,B,13LIJ600@0151OvWKUSl56RP08Ab,0*67 +\c:1565218819*55\!BSVDM,1,1,,B,13AOqN001G0Je`HSq`1AQ104AVPOFqTT9vi8RG0P2H:b,0*62 +\c:1565218819*55\!BSVDM,1,1,,B,13oTnD80000HWFBRJe9<1VPV06p0,0*53 +\c:1565218819*55\!BSVDM,1,1,,A,13m6Aha0000MSgjSq5jDMmtR06p0,0*44 +\c:1565218819*55\!BSVDM,1,1,,A,13o=mb00001BJDhWn=700GPJDR:T:;=Ij7fV0L0:,0*11 +\c:1565218819*55\!BSVDM,1,1,,B,13nUg@;0000HDmhRSn57ShHR08:f,0*08 +\c:1565218819*55\!BSVDM,1,1,,B,13m:a;0000PgnBFQkaO2iRAh0l0K,0*7D +\c:1565218819*55\!BSVDM,1,1,,A,13uKDE0P0g0k8EJQfCJH=?vR0p:i,0*1A +\c:1565218819*55\!BSVDM,1,1,,B,148ct@0PAj1jl5Va34r95WBV08:i,0*49 +\c:1565218819*55\!BSVDM,1,1,,A,13mAA00wP00SW@dT6sOQG`LP00Ra,0*50 +\c:1565218819*55\!BSVDM,1,1,,B,13m9E<00010soADV92>mt7TV06p0,0*32 +\c:1565218819*55\!BSVDM,1,1,,B,13nrGT001O0ASH@RqkQ4A3FP88:n,0*78 +\c:1565218819*55\!BSVDM,1,1,,B,13m6G<00000hk7LU6NE5`r6R0d03,0*2A +\c:1565218819*55\!BSVDM,1,1,,A,13mwkQ00001F5BbWwUI4nIpT0D0D,0*74 +\c:1565218819*55\!BSVDM,1,1,,B,13mQ:v?P000LMG@ShdT0VJ>4?vT20R9,0*7D +\c:1565218819*55\!BSVDM,1,1,,A,14S>GN001V0LKcFQBNI5?44F00S7,0*17 +\c:1565218819*55\!BSVDM,1,1,,A,33mGSF001CPJBdrQgcnC9jNT21t@,0*3A +\c:1565218819*55\!BSVDM,1,1,,B,13mEV2?P000uv>hVtoPWNwvT26p0,0*6D +\c:1565218819*55\!BSVDM,1,1,,B,13mR?kuaJ?vT26p0,0*54 +\c:1565218819*55\!BSVDM,1,1,,B,13mLUW00000d99j700E0@8IpSlEK4NCJV0H;8,0*52 +\c:1565218819*55\!BSVDM,1,1,,A,13nVJ>0P010IdB0dqEB0PtDn22222220k1`8334rdR53FCw?PSn88,0*41 +\g:2-2-9999,c:1565218820*5F\!BSVDM,2,2,3,B,88888888880,2*3D +\c:1565218820*5F\!BSVDM,1,1,,A,13makD0026PFjtPRW9:6?E2T08;A,0*1C +\c:1565218820*5F\!BSVDM,1,1,,A,13n1hQ?P000r;HvVedV58gvV06p0,0*7E +\c:1565218820*5F\!BSVDM,1,1,,A,13mF=J00001FmjQjVL00:HR0DNr,0*55 +\c:1565218820*5F\!BSVDM,1,1,,B,34cdn>000j0Fek8Qv9UVu5RT00w0,0*6A +\c:1565218820*5F\!BSVDM,1,1,,A,13mSOJ0P000GnIvQsUUh0?vV08;G,0*51 +\g:1-2-9999,c:1565218820*5F\!BSVDM,2,1,6,A,537gPR0252gsD8Hs>20dEV1=@5:222222222221@8P7766450:SSp4mQp888,0*10 +\g:2-2-9999,c:1565218820*5F\!BSVDM,2,2,6,A,88888888880,2*3B +\c:1565218820*5F\!BSVDM,1,1,,B,13md`u0P00PoL68V`Bl>4?vV28;I,0*4A +\c:1565218820*5F\!BSVDM,1,1,,B,13mILQ0P01PWSJ8TS6:eIgvV2D0?,0*59 +\g:1-2-9999,c:1565218820*5F\!BSVDM,2,1,5,A,53mme242BukamGdTVVP000,0*7B +\c:1565218820*5F\!BSVDM,1,1,,A,34Vwdj50001FkT>WnVhHgF2`0000,0*58 +\c:1565218820*5F\!ABVDM,1,1,,A,13oPQh<00fPgbwtR7HE0b@VV08;T,0*38 +\g:1-2-9999,c:1565218820*5F\!BSVDM,2,1,7,B,53ojU>42CHcHhM0F220H5:1`NnPHUFnT0<0E,0*5E +\g:1-2-9999,c:1565218820*5F\!BSVDM,2,1,3,A,53n@@@01iLIhh4qN220DTLDpE>2222222222220N2H94240Ht>E1C8<<==p>,0*1E +\g:2-2-9999,c:1565218820*5F\!BSVDM,2,2,3,A,MMt>LLep880,2*61 +\c:1565218820*5F\!BSVDM,1,1,,A,33mme250000HG@TRSgL5ekp`0DPr,0*11 +\c:1565218820*5F\!BSVDM,1,1,,B,13mS@T0000PoHFvV3AB;wVjR0H;e,0*31 +\c:1565218820*5F\!BSVDM,1,1,,A,13m6tW7P00Pj5Q0U9?T>4?vV28;f,0*09 +\c:1565218820*5F\!AIVDM,1,1,,A,13mvWF?000R85W<`JhNGsSRR00SD,0*69 +\c:1565218820*5F\!BSVDM,1,1,,A,33n9dE50000HGqvRSg9SIkN`0Dwr,0*05 +\g:1-2-9999,c:1565218820*5F\!BSVDM,2,1,4,B,53n9dE42?0O4hqM>2219TLE8=9DUbU7>TAjOv`2<0K,0*57 +\c:1565218821*5E\!BSVDM,1,1,,B,H3mOE50hU0Dhh40000000000000,2*6A +\g:1-2-9999,c:1565218821*5E\!BSVDM,2,1,8,B,53m@fI800000hgS3W<1@tpqT000000000000000N0H722t00000000000000,0*1A +\g:2-2-9999,c:1565218821*5E\!BSVDM,2,2,8,B,00000000000,2*36 +\g:1-2-9999,c:1565218821*5E\!BSVDM,2,1,8,A,53oE:J82EjDlhDmJ220HU8@60HTLQ@E:2222221618I554rdR08888888888,0*34 +\g:2-2-9999,c:1565218821*5E\!BSVDM,2,2,8,A,88888888880,2*35 +\c:1565218821*5E\!BSVDM,1,1,,B,13olR>001O0Gso>R0PB=qK:`06p0,0*11 +\c:1565218821*5E\!BSVDM,1,1,,B,13mbsU0000PgeL`TCBaP05P`26p0,0*7C +\c:1565218821*5E\!BSVDM,1,1,,B,13n@gP?0000EUO4Rj0fJjBvb2@001D2:SCH`Me7:`pdV0@SUgPprTPV0D0P,0*6F +\g:1-2-9999,c:1565218821*5E\!BSVDM,2,1,8,B,53mB3S000000hgW7;J1,0*77 +\c:1565218821*5E\!BSVDM,1,1,,B,13m6d30P000omTbUMbf>3?v`08Faugs2d28b0PAC14c;0WKu4ELl>b0000,0*33 +\c:1565218821*5E\!BSVDM,1,1,,B,13natj00000J3CJSc5JV`nvb0<0T,0*04 +\c:1565218821*5E\!BSVDM,1,1,,A,13mEVF001T19;0jd08WRqmqc7jd00S=,0*0D +\c:1565218821*5E\!BSVDM,1,1,,B,13mvn<0P00PlMhtU9muv4?vb28GP0000gdpJTCFUBm5pb201R,0*67 +\c:1565218821*5E\!BSVDM,1,1,,B,H3m;@I1=A85DmH4E8TpL0000000,2*2A +\c:1565218821*5E\!BSVDM,1,1,,B,13ml5Q70000ihSPQkN=ssngp0h000CPg0MrQBf0IhGpd06p0,0*5D +\c:1565218821*5E\!BSVDM,1,1,,A,13BIdd90030P4;BPbPu166nd0<08,0*39 +\g:1-2-9999,c:1565218821*5E\!BSVDM,2,1,3,A,53m;cU000000hO;3;R10Thu@8t5B0P44`622220j186226fi0620CCADQQDm,0*5E +\g:2-2-9999,c:1565218821*5E\!BSVDM,2,2,3,A,88888888880,2*3E +\c:1565218821*5E\!BSVDM,1,1,,A,13n9Hk00001`eej`?:gd?2Nd26p0,0*77 +\c:1565218821*5E\!BSVDM,1,1,,A,13n@D:0u@;0EhKDQ?vo0Bjtb0L0E,0*31 +\c:1565218821*5E\!BSVDM,1,1,,B,13nT9d701@0FG:FRe2;uMrfd06p0,0*52 +\c:1565218822*5D\!BSVDM,1,1,,B,33o8iL5P000KGp>QL3Hb08kg00000iFRpU9A3:wEBb0<02,0*67 +\c:1565218822*5D\!BSVDM,1,1,,B,13mU5G0P000gb74?vb00Sa,0*67 +\c:1565218822*5D\!BSVDM,1,1,,A,13m=Jc7P00PlRm6U:8I>4?vb2L0P,0*37 +\c:1565218822*5D\!BSVDM,1,1,,A,13m,0*69 +\c:1565218822*5D\!BSVDM,1,1,,B,33oa3n5P000HGNRRBq`Ma?vb0000,0*2F +\c:1565218822*5D\!BSVDM,1,1,,B,13m7cp0P00PP53TT1@u>4?vb2HAFd00Sg,0*40 +\g:1-2-9999,c:1565218822*5D\!BSVDM,2,1,9,B,53mJkt01aNQ8hHHh000pT@58u<0000000000000t2H@46400051hDU1CcDm3,0*61 +\g:2-2-9999,c:1565218822*5D\!BSVDM,2,2,9,B,lQSlkP@0000,2*7E +\c:1565218822*5D\!BSVDM,1,1,,B,13m65kPP00PHBPhSSvr@0?vb2D0<,0*7C +\c:1565218822*5D\!BSVDM,1,1,,A,13nBt8501KPVl`>T1lBCKjjj080L`E9B1LThPDhm?7P0012=elWFc?cG?vb00S@,0*3E +\c:1565218822*5D\!BSVDM,1,1,,B,38JrFl5P010FuM4RTO@6fwv`0000,0*03 +\c:1565218822*5D\!BSVDM,1,1,,A,13df=B001j0E3HlSb>v1@16b0D0C,0*13 +\c:1565218823*5C\!BSVDM,1,1,,A,13mIwV00000G`mLRIN5M=B2b084?vb26p0,0*21 +\c:1565218823*5C\!BSVDM,1,1,,A,13mljL0w1S0DE@4Rm;MSkCJd00Sg,0*52 +\c:1565218823*5C\!BSVDM,1,1,,A,13m;7;000011jsBVP9gJSW2d0<0S,0*13 +\c:1565218823*5C\!BSVDM,1,1,,A,13lB62002HPI;=jQc5cQkiLV06p0,0*73 +\c:1565218823*5C\!BSVDM,1,1,,A,13mJE52000Pv806VvqlpJn`V08=3,0*29 +\c:1565218823*5C\!BSVDM,1,1,,A,13mP9l7P0115?90WOaV=ngvb26p0,0*4A +\c:1565218823*5C\!BSVDM,1,1,,A,13oI8D0P00PvA3nVB??@0?vf26p0,0*32 +\c:1565218823*5C\!BSVDM,1,1,,A,13eG6N001U0b9hBTkdK`nG2b08=8,0*46 +\c:1565218823*5C\!BSVDM,1,1,,B,13oPE@00000LLh>SQ?h9ID2d0<0;,0*52 +\c:1565218823*5C\!BSVDM,1,1,,A,13m9LuP02c0HJWdREfnupK6b0<1s,0*2B +\c:1565218823*5C\!BSVDM,1,1,,B,13naa@00000G?RfRq8L0gkLd08=>,0*24 +\c:1565218823*5C\!BSVDM,1,1,,B,34i4b85000PL:HTSbj4>4?vd20S<,0*58 +\c:1565218823*5C\!BSVDM,1,1,,B,13m?:?60000uNO6Vw3h<1s02;q3PheMb220L58@5:22222222222220N60G674rdRD5R1`0j82Ob`@kW7EF:b0<0W,0*39 +\c:1565218823*5C\!BSVDM,1,1,,A,13n6fp001K0RBmdlHb0D0R,0*28 +\c:1565218823*5C\!BSVDM,1,1,,A,13nUBHgP00PkhgVU9:ON4?vd28=M,0*6D +\c:1565218823*5C\!BSVDM,1,1,,A,13m??e0P00Pp<4LUhu@N4?vd2<0W,0*07 +\g:1-2-9999,c:1565218823*5C\!BSVDM,2,1,4,A,53c9Wj81iIni094f2210h4p222222222220t2i42<63l0=33kQnA@DPV,0*47 +\g:2-2-9999,c:1565218823*5C\!BSVDM,2,2,4,A,AC`88888880,2*63 +\g:1-2-9999,c:1565218823*5C\!BSVDM,2,1,5,A,53oNsJ01pq8lh`HN2210th58H4pM=B22222222002P84440Ht00000000000,0*31 +\g:2-2-9999,c:1565218823*5C\!BSVDM,2,2,5,A,00000000000,2*38 +\c:1565218823*5C\!BSVDM,1,1,,B,13m7AFW0010HqvVQnl;87rLb0D0N,0*1D +\c:1565218823*5C\!BSVDM,1,1,,B,13ma6j00000GWC@R>ffb2T>f2L0I,0*7A +\c:1565218823*5C\!BSVDM,1,1,,A,13m=V`0P00PO42hQ?21>4?vd28=S,0*64 +\g:1-2-9999,c:1565218823*5C\!BSVDM,2,1,4,B,53n>Vj020IV4aM0v221=@4AB1RRILtc@bph0<0r,0*65 +\c:1565218823*5C\!BSVDM,1,1,,B,13LGh`00090>mlRRdQhdmKDE`0000,0*6E +\c:1565218823*5C\!BSVDM,1,1,,A,13mJHc00?w46Wv0d0<,0*18 +\c:1565218823*5C\!BSVDM,1,1,,A,13mE>r0P@50hjBNR@S5dRQ2h0<2F,0*43 +\c:1565218823*5C\!BSVDM,1,1,,B,13m;;e?P000oD78V388Au?vf2<0F,0*4B +\c:1565218823*5C\!BSVDM,1,1,,B,13m@:d00180F5bnRfeJ6@Tvh08=e,0*7C +\c:1565218823*5C\!BSVDM,1,1,,B,13mQgd?0000GQhTSMutbfrJh00S=,0*31 +\c:1565218823*5C\!BSVDM,1,1,,B,13m;PJ?P0025:K>`Rp=cvOvh2@=h,0*49 +\g:1-2-9999,c:1565218824*5B\!BSVDM,2,1,1,A,53mAFS400000ho;3SD1<`thUH00000000000000N1@52340Ht00000000000,0*41 +\g:2-2-9999,c:1565218824*5B\!BSVDM,2,2,1,A,00000000000,2*3C +\c:1565218824*5B\!BSVDM,1,1,,B,13:WiP02280hnGLQW09FL58d0L0:,0*45 +\c:1565218824*5B\!BSVDM,1,1,,B,13uNmu0000Pk8gnQf5dK4VHd0<0K,0*03 +\c:1565218825*5A\!BSVDM,1,1,,A,13m7sK00000jSTRURSk;;2?vd0H=v,0*64 +\c:1565218825*5A\!BSVDM,1,1,,B,13eRI8001n0lwMTV0?b8K6jf06p0,0*21 +\c:1565218825*5A\!AIVDM,1,1,,A,13m7qj7000R7t2B`JGK0522`08=u,0*00 +\c:1565218825*5A\!BSVDM,1,1,,B,13oLvJ0P000H6@vQwlh;Hgvh0H>0,0*67 +\c:1565218825*5A\!BSVDM,1,1,,B,13mPcE00000sWh:Vn<TlQge3,0*21 +\c:1565218825*5A\!BSVDM,1,1,,B,13m?447P000uui@Vtmv;agvf08>3,0*03 +\c:1565218825*5A\!BSVDM,1,1,,A,13m;Pk00000tRVbVuN6s0Hlh0H>5,0*55 +\c:1565218825*5A\!BSVDM,1,1,,A,13n:pP70001@oKlWjhb4?wv0h>:,0*70 +\c:1565218825*5A\!BSVDM,1,1,,B,13m=,0*0C +\c:1565218825*5A\!BSVDM,1,1,,A,13nv=b30000G1MLRqq0=m7jp08>>,0*29 +\c:1565218825*5A\!BSVDM,1,1,,A,33n95A5001PJ@T:QgaEc@h4?vh2<0B,0*00 +\c:1565218826*59\!BSVDM,1,1,,A,33nHGj500011kv2VP2waFG6h0000,0*63 +\g:1-2-9999,c:1565218826*59\!BSVDM,2,1,9,A,53nnUH42CL?Hh@MV2219TIThdF2222222222220t7`v;771@0>Tm0EPCQiD`,0*3A +\g:2-2-9999,c:1565218826*59\!BSVDM,2,2,9,A,88888888880,2*34 +\c:1565218826*59\!BSVDM,1,1,,A,13nQU`002IPnlV0UG0k0whnf00S?,0*7A +\c:1565218826*59\!BSVDM,1,1,,A,33nH<450001bjPl`2codwaBj0DpJ,0*5B +\c:1565218826*59\!BSVDM,1,1,,B,13mEP60000Pkt<@Tw6C8uWnd0@>`,0*2B +\c:1565218826*59\!BSVDM,1,1,,B,13m7v7SP0>0Ggr0S`=npawvj20S<,0*0D +\c:1565218826*59\!BSVDM,1,1,,A,13mBjb000V1NcljbWpv0;PHj0L04,0*54 +\c:1565218826*59\!BSVDM,1,1,,A,33m@k00P00PkQ4?vh207C,0*59 +\g:1-2-9999,c:1565218826*59\!BSVDM,2,1,5,B,53m?S`026G?`h@T7>2059@DlU>05@PDpF222220:2i5A162k0BQS3lSp3SlU,0*42 +\g:2-2-9999,c:1565218826*59\!BSVDM,2,2,5,B,hFH88888880,2*65 +\c:1565218826*59\!BSVDM,1,1,,B,13mrWp0000PLuVhSeau1?0rd00Rl,0*65 +\c:1565218826*59\!BSVDM,1,1,,A,13ol2v0wj20BD?HSueqG4Ubh00Sb,0*0B +\c:1565218826*59\!BSVDM,1,1,,A,13mpJo?000PuNbnVw3gM2`Jj06p0,0*61 +\c:1565218826*59\!BSVDM,1,1,,A,13mQRk7P00Qa5@R`52W>4?vj26p0,0*15 +\c:1565218826*59\!BSVDM,1,1,,A,376s5`5000PG4FtRk;0=HqFb0Dg:,0*04 +\c:1565218826*59\!BSVDM,1,1,,A,13o9wT00001;fmjWGlL9@R6hR0SQ,0*06 +\c:1565218826*59\!BSVDM,1,1,,B,13m>?@?P000LeV@SmuSbHOvj00S6,0*76 +\c:1565218826*59\!BSVDM,1,1,,B,13oL3l00000G`MdRRjWen?w6`0Ra,0*57 +\c:1565218826*59\!BSVDM,1,1,,A,13mHr97P0017jC2WT1f7@wvh08>l,0*39 +\c:1565218826*59\!BSVDM,1,1,,A,13mcbn0P02PG9j6Rjin:SOvj2<0e,0*71 +\c:1565218827*58\!BSVDM,1,1,,A,13n0Wo00000FWR6RjOjRR1o,0*23 +\c:1565218827*58\!BSVDM,1,1,,B,13mERL700>PL`lHlpWL8EKJVpl0<0V,0*58 +\c:1565218827*58\!BSVDM,1,1,,A,15AvOT001uPqQW0WPwH`mG:40<0J,0*4E +\g:1-2-9999,c:1565218827*58\!BSVDM,2,1,0,A,53nKrF01lSOLhLqW<01n2Qh02m>4:l0Deb,0*56 +\c:1565218827*58\!BSVDM,1,1,,B,13mBwe0P00Pa6:6THmB>4?vj2<0G,0*0B +\c:1565218827*58\!BSVDM,1,1,,A,13o4oL001I1B65@Ws:kI7WBl0H?2,0*0A +\c:1565218827*58\!AIVDM,1,1,,B,13oB7670001VE6f`;ubL`Jvj00S3,0*28 +\c:1565218827*58\!BSVDM,1,1,,A,13nAV<000011jGBVPSgdw0eJdh00Ru,0*4B +\g:1-2-9999,c:1565218827*58\!BSVDM,2,1,8,A,53m@k0800000hgG7C014?vj2<02,0*00 +\c:1565218827*58\!BSVDM,1,1,,B,144fTo001i2;59V`15TR`2:j0<0G,0*40 +\c:1565218827*58\!BSVDM,1,1,,B,33m8lkP000PGOCPR6t07;bBj007C,0*57 +\c:1565218827*58\!BSVDM,1,1,,A,13maen0P00PF7:>Rn>0SfVBPuuT3@jHh00MS,0*11 +\c:1565218827*58\!BSVDM,1,1,,B,13mVqi?000QE=tTWrUOrq`6j0<08,0*1F +\c:1565218827*58\!BSVDM,1,1,,B,13mkmq70000iiD>QkQ8LK6rl00Rk,0*2C +\c:1565218827*58\!BSVDM,1,1,,B,13m9tJ0P00PtRfVVuMA>4?vj26p0,0*30 +\c:1565218827*58\!BSVDM,1,1,,B,13m:vb001iPaguHQ7h31@i4h0<0A,0*4A +\g:1-2-9999,c:1565218827*58\!BSVDM,2,1,2,A,53o;IJ41mTLlhLpL000P5DLDHU21HUHF0h61HTF222222220U2P`6620d08hDQCQ0C888,0*59 +\g:2-2-9999,c:1565218827*58\!BSVDM,2,2,2,B,88888888880,2*3C +\c:1565218827*58\!BSVDM,1,1,,B,13m9LfP0000HmaNRJWiPjPpj08?J,0*31 +\c:1565218827*58\!BSVDM,1,1,,A,13mFAD001d1E9i`WjmTIf7hh0<13,0*10 +\c:1565218827*58\!BSVDM,1,1,,A,13oqBr701B1SeF0`BPvjj2JT08?K,0*42 +\g:1-2-9999,c:1565218827*58\!BSVDM,2,1,6,A,58L9hn025kpcUKSGKT0 + + + + + Exe + false + + + + + PreserveNewest + + + + + + + + + + + + + + + + diff --git a/Solutions/Ais.Net.Benchmarks/AisNetBenchmarks.cs b/Solutions/Ais.Net.Benchmarks/AisNetBenchmarks.cs new file mode 100644 index 0000000..9450b9a --- /dev/null +++ b/Solutions/Ais.Net.Benchmarks/AisNetBenchmarks.cs @@ -0,0 +1,76 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +namespace Ais.Net.Benchmarks +{ + using System.IO; + using System.Threading.Tasks; + using BenchmarkDotNet.Attributes; + + /// + /// Defines all of the benchmarks and global setup/teardown. + /// + [JsonExporterAttribute.Full] + public class AisNetBenchmarks + { + private const string TestPath1kLines = "TestData/Ais1000Lines.nm4"; + private const string TestPath1mLines = "TestData/Ais1000000Lines.nm4"; + + /// + /// Invoked by BenchmarkDotNet before running all benchmarks. + /// + [GlobalSetup] + public void GlobalSetup() + { + // We have 1000 lines of real test data to provide a realistic mix of messages. + // However, this is too small to get a good measurement of the per-message overhead, + // because the per-execution overheads are a significant proportion of the whole at + // that size. + // For example, on an Intel Core i9-9900K CPU 3.60GHz, the InspectMessageType test + // processes a 1000-message file in about 510us, suggesting a per-message cost of + // about 510ns. However, if we run the exact same test against a 1,000,000 message + // file, it takes about 340ms, suggesting a per-message cost of just 340ns. So by + // measuring over 1,000 messages, we get a reading that's 50% higher than we do at + // 1M. (We get similar results at 10M, so 1M seems to be sufficient. 100K might also + // be enough, but it's easier to read the results when we multiple things up three + // orders of magnitude at a time: it means that test times in ms correspond to + // per-message times in ns.) + string[] testFileLines = File.ReadAllLines(TestPath1kLines); + using (var f = new StreamWriter(TestPath1mLines)) + { + for (int i = 0; i < 1000; ++i) + { + foreach (string line in testFileLines) + { + f.WriteLine(line); + } + } + } + } + + /// + /// Invoked by BenchmarkDotNet after running all benchmarks. + /// + [GlobalCleanup] + public void GlobalCleanup() + { + File.Delete(TestPath1mLines); + } + + /// + /// Benchmark: measure the speed at which we can perform the most minimal amount of + /// processing of messages in a file. + /// + /// A task that completes when the benchmark has finished. + [Benchmark] + public Task InspectMessageTypesFromNorwayFile1M() => InspectMessageType.ProcessMessagesFromFile(TestPath1mLines); + + /// + /// Benchmark: measure the speed at which we can read location data from message in a file. + /// + /// A task that completes when the benchmark has finished. + [Benchmark] + public Task ReadPositionsFromNorwayFile1M() => ReadAllPositions.ProcessMessagesFromFile(TestPath1mLines); + } +} diff --git a/Solutions/Ais.Net.Benchmarks/InspectMessageType.cs b/Solutions/Ais.Net.Benchmarks/InspectMessageType.cs new file mode 100644 index 0000000..c6c565c --- /dev/null +++ b/Solutions/Ais.Net.Benchmarks/InspectMessageType.cs @@ -0,0 +1,50 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +namespace Ais.Net.Benchmarks +{ + using System; + using System.Threading.Tasks; + + /// + /// Benchmark that measures how quickly we can read messages from a file and discover their + /// types. + /// + internal static class InspectMessageType + { + private static readonly TestProcessor Processor = new TestProcessor(); + + /// + /// Execute the benchmark. + /// + /// The file from which to read messages. + /// A task that completes when the benchmark has finished. + public static async Task ProcessMessagesFromFile(string path) + { + await NmeaStreamParser.ParseFileAsync(path, Processor).ConfigureAwait(false); + } + + private class TestProcessor : INmeaAisMessageStreamProcessor + { + private readonly int[] messageTypeCounts = new int[30]; + + public void OnCompleted() + { + } + + public void OnNext(in NmeaLineParser firstLine, in ReadOnlySpan asciiPayload, uint padding) + { + int type = NmeaPayloadParser.PeekMessageType(asciiPayload, padding); + if (type < this.messageTypeCounts.Length) + { + this.messageTypeCounts[type] += 1; + } + } + + public void Progress(bool done, int totalNmeaLines, int totalAisMessages, int totalTicks, int nmeaLinesSinceLastUpdate, int aisMessagesSinceLastUpdate, int ticksSinceLastUpdate) + { + } + } + } +} diff --git a/Solutions/Ais.Net.Benchmarks/Program.cs b/Solutions/Ais.Net.Benchmarks/Program.cs new file mode 100644 index 0000000..0969c83 --- /dev/null +++ b/Solutions/Ais.Net.Benchmarks/Program.cs @@ -0,0 +1,60 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +namespace Ais.Net.Benchmarks +{ + using System.IO; + using BenchmarkDotNet.Configs; + using BenchmarkDotNet.Diagnosers; + using BenchmarkDotNet.Jobs; + using BenchmarkDotNet.Running; + + /// + /// Program entry point type. + /// + internal static class Program + { + /// + /// Program entry point. + /// + /// Command line arguments. + /// + ///

+ /// When running in an Azure DevOps pipeline, a couple of things can go wrong with BenchmarkDotNet. + /// First, by default it puts its output into a path relative to the current working directory, + /// which will often be some way further up the folder hierarchy than we want. Second, the components + /// under test will have been built with a /p:Version=x.y.z argument, setting the version number to + /// whatever the build process has determined it should be. That can be problematic because + /// BenchmarkDotNet rebuilds various elements for each benchmark, meaning everything would default back + /// to v1.0.0.0. However, that seems to cause problems because the hosting benchmark project will + /// have been build against the correct version number. This shouldn't be a problem because the + /// benchmarks all run isolated, but weirdly, we get an error *after* the benchmarking is complete, + /// causing this hosting program to exit with an error. + ///

+ ///

+ /// To fix these problems, this application accepts two command line arguments. If present, they + /// set the path of the folder into which to write results, and the version number to be used when + /// rebuilding things. + ///

+ ///
+ private static void Main(string[] args) + { + IConfig config = DefaultConfig.Instance.With(MemoryDiagnoser.Default); + if (args.Length > 0) + { + string artifactsPath = args[0]; + Directory.CreateDirectory(artifactsPath); + config = config.WithArtifactsPath(artifactsPath); + } + + if (args.Length > 1) + { + string version = args[1]; + config = config.With(Job.Default.With(new Argument[] { new MsBuildArgument($"/p:Version={version}") })); + } + + BenchmarkRunner.Run(config); + } + } +} diff --git a/Solutions/Ais.Net.Benchmarks/ReadAllPositions.cs b/Solutions/Ais.Net.Benchmarks/ReadAllPositions.cs new file mode 100644 index 0000000..837b02b --- /dev/null +++ b/Solutions/Ais.Net.Benchmarks/ReadAllPositions.cs @@ -0,0 +1,85 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +namespace Ais.Net.Benchmarks +{ + using System; + using System.Threading.Tasks; + + /// + /// Benchmark that measures how quickly we can read messages from a file and read out any + /// location data they contain. + /// + internal static class ReadAllPositions + { + private static readonly StatsScanner Processor = new StatsScanner(); + + /// + /// Execute the benchmark. + /// + /// The file from which to read messages. + /// A task that completes when the benchmark has finished. + public static async Task ProcessMessagesFromFile(string path) + { + await NmeaStreamParser.ParseFileAsync(path, Processor).ConfigureAwait(false); + } + + private class StatsScanner : INmeaAisMessageStreamProcessor + { + public long SummedLongs { get; private set; } = 0; + + public long SummedLats { get; private set; } = 0; + + public int PositionsCount { get; private set; } = 0; + + /// + public void OnNext( + in NmeaLineParser firstLine, + in ReadOnlySpan asciiPayload, + uint padding) + { + int messageType = NmeaPayloadParser.PeekMessageType(asciiPayload, padding); + if (messageType >= 1 && messageType <= 3) + { + var parsedPosition = new NmeaAisPositionReportClassAParser(asciiPayload, padding); + AddPosition(parsedPosition.Latitude10000thMins, parsedPosition.Longitude10000thMins); + } + else if (messageType == 18) + { + var parsedPosition = new NmeaAisPositionReportClassBParser(asciiPayload, padding); + AddPosition(parsedPosition.Latitude10000thMins, parsedPosition.Longitude10000thMins); + } + else if (messageType == 19) + { + var parsedPosition = new NmeaAisPositionReportExtendedClassBParser(asciiPayload, padding); + AddPosition(parsedPosition.Latitude10000thMins, parsedPosition.Longitude10000thMins); + } + + void AddPosition(int latitude10000thMins, int longitude10000thMins) + { + this.SummedLats += latitude10000thMins; + this.SummedLongs += longitude10000thMins; + this.PositionsCount += 1; + } + } + + /// + public void OnCompleted() + { + } + + /// + public void Progress( + bool done, + int totalNmeaLines, + int totalAisMessages, + int totalTicks, + int nmeaLinesSinceLastUpdate, + int aisMessagesSinceLastUpdate, + int ticksSinceLastUpdate) + { + } + } + } +} diff --git a/Solutions/Ais.Net.Specs/Ais.Net.Specs.csproj b/Solutions/Ais.Net.Specs/Ais.Net.Specs.csproj index a5ce70b..88519dc 100644 --- a/Solutions/Ais.Net.Specs/Ais.Net.Specs.csproj +++ b/Solutions/Ais.Net.Specs/Ais.Net.Specs.csproj @@ -1,11 +1,11 @@  + + - netcoreapp2.2 - false - RCS1029;RCS1089;SA1600 + RCS1029;RCS1089;SA1600;CS1591 @@ -21,13 +21,6 @@ - - - - - - all - all runtime; build; native; contentfiles; analyzers diff --git a/Solutions/Ais.Net.sln b/Solutions/Ais.Net.sln index 2f3a056..bc80367 100644 --- a/Solutions/Ais.Net.sln +++ b/Solutions/Ais.Net.sln @@ -10,12 +10,16 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3C5F2C5B-609C-45A3-8D2C-87D74A35EC9E}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig + Common.Net.proj = Common.Net.proj + Common.NetCore_2_2.proj = Common.NetCore_2_2.proj Common.NetStandard_2_0.proj = Common.NetStandard_2_0.proj Directory.build.props = Directory.build.props stylecop.json = stylecop.json StyleCop.ruleset = StyleCop.ruleset EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ais.Net.Benchmarks", "Ais.Net.Benchmarks\Ais.Net.Benchmarks.csproj", "{8D30433E-DD03-4011-89B3-0DB0998BDC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -30,6 +34,10 @@ Global {A06E81B3-2490-43EF-BCE2-078BF88DD322}.Debug|Any CPU.Build.0 = Debug|Any CPU {A06E81B3-2490-43EF-BCE2-078BF88DD322}.Release|Any CPU.ActiveCfg = Release|Any CPU {A06E81B3-2490-43EF-BCE2-078BF88DD322}.Release|Any CPU.Build.0 = Release|Any CPU + {8D30433E-DD03-4011-89B3-0DB0998BDC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D30433E-DD03-4011-89B3-0DB0998BDC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D30433E-DD03-4011-89B3-0DB0998BDC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D30433E-DD03-4011-89B3-0DB0998BDC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Solutions/Common.Net.proj b/Solutions/Common.Net.proj new file mode 100644 index 0000000..b16b9e9 --- /dev/null +++ b/Solutions/Common.Net.proj @@ -0,0 +1,34 @@ + + + + + + + latest + + $(OutputPath)$(TargetFramework.ToLowerInvariant())\$(AssemblyName).xml + Copyright (c) Endjin Limited 2019. All rights reserved. + + + + true + + + + + + portable + true + + + + ..\StyleCop.ruleset + + + + + all + + + + \ No newline at end of file diff --git a/Solutions/Common.NetCore_2_2.proj b/Solutions/Common.NetCore_2_2.proj new file mode 100644 index 0000000..f24e334 --- /dev/null +++ b/Solutions/Common.NetCore_2_2.proj @@ -0,0 +1,9 @@ + + + + netcoreapp2.2 + + + + + \ No newline at end of file diff --git a/Solutions/Common.NetStandard_2_0.proj b/Solutions/Common.NetStandard_2_0.proj index e78212d..0f9526f 100644 --- a/Solutions/Common.NetStandard_2_0.proj +++ b/Solutions/Common.NetStandard_2_0.proj @@ -1,35 +1,9 @@ - - - netstandard2.0 - latest - - $(OutputPath)$(TargetFramework.ToLowerInvariant())\$(AssemblyName).xml - Copyright (c) Endjin Limited 2019. All rights reserved. - - true - - - - - - portable - true - - - - ..\StyleCop.ruleset - + - - - all - - - \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d5161f6..7598969 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -20,4 +20,16 @@ jobs: vmImage: 'ubuntu-latest' service_connection_nuget_org: $(Endjin_Service_Connection_NuGet_Org) service_connection_github: $(Endjin_Service_Connection_GitHub) - solution_to_build: $(Endjin_Solution_To_Build) \ No newline at end of file + solution_to_build: $(Endjin_Solution_To_Build) + postSpecs: + - task: DotNetCoreCLI@2 + displayName: 'Run benchmarks' + inputs: + command: 'run' + projects: $(Build.SourcesDirectory)/Solutions/Ais.Net.Benchmarks/Ais.Net.Benchmarks.csproj + arguments: '--configuration Release --no-build $(Build.SourcesDirectory)/Solutions/Ais.Net.Benchmarks/BenchmarkDotNet.Artifacts $(GitVersion.SemVer)' + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: benchmark' + inputs: + artifactName: 'benchmark' + PathtoPublish: '$(Build.SourcesDirectory)/Solutions/Ais.Net.Benchmarks/BenchmarkDotNet.Artifacts/results' \ No newline at end of file