issue-#169 ccall bug

issue-#169 ccall bug

Postby luowy » Fri Aug 04, 2017 3:27 am

during solving the problem
Code: Select all
https://forum.oberoncore.ru/viewtopic.php?f=29&t=5664

I found a ccall bug:
Code: Select all
MODULE ObxCCall2;


   IMPORT
      Log := StdLog, S := SYSTEM;
      
      
   PROCEDURE [ccall] C(x: INTEGER; IN a: ARRAY  OF  CHAR);
      VAR t: ARRAY 6 OF INTEGER;
   BEGIN
      Log.String("done"); Log.Ln;
   END C;
   
      
   (* ObxCCall2.Do *)
   PROCEDURE Do*();
      VAR
   BEGIN
      
      C(12,"aq");
   END Do;
   
   
   
END ObxCCall2.

when you check the Do's dasm code,:
Code: Select all
ObxCCall2.Do         
6A9400CC:  55    PUSH   EBP   
6A9400CD:  8B EC    MOV   EBP, ESP   
6A9400CF:  57    PUSH   EDI   
6A9400D0:  56    PUSH   ESI   
6A9400D1:  6A 03    PUSH   3   
6A9400D3:  68 9C 00 94 6A    PUSH   6A94009CH   
6A9400D8:  6A 0C    PUSH   12   
6A9400DA:  E8 D2 FF FF FF    CALL   -46 (6A9400B1H)   
6A9400DF:  83 C4 08    ADD   ESP, 8   
6A9400E2:  8D 65 F8    LEA   ESP, [EBP-8]   
6A9400E5:  5E    POP   ESI   
6A9400E6:  5F    POP   EDI   
6A9400E7:  5D    POP   EBP   
6A9400E8:  C3    RET      


you will find the it push 3 parameter data, but only "add esp,8" adjust stack.

luowy
Last edited by luowy on Fri Aug 11, 2017 10:24 am, edited 1 time in total.
luowy
 
Posts: 207
Joined: Mon Oct 20, 2014 12:52 pm

Re: ccall bug

Postby Ivan Denisov » Fri Aug 04, 2017 5:21 am

luowy, that is great news! This strange bug gives many problems for me now! I hope that some solution will be found.
Ivan Denisov
 
Posts: 1694
Joined: Tue Sep 17, 2013 12:21 am
Location: Russia

Re: ccall bug

Postby Josef Templ » Fri Aug 04, 2017 7:21 am

This is a bug indeed.
As a workaround you can declare the parameter as "IN a: ARRAY [untagged] OF CHAR",
which seems to be assumed without checking it. In a real-world situation it will always be declared
[untagged] because C does not have tagged arrays.

Calling a CP function internally via ccall is possible but it produces more code and thus is inferior to stdcall.
You don't use it unless you are forced to use it because of external requirements.

The question is if the compiler should report an error message in such a case or if tagged params (RECORD, ARRAY)
really need to be supported. Is there any use case which demands it?

- Josef
User avatar
Josef Templ
 
Posts: 2012
Joined: Tue Sep 17, 2013 6:50 am

Re: ccall bug

Postby Ivan Denisov » Fri Aug 04, 2017 8:02 am

I am no sure that fix for this current bug will solve the problem in general.
https://forum.oberoncore.ru/viewtopic.p ... =60#p96966

More probability, that this relates with stack position alignment problem.
Code: Select all
   PROCEDURE (f: Font) RenderUNICODE_Blended (string: ARRAY OF CHAR; color: INTEGER): Sdl2Video.Surface;
      VAR sp: INTEGER; c: Color;  s: Sdl2CTypes.PSurface;
   BEGIN
      FillColor(color, c);
      SYSTEM.GETREG(4, sp);
      SYSTEM.PUTREG(4, sp DIV 16 * 16 - 4);
      s := Win.RenderUNICODE_Blended(
               f(Font).f,
               SYSTEM.VAL(Sdl2CTypes.PUint16, SYSTEM.ADR(string)),
               SYSTEM.VAL(Sdl2CTypes.PColor, SYSTEM.ADR(c)));
      RETURN Sdl2StdLin.NewSurface(s)
   END RenderUNICODE_Blended;


Alexander Shiryaev suggested to call such hack for temporary solve the problem.
Code: Select all
      SYSTEM.GETREG(4, sp);
      SYSTEM.PUTREG(4, sp DIV 16 * 16 - N);

N can be 4, 8, 12, 16.

However I found that this not helping sometimes. Maybe this two bugs overlapping and solving of one bug (found by luowy) will help to solve another.
Ivan Denisov
 
Posts: 1694
Joined: Tue Sep 17, 2013 12:21 am
Location: Russia

Re: ccall bug

Postby Josef Templ » Fri Aug 04, 2017 8:55 am

The bug is in DevCPC486.Call, two places.
Look for sysflag "ccall":

Code: Select all
             p := x.obj.link; n := 0;
            WHILE p # NIL DO
               IF p.mode = VarPar THEN INC(n, 4)
               ELSE INC(n, (p.typ.size + 3) DIV 4 * 4)
               END;
               p := p.link
            END;
            AdjustStack(n)


Here, the array param is counted as 4 (bytes) but if it is a tagged array it also passes the array length
and thus it would need to be counted as 8. An IN array is passed like a VarPar and "p.mode = VarPar" is TRUE.

Note, if you interact with a C library it is unlikely that you want to use a tagged array.
What you normally do is pass the array as untagged and pass the length,
if there is one, as a separate INTEGER parameter at the appropriate parameter list position.

- Josef
User avatar
Josef Templ
 
Posts: 2012
Joined: Tue Sep 17, 2013 6:50 am

Re: ccall bug

Postby Josef Templ » Wed Aug 09, 2017 12:24 pm

My suggestion would be to report an error for any tagged record or array when using ccall.
Since this is a bug fix and not a new feature it can still be done in 1.7.1 beta.

- Josef
User avatar
Josef Templ
 
Posts: 2012
Joined: Tue Sep 17, 2013 6:50 am

Re: ccall bug

Postby luowy » Thu Aug 10, 2017 8:31 am

protype. diasble tagged DynArray and Record as ccall's parameters
Code: Select all
StdCoder.Decode ..,, ..RcD...3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
 hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
 7.2.s,ccn50k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
 NbXmb.2.2ysn2EoXD,6.cUGpmWLuOpoKqvCbHZiYpedhA704TeKKw.bHfEWUmL.6..D.ZAy6.C
 cIhgsNHT9N9ntQ8qorG4704D.CbB,708T1U.k6SDTE.AVrH.0E.ECn.86.QC18RdfQHfMf9R9v
 Q7ONb17.,.D,0.p.0.4.0EJYjyC.6.VQ.k5k.8Mtr.2.C10E.c4E.k.0.e0M.6YE.G.4.2Uegi
 JQeFK.3Qwb8R79G9PM7PNZvQRdJ.0U1.,UH,,Uy.,c.o2rFHoA2lqK.o27HHQ52C2FI3YjyC.E
 6V.A..2UeEeWQ1Iklb8IepZhZJinpZHZCZORNX2hgnRg.AS.QiiIepZhZ7F6.Z52.KAS.i80E.
 QE.sQRtIQeoBjghg2hgn7.X5.u0n9PU.Iy5.,.60cM6.,U00.umUG5.E.Y.2..EKE.4.0E.EM4
 PhU.wcNC.zwPA.A.I.,gA3EUfL6k.W42.0EmTy.2XkD.3QwbGmmoouqpCLLmoouqpGomC5C.2.
 y22.O22.1cDsId9N5OP7vQRtHVPNR9JTvPN9FHPMNvPD98DtInvQdPNPv9ZuQZvMTNE3vPf9RD
 79,t71eMTXUIcgBgXRh0xhsxYdc.3gwP.0.b,0.p.,6.wT6.J7.k,E6,X6.AU.E.GC.ZD36.c6
 E.606..4E60E.6.6t..0.040.O22.1cDsI......kH.66..X.16.2UY1.6.c66.,U6U..M.R.1
 6.6t..0.q32.C20E.AUvUH,.8ItyqvCrm8LISGWyqlKrL8IVqGaaqlKKrCrmSGK0mH8Iq4qlUU
 YddRgZ,HF,y.4E.Em,.2.I22U.E2E..AUX,,.DvV3E,fH,IklT8OormKmCLLOormKmGomCrl.0
 E.sn3UAUuK.6.U1Ky9.,.s16b3.0.O1Ikmj,6..EBU.U,.J,A.2G6.te.wzBAVh2Ym2akwakAa
 mQag2YW3hg2YChgrReoJidphb3YXBggZhUQgcBgixgZZgU2ZJphdRgjZgZ3Ynhik3ijJioBZBA
 Vh22..Cru052Yaxhm3YkJijRgZZgpJiZ3YoBjkhgUQitRiaZhVxgnhV7g3Un2asYZUIgcFqyKr
 SqouKu0mmWrlmquGqmGKE4qt0ml4qtKKEmqk8qmmqtqk2q04HO4HM8nPmGECqmuKuKKt0mF4nQ
 mGEOqumKq0meuqo.K5.QcjhhkxhihgiZiU2eVRiXBgg3YdZgZphoBhaBhZJin3YVZgYhgYhV7g
 ZUUp2aoAapYZUQgZ,QasYZUIiZ3ijJio7Q1vQbPORvN,dQ9vM9POhPNZ96VPMZPMPPNdPNZ96H
 eH,7RT96hOEZO1HM9,,galQag2YX,QYoQag2YZ3johgiZgdphb3Yo3hZ3YnBhuhgUwha3YXxhY
 hAVfQT1sQPM0P,UoYZUQgZ,sBN761fRTPO7961965vPP9QH9P9fQ,7JZOEV86jPOd9O,tInuId
 OFPe9V8JZO1HM9EP0nN8HOmGEC4kF4nM4HK0mlyKmsMNPN1fPf9QbP1H.wakIalgag2291kNaH
 K0Gqyql4KqaKx4KuaqruKECru05ZXaVZJimxhm3YhhgnRiVxgZRiBA,.hNAZ79,tM91EP0HK0m
 rKLuGqkGrmGKEmqouaUYij3YD3emoZEBgkhgmpZkRiBAV,.D1Umj06.Q3Y,A06.4.2E0.M.P.1
 6.2Ub,.E.6T,E.m.SK.0U.2.U102.UDU77.2.cBE,,0..I16.M.EJ.E6V.AV.2.zT1c9Rd9PM0
 1.,sND2.E.s861M2E.A.6U2.k.8U.M.,.,c8fX6Xmz,2U.Eqk1kgU.sU4,2.U6UzU.2.8cH.,.
 .G00k.U.Uk.0E.S2.M.6.,U,g.cQLU1Ikmj,6.Y32.I16.KqaV.IZ..,U.2m,.n.ao.2U2Ikmj
 ,6.Y32.I16.M.,.J,U.Yr0E.o.0UAU3Ikmj,6.Yh,.,EBU.kz1.0EJ.6.V2Q.,UNU3A.0E.8.G
 E1E.Cx0M.rU.MQM.b.e,4.cWkAE.a04k6E.e,I1,E.e34E66.,cOM.hE.2.M.VU.2UoU,I16W1
 U,w0671U2A.0Uy7.4k80.ua..MPM.h.,c23U,Y22U05.Gk.E.WW.M.r.Gz.M.R.,c7M.9V.MfM
 .R.,6eM.H,,MU5U,Ia.UlT.GE1Um50G.0U51Z.u,GE0E.Cq.0U2.0,GkBE.av.s.X2aU.c,3gw
 P.,6..EBE.0kzxT6.JFy.0E65.YU.k.m0Ok.Uiy.,M.t.,cJ0U,g0c3NU,g3ca7U2g6cK6,1.e
 M0.MV3U2A.cKM.9,y0Ck6UDAU.M.v.CK.M.d6.0E.K54k8E.4u,s.F,,MMs.Z.,cs7U,Y32Ul2
 ,GkIE.ir.2U4A,6D6,fE.cx3E.GE0E.am,6,7.,MK1U2Y.2U7Z0Gk70U.2UdX,w36f1U,o,6q1
 U1A00E.m1GkBUEV1AZ.UqU1I02U5D,GEEE.Km.M.tU.2UqJU.E3Ue6.Gk,UfaU.6,,V.2UyA.G
 E0E.W0GE2E.m2GkG0.C1GEaF.uE,0.RW.Mn7U2Y.2U6AU.6,L.,c.6,R,,cB6,7.,c1,.H6.cn
 ,V2I32UO4.4E3E.i44ET2.qr2s.P.G4,6,lU.2UWo.yzayIWKJaKIEGomOrV0Jcin4WGJem48E
 ,aEs8rreqmCKuakS0GF8Iq4qlUWgV7whmxgVphdJjVZCAVx2YWwirxiiwhWhgmxhipZX3hWgV7
 QgjphoJidJAyKtCr2qHE8mb8qm85,NPHvMZvPbPSb9RQiWgV7oiZJinBhjph7U0QetRiolLQC5
 XWNR8EFqk2CakBjmBhb3hoBVx22...EqaqlK4akS0GFYcjRA.518EFqk28rmOqm8rmuqlKqtak
 S0WcZio3iuwZjgghQgjZhghgXZidxhipZgBhWJiVJitpZZZicJjiQgcxZZRiZJiqxZZZicJbnA
 bn2bqwZZZCPtAntAllK0HNuGsGKn8m4aklWqku4bP0c.3c6PM0HvQbPR9vQHMD.3M1Jd8HN1PM
 0HOHVuHZ8JPM0H6F9fR5mamGEGomO5d89,7F91389,7F91buCPM0HM1HsETeHb8JPM0HMMRvMF
 vPZfJ1fQVOM0mS0Ge8peKoRqk2qk2aEIeGEuquqKuaLs0Gv4KqKrmCLEemIqk2aklWam324nR0
 mouKuKqnKKt0mSIav2YmhgVZhUgbUYav2YdpBh7B,ND,NBr76ZPNQam2Yx2YqQbUICoao22SnR
 qk4ak2WWnBjhJgjZhUoiV,JN8PM0uqumKqgbU2av2YoBhhhgn3Yx2YlktmqkCLo0mS0GN6NHfR
 ,ND,tAr76PvP796vFOgV7AVV7N,ND,NB2ighin32O1PPORPRb96vlP2YjJiUEQiHEKqsmKEqXt
 QbBAV7ohZBiUgbUAakQbUYhnRiUgbUAalQbUYhZBiUg58nR0mnGLt0mS0mMCnR0mnKqs0mS6Br
 N1HkouKEqHEgav2YdRiUg5OnR0mk8Ltyqv0mS0WrQbUYgjZhgBgm322bv2YkhgmBhjZgUkManR
 qk2QgjhhhBgUgbUIakQbUQgjZhjphUgbUIalQbUgikZijND,dAZtC,dQVPMZPNR96vVnQbUIiW
 JiVRhUgbU6BrN1HEt8Kt4qlKKEqHEgav2YjpgUgbUcBr76d9OuKEq1jtC,7N0mS6Cr76dvPkQi
 n4aUWBjUgbUQakQbUohjZiUgbUQanQbBA,N9Q1fQ91GHMiHEmKl8rki4GnMiHEmKlsMEO8nR0G
 lKqlyqqKqt00GnRq.RPRPfM9fQ,NDgav2YiBhg3Yx6BhtC,tQdfQH1v76SnR0moGqmYiUUsQbU
 QiZhhdRgjZhj,anRq.3PMZ96vlO0nR0mmuKm00fNAr7699PbPN,VpIav2YZZBHfN,ND,lNiHEK
 LrGromKEq1dtCPUdpgUg5KnR0ml44q1htC,tRFPONPN,ND,lPiHE8rm0rm4Ku0mS6Cr76BvPZn
 SMCrN1Yhjxhk3Yx2Yq2av2YrBholS0WlQbUggsBho3YxENiHEggohimphUgbUoanQbUAgmJiVB
 jUgbUoaoQbBEtKqlyKtGKEq1ftC,7QTPOR9R9fQq1htC,dMSqouKEq1jtC,tMTfPb9R,ND2bv2
 2n9Q996vVtQbBM0hPMZ96wakQbUwhpZiUg5jNAr76VfQTvMUUgbUwamQbUQggxhnhgUg5CnR0m
 oqKsyKtGbxEOin4aUhxhYhighgUUpQbUggjpgUg5OnRqk4aUc66TfMJPN59R,NPT9N9vQ,d8Ef
 4Kt00XtCOpk8Lc4aUENiX1xhi3YxsArFXmKm0mSYav2YIBjk3Yx2YpQ5N8IZvP596v76htCWJc
 wBsBrN1Hkd0JtyqlEQsEVeQT1aXUAdEJijRAAakkayKm00XNA2dZBA,ND,FN6JVeQT1Q44IuGL
 t0mSIakM1PM0W0b8RZPR59RffQ9HnyKtqqt0GJUJphYhga3Yx6AIctZiZ3YxMArFVyqrmKEqHE
 8nR6O1fQl76vlNMGR9Rl76v76dV7pBXdB,NDK1HePCHNEPgV7AVGhgVZhn.jFE8pm4KqO125Cp
 mGLEqXtkdGLta4l76AakEbaKqGpw05A4uorGpw0LEENgV76ITPORXmVlQ40JtyaIBjk,dFECor
 qaUg5KXBA,58O1fQXdB,NDo4CJuUloaUg5S1HWq.WXBA,HfPdvI99RsSHePd9CRd9HePdvAmGE
 aIrG5vvC,tMFPMZvI99R,,58O1HQmGECIo4alMTrN1Hk468QgjhBTvQH9R9ntGLtK5..cE1vQH
 vM,ND,lRAcmJCEN6FnfP1eQZ96v76bVGtMT1Y4PM123BPRRvMdPOTHEuquIAemIqk22hVZhopg
 i3Yx6AohZxiaphUg5XVdphXpgi32Q4CrwCLrKqvO4QakM1PUc66RvP7PNbnlmqkCrtKqt0GJUC
 piVJiUEMcHhPM0rk8LEMArFbOqoKKqGKEqXmEbGqm8rmOKEqXnQ5ROOR9N99S,ND,7B0GbSquI
 iY3YxMBodZxgpBgm,hV7cH5vPRvQkPcHdPSK4W1R8QZXUg5nVChikZijVl24ghj3iUg5XNA6NT
 9Q,NDI4,dH5PMN9PkNgV7kouqoGLuGaxEOcHHfN,ND4nO2YCRAbPNNvQ91XdBo76NT96sBodZp
 hohAEQ2YCBgnRidxgi3YxkQ.OqmmqtK48HM2YCRA22A4uovWqom4cAodmhgkhAENC1R8PTvPV1
 GXUodZ3jdZCMBq.8rmGru.ZdBodrBho3BsBodoJiV3iUg5W1RuMTXUkN0168.,tQffM59P1vQ.
 sQf9Q9fQ,VlQbBA,PUckqyKmK5OroCro8qomqoGrw0mrOajJAsQ,d8H,HXZdP19P6AggsZCZfP
 Ul6699S.Z86vFNiXdphEBAsArlrKbEBA6Bq.W0VfQggY,mqkSaU2ZXxhipiVZhiQiZZiqBggBZ
 UIZdg,WanJ67PS,ND,NAAhnJeZZgZpgUENsQNfH9PN7PNg5bVddJ1fQ6BA,68AgoZCH1996B9P
 UVZiod919NZ99,tQdfQfXiAgoZimBB69,7QZvPumlyaq,.JN8PM0uqmSrUGLu8LEMAhVVJgnBc
 oZCkP6PHPP18RdfQEQMNP9Q18Rd1A5,NNAcoZCcAVl4a.23CqkC5b9R19Rqqm66B9P11C4.UU.
 KrtKKe4Klmqm0mSsCKrtKKe8rmKKEqHE8nRqk2UcktartO4c8H,RPONfEH9R,ND41HfP3OOd96
 I4,tPfHVaKuEO2YiFVaKu00lVdBhYJcdZCAaqkoYiZdN1vM996Aakktyqq0mS0GN0XUIhnZim3
 2qmMCnRq.M1Gpg0pWqk2akWmqmqKEqHE0pbaIbGpW8JEGpb0GdKoVyIdGo4ak2aErKKwGLR0mW
 mqmqqRqk2AVnZimhCeHEGomO5de9b8RZ1r,yKleKK0Gl4qtKKR0GWK4sH3fOsCEsyqteHEaIbG
 pWSoW8pRqk2cP1PP9fC,7F.bWdl4ak2KIbGoRq.Pk2qUKBcGh,HsQnPPN76NPNhPNNfC,dEn8J
 9uCPUAxhj3iAhgqhAQe6xdGZe7pdIRbBEeGoouqoGLK0Gq4qtGLeGoou4p7670cHT9Nin4aUpF
 tmooCLueHEK2UmFaaqtG5.2B8pmGrucC,dETuHNOF1eHrN1Hk4U7gV7AVXBggZhaZhVdCb8GTe
 I.Ec8pbCoWGoe8pWuJEGpw0bcoe,JeUYit3iu2Y2,QeoNR66hOEohVhhZ,.ABamRqUEJ8K2kWW
 Ls8rmCrtaqruKIOpU8ZsJbUY6UCVdQbB..IcgxhXRhcoe,J8V17PN599,tQdPMCrm4LR0GW..M
 1WGJogjJirBgmZgUYit3iZ3YcBgiZggBhixAJN8gV728.0mYuqly4NPNdPNdOSVPNWGuaLse1.
 b8RK5HdC,dET0U0hc5BdChV7AV7pcUYitd9BvPZPP,ND,lraKrEEGJYKIbqk2AV7,007ONUnBj
 n3ioJioBjk3YI3d376ZOFdOJZeH,dF18HbOF,NFR8Fr,H6Rn9QenS0GuabiIcVRCdOSVP1HM09
 0cI98Jf0F7RnHEq1.ffP7fNdPSVP8,tHZ86F7RoZXxhh76IeZRAAZUoYU2ZoV0,22G2..PM09e
 H0mYuqlEq.KqRq.03K2sI9HeaLsKKEQioJCI570sId1iXjJgeJbUYcZ,y291G5p,UH,cP1PP..
 a4k2OpU2YpJbUgcg,82U7p6TXUQYUod7ZdUYe6VjJAR7Rn9Q,dCUUgcARe3tQdfQfXiIcV,0GR
 .KIbG2A7uqk66576R0k4M0ROFj88fP8r76ff9b9RK5,dCvltG5Q5ff9TfMJ96pND,tP3fOr76f
 f9VvPb96pND,7F91Pe99fQZ9QTvQr76ff9RPMPPNenS0Gr4qqQbBAV7AVppZihgsZiUIbxMRbP
 NZ1iHEQCUUI5gV7AV3l4akWuYUQeZZCggvM1H6IMFU13hZRgfBcgZhjRgU2ZKBcG7RI5UIFu.G
 qwuqUmKqyqvKKmeHE8ob.0Gsyqte1g6AZvg,30Euc9VfRfnmGKEe1deIQbBM0HWoFLC400aLrI
 CGJY.HMGojYBji7PUUYe6FEGomkagdVJif3Zs2bg2YkxhnBZv2YoBD,dCY66JK5B1,NFg,HEaC
 pYOIEG5R,Ed.,7JFWB.2ZoVVZCa42YxMM3vQkI0mb83.AB.NPOP1aWa22kquqr0mF0GMaGEGJY
 K2M070q2kManNmGE0rr.2Yu.6J.g,akWuYBkWU3FECIoK4klin4q.MF.EdKapJinBhqhgIBjkh
 gUsPf9R9fQN76HfPRPNZfC,7F91Qeo,2ijdC..O3OKqGKR00UDlmk4I6.HWjhioFEqXdphiFEG
 300MH.f7CN76VXdgV7A,N0aKru4RtMTXUAdC3YvBcmJCmGEGowuamNT,7JF058O91..FtPf9RY
 3.3OMb1mGE05..klUx..g,aEnmKm0GRMOR1mqouqpin4aU7we6BdAhcU2ZaZhY3YX2YC7HH76B
 VaZBRNPT9N996vFXmKmaGEGobqk2aU7Q69vM..K4.B9P7HuaLsm0sCP.HcNcCoggZANPORn4a.
 9eHi1HkYOYd,82EECGEEEUU...K4.H1.69UUgcCV7UBMF22..kmiX7g,V090ocd3jIBjkhgUsQ
 Uu.Y8b8RkR0mrcC.w7K4YCe1.b0EscC..Fd8Ahs3YaxB448rmOqmkl2YeA3aEfEueHEG2..B99
 ,dMBfC,7F.T0koeHECJY.i13W7,HeFyKl2YX.UBk2.umqyKmUKBgm3YIV72Ze2YqBgmBhVJggh
 AdPSKaeA3AV7A7CLu850mF..IiZRAHfR2YoBD.A,HWcUioAs6,7ITPOcQH76T0EV.00b9RkI0G
 eEEG2g7Ul2bkYZU2Ca0Q5aU7gcANFCIokUUcYit3igsP3fOohjZhZpiUobUYhZpCmGE05aEI6J
 ZOJ0GnyaU2iVNMYCCLEemIU7gcCN1ak2Y7HWj,TXU.0pk2YIV7UqFsEuMN.akYsQUUEb...8rm
 ...aU7Fu66QCUI3700...00q.akWu2Ea..EX66d0H.Bnmm4dPSK4U7Q6..NFX4Ia69,7QTXvk2
 AV1,Z0ABkmWmtGLtEK0Gua505qU7MF..Ee0Jt66d8G902CcQ910GuabZ32U7Ad4,RdNkSQcjFE
 G30GuabUI5G2Y8fXaVv2Y2hgqla.KHOmGE0500U3,..dOS0Gek2kkmqo4qt0GuabZ,M0H0o3kY
 uIEIctZiZpZiQeZZig2Y1NM69,NGG50GeW2kq4qpKKE4Kqa4CLuUpVeA3M0GLEenS.GZChgrR8
 Z98dPSV1YZUIcVRidN8r76H96pNDGLL8rmOqRqk2aU76Rx86pNDADxuC,7RRdQ2Yug5HvC,7RR
 tQdfQTfMJHRsPeqRYCPfP0GRqXkQbBA,aUopZ0BAEEe1dXv6R22M1HU7gcCtCk2a2TXioidRiU
 QYUAhiNNZfP2YI37q.aU7Fuc951q1C4.,7RMNl9Q,dCvFe83PM0Hk2gcA,d1B1,ND03EEG3.30
 c991.U7MFRm4k2K2UANF,7G18Hd88X7AVN8PM0HUCtCkrIhiYCUoBDPU3Z7qk2MGQCELOqr...
 H.VvPH1IgVRC,7Rnnm.AV7Fuc951..2Y2,PGc8rr0rkSqkGrm8pmCKcGLtCpwocgBgb3ZoBDCr
 woAY3bHtUnBDkIqk2aU7g6a2klU7V,,.U6,..MEZfQVGtC3EIUn,Y3..A3M09W33YoBD,,70GZ
 p,Q570qYB,SHK0Gsk4k2KIb.aktGbpVpphoBgbxgZZgUI5C5kt.0GT0GMin4k2aIX2ZnZCUo,C
 0A3sQ..RdR.ErM8G3YCumm.GJd669eHi1gcANGQCUXxBg51eQZXUYe6l2kk8Lt443PMb1nnm.A
 V1,10UgcFEK.r,akVUG,UtNNF,69.V1Pk2g6.EL.Y6EE27.AA.MN,,M05042.NFe8peYZU2CQ5
 M05083.EI.m0Esk4kW..R,Ed..cQwBIgV,ggU.AV7p6dXioA..,7J66666RoZ0VIFEK2U7YitF
 s.EekR0mtG5MNl9RNPNh96pNDCJYy2FtIFuH6RnXZ,QZUAadAZvg,AV2,28.83TXHBjnp623sQ
 oAY3.Crw.HtCk2a2F7RMMMOMN6AH76T0..Eq.aWaEukqkF24G3Y6UB,XlMmGE05M0akW.FtQ.1
 1H1kk.a0.11H1QYUAgW,aWI,..anMmGE05U7g6Uo,MOUx6P.HFHsQ.ko.5Fqa4M8G3..kPmGE.
 M09eH.HcN,dCQCUgVv.HsJa2OKECGEEEGobaEIeGECKoKql2YaxBOqoUiBgh765vPRfNNPO59R
 b1k2Y66JOoouKmOooK4FdNRdP1PPmGEGrwY33fNHtCP.HkYOYWpgUQYU.d0.P0EK00aGE.M0O4
 ogiYhdpBP.HMF.akVUG,.KKI.m0EskRU7QCELK5.sQ.b166.gcA,b1cN.VeQTHe66d0HEJ2imt
 M,7Rnnm0GtKKu.EJg,AV7Fuc9B1sEEeEEG5,dCY66JKbY,.q2kOG1V1,,U3lW0GYY7.Eb.C5EV
 .00G5P.g,9WUocd3DggvM1U3,CIoEXyKtSrk6JnXnRbBEfkumGEuqmcCK22Ykln8rmCrteHE8o
 b.qU0lYUp3Yug5fvQMOQ5f1EEEbaIain4aULNGMR,t6uYA3Y2N1AVihAd96MRRdP99SiHEG2Qe
 iohVhB,dCUVFGiHE.dGXoBF7F9fRQ8EKgiiIgVRiZBZvg,A7KLL840mSod7FeU2,P06AN76ff9
 VvPam4A,98Ha2f1oZhxhYhgUQ2dOS0Ge..UrIag2Ypp3.kWgiiMN22sQ.r,.,,aEIeWmNORvQ9
 fQd96JN8P.uYv.fHRcP99Sqk2.cI0pW4IeaEIeGEaKuKKt4Kua4OqrMPf9PdPS,7P9fR9HE4Kq
 a4e0.gin,Q5.22o7iHE0Lt.0GRcF18HQbBk2S3MRcH2Y2,aErEEkuu0QbBU7Ad4NGRvM6PGbIl
 mWmuuGlUoBDH76d0PU7A,ff9EEUn,Q5.22M0cQ..AV3Z7q.aUkJijxA.G3g,A,BOOl9JgAQCK5
 NluwBmWpdM.mWp7QT1aU7gcC,AVp3YuErk4M09WBM0feHdOGN86FNRbPN.vFbM8y2x9QZvPD1i
 n4MRkuC5kRaEIe0qqkaKraKrSKEGrwggUICNPMdPOTnt0mk8rm0mlarlmqoCKEe0w8ku.00M0H
 eFWmuumr66v76RWd.FNRELq4g5dOSa066.q2gasku.,,UpdCc9.K2rV3p7,tEK4kk.9vQM103.
 .fePHPPV9PWmqeHEG2Y8TWZ,dXu.kdG5Q5VvPeX7p790H,O3yKlI5K4sHgAg,3W7,HeFqKECGE
 EEG3q.HMG2ZhpZhxBUEllaGEOGEAgWRC66HeH,NPRtMTfP.O5.k2G2EXEX.Pf9RPMofg2YoBjk
 Z3TXdQbBk2akYkr8Kp00M8UjFL.5Fe03sHZWV,.T15vPR1..U76Fka.4nQ8HK0GsyadQ5M0G2E
 ayqnSJauqR0GWK4.CJu8LI8GE0GFamR0m4ak2ak2A7G5RtQdnr665,00.HU2,.VOMZ983t67ON
 hfCRuPdPGP9QKqqK499NHGFmGEqKLUg6R.c9RPMAZBAV7AV7MFN0M0Y6.....c6Nlq.NFF8mIq
 k2M0KIbg,AV3,Uvk2Q6C4UcghiYhZpgoZZUYCmWk,...ZPOD9OmGEG5.Pk2K2PkW66.UvgV7g,
 V090.83TXn3YcIiZRgu2Y3ZBamRq.h03fC,7FEeQeo,cE.S3cQ9vM,t6,dH6Fa.C422MRRPOPX
 Z,2Yhhgo3hjZgn3YdphUIgVFEG5996Jl4M0396pND8rmoZnZimhCu0Y8in4ak2akf.FdM,t6,,
 HFHcM,V2hAkucNM8G2M050K3683f9NPORHK0GtKql.Y3ZPN2ijRCr,aElUWpZ0BAk4kWsCEt66
 pND85uqmW5g6q.22EdsPsCPM1PM0VW1h6km8LtWGreHECJYkYM8rN1HcEEEG2g79XcM8PM0909
 fQZvCPM1.U1,bOSWmteHECJY..k4MGBmtarq0mSQiUYe6FE.bmXKKuWmtarqaGEKIaCZUYcZVB
 ,CrI0mWM1U1,sCPM1.UlhiVFmK4FdJ1WdZgu2Y2,dmbMNAZvg,HcJsPI5K4.9Xv2YghgqJbUIc
 N,822YcIZnBD,VdZgZFJam4AV2,o6RHIcRQ8R1whWN80GWK4sF.i1HMG2ZnBD,VkhgmBBaGEO0
 TXUEbY7.umqEEqXBxBHFek4M070.kIU7A7C5,Vd,,7JF0M070G3MGP9QTfQWGWK4CZi,EKwhWN
 8.sF.HN1Hk2KIakmIicAhYhAamR0mr8aUI5u2PM0HM0uYBM09WUQbBA,HWjVx.,7J669fQZHMa
 mRq.HsP2YuEWUIdHwdWJhcAZv22o3gApNDOpkQbUwhWFu66pV2,gCO4iHEy44Km8LEe1VN1HM0
 m2mqm2YukrkquaglRqk2aU7FIy4wBAdCtShOMZ99,dJ1fQVOMqrI0GH0Wghgqt6mqmgAH76k4k
 2y4R7P9PMB96pV4,rl2M0HWghgq3Yy6A,7JFWUY6cERtIdPMaqlmoouqpWmdWob68b0YhZNNqG
 qKKvamImGEGJdM8,NFRm2W01N6176JN8P.9eHq.66koGKEe1TXBAV3p74ru4471rN1P..Qcjph
 nZi33jkJiZRCH1Ew.Y8RuPK4I6kW2C.WrIin4AV7Fwumlmqk66576C42YIVBUZJim3Zp2adQbU
 2jUIbx6FEVodZxi7phoRcjpBWmMaGEqk2UBMF2Y1xBg6.QbBg,.UcVBBgmRBTfMJfCgAY8TWZl
 IAVcI3.cJcPp76HeHdOFsC,NPTHR0mU8Jd4og0GNKHP0mbOIEGom.b8RaabRbBAV0,G2Q8.Q5U
 cQC00dPOPPNaGEy2C5,VhBhilI0GeW2kYEqUUobU2ad2YDFzWmr8Kpumq..ocgZgg2YI3emlya
 GEO0b1..0mmEO4nI0mW66r,H.b1YCKaUYe6VjVqVug599SdPNu4,NFNWUwhW,..8Z3pd2,Y6..
 HN1gcA,.kouKuIiil4ak2o7r,HWcwBgB226JVeQTHK0Ga0JtUM3em,58IZnlcJY3dOSV99CorY
 ZUo6qrI0GH.,VgJgmtOH76d0P...AZvU7A7QC00RPRPfMAZUo2Gom.RPRP9Rn9QqXX3hVN8,7J
 .aEbEWKKvUnZimZZUIadQ5.kh0ni0GRqXH,CIY8JIGomO5AhidR19PamR0GW.C54ni0GRqXk29
 Crwqaug5b1g,HkW.A7C5qXnZC66d8G.HMGYcZ,Ej0mF0GF8GEG300ggidQn96pNDG2.0mWuYv.
 H6F.D0M80Gr0GRqXkQ5M0HWcUUklyqqqqkaGEO0T1P1UA3emxB29U1,o8sETnyaGEGJYM1M0G2
 .UdM1M0a2EEcP.O070cP.6OEe.A,u2.QCm0..iJM.b0..a4.G2ktkM.V7K.pVn,q.aU3,M0a2b
 1vlt.,,U7krEqaKl850GRsPMNkR0mr.66cHQbBU7kY6F.cL.EE..Y6.22.a.70sF.H,A,98HMN
 sQdfQM8PM0HM0HkWuYBM0HM09Wv.HsJUnBD,VXxB2Y2x7HU76F..a0M0aIX2322u4Ua.Ui,Uc,
 d0P.HUC,.bXg..UP34kd..Ud,..b1X,24.pVn,q.aU3,M0a2b1vlt.,,U7kYcP,7D,7H9eHFNP
 T9NH76EEqqrGqhuqiI5G2.iHEaIbCIIuqIq.a.98H.8nNKnIqk2M0gcC,A,G2kX.am4k2gcA,s
 QUdk2A,9eHq.akWsCk2aIXET0WU.P.HEbkr84PXdpA69,dPHtCP.Hkf.R96x,7uH,7F9uEFdPH
 tC,tP..rePv86MPT9NkWuYBU7g6q.Y7..M0o7r,C2Q8WGt84LnRq.aIXY6MHyKsGroyKrc8,tS
 7ONhvEMOR9R9fQB1NFWK4cO1fR1PT,NDiry0GeW2,NNcAZNBH76.9WBMF2Y13Bg7QbBgV7.90.
 CZnp668h0bPSbfNcC,tIkYsCk2.SomGrdOIR0Gc8pbC268HeH,NO7X,,yIX0mdW2CIY4IdiHEu
 quqKR0mdU7VUo8oggBA.kIamRq.h0l1Eew7K4rlo.Uvg,30q.bPSO40GRqXkQ5akYsQqKE6PEE
 GJYM1AV2,b0UdQ5AVL,WmtabUErcMkb68.H1aWDJ8.C5EEGobU7A7.u466d0k2A7G2Er.MORXb
 VI,M0AhUIbxsIEIG2kocRsC,tF99RbGI8GFmGEaKK0mtartUdg,Hk2gcA,.qk2M0KIbg,HM0HM
 FNmYsQUdZA2YI,M0G2Y8BGr23kdohV,lP8r,aU7p6F7S,t6,dHH8HH,WLLqqrggUg55Wd2Ya.d
 PSuGnU7lxaIr2bg2Y7pBXFK00CHNqrI0GeW2,N1HU7koI5.WLLCqroCNnouKuO5...b1k2A,9W
 3h,A,S26F91.2ag2YnBD.M0KIb.HMFN0M0S2.kt690HK..AV3p7r,aEW.S2kI.HMGBWnFEsMT1
 Hlb83.V9PfnI.G2.Ud2Y3,g6.50MP.HN1akWM1K2,,ktO2in4g,V0UUIeZNNEIOpUMPTnmmGEO
 roCLR0GVa30Gf42RPMI570GZCBghtC,dJ6RnHKIC5fCG2kdGbplIg,O3ohVhBp,.ABi1300Gu6
 6pV2,giidNsC8rmCKEEbsC,dRHvQ,,V,aIXQC00hPMZ96.kd.M8r76PvP2YuEf6IQbBkWmY7,0
 0HfP,7JF0..A3..EEOro.HHcM0Fd8ynTyHEemI.KIEqqr.O3PM0HMFRWvUiBA9966F.R1rlVWq
 mUhNO7PNAZvsE.QgjZBamRq.H02YX2YdZA22kmkoUd2Y3p7r,dOSVPNF7Rn9QNFuuqkM8rN1A7
 GLrEEqXCFEUBk2a2abi.qXExBcQ,,0GE8rm.d1306698HcQ9vM.0WC,a.uLIWmqyKm2YxcJAZU
 o2GrwoZa,28EtaGEEtKaiQgjhB,ND83TXdsHq.aEIqqrGaUEf6IA36RsMq4.M8,7JkmkP0nIiH
 E85,,R09eH.HWcICQ2M8Etc9PfPT96YBM8.UmA385,dCUUUBM098HMN6Aq.uYvU1,Et0rkcPHt
 CPU7FtKqlg5R0d08rmcCY66JuomQ8QcjhBN76ZON51iHEEL8okC5cCo7g6MF2YGhA91in4g,V0
 90o6Agg3eVJiVFusQFN1HM0h0BPOZvQd9I1fQp76K4sH.O38rmCLeaLse1.b8RK5r,oBI5.koM
 1HM8rN1o8gBY3cC.CrwCLR0mdw7a2k2aEs4KtmGEOqo85N76N1N76RPNj9I11HPO79I.UD,6RI
 5.C3f1PEVUBEnaKtCbUI5kRYhVRC,dCogdJC03rN1aErKqv03,dCvFbUdBB66.qU7Ad478b1vl
 oG4sH00UqlIw7.AhiBZUw7.whpZid2YIVBk2mobyIcqk2AV7QCb96pVk66hXU.q.HM0HWn,O5,
 ,0GWUHtF.H,66pVK,q.akWmY7,00HHE...A3..sC,,ko28q.akW.66wB0Ge...a0.o8kR.sPfH
 cM1M09W3NP.O3P.HMFRWv.HMGghjVxcJ280GeU1,cF68bPSb99,7F91PmXKKuOpk85CpwCLXkI
 0mWsCk2a2T8F788bnt0GWaIf0mouKVM8,,oidRCMOk4k2KIaA7y2.sPfHVYid..sP28U7gcCtC
 k2a2..RPNjfEA3BVqBhnt6yquUd6JkmEN.ak2KIa..UdBhYJcd,.Ahi38a0..k2KIb.aEa.A,H
 WnNP,VdZA22M1M0Y66JaIrCrm6870CZiVg6Q1fQiHEG2kX68ghdM1M02Cumqy4e1P1r76VPMZf
 9NHr2Yug5R0,7Q1XqBBe1hPOiHE0rksQnvQEEkdUcQitRidQbBU7kYcNH1,ND,dH2YIVUogd,p
 VkBgm3Y3p7,,A,a2UEFEq1..Uu.gcAR8mqkCbiYBR1.u2U7Eq4qtGLE.q.aU3Z79mm85H1am4k
 2gcC,A,HWnFEsMMM,7JF070.MPHN1M0KIaA7C5,Vd,,,gAQgjhBam4a.HkW..h1..sCG2.Ud.H
 kWMFKIgaIeqk2aU7MFRm4k2K2,,AV1,gB5166dWZ,NFr44H,AV7lqEECWKBA66d0C2A6QAUIJ8
 m0kagA050m4a.HMFNmY2ZXBgg,qHEqmM0nIOGIWGuabi.v7FnfP1WdwdG3ZoBD.ZON5vPM8B78
 x9RnHLKLrG5Ygd2YIVBU7MNMAjdBHtC,78J76XtBhN0dPMDvN2Y2BD1WVBDTfQ,76ZONy4,dPT
 9R,NMN9PS5emIU7gcCtCk2WGJAdC3YjphgBjUAggZBEny4Znly4b961fP7961fQZXn3Ye.akY6
 8PvPMDO3M8,d7UUg5HfP.YCoA2YXMJR9NOqI0GH..QcjhBH76B,sQn12Yx2YkEeEEK4sBHN1HM
 0akW.AVcEua5VfMfvQ9XdRiUQiZZiUwichgi3YkBA1XoFEG5996RPM2YdRiU2iVtQ99N,d8U7w
 8Ena40mFEaYcDh,A,bONd9Jnnm2ZCBdAZZUogdVg6RnHKoBA3k2Ad47FO5QAP96HeHG2krYCT1
 d0P.HU7lb.b9670R1Ee.A,A7WGrKqv03,t6,dHA3TWcYCuGn.0pra48bUw7.b1kF00dXatMaWI
 VU.OHQaGEK2r,a.u4ERcNk4a.HU3Z72YD,.aqo.UBU7U7VdBhY38Q2..,t6G2Y8DPRH9NdPSVP
 8G300..M0MOH9NV0p,.A,KIbg,A,9Wv.HEnUUI5.R7PM1M090k2a2bXUktKqqa466d8G6Fkd.g
 hd.HMFN0C5,VdZA6JkmktKqq.am4a.HMFg6.AV3p7P..9WvU1,b0Z191MG2Zi,g5Y7CGEWmoa4
 22.d0Ul..uqkggUI5u2rN1A7C5sMm4,,q.G2.UdQ5AVIlmWGtKqtEK.H,A78bnVioAMDC2V96d
 0,dQUUI5G2Y8fHmO4iXZJimNBdN8,NFg,Y7ICb1.UixhoBjkh,o7PkW66BuPZnkUVFusQrN1HM
 1035OFU1NNwdqhgmximBhohgU2ZkJijRA8qkcCG2kb.0GtcC.Qeo,H,O3yKK0GlyKR0GW.y2k4
 I6.HeF8qk66576RWUY8g,a.UiQgjpBsQUUIZUQjVJgnB6Y39PPVPE.lnUky0mSQDUUgAAasIad
 2Y3p7rV7A,2ZkJCuGqaKroZhxhY765Fl4qt6PHfP.H76T0V1.hPObnFIA.UdgV7A,HsHZ86x9F
 9fR5098SdPNR9Nb98VfQT1Eu698qk..H,.AapAZUg6.T96pND0Lty4kR0GlyKEe13PM.gV7A,j
 02Zj3YX2YClIo28qr0mF.G2M0HeFIARtQnvQ.01BVjpZnBDUx.d0HEJ2CT9QUUQitRiaVn,M0y
 KLCrw.,dCsPR,k4ak2AV3lRU7whUUjpZgBB22I584NPOg,g6.708Y13hZFc4aV,2ZkJC51oZgB
 BmWWBA.R,mW4B6AZv.HWyZ66J..Yit79.dXd.00kPaW3,.FlkC5hPOb960Gs85OroAZUo2WGs8
 5EEMOcQRXd2YDFtQgiggs3id22.6CbN8,,.RuEN88VfQsMu4.YZUAhnJ87PNBP8PM0K2MFRGEC
 2w7.in4.K2sF99R18RdfQHXohgn3Yc2imFK.p,UD,2YjxiihgmJ5K4sId1M0cQ4Km0mq.,NMd9
 R.I3cJMMdXgcM19RdHR0mdKIei1p767ONUD,g,30kkGLu22QjxRbBA,HeFC5,VXNP22M0.Agol
 o..H6Fkd.M8k2a266ABYCW2PU7AV2,dGX.kdoBY3TP8rN1M0HWcwhUEbUakrumqy4,NDCJc8rr
 A3B,4Km8bxcP9vRBnI0Ge.A,HWy3Z2hAg78qm85,NGR86.2io,H76d0,NGCIaAgoFKohZNEGbd
 EaCZUgAsBlN8,NFU7M0G2Q8D0M8U7MGQC0051.P.HU2,.M8U7kY.,Vd,G30GWUI,.CZi,6698H
 sP,dCvFbsC,NNMOkI0mWM1ak2aU3Z7.k4k2gcCN1M09Wv.HMGwhUQ266k4k2A7W0P1CW,ZCsH2
 ZjNMUgBB.EWUBFl.22.0Lu.UUgAA4gV7k2gcAV7pd1,Y3Tf91XdgV7k2gcC,A,70CZ5,AZBU7g
 6q.Y7gAABk4UC,9WvU7VWVUg5RWdUy3Zihgr,,NGAgolI0Ge.MAlNBHtC,NGR0EKoBUdg,KIaA
 7W0s6u2EIu4EE.AZU..OnIq.u2.1fMb100.d8Gg,A7yqvu4RNMdXd,,t644EEUU.aHMaGEK2r,
 H.F7Qc9h1vlouKuICEHwhr,9Hs0Ge.kPanI0mWM1.MGsPjfPMMMOUx6Aw7wB..Eq.a0M1.Kqq0
 52Y7,A3BFI.22.HFeEE.ltBHN1Fd8PM0HkWm2ggsZi,VU.Ee.UsAZBIZdg,aUCN1Uv.IAUCFEU
 BUWBgoVuEl44RtM.K4QbBA,HMGggh3CkYcM19R6J.akYMM.a211G300kQaGEK2M098HEzAgWRC
 kYcMkI.P.HMG2ZVtQEEkkkIw7gAUU.M8G300..gcCN1g6i1a29166.Y8g,A70LtEuabUQ2UIdP
 EEG300MCfN8PM0gcANFP.HsPEsUgVvsJFOGN0.a0whioidlFwhp,HFWyIEyKEe1T12Y3pd2R5A
 V7A7yKEcH22..,,PU7gcCN1g6i1a2FtPj1C5EEq1En.BFz.kY.a0.cBZN8,NFRmREs8rrsM..,
 dCvlkGLugV7g60mXKKuUd,bvCak428CoW.Z0YetNNO3GrwI5.CJuUv2YVZiodCG2kb.Hl4cJcN
 N9NNFnUg6PcC..Q5ZfC,NFNXvcNdPSe1.b0ErER..HfPDvCI66666pV2,o7C3UgcIUdQ5dPSuG
 VEea5cHQbBkVUHtQEIG5C5EKYcZVBtFIeZRAQetRi4VdQbBkYOYVZC0mF0000g,A7ub2,whW,E
 W.2C.BFI4Kuc9IiUkmqKsUd.0GukkkoUUI5C32ZH,4Kuc9IidAZBA,KIa66Ur25UCN1Uv.YCQC
 O400.66d8Gg,A7WGWUHtQ2YXcHA36F.sKVNLqXWQjWAZUY822MN22Y6.2Y3p7k2Eukkko.5lk.
 0GeUZ,htAH769eH.sQ2YX6PVPMZPN0Ge.UkAZUg6q..a2kSYhkBA.q.G2kX68M8r76FFtKqlEE
 KKwgAbPOTfPJN8P.H022aKm6R,7JF0M0dWZdNdPSmWiVdM1AV7A7OKuabioA2203gA,7J66B9R
 22ogoBDRdE.,NFQ5M0b0gAdXgcHH8HNVoBDNFr.k2a2FdNdPSumlEEqXG,aGEO0B1,t6.dmkuq
 wGrwA3d0P.HEnGrw0LL0Lv.pVIVv2YoFLK4NXUI5C32ZH,OKu.Uf.U76Fka280bbVGlrsIo62Z
 aZitltcN69Grw.kI.HkY.MMMOUx6A.B1..mqo.H76B,kq.VVIVUgA6CXN8P.HkWmY7FIG544a4
 UV,A3..H1Q211M8cT.IB2Y7pdU.sPG5Ee.kQ4nIqk2M0K2En.MOUx6P.H,F7R.a4s6mqoq4A3d
 0.SnIqU7M0KIbg,ak2KIaUaVU.6JK5B1G3.ftAHN1M09eH.NmW.H1a0cH0mRU7p6d1ko.AAUU.
 H.bPMhPN,7R2YaxB,NREqKqqUY,klWqm66JN8k2u28rIiXmpZnZCfXUI5G5rFtuGsyqt0GR6Fk
 agAkRIiiohZ7R,,ZPN59HC5,dQ9122M1HM0K2r,C2Q8P1gAHN1HkWUcM1Y66JyIsKaHRgj3iZ3
 ZkYZUo7amRqEJam4cNHfQ2YuEbsC,7P66.q.N0P.HWn,a42YIFbq.HM0N0k2A7...M0A7WGuc9
 30a55FbM8,,..Y6Up,A3.A,Y6U4V0BgndFHPNNX2hAQ8RnqY3dXgcNNnIiX7M0H.HWaZB,t6u2
 ,,00Aad2Y3l4k2MF22k26FEeAdi,BOO91UH,.Ud.a.B9PumqEEe1B8PiHEOKqGKLmaiFRcHmoR
 0GnEu66pV2,dmu.in4k2sEkaEIOKqGqI.HU7VdVUgbUo700cNH1e1B9P0mWuYU.a.HWgBgnlS.
 UoFLmqou4.Y7YBo3..R0k26P66p,gV7k2gcAVZVd,H,HM0KIb.A,HWn,C444EWUHtF.HN1M0KI
 aA7C5,Vd,,,gAQAM8P.HkWMFKIga2HU7MFRm4k2K2,,AV1,b051amRY8KaaVgcPM8U7Q6MEsMO
 KuU4,NFWUB,M8r,akfA7oAkF.7uHk2Q8AD9Hu69OqoEKogoFKoBEEOqo85,dCMOc9k4k2K2rl2
 M0HWoFLC5EEErcQBnl..XdBXN8,NFg,g6.HWn,C5.,FYEWUH,kIU3Z7H022aKm.kmktgBUdg,U
 332.o7PU3lR23MGYCYB2YX2YCVI,1uIbOFZ8JF7Rn1kS0GWK4GZoxhkReXxhkhgiIidVd2Y3lR
 A,dXi.e170..Uv2Y2,QcgxBCplyKsQbBI36RMRG5YApVoVn,cDQ5Y6cEaYd7RWGeGooEKYBY8.
 dXdQ550C3KKrGqIqk2KIb2YG,G39vCq.MFU,JCYet3iZ3ZKVoFR.GZHZCfXd.h0l1.RuPQ5RfC
 ,VIh6kta5cCCJYkYsC,dPqau.kdMO.U1,QC68b169Gomkaw64It85bOSbfFM8kYsQUjpAd8GA,
 J7NnfP1PPHvM,NMZfQIZdg,aEu666FEeodZtI.mW2BD1WdQbUYCumqER6A0Gukt.0GRsQn1Q5a
 k2G2Q868M8rFeUoV0VIBDNFrgBHVHhgoZ8.NFb69G5R,.R1g,Q6MEUo,.Y8Y3UBNN.U7Fu.UiQ
 A22Gowu40W6FEG5uKEenSYCI6.RnJ0WUgcAVo,e1V769eHq.m2P.d16FEekv.694It85HtC,7R
 sQ.,,b1sC,tETfPbnWcQCrtwBF,kY6SGrwoZa,HWvVsY3MA.bdA0GeW2uKEe1lf95HrO5a4hXv
 .HMG2Zi3YwgbU24y2FdPuX2hAg7PGwaIrGqmWrI0GeUZVqQadQbUohUUl2Y3p7M090,NN6BZN8
 rFr.PM0HUClRUoFLu4ohvgV7kYsQ22.g,ak2G2Q8.a0dWZ,82EKoBEEC3.Y3R0EL.Er.P.HsE.
 ..U4,N,MHK4k4A,98Ha266QA66.AV2,b0UdM1M0HeFEECWjpAEE4It85dWZ,.AZUg6U3lW00Qa
 pAZB.Rm4MFQ5YCgC.Eukt.0GTM1HMF2Y,JCUZR5U1h6Ecy4KaIlmWGfEucCcRY8b8RK5UKViVu
 ..a4cEUoFEEW.uYr,VuPH1mW0BAHvMsEkd.WGuc9.m0kaw60pra4QetRi4Vd.50MPGrramREeU
 oV0,Y3R1H,C3.Y3R0EL.Er.MG2Zo,.,t6G2Y8fHmUdc7..umlgB,V0BgnVUY8g,YCI6UUI5..s
 C,NNMBjN8Pk2K2r,OYo,.RtM.Z02YIVUY6MH03.6Idnd.W0I6.b169G5.AZBAV76Ha2d130klU
 7V,dQY37OSky00...42GLt.23cE.C5EK..a0o7EukuYC.YCQCUU.EE0pra4Y8KqRAVB6IQc3,G
 3996OpU6RI5UItIdnusCO3u4e1.MOAZvAVcEr44,t6u2,NDx76BvPSrk66KKnUXFJam4cJMO6F
 .TeMkRYiiBAe1.b0QbjZhYpggBAptI.g,3W7N1YC00G2kuYAsCu40GRcHmoRqU7Ad4tQqaw2Yg
 3iVVUYe6VZVlIadQbBM0HcIUUYcZVH,F,H76feHdOGQithhUobx2Yg3CM1HM090r,H0MDaaZ,M
 1AV2,dGXoBF,Q8R1NloAZvU7A7WmoGKEqXClIw7ABRNPTnm0mSg3H76T0.EeabdU7phXNPmao7
 JggcAhYpZoBDY8A,0Gny411dXZ3YYhgaBhiBhoBhj76JN8PU7AViNP9966FEeo7uokqacYcZpC
 C3M80GW.S2kIi1AV7,00Ua68bXUEsKadxBH76d0kqaqtCrou4PvPK5eWBU7MN6AHtC,7F..aWU
 ohVFEEbsCk2A7C5,Vd,UUY6..H7690AV7gcA,bXUEtKqly4U7UrJijphb3YVZCa4dXe.aUZVlw
 4HtC,,.UdQ5..,dI9vM6JggcYCmWClIqk2aU7gcCN1EagcBU7AipBgg7N9XcAhYB3k2a2H9NRN
 P.dWUY8g,A,HWy,g7TfM856670EsGbjtQqk2aU7EH0GIWmoGKLG5qX2hAY8NfQ9PMNfBGrw0rI
 w7...aKrGLPYC....59O1nMYitN8H76d8G.HUZ,n7CHN1HU7MFRmRU76R2YukoGKLk4k2KIaA7
 a4P1MEdXU6G.HkYOYnFEcQUU.k26Fkd.M8IeZRAY8K4Y3H9Nqk2M0K2986IC8XBU7MFRm4k2KI
 a.gamAZBU7gcC,.KIaA7C5,VVJimBA,7J.G2.UdkU85G3Udg,K2.,Vm,00...A3836J.mWC,.U
 UEsyqou4Z96...kI6ITPOEeMNkI..008bXhgYhCYe6,..kI6R22Y66Ju2b08rrY8mW0BAsCP.5
 0sQEIEL.Y370qY5Fc85sInvQB0HtCEuc9fHu.EuktcN66sCkY.,Vg3CKaUY8.H6FkdUcUdEWUI
 tHV1EImqmOrmY3R0r,akrmKmO4enSCqkmKqUvQgVZhg,pFu2ii.sCPk2AV4xhmhhV,1XodQYCY
 BiKKYCI6Ug6RR1HVH7R.Y3RWgkwo3.Yii,g,ak2C4UusPN9NkRU7Y6U1,UBAV7AV3lWYC.666F
 .RvPsCGrw6P66cHmo4UC,98HMNMAU3p7,,m2q.HMG2ZnFEu1bPNsPEE.Ybx2YZZhnhgdsH2ZnV
 xcQVPMKad22.MNTfNHN1Hk2akb68.RPRkIw7.QAM8,tH.sQd1aGEG30mWWpY2Y3lRk2K4gadQb
 UAd43Yn,aaZFEG3..6Fkd.M8PU3l4g60Gea5rVB6IMFU,RgohiVZhElk6REf4219Q1fQNPOb9R
 p,6JuorUa3iVdCgAkb84EfEs8rmmGEmqk6Qp7670cHM8rV7o8AAY3NPMY3RPN03ABEKohu2Y2,
 .rN182H04Ks4Ktm400kRYB22.PU7p6bXUQ2Z9QgA,7JM1AVihgrVUI5UUABEE.g,aEaEEKIwkt
 sPAgkBAHtCA,HMGogkBAC02YI,M0a2FNMVPMuGuabioA2Yx6IT1A3BVa3iVd9.U1Vd6J66708Y
 2hgGhga3ZV3CaGEKIb.aU2,2eVJiV7819Q1HKogkBAHtCk2A7oAoZhVUEfM8y2FdNEvkSAhi38
 aGEG3.sEFPNIcppgahgmBhixgcAgkBAod779OKs690LtY3EsaGEK2U76F.NOORvOFNMVXgVg6P
 694Ks4adQ5M0a2T0B9QoZn,2Y2B7u43Gu6JErKaEFEe119Q1n4k2gcANGw7...aqoIcd,koaaE
 FE..HkWuYv.HkY68RPNEEC0AZUUdBB.UI,70sEEbK4AAVOMHHIuqmUgMOUd2Y3,M0a21fP59OT
 HfIiEBA,d7,78B1RNP.6IA3BFz.qYeVU..THu.AV7A,y2GYq,19PNvInvQhOMN96HeH.wB.H68
 QijhimRgZ3Yjhio3ipZiu2YVpijFEGqrKLlmqmggqBgghiVZidxB,,M066BFIWGn05...O4YCQ
 A2YxcIUd2YacTB9Q1fQUp,M1HU7.T0B1UX,Yct,H76B,.gC.HFek4k2cP,dCv,QbBU7kfAdAFr
 umlmqkkYuIEiLbOqoK4N76ROORnmWLK0GbSquky0GWyYi32ohiYhZpA,NFR0M0Ad478uml.vFb
 Gqm8rmAZUEIuanhiWRAqHE01d0k2kYcPR7Pc959P11sNf1,7J66R96.66.A,Y6cE.hOM033ORB
 fN.Rf9N1N76VfQ6P6Qq.a.9WBM0aU3lRU7cNVPMZ96pVa3iVd9NHrg,AV3Z79WmFPGnIq.akWu
 2k2a2b1vllUU.GYqld.M8k2KIaA7WGq0rkgAmnSQithB,d7QC0GSMO71H,MNsMkIq.akWMFKY7
 N1M09eHq..K2r,HWaVUQ2YdU.UqgadMFg,9WUAcXZCUVNNdXnR5P..QiZZB59RTHIOpU6S.G3M
 8Efkr8ag6Qyag6QN76B1p,UDlmUtZZUAgkFK2C91ER.cHsC,7RIbU.sIdnuUiBAe1.ROMQbBcE
 .m2q.HMGQCg5NfM66U2,b0UdQbBM0HM0N0k2A7WGwYit765FbM8O0l1uGn.03cQY8.I6702jd2
 Y3FEi1A,98SVfQC5MSHtC,7FO5A77PNl98l99,NSHtCP.HkYsQ22C422.hXH,kI0mWmod.00qU
 7M09eH.akVUHNP8Ll8bfBZBM0KIaA7C5,VkhAHXUY8..UdQ5M0HeFEEMOEE.RPM22Y6UiVv2Y2
 ,w6Ud.aU7FwUU.00g,ak2MG.u0UE,2266708Y2,.00M0A7.C400Z022M1M06R2YuEwYCiX2,dG
 XoBB0WGr4qqY3dHsmWjdOHtCG2I6BOO91l99y4g,A,A7Wmr8aUQ2M8krc9EE6JV0H,.H.a2bXU
 kkIijFeW2,76Fd8,tQf9Q9HECqkmaUIZd2Y2hAQ8.a0M0Ut3Yug5YhZpArN1HU7.a2nf959P11
 6N8rm2YI37AjUI5aLLmqm66U723aLEqXmhgX,hPMaqkYBeWBU7.a2whWJhU.00g,A,UkVUIbx6
 FEeYCC3Qb723OqouaUAhiNNZPPTvQd96bvMTXUwicBhX3hUwhrpB0moCLE4KEGJcUeAZBU7.w8
 EI05uGqohf3YX.H,05.RNPT15FeUd6F2imFEe1V1RlmO4UBU7.A7WGs.HXUg5a2y2F7Q.oZgVU
 Q2nf9TXd2YcIZUwdG32.c9RPMofUQYUohVlI0GJaGEG30mmICjNBHN1M0.9eH.a.Eu.abjFLG5
 q.a.kY6RoZa,28EtY86R22YCuGVEe669eH.a.EW.OYidE1nmO2ELyKleaiVSZ3690rIin4k2.a
 2V9657666k4k2.2jiQipJAIbxsQf9Q9nR0GwuGu66pVkpZoBDrN0FVXxhmJiZRgo3YmhgnhigZ
 iUYitNN,d8q.a.U7ViQgjpBsQoC0GJ.EK0mmqa,Vxt6,tSv96d8G2YZdQ4nQGnI0mWsCk2.A7W
 WioidRCggsFtEdaGE.PfPm4,7D,7AH76B,Z1.EE.aWI37.oad2Y3,M0.98HKYZdQSHOam4a.H.
 MFRm4k2.98H.g4k2.9eHU7.98Hg,A,EsEEkr8avgV7k2.H0lHqK4RdQ9PM7vPR9PaGEO0EL.P1
 ,NDO3M8O0.Ev.VVUY8.oad2Y3,M0UL,.qKr.xND,7AHFHojcoB420mYuIE0Lty451.M868dPSu
 0Y8Q2M8GYBU7.23O40GlQC,NP99R66Jl4k2.G5e1d1EesC,Vq,oBB0oBY369IijN8rN1M0U3p7
 r,a.MG6Qc9h1gA..V1q4ESUI,kM..a.g600M0kYkrc9dXUQ270cPkI0GHsQ2YX6PVXZN8G3.N9
 Q11g6q.a.K2P.HU3Z700ganU7M0gcC,aU3Z7.81M0KIb.HMFN0koUdg,AV3p7UANG.vlkIC.G2
 Q8.aWU.8Y2,M1H..22GqrmKqEek4k2aIX2DabioAUE,8bIVU..UUUv.H6Fkd.M8.8YHdQ7ONZP
 NW0P.90UUEq059HEG3q.akY68lnr66o7c72Dc9P1,NGQjM3emFKY7U1,YeEVxFeW2,7R2YuEww
 BYCq.akW.lXtd9.0Jt6J2YI,ERUoV0,g,AV3,sMNPMUC3imxB,7JkWW3H68QioBgiZgVJiY3Yk
 JCKKmUeM1M09W37R.RWBU7gcCtCk2a2d15,6J.,7JM1M0G2Q8.aWBU7MG.vFbaYU6GA,JFuMNS
 qu4Ktc8H,a.HWnFEMOEEUBU7UlVdNN2ZjJAHtCk2kYsP3HLq4g5dOS0GeEEG2I6dOSV9J9vQd9
 8l99EKYeGlIq.a.KIakmkO.a.KIbg,A,KIa.ABM8k2MFR0A,98HAVcEnKLrC4TXXBAI3k26QKK
 Ee1sC,7P11,dC.P.HU2,2emhgkRcVZBF7SNFnkIi1A,a2F,22kI.ELUUUEVd2YI,.C2I6UiFwu
 GqEK0GbaIamWspZjVgdPmWkJiZZ3N1a0A,KIbQ5M0AcXZip,44dXn3ZV3CcN6905.Q5M0Y6.19
 PUV,O4a0M0A70LtKKECGEuYA32..TfPbHtK5FdH5nqY3VXg6SiHE0LtKKLGrwcC2DsCWLEEs8r
 m0mWu2k2MGYhZpC0GT66d0.dGu.oZgBBuGqKqk.BOE669eHq.aU3,M0C2Q86QgAHN1M098HEgM
 1HU7gcCN1Fd8P.mY7FIC56P.,d7kl.5Fb0LtUa.dXioAs60Jt6JA3qk2aU768F7SRtP2YxcHA3
 T0l1umqUX6JkIaGEGJYM1M070C3.H,AV7lt66AB66.A,X1UcUd.aU7lrc9Ux6JnHEG300cEG3Q
 Ckr69.k2g6KYZVp.A,9eHA,akWm2Ud,H,akWuYU.akV..k4emIq.KIakW.cHq.90K2,tQ99PUv
 gVB.K2sIdPMRHc855OMNXKB6W5UIdHTXd.hWUAju2Y2,.rlqeHE8ogG3uKRQe6x7.822Yh3Yuk
 dUcQ8Ew.19NZP8HtCuKEEMin4AV7lt.N12YI37.C3.H,akY.,t685.g,AVAVBk2aU7Fr0mS0GM
 0GeEEKIwMNbvQEwQ5708YH7I1HMWGwmWhBZv22kMU7MFNmYcPMA,7JF0.UtFEG2.MAF7SN76n9
 9,NPHVi,ZN1HU7MFg6WLs..G2.cHF7SN76EK0Gra0HeH588g,A,9eHQ5M0a2b1vll.U2,b0Udg
 ,A,98Ha2F7P.tVnVUo2C5,7DABEE.9151a0A,9W3FgU7M0KIbg,AV3FE.HsE..9nIA,KIaEW..
 AZB.R0EWU0V4Rgo33ghgUBkWm2K4m4.o7U7FIgA.HFH0WcghUgbUohZxiaVDFIqKEsQCLr.H76
 d0G2Y8d1...B0gcCV3VHNM.kRqUB6I.MFNPNK4FdJ6S.cHM8Efkw..QbBcEU3,.lXBM0HeFC5,
 NDKLsG5d8Gg,.C3.HtC,NFl9Q.ADY6cEgAZOMRvN998l99arIqk26H6F.MFNPNWGwam4Ebg,66
 98P9nmsCq..sI9ntWGf42l1Ee.H,O3a5.UvEVUBkY.,t6IACqm6GU7gcgNP68lP8rV7AVAVBU7
 A7ADqXX,,,00sI.qqIq.HM098Ha22C66sQqaUUnFEm1H1.gAQAM8k2K29mWW3A,HMFRWvk2AV3
 ZBUtBZv.I6T8QF7QNPRb99,7SN76.uYBkWm2WLEe170MFP9QdndKKuWmIq.9eH00Q6.IAggdkW
 kdK4rl2qUE,U4BgXZij78Ew.Y8kIUKVddCG2kbMNQbBcE.aIXMS66RvPYe6,MAbN8r,HcI.70C
 3sQA3f0QCP96xVg,q.90rV7A7UxMOEEUBk245.FNOamR0Gw00.3Gb6H9PMB98H9NHVnhggtMEw
 a0AV7FIWbX,q1V1H766Sy4q400b8IZ1G30mdGrk.C2WGwam2WGJ2jUghVBjUIgZ3YCB7,d8HFI
 e0gcANGQCEq.,7JM1M070C3UhBZv.I6VWk,Y3B1H,AV,,kk..00A3k2G2kV44kk..k2C2.059n
 Ii1AV7FqUUUU.,7FEeYij,ko.22o6kWu2JN8PU7gcCN1HUA,66ohp,,7JM1sE1uI98670CZihi
 hNS0mbOo4ak22YU2YX3hVdCPM0Hk2WLEenSY6cEu2HGuC2b9RF7FkdABO5iXsp3nXu.6JCKo4K
 tWHuabvg,AV7FWUH,66xFNKnO0GeEEWLLG5.6JUlo4MFU7YjUAhiZiZxAeHEWLEe1U0,..Q8.H
 N1H.EPIbU2jU.EVUABgmxgZBdiZi1,.b0EKYcZ,8rm4KqOrkmqI.8rm4au2Ys,U0,ZON1nVyKr
 .sIUqFKo7am4.kN8HR0Gw.EV.sE.kd.h1G2Y8ZnkQ4dPSVP8P..hFR..30U1,.b0oC.Y8EPYCa
 0gcC76U2,bmX.am4AV3Z7.,VnZCHXUY8g,2D.I6sI8ro687ONhXHtQ8LKY6UgRioJig.ko.HtC
 P.70sF.H,.66ohdZBd8G.l1.3WdZhcAZv6Fkd.M8..,Vg,0GeW2EW..AZvMFkt.lXUQ6..am4.
 .,,31,,...a09fQYBUv2Y3,....g,.EE.Cqm0W6FEG2.UdkdYCF7SHN1.MS00RvPdHek4...HV
 4BgX,EWU0NHT8QFdPT9RN76lP8P.g691X,,7Fkd..l96cHg,KIb.a2l96vV776d0,7S,dCY6cE
 uomA7C22ZlsCo32Yu.6JKbYpAMFkWEX4qlkR..YeZJih3ZKB6W5.u2.h0n1.kR0WpZhj3iu2Y0
 B9gV7I6odUocVRA23g,HsJa2WGuaaZFSqHECrwAZUo2C5,7DvlkuKmaGEG2AVhhigxB,dCvlta
 bv2Y2,b0UdQbBU4BgXZCAjdEWU0tHghpZBmGEWLKAD.P.0GeKKtQbBg,.kdaqq0Lqgcs3C.O3W
 5UI,a0o8AD..rlkGKmyKse1.30q.HWnFEqXhdP2YI37Y6sI.A3,7J9fQWGwamR00cEq2qqou4N
 76a0Y7H0220LqKbUY8.Q8.a0..I6EsEK.kWYeZ,q.u2r,j06QNXUY5C500EEm1TfQH767uHM01
 9N7vP00kR.C3.HtC.nP8rl4M0HWsp3o3kS2ejdPKKt0Ge.EVY6.,,r,EI6RsMqaUA7A6Ajg2Y2
 dP1GtqrI0GH6SU0,oZa,HWX3hVtI99RH76Fd8EIW5sQoAMDeqtGbd2YeAZU.PU7AV2,Qeo7F.q
 .HMFQ5MGADdPSoAMD..00U2,arI0mWu2.WmwuGukl.QD...n1I6.B1a251..n1QC...M1M070s
 I.k4kW.Y6UDlkGKm69.MFg,66bOOP1.kR..gcs,EIUs,6JUdU7o8Ajg2YkJCNFqER..iXjJgeJ
 5K4sHgA2Ym7PGbjdC,dE.300mdaqq.sQUstCPk2a2KqsmawgbUQC22QC00Sqm4rI0GeW2EtYhV
 ,,dCUv.Q8.amRQedhB..abvg,aEsERcHQbUMM22.P.H0lXtllEEkx.00.Ew.30En.QA.G3U7Y6
 cEC3.ln4M09Wv.H0n1QA.r1..kw.30En.QA..M070..nn4kW.Y6U13BI6koEwmGEu2NFbUkFKY
 BAZv....kwmGEuoYEbUk,..UDFtKKq.N76l99abv.HWkJC,t6uoY2266.Cor6RZPR.Y369Wbv2
 YkFLEEe1l1iHE.VXUg6qU7gcANGUUg5HfP,FYM16Fkd.M8..C5Uv2Y2,3mY2ZsZ3g,K2.,,bHe
 ..C3.Hl4kYsQ22YA22.aksAAH1WmrM8U7A7y4R,00dWUY822EVY8GpmC5sPY3BOEM8PU7AV3lW
 0mmkO.akWuYBk2Y7.HnmM8P.u2g6MF2Y33D.i1.UEJCKKmEWKqlmqk8rkGro68h0l1Eeo7A3cJ
 6QyagcNj9Np7670sHgAg,aEr44pFW.uoksCP.PvPKKR0GV.cNTXVFR0GVyobm2iX7ktQiu.A7M
 1aEc83.DW1xhYhgvg,o8ggsdC.QcjpBKYoRbU69,tMN76HfCaIbGpW.eHE0pba28JEG31eIZOE
 n86O2kVUBA,qU7AVE,U3phnhimhgAhgi3ZghgiJbUA7w6aWBU7o8Ihu2Y7,Q58HR2eD,Z0....
 3OFaYBU7Ad47PuKEuHEmoWuYnB3k2I3HfN,tPhPNZfNNvPj96d9OMORvMZPN1vQ996bPOEnAgm
 JiV76b96JV7k2o7QimYZUYd3,eGE8nIiX4xdG3Ye3Yug5V76yIEuah2Yl2Y276bfAreOv86pVn
 RfehfUg6iHECLEe18n4a.HMFg,HM066uqt.in4aU0,Er0Wx6Ar76ROFj88mGEOHOamRq.H6HM1
 M0HWn,uqu.W2,tM,dCY6sIa4sC,NFRvQ.FdP,t8,lIin4k2A7Wml0GS0GMsHZGICay2YmkI0mb
 8370cPMS0mYsSZPN19PN76ZPNQ4NFtEPgjd2YI37q.a.91htA2YX3YukMiXidC2aBM0aU3Vv.H
 EW.S2kI2YnRfih9pVH,FtE8ZXBZdQbUA7.AV3Z7H022CLu8ro66EE.70MOUUgZUA4Fd899S59P
 66V7KJN8r769eP..5P8r,aU4xdG3YddCvFM00CKEqGE4X2VP76L76HPL,dCY6UndQrOOv869eH
 g,A,70sF.H,EK0Wdg,Hk2KIb.AV7p6bXUklUU.G2.Udg,AV3Z7.,Vi,.K4CqrkIU7g6KY339U7
 gcCN1.r,a2RnF2aUYe6VChcLNNl9RN76RP8rloI50nRq.akfA7AhUYbU667uH,NNlnhaqi0GRs
 QrOOvuC,NGMOH7690kWm2KKw22vFbM1Eb.0bjd95XqVZ3jo32gAin4a.HeH6Q.UnhAhXg6O1vQ
 3GmAZBkW66D0UBEc.kX6I1fQ1PPbvCA,h0R1p,6JCJuUv.cCb0a2r,30UkllghjFEe1PXZRbU2
 CTXoBjkdCY6Ui,rN1A,kta566pVH,FtQCrIg,.C4.EEe1rPTU7p6b1Yhk,,7JFWBU7Y6sI.qqI
 iXBU7wBUugbXVaVvQA.pFs8rrsQ.rN1M0BuPAAUZZC6Qy4NPORvONFswBG5NFr4qqAZvg,AVX,
 cCy4kRU7A7uqk665,002YZVkAZUg6q.K2r,CIoEXkk6JnnmCbUgin,22o7i1A7OqvGKECGEu2,
 ,q.aEWU0tEFnl28ZPMYC.YBEnc9NPOR1deIAZv.HMGoj2,dmW4ru4aIBjk78VfQTXoFKogrFua
 bd2YIVU.XNAMF2Yv.H6Q66pVaxiYRbUY6UoxBUUI50bjd9bvMsCPM0AV7lqYA,NDaIc8rr2YI,
 VfQoZh,pV7382Y3p7P.9WBkW66D0ktM1.90IcjZgtRbBUKVkVYFK0mtGrkGrtKqs.Eby4rlleH
 Eo79uFM1I6a2sM,dCY6MHK4sCPM0akYu2UiQA.Ug.YAHtCP.50CZhtQ9PPHvMUvcENvP6QZXY,
 .amRq.G2I69ePdPNZ98VfQT1.EK0GskIiXs322CYAin4EwumlyKrEEEWUIlmQcjphn78HtCWLL
 CqrUiAhi,,,5vC,7SR,.EN0GR6FkaQiodQd9QTvQrN1sE.gAQbBU7p6bXUkoUU6Gg,AV7FWUHd
 P1XUEsELu4uZI370mmEOaGEK2,tCk2G2kX.am4M098HEtMOkI.Rm4.,dET9NiXBEc.Ee03GomC
 Kqin4EfEl4qt2emxBNlreHEGomEew7.M0TfMGpw0LKIC59Jn9Qp76.CJugCi1AVjlay4Nlr8aK
 BhnJ530U7wBuokqau.Eb44r,aEsuqrcCG2UjlRq.aEnSLm4IuGbusI9mREV.6Fkd.kRghjFEEe
 03in4aU7A7maqFEuXk..jtAH769Wv.ZON5noEIyKlg7Y3cJYZUwhWdH69y4d0.amRq.a2bXU.6
 6k4k2uqk66pV2,oBQ5M070GZ4dP.UgcQ91mWalIi1AV2,.30B0..ElEckIg,AV7FI84UUQYUUd
 2YaEl.oZhVUQ2d0aGEUUIA.,dCo7NuC,NNMAHlW66r,akYcN2YxcM11EeUaxCenSUUg6.akY68
 BvR7nFUd.BXighi,CWghgqlIY8.,dCUU.U7A7.5,a0UisPMDGJckIo2UXxBkt.,d82hVRi0Vg2
 YVJgnB6YZUgAVPEMT,NDibd22M1M0WGJYichgmhgUggsBhnZin3YV3YXxhmJCb9QTfP7PORvNO
 qrMM2YYhgXZhVFuEEe0AV76QZnl0GR6F.RONy2FlR2CoZghAUIJ8in4k22CMPEREckR0Gs85Rt
 MUUI5G2.C2UBU7sEkaUkJCamRU7MGoAoidlF0GsELO5G30mmUl2bd2Y3lRU7cNEu2YuEnkl.R,
 M1AV7gcAl4k2A7EE.,7JF0UdQbUogrZApVCV3FE.HEW.aYnV4NN..UkVd.aUkVigB.d0i1c951
 22Y6UC,.k2Q6..H,A,HWmhgXViQioJijFECWCVIV7c80bZNNOrm0GmKql.kr8LmKKt0GJa0A,y
 KEEtKql.UiYBRnRq.a.HWj3YxcH.0GtK4..2YuEsk4ak2A,K2U7ULNGsPRdPN1CWC7HGob0mrU
 jp3oBKIbQ5M0sPRdPN1e1V1k2MFRm4k2g6U7g6i1AV7p7F7P9fRsC,7F.T8QsM68Ug6QM8U7Y6
 U7,WmrcHUkViYhdlIiHE05.RNPT1sP3nakR0Gs.EvER.hWv6Q.6RnHE.G3r,akUCpdK2Gom.d1
 EECWC7HHtCk2SYo38gBaEIeWhBgttMFHr66VfQ22oAAYVA2Jl4k242.....akXMEd9Ra4KqtWG
 s8rrY331.Z1A3k2aIX23s6UU.A62Yj2YkJCuml.R,66JVV,Y3ME.lnUYCvnFQDH,MNEQGnI.k2
 C2w79nvUc2CY331.Z1.AV7FzOqr8rvEEG3q.aU7lm2C66HGE0Ltyai..Eek2I3HfPb1,NNPHu2
 YkJCK42Ye.a.VfP66cHQ57082ggmFryKmY3RGam0M8U7EsUiQgjpB2YuEWUIdH..A,05.c9H1.
 UBNN.a.HUk,..I4...M02jUUkphjlRq.aU3Z7HW2,ohjRcjZA,NGY6Uj7RHvPCLEG30mYQcA,u
 0Un,mWc,7nIqk2M0K2cTFNMC5UU2C..kI00cET9Nqk2M0KIb.aUkJijRA19NZ96pVkg,AV3Z79
 0aUk,.G2km.U7MG2CsM..,d8ggh3i,VgMM31gjU.,7JF091.g,AV3p7U7Yc3RccYhZVd.6JCIq
 MNUv.98H2YZVd,H,o7kW66d8I6FsCg,3OFaYU2C22o7iXaxB44e1B0iHEWLEEbUhxB0GR6HVeQ
 Q5bXUI50nRM0HeFWmtkFAhY,,d7QCEq05AZUY8g,Q6sICLXEICbnZ37ONMHS2VeQQetRCM8k2a
 2bnt0mF24.AV7lbY6bntY6YcZ,CIc85B8P1XUY82YhxBU13emFEK2kWm2P.HMGQCPnSYCK4d0H
 .PvPsQGLEmqkGrmMOR96708Y13BAcnRidxAe0M09W7lt66AgmJij,2YaxB.YeGl4k2K2986.k4
 k2KIbQ5M07ONsIS2FVhBZBU3l4MF2YvU7,00N19HEG3YeEJCG2qk26Ha2.H10GeU2,dGXoBF,Q
 8R1ogrN8k2u400G2.Q5MG2ZaFE.H,WGnSbighi,6P910mbEnUjVxsIVeQTnIaGE.BvR0GRcH2Y
 3FE..Q2M8Enc9U7lxm2THK29ZXxFHoDFPMbXYlYuYaVX,MNkIY8g,AVcEu.91.T1..UYVVFua4
 ,d8U72CCKEe170GZClb.0Ltc9NPN.d0r,aEsUh,pVhVv22kl.,dCY6.Q6.k2C2g7.amRU7A7O4
 O5CGE05uGvEeEEK44nM.q.HMFgcBU7A7EE.,7J.M8.pVCV3FE.H6F.H02ZiBAmWkVd.aEsELq4
 00q4i1kl.EW.u2..HsE..a0MFR0kY68VfQoZqVXMORnm8LrM8OWcghjFEqXA38AZUY8MPER6KV
 eQ2Y3,.gBs6mIckIo2mqmEEkIY8MNsB..u2UdQ570sH.23EK2CsCEsELmqouaUUClRwcZlkMP.
 PPM.6QZXUI5O440M1MGBmqUxsEV0G3wcZZi1VBA,KIaA7G2g7R12Y7FW.yaoVn,A750c951o3U
 g6OEmA3H.UypA.d082iHE0Ltkk.0n4.KIE0Lt.U2,gAk4ak2cH.GoW.A3.dmVkm.PU3Z7gAABM
 8Ebg,9WU2emxB91GomYBYCQ5PEckW.5OMbHa4KlKKqmooCbcoe,Fq4KlmGE8rryKueHE.odj,N
 OM3PNOor8rqeHECJYkYsC,dJMPHfPN76PPMlfC,NGR8J90H,O3,7SN76nfC,,.EneHECJY.iXs
 piVZBaLv4KqeHEa290r,Pk203.aIrCrmEfEreX2hA.A3H68IgpBhgZgUIgdphVJit3YoJiZhAT
 fNmqkgA,dQ1fPDnt0GJAVcI31,U0lYuo4kYOYi3YxcH2YIVBU7A7WbcBhiZiUQ2X76d0,dP,dC
 2jUgcCN1aU3Z7HWtpC0GS0GrumlyKrUd7R66d0aIrC5ohiYBBnIq.H.6ShPMo5Rf951.cAGJY.
 .8roS4HN1.90o4qU7Ebg,K2,NGC5in4a.822YgBA,dCo7in46H665uPCb37QKqtCbj78lnRogU
 Ibx6SRlwoZaVvgV7M0HeFOKEaIb0mxa2ld9RVoR4v96L7659O85Y866lfR1HEe1QAO5.q.HMFN
 0UlAZv2YspC004n4UClRU7FIOKEa2..aWX2YcYdVJAO200..EeW2K42ad22Q5.b1gCd1M1M07O
 NsIS2kIiX1xBb1.MSiHEaLv44MSCqroC.QbBU7A7Wmwu0....C0....EeEE..U7A7a5Y5lfR2Y
 I,UnsC,NSER6ShPMgcCN1MFN0nfR1Xu.g,cH.WLL..I4pVtpCi1A7W50GSghdphUYe6VhBBenS
 2DMFQ5.n1,dDqqkWLEGJYUVFRMSkW.UgVx.,,YBI5WrRA7b1FdQTvPam4kWmY7lwUw6P8KLCqr
 ..q0G32jiYhdphf,NPM3vC,7P1fM,,l1....g5NPMu0..P,.W40GRMArlYu4.QbUYhV,..pVsp
 Cq..W50mS...8Xf2Yl22..A4.....ERMSM1.9O1M0n1m4rN1HU7w8H0FNSR7PH15FbM8EwOrk2
 YyMSR7Pc951.cAi0H767uH,NS,dCAjiYB2Y3,M0HWtp3kSEa00MSR,I5WrR..g,AV3lYMShXUY
 5nf9N1R,.EEq0.lHqoB,,n1QbUAjiYB222D..U7g6.MDaLLUi..kK.Uc,MA..Q5nf9...e1lfR
 g,AV3,W50mS...ENUU..Ul......ERMShXBU7gcCN1.r,a2bXUklgB006F..am4kWm22ZnFEcP
 IAaGEy2FtQUd,0GeUZVX,H,kW0mWU7UCN1g6MF2Y1Bgn,Y7QbBM103.CJu4KuCpm4LIOpUsQ4a
 u2Y2,d0k4aUKVa3iV79,NO799,7Rp7670sH3nmEEaKmGrwIbU.sId1MNp763uHm2M0ak2CLK0G
 wm0NFxmGE4Ks69man79m4aKnmGE0bZZ3N1VfC,,EbkR2ijRig2YkJbUA7d0M1aEckW.50VOMZ9
 RFdJ6Sp,.M8UKVgxhrZZU2hdxgcJbUA7.,NNp,.,tM1XnZ3NPM399aLKYBbnl4qtYZUIijFR..
 iXBEVw6q.KIwkt.lXBU7p6F7SRtMN1EuaLsKqI0mbEw.UkVd2YI,kM8HPa0akWmY7FwuGuabi.
 qX7FP2YI,ENOHMam4a..x98lf9d1U7,256RbVU.Ud6J.A4fN8P.u2rV7sEkdgBTfNHtC,tM1Xn
 3YuEbYdv2YgtQUUIbx.IijxB,dC.P.NvPj96pNDqoUWJIaIbG3A3,7OHvN0GRq1HeHFNGR8J.P
 .N0PU7AV7ltES0Gl4Kt00g,A,5OMbPNN0UcYhVJA85mGEWLLG5Ug6PTvR.HtCP.HkVW4UX,sId
 PMC3arIg,A,7082T1ZPR23447vPN76NHlMSHtC,7F.NWf3ZXBgntQN,b1Y3NPM3P8P.HMF.AV7
 ,g53Ht.,7Fkd.M8,NFNuI.,Fbg,HkWsCkm0GRsQnHEMNNnmi1A7KKEGJY...HtCC3.0mWUt3Yu
 Eb669WU.G2I650.UgFK0ml4qtQCarI6F...69WLKQgVltamRUXBgnhARtMT10GR6FEeMN.F,..
 c9cR22Yhjxiv2YXBA..ENUcBhbtCPM0A7.QgVRC.sQUUUvBax3Y3Z7QgVRC...gjUg6i1Y6cEy
 YoBhhBhuhg1Bgn78ZvPTnIsMsQmqoQhUUmtPaEI.e0g60mVEckRk4AVE,UHhAVuPb98lfC,,Y8
 yaZB3cE.2D.,,70km.EEWLLCqrUiAB.2ijRiBkWkdK4Q5P..sEFPNIcjxhg3ZKB6W5.wB.30U7
 p6F,NPM.dPSK468.Ukll.gAEPQ5l966FEVo78orya1xhiRiodF18HA3AV3Z76SELUUQ23uP2YI
 ,.VN8r76...C2..o7PU3FECIo.QbBg,300mtG5,dCo7iHEm400UBA,N0,7S,dC.M0HWnFEmXdN
 N2YI,UoAZv.HcI90dGWUH,kI0me.bPS0GTMO71PM0HM090r,0rrCLEEWUBFuICVvPiX7kY.qXd
 ,,,q.akskoUcAhY,.cEEaK4FVdktKKqUm7S.HMG.IgZRgjhhZ,.HEWUH,kIiX33D.ADq.aU7FI
 abo,kS28MNZP8,d7Eu.U1xhhN8UUY6cEG2UUcH.HEs8rm0GRcH66Es00UBU76F.58OkuUdFIEw
 cHmIKUg6PC5H,A,70MEbvQHvNWGwmWtB3k2A70bZ3YXcH2YI,bONd1FlIiHEG2kVy485krqag.
 NFwamR2D6QZPN,NF.akWm2QC009PQNHek4k2ggmFlKqlUdQbUY6sI.A3.bXj,r76708Y,Vb,M1
 M0902ZstMEE.EHUjJAq40mSQeEJC5XI,M0CJu4Kr2emlV6PFlIin4k2A7WWUEbM8UiYC0mFY66
 Ju4AZU.,NNMBfN8,NF.aU7,,VC,ELC4.HfN91H76d8GA,JlmsPZHsyqt0GnyaUAcHR82Ye.a.b
 ON03o391r76bONd1.uGtaqnk4a.HkWuYBU7gcA,lnl.sM19PN96d8G2223g,AV3lWq.aUkVuEb
 sC,,22.P.HEWU07I2i1Vc69OKs4adQ5M0a2sP22u2H,.R,EeICa0EW.CIo..2ji.N7669WbjVg
 Bhi790LtY3N1aGEK2U7MGQC00N9Q.FWBU7EWUH,MPHV,RgohCkkqqmG5bnk.B1NFs.Uv2Y13BQ
 8ICgAHN1M0K20mk05,dCUv.HU7Fn05,t66H,,0mmEPKnIg6q.aU3p7,,A,708211MM69O4a0M0
 a2lHua5Y66J.,7J.g400i1A,HWkFEC0.Q8.HFEG2I6y4..05NFwEwUkFEK2U7MGYhZVUo5V76U
 2,dGu.o3HfPuGqK4,,B0gcCN1M09WB.NmYsQ22aKn0Gek4k2G2Q8.a0V1pV2,P0.r7698SsQwB
 WrIsEEVy4F7SHtC.b0d9O9fPHtCCJuYiH,in4k2G2I6.Udpgg2YslwQbUQeZ,UgVd76pVsRbBA
 ,akfA7QC0099PaaUYcDh,A,70C3UhB305,,70q2ICsC..n15082Ajd.sI.Uo7RExamRq.aU2,3
 0..aLKIjdQbUMNUtBZv6F.N0F7SNFq.NVdg,AV3p7,,AVkxB.MHEt.P.HMGQC00MN,FY66UH,k
 IsIdHuUt76modMSEbkW66U7Y6cEC2.kmEK0WgMSiX1,kmM8r7670sHAda3Zsl4kWm2UUkl44,7
 JM1M070C3.HVkFEEWUB,Z1iHECokCbEVc2Dr7650.M1MF.22SLoYBG3U7Y6sI.qqI.,,UB,2Ci
 X3,.l1U0,lnR.C3GqramR0md6R.rN1M0708Y1,.j9O69,7SUUQ6.K4U3,EEcQ99Q91d0k2G2Q8
 .PP8Q8.lP8rN1M0H022KLrGromaIVU..kI6Q22.q2ICsC.b1ADQ6cEkwg,AV3lWgAYanAZBAV7
 M09eH.aEWU0,.ICVPNY3l99M1MFNmY.,VaxBGJYM1M070C3.HVkFE.MH.sCP.HMGB000H9N66E
 E4ru44EIUBU7MGoDH9NR7RnHL.HWdphoR8a0kmEPWnI00.aU1,b03PN51kW..g,A,l96.I6R09
 XckI2Y2,A6aqnEKkR0mdKaEVs,A,50UoxB2C00.P0.r76.wBk4k2A7aLLCKqEEC05Hr66d8Gg,
 A,G2I6DONd9J9PPVfJ1fQFd6,eNTHFmWspZgViYit79GrIin4k2cS,dC.cH.GrIiHE.A6aqncS
 N76nXU.cSHtCG2EaUnZiV79,7P69erIg,A,a5.cH.M1M0K29O1M0Y6U13BA6UspZg,UtN1M0KI
 b.A,706H..Ewa0M00LEe1UB,.P.HkYsQUWBjUY82Y2,b0W0a05uPMF.y4pP8,NFNWUIjUIbx.I
 6RW77R50WmM2Y3p7.HEw..6Hkok4k2A7eLLC4h1.u1..yYcYhZBig2Ys,k2gcANGID..Y5V76d
 0.UbhglZ3.M0K29mmUnU2,...aU3p7.HkVUHVY,b8RGrdktamRU7MS.UC,.00UH7IAacAjg22N
 louqlOadQbU2C00.P085QbUQeZ,a5P.HkYsQ,NDA7G3QiUI5ar4k2gcAVu,bvCP.HUL,eLLmqo
 uaUQ2aIaYcDdS,dCIjiErMFR0k2cSR7PERMSk2gcC,M0C2.91r,cECorEt.j1.bP8r76VXUUkh
 V7k2KIakmkogAam4k2KIbg,6Ha2bPS00NvPT9Q,7JFWBU7Y6sI.A3aIb2ZAxhj7HO5HVHFuUsF
 EGoW6HT1.P.H6FEV..mqr69,FKo7amR0mVW4.M1MF.22SroG5d8G.H6Fkd.M8AhYVUI5u2r76l
 96.q.aEak4k2A7EEmXW,.a.VvPU2,P085QbBU7kY.qXd,,,U7Ul,EI.n96p,EVo7gAkIg,A,A7
 WmoGKECGEuYABZUUdd9c9Ux6IUm,WmoMP66oeV7I1nI0mbcTH9NR7P9PMaGEG3U7.91PtAVdAH
 N0FVrBgmphdphb3Yn2am2YeA3M0MFRGE.H.50UX,g,A,A7C5MOEEUUAC.WGua0M0kY6RRNP.dO
 S0Gek4k2.HWd76UUY8.H.MO79RcCAhYpZolR0GW.GpwYeZRCaLK0GumGEO2AZv22u000GLLG5r
 N1M0.H0uGsGrw2YxcH.0moG4ERMOG5K2P.H.gcANF,,4nN0nIq.a.MFRm4k2U3Z7.fdAU7.9eH
 U7U3Z7.HnmM8k2kWu2M0gcA,..a.9eH00M0Q6.G4Q8G5QCYcZ,C2.ABNVgsQHVHhA.U7kYUoVX
 .UBU7U7,R,g5H1Y822.e1R09Wv.H.HHLG5,,H1iHEaKmG5,,RWBU7kW.M0A7WLEqXCFEG32jUI
 5arRYBAB,,l96m2G2EaEIW5N1Y3aGEk4k2g6i1A,HWn,8qk.Y6sI.AZUgcAV339.M090k2KKEe
 1bPS0091r76VXUU2,P085Q5M0HWZ,.C3.HtCCJuYCUUgcAVn3YuEbkW66U7Y6cEC2.widZCN76
 lXnV1,kmkRq.akY.EwumtIgX,4HEKIbg,gcANGUUUs7RG3q.aEWUH,kIg,AV7FayqrY766vFM.
 ,NN6BhN8KIb22k2G2I6.f1Kad79,7So7am4kW.66ICdPR6JF070C3.H,AV7lt66tltKqqQgjVU
 6GMFl1b12jd22.AV7Fq.x,U2,3GdKKuEIWLKY66JwBkm.HN1HM0akWMFWGJ0GryKu0mtGbiNMs
 H3Ht66JFEGomEV..R0k2KIb.aEo4499R66pVIVBM0K2,,Ad47SC02YI,b06S6F.N0FtQYig6P6
 9AZU..QCg5bPNP1.6Fkd.M8P.98Ha2FtQ2Ywg5HnmEEy2FNOB96tNDCrwAZUo2C5,,ZHukI0Ge
 UZVnNP.HN1.9mWk4UCN1g6MF2YHNMC3rN1PEc.EVmqrEf42VfQTvM7XgEusQ9PQp,6Ju291o8Y
 it3iu.kdG5QbBk2yKlY3BPOYig6PUjJ5K4sH.EwmGEm4GqmCKR0GW.u2in4koeHECZD,in4Etu
 qkqau6F.44r,u4e1.bWdlRq.8rmCKRg69PPrN1I6M1A7,78FtQn1,dM9vNuqI0mbktET0Gv4Kt
 amI0GH.CWkVZZAAZUo2.KKrAZUo2.CKqy4H76d8G.CHPaGEkREnaKt66pVClR0Gq44,dC.K5m2
 00.ZPN59HC5.q.N0PU7A7C5qXXxhiFEG3q.HM070C3.HtCAV7AVL,C5,Vd,,7FTO1M0G2Y8Hmt
 ICF7FkdoBY3TXdQ5M0y4RNP66pNDCoruqR0mVUB,T1U7sP6Rn1Y66JaKr2boBjkR5TfMJf9P1E
 fsCH68JFf4aUYijNMhvPcQ9vMffQbPO2YYdNu466g,A,H0UZBCG3U7EWUHtF.HFECorQC90C5U
 BU7MFNmYsQ228qmwB22.a.9fQgglZhdQbU..kI....aU3lWgA.2D6FEVo7a250W0P.HkWu2r,a
 Uj,.C2rlrEu.WLLGrwQ5klcR2Yu.5vPkR0GIeGECorQC7ONbvM,NOb96RvPQgj3idhgY3Ye.aU
 1,b0b1.k2K2Pk2UU.a266YitNN,,U7Y6sI.A3P.HsJY7EEMO.U76FEeA7.kdoB.aWUwBumq.Ye
 t,6R22Y66JK5B1rN1M0C2g7.H,oZh,M9XtCPM0A,H0s6Kqs2YIVU.M8,NF.aU7FIC5qXZ,TWc.
 IAUd2YD,UX7P66d0P.HU2,bmX.aWUY8KKIyKleaoFKoBA3CpmGLeabZdHH8HNlr8agsP3HLEK.
 g,A,9Wv.Hkrkq.Y8i1A,HWjJAG5R,A7iLVa5Ug2Y13hVNAh79,FrGLPgjU6GA,JlqQBYhdBACL
 u8ruMRZHEe0M0YC00G2Y8RONjvI2ZjJA.6982HvMMO,dCvFuabiIiZpgvM0A,G5x86pVj,ofv2
 YoBDEEe1HvC,7RsQ8rr66pVClR0Gukq666Ar76d1d9Sd9QTvQ,,70qYZ,i1A,G5RdE6Jn1wBUv
 22.,,dXvg,A,90k2A7.oZn,g566EEyKl..I5y4,NFRGE.HkY.R,O40mS28MNZ96d0H.1,J,A,G
 5,,.I6Uv.HU7FIGrw0LEC0AZUUoFLCah76vFdKqlyKtA3.C5kS.G3q.a.W0VvPHfPEuMRRfP1P
 PGKE85TXucP1XUIC51,NMbHF0rra4odVFj8GEe0M0cQR1,dC.R17Vd3224P.H.jmYEtuqkqaPB
 hR3YX6Al867uH,NGRWdVCtCk2Et.cCIYSJYv2YmphV,LNAv866AluCP.H.70GZ7,WGtuqk69AZ
 vsPRNP666JQbUc9dPS0GR6RQ5dXi.cCwhBAV7M0g6q.aU3lRU7MGwBoidVUABKKtuag32.a.d1
 El6RQbBU7kY6RnXa,.66d0,7R22YCuGV.0mW.A,a2kl..Y8.Kak3YuEe83,NFRm4k2g6.HkVUH
 ,ABUBU7g6q.EE.HWnFEcR2YIVBU7Y6sI.A3P.HsJUnFEMO.q.aUAVBU7kY..6J.a.G2Y8.G2Q8
 R1cMaWBU7UjVhVUUKlR0mrc9NHr22o7iXjJAggV76sPcRMDaKrGbmpBiXjVoFEe170GZp,Q5M0
 sEka.A3k2kYcNHfQ2Yx2YCFEUUogd,pVjFEK2,,A,A7mqkC5v,.G2Eu.KanRgjFEe1UAR8mqkC
 biMOR1.u2U7UgBA0GR.Pk2A,KIakmkoUdg,A,KIb.A,a2b1QAPnk00.Qeiw6Udg,A,KIaA7EEM
 O71,,gAQAM8k2MFg690k2MFRm4k2g600M0C2Q8QAkR0GeMNG5N,A3k2Q6MEN1AjkFXUg6F91P0
 kIi1A,j0ogd,5,NGW2YHhAa5u2NFna4mWoBjkFr.,dNH1,dCogdVi.K2.HkVUHVn,UBU7g6q.E
 E.HWcQCY55vPRXd2223cDkI0GeU33900.90kVU4xB44dOSQCPM0Krtko.uYAR5ZXUI58rmY7Qb
 UICUUUCVBEWUI,kmumkGKtU2,P0kREs8rrYA0GRcH66N17XU.M1A7.5FskmG4a0QCElK4RXa.k
 mu4.kl.27gAQarA39eHi1S3sQMD0Lty4EEGobq.H6Fkd.M8r76VeQ.GomCKqEuEIsCPk2A7W5E
 EG3q.akY6P.qXC,66VfQTHm66pVs3266N1c9NPORXu.uYU.aEq.00gV7A,90U1,b0..K2U7FWU
 BdPKKt8LEOGEub2dRkr8qmU7pdUY6.V9RyanBZU.CYZFdsPQicIiZRgd.r,F1UUU4,rN1A7W00
 mFIAoB.km..QA.kmUsAZU..b1vFlwA0GeW2G2Q8.a0b8RQ8WWoBAbPNam4Ea66b9R110GRqXCl
 4MFR0.F7FEe.Ug,5FbM8O070..ELG5,t6G2ErUdg,aEHojcBgnJ8Ua2Yc.6R..Crw.,ND0nIY8
 MNMACnI00.6PO5qXkEH6J7GraaUQYUo76JM16P6JUiYhdpB,dCQio,iHECLu4422Ye2BBgV7A,
 g,9WUIcgxBin4qUEV3,q2fnmeGIOpU6Qwgu2Y2hAEby4H,HcJMOP9QROMY319PHXCBghdC.MMQ
 5AV72CUg.ER.krsCk2CKR0mYuIeK2iXYxhihgu2Y0,QbBcEA76FkdAdiBBr76NuP.I50nR0GqK
 4.QgVZBBXbJ5VtC,7F.D0UBkYsQ22qqrgC002Y2,.M8,NFN091OnI0mW66r,.,Vd,G3q.H6FEe
 wdkFIG2Q8R1HV2,w6UdQ5A,EeYB3fH1XUUWIYvg,HkY.,VgJAiaI,M0HeHmY2hAg7YC69,7F91
 AhiZiZdNCqmamR00sI.A3k2aIXUUkm66EE..M8P.HMFN0HeH58H.Pmr..ErQ6AZBU7gcCtCk2a
 266QioJidFEGJY.6J..70CZnZimZYv6F.D0M8k2KIakmktG5AZBAV7M09eH.HsEkdEt84LP8kW
 .Q6.C5CqrUvg,Ad4,,VdhhkxhmZiUY8..UdQ5M0N0PU7A,H022YA6JM1M0AggBhV,..R17,P9Q
 R0,,19P.G070sF.H,A,a266IA5vPPXU.,,.Ud.a.a266AB.MOP122Y6UiVY.U5,AZU.Ud,H769
 WBM0a.9WU.a.70GZ7hhkxBWmkmqo.mWdhhkp7EmyKrAZBU7MFN0.k4k2gcC,M0a266QA66U2,b
 0Udg,A,98Ha266AB66UZVX,H,aU3lWg6g,A,9eHq.akW66U7Q6..UBU3,kY6FkakmEeW2GJWa4
 0GRcHmoR0WV,..CKEe170MN.k28Iqyql2ZktP51.KadQbU.8Y3lm23ZvP..mWC7HHtC0LtwgUI
 bx6QZnlkRU72CSKLCqroC0GR6FEeodZtEu4FN8Ub,c9cR.5HE05..cA,,70qYnFtUvg,AV7lt.
 59PTXUYe6V2,b0UdQbUQ8GrdEs8rr6PHfPaGEK2r,aEsUX,IC1Hv66.g7cQ.M050UZlIi1AV7,
 00H100g,A,HW2,bGrEECW2,dmdKKqOKb4qq6JFWUgAYad.,,A,70CZ5,AZBU7gcAVZVd,H,akW
 uYv.HMGQC0mF2iZJidFE.EsKKtkI00q.K2PU3Z7EtABk4MFRGEUIZ6R1cHQ5N1..g,G2ktIiUI
 5k4g6gdjNRQbBgV3pd27FEcum48ssHpmsETfPdfQT9PNPNZvQRtIGqVGLtmKWKqt2UlPNl1.c9
 5uPR9R.70,kVy41HrsQR,85...CLL.U2V.Iy2E.0.GV.2U.U76.,E..k.8cD6.,6.,UVF.SU.2
 UN7.,6.,k,V.6..F6.w5,E.0.32,U...77.2U,2U.2.,.,tcpW.2U.w6wH0U.kE0.,6.IEPU.6
 ..EDU.U,.1eQHHq2wAC.6.VQ.E..YVs9.N.ducrG4KmRuH,5TWy4PPNQC5uP..2X.2U.2..E2E
 .U76.2yMqi.2ouBH,AzJE.nT32iQSB,dTRA.,.VF,...
 --- end of encoding ---

luowy
luowy
 
Posts: 207
Joined: Mon Oct 20, 2014 12:52 pm

Re: ccall bug

Postby Josef Templ » Thu Aug 10, 2017 12:00 pm

luowy, this looks quite complicated.

I have now looked into this more closely and found several problems:

1. If we report this as an error we would actually need a new error number.
2. It is not quite clear what the best place is to do the check.
The parser so far was not concerned with sysflags like "ccall".
Such sysflags are very much target platform dependent, i.e. they should be covered in the code generator part.

As a consequence I am now in favor of supporting the pattern in the code generation.
It actually turned out to be very simple to fix.

Here is the code required in DevCPC486.
Overall it saves some lines because the code is required at two places and can be refactored into a separate procedure AdjustStackCCall.

Code: Select all
   PROCEDURE AdjustStackCCall(p: DevCPT.Object);
      VAR n: INTEGER;
   BEGIN
      n := 0;
      WHILE p # NIL DO
         IF p.mode = VarPar THEN
            IF (p.typ.comp = DynArr) & (p.sysflag # untagged) THEN INC(n, p.typ.size);  (* << added *)
            ELSIF (p.typ.comp = Record) & (p.sysflag # untagged) THEN INC(n, 4 + 4);  (* << added *)
            ELSE INC(n, 4)
            END
         ELSE INC(n, (p.typ.size + 3) DIV 4 * 4)
         END;
         p := p.link
      END;
      AdjustStack(n)
   END AdjustStackCCall;
   
   PROCEDURE Call* (VAR x, tag: DevCPL486.Item);   (* TProc: tag.typ = actual receiver type *)
      VAR i, n: INTEGER; r, y: DevCPL486.Item; typ: DevCPT.Struct; lev: BYTE; saved: BOOLEAN;
   BEGIN
      IF x.mode IN {LProc, XProc, IProc} THEN
         ...
         IF x.obj.sysflag = ccall THEN   (* remove parameters *)
            AdjustStackCCall(x.obj.link)
         END;
         ...


Please test.

- Josef
User avatar
Josef Templ
 
Posts: 2012
Joined: Tue Sep 17, 2013 6:50 am

Re: ccall bug

Postby luowy » Fri Aug 11, 2017 2:06 am

ok, I have no idea about which one is good, I have no enough much experiences using ccall libraries,
maybe Ivan and some oberoncore memebers can give us more advices about it.
your patch is very good.much better than mine.

miror modify:
Code: Select all
   
...
   WHILE p # NIL DO
         IF p.mode = VarPar THEN             
            IF (p.typ.comp = DynArr) & (~p.typ.untagged) THEN INC(n, p.typ.size); 
            ELSIF (p.typ.comp = Record) & (~p.typ.untagged ) THEN INC(n, 4 + 4);   
            ELSE INC(n, 4)
            END
         ELSE
            INC(n, (p.typ.size + 3) DIV 4 * 4);
         END;
         p := p.link
...
      END;


luowy
luowy
 
Posts: 207
Joined: Mon Oct 20, 2014 12:52 pm

Re: ccall bug

Postby Josef Templ » Fri Aug 11, 2017 9:48 am

I have created an issue for that, see https://redmine.blackboxframework.org/issues/169.

The changes are committed in the topic branch.
The diffs are https://redmine.blackboxframework.org/projects/blackbox/repository/diff?utf8=%E2%9C%93&rev=dd5023a9f08b0b73839eba453f8fbda6daadcd9c&rev_to=9ab8c05c138c6f9b5d2ab441085a2b732452be3b.

luowy, could you rename this topic (edit the very first posting) to "issue-#169 ccall bug"?

Josef
User avatar
Josef Templ
 
Posts: 2012
Joined: Tue Sep 17, 2013 6:50 am


Return to Resolved (Bugs)

Who is online

Users browsing this forum: No registered users and 2 guests

cron