From 0de4bcd4d8a7db364ee824c154b4261b411f41ae Mon Sep 17 00:00:00 2001 From: skarg Date: Sun, 1 Jan 2006 20:41:32 +0000 Subject: [PATCH] Updated for Win32 build using Borland compiler. --- bacnet-stack/bacapp.c | 25 +++++++++++++++++-------- bacnet-stack/handlers.c | 1 + bacnet-stack/ports/win32/MAKEFILE.MAK | 2 ++ bacnet-stack/ports/win32/bacnet.ide | Bin 52796 -> 54260 bytes 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/bacnet-stack/bacapp.c b/bacnet-stack/bacapp.c index ae0992c0..1177e89f 100644 --- a/bacnet-stack/bacapp.c +++ b/bacnet-stack/bacapp.c @@ -59,12 +59,14 @@ int bacapp_encode_application_data( else if (value->tag == BACNET_APPLICATION_TAG_REAL) apdu_len += encode_tagged_real(&apdu[apdu_len], value->type.Real); -/* FIXME: encode the strings using the string datatype else if (value->tag == BACNET_APPLICATION_TAG_CHARACTER_STRING) apdu_len += encode_tagged_character_string( &apdu[apdu_len], - &value->type.Character_String[0]); -*/ + &value->type.Character_String); + else if (value->tag == BACNET_APPLICATION_TAG_OCTET_STRING) + apdu_len += encode_tagged_octet_string( + &apdu[apdu_len], + &value->type.Octet_String); else if (value->tag == BACNET_APPLICATION_TAG_ENUMERATED) apdu_len += encode_tagged_enumerated(&apdu[apdu_len], value->type.Enumerated); @@ -102,6 +104,8 @@ int bacapp_decode_application_data( int object_type = 0; uint32_t instance = 0; + /* FIXME: use apdu_len! */ + (void)apdu_len; if (apdu) { tag_len = decode_tag_number_and_value(&apdu[0], @@ -126,7 +130,7 @@ int bacapp_decode_application_data( &value->type.Unsigned_Int); } else if (tag_number == BACNET_APPLICATION_TAG_SIGNED_INT) - { + { value->tag = tag_number; len += decode_signed(&apdu[len], len_value_type, @@ -137,15 +141,20 @@ int bacapp_decode_application_data( value->tag = tag_number; len += decode_real(&apdu[len],&(value->type.Real)); } -/* FIXME: decode the strings using the string datatype else if (tag_number == BACNET_APPLICATION_TAG_CHARACTER_STRING) { value->tag = tag_number; len += decode_character_string(&apdu[len], - &value->type.Character_String[0], - sizeof(value->type.Character_String)); + len_value_type, + &value->type.Character_String); + } + else if (tag_number == BACNET_APPLICATION_TAG_OCTET_STRING) + { + value->tag = tag_number; + len += decode_octet_string(&apdu[len], + len_value_type, + &value->type.Octet_String); } -*/ else if (tag_number == BACNET_APPLICATION_TAG_ENUMERATED) { value->tag = tag_number; diff --git a/bacnet-stack/handlers.c b/bacnet-stack/handlers.c index 564a52dc..3f12ed63 100644 --- a/bacnet-stack/handlers.c +++ b/bacnet-stack/handlers.c @@ -345,6 +345,7 @@ void ReadPropertyAckHandler( BACNET_READ_PROPERTY_DATA data; (void)src; + (void)service_data; /* we could use these... */ len = rp_ack_decode_service_request( service_request, service_len, diff --git a/bacnet-stack/ports/win32/MAKEFILE.MAK b/bacnet-stack/ports/win32/MAKEFILE.MAK index b40922ff..7c22e99f 100644 --- a/bacnet-stack/ports/win32/MAKEFILE.MAK +++ b/bacnet-stack/ports/win32/MAKEFILE.MAK @@ -21,6 +21,8 @@ SRCS = main.c bip-init.c \ ..\..\bip.c \ ..\..\handlers.c \ ..\..\bacdcode.c \ + ..\..\bacapp.c \ + ..\..\bacstr.c \ ..\..\bactext.c \ ..\..\indtext.c \ ..\..\bigend.c \ diff --git a/bacnet-stack/ports/win32/bacnet.ide b/bacnet-stack/ports/win32/bacnet.ide index 1a1e74cc30d679b73458a2fb63fa786ee9e2ac6f..bd48e09a952a10485091f908a76149107df98398 100644 GIT binary patch delta 18092 zcmcIr2|!iH)t<{^UzGKN?3>6Y+e5`&(cnhhV~jB_Xb=$%aYGFHh#Ey)B96Pbqaxx0 zh!{ikDaIIMh%sudHHo#Uwf${k{L?f|`^W#BJ7@55Q?$0}#dp6s%bYp0&z%|TOAX)c zH>?Toozuuzkqu)$8Fnm|F?)qQOiAldX<+b-eRPUdnvP?z+2it|H9KjofNr!BUG?gE zYqw7w6m|uEpTX}c{I2o8S|3teYxdeaQk3?5uU(!JUK3!yOi}!5_B#BJo#Mtz+=3KW zUgZ`B?`v)&Ksn02#)kX*d(?d6z1K_l%!GVY){4c&jfH<16DQ4@Ju@zgF)MqahZ&WR zqov-&++5VFa}au181k{Q)I)od7&}jTS6^&N5eF2XL= zZk*kGyA5{LcGvA5+Nt(Q_QUO0+gI41x4&zj>M+h>zQY!W;|^CGzIJeQOmfV0TAAO_!#`qQco%DO?7wSLUf02K+|6PAIAT3~Sz`lU%0k(lX0%rtn54;j+6_gZ| z9keB=G3ckDq~MI;4Z-Jwe+-Te$p~2+az5n8khsv{p$kLzgl=|4F+ZXr;){q@?b6!KZCBCmW;^%D)X4df z6_Ix$-J?>Y=0{aT-HCFK?h!pRdUy1dXxo^MF*9Pe$27+L6q6L25xXJweC&_0(e1~y zFK&OT{oVGh;*#P<#m$e~9d|zN>o_&ulomfXeoOqR_`C6r30)F05{eTJCw!4$l^BsY zIB{;`mc&zucN5j5E=l8(mL^psH6}ewQjJ}V8OCB`wegPeCu2nN;N*qL`;r@zzfTVA zaG|?_`M@|~#m1%F?y%4b8yk)j7eeisKU09un5v+h9zHdtwSyOM6o{wtH&Z;?dIM!( z$)INidT9m`*IJ9y24psDC}_Tu($>#Mv9Y%%+qRnA59D?%2jqWC2{5RNJ+JEJU6at+ z-3|yxjTqZ&j6w0?b$!MM_$VsGpR&Y;g|i@tAExyn1^T7Ev&xNqyTX|AT38icQYwyMV!%V{DkPQk8X6?bGJN(Tm2uZGj93O)`pM>9PhVpVH z4&dgnWyUzbUXl5sy$E{~rV{oc%mQ3L=iQ`XL{B9;+XR7!lQ$Z30IS|A zF-`|OzOvXj1915p-HkYip?n%($XgM{j{(0Pw#;}55EFimFpaPuVSmB_gaZi&5vCKG zo~OWI!Xbo135OGoARI~f0^uk^9Q4qk(S$D%jv;)Ra4g{~0*8c-BgS~b34{{~GYBUU zP9}VnFq3eKhCF*)#DZxHf(YVS$fdztn=sJ%bY-v6t;z0 zESE)rg*LBlH1?%zJh4JeP{6WAWs_^EW}jBEvMD}G1)Khj8h+*q&ZUxgop2`MECWZX{?4gmhCJ2zGU z;`n$Fu)MUySV^=TH?IKwyW$e#A(B@E;y7AE_%R@kr=m-zHtW*v9aRN8s_4>vAY{VX zVK&STwJc)Xi^d#D#1i$Y;a1NGsMIY+;XjTH`(bWS>kwTgtT5NJSSM1P(l&Rl~t~bV)d$ zPR`@{Y?W4?j9s%R(dR)fO0*j|Wn+93N)(1{%Y~P|>pjK$pE)m_9Nf&wtI?{0Ned^3 zSU6c}&BEB(?u_lXDB_`@Ad0vvc428sLbAcgQBSsZnd^5!9~TqC`B$1b-z#2K&?VvgI1A_Bg5rnA z#CkXN(JVF|6vRl<5sX%C%lS`-!4?LR2~AE0;zvY!kg8zP!pn&kUh?Ck!xD@3B#FFD zYKn%jRtBp|MpLZGma!aP3bV@Z$h{{9bg>*?gq6%@R&IlpSDUO%v9z-ErBG{JH2rLx zs)xcs!Os>dz{hr`Uu8Y(dSf8i!6sv|+z_7tEv+|(QiNZ4-C?oppih8b_Nz5NRMg1S zW;HT4L{+kyY9w3Kh)G+2&W5$;LTI(t@NFqZ>`iPMD6C{|@RtOo@GK*??3uCyw$$;k z!>S^uw)1HbfeSOIpi$F%fW-&%G(>M}fjf|qGvKUJ$mQQxyH>ibg|QAWYw;tcgJ zhRZ@W8{}ev(jF4S`u^IB1RQCcbuJsBf=!s)D`< zuk$Uu=8Y4>xYxuW?bF~xaME(8L`)cOfcoPG-#1cK3dmFz!;o0R#6sMVlDsE1Xsx@; z_N*HqJ2Y*}$ObMmD12UE;qz@MX?#{FygtL%q$=~tpI~MpHT-((1}jB;JfK2$X<08~ zg&-G;_l*$3+JD+|w*`M6yNk^fJEZhi->hUSk^{6T)Hfmd$Ax-1LRA(42lJZCFf?!<)vOYZSn$}SYnCYZB@mWF+Er`D zQeZfH34WqPe^B0X1BLrach;S)hY%KNi<753sgRSXoIK^6B*!xSQt#gw+r;46AF_#a z%mBh)e2yZ!KcAv#@Ek)5FBAT^x0YnD`ZNs^#JbQ83r0EZKdqH^anS0L`(*~%RL`h%?aFQ)HJD=2Ku}b7XC_UEKxqcX!26l0s z^0BaQ`o&JC{=In(J|$lOPcSE=2!GxPg#5qK2HHTvuTsLz*C{+M3s0wpWcitJ{Lh5G z>YT)w8Aib}?O4;Ft%7=cJowy*Q1>kW50nD;(csFmI8MnwnEyUfi;EUIq=$4 z6=eI_*Vf_?7j8^gA&t7>tQ2&wHt9l~UCh3`NmmS@+du~gP;EmI6N6_lt^g)%uzNX#Qn(XM=CD%KfIbG30uyywkKvrf%*N+?TkQyI*pD;O^;>;xX2v(4)-b zg2#OiSI=b6(VhjKn>%j29%D@YO_X2Z+Rt8lD#Rm5e&I-O9d_UMZBs`>7$b^ucA@w1*LMDe5hV2YX z2_G3gds_Ihh|3WVB92C0io7406IB#t9~~LpH+ph(W%PyUgqWc*IWa3^JYy4LcgEJo z-io~%_d{HGeBby9@edOG6T2mjPBbUpO0-XkOzNAoF3Fs9KgrdYY#eP|VmxZRWn{_0 z$=#AGlP@LTOCH^!rYbpBX}_dHc?WEH=Q^ykQ{dtf-lkw)V?E1|soln4tQLyT2`C@_ z`Sk9FdG@Dk0%p9g7!t15^54I<&COe}$4IOm)S}oTgHH|5ou(KrgIJk4z``(gB~FHOFuj@I64+>$SYYY~TYP0xSY-J7A7^`!PS5 zhxP>3$RB~ueb8w;4|O6nolkh)Jk$}?W&V)`^(ha^4>KhE8gi45F=DkCSNKNY<^cD- z{5ghlzz*~07`_5L1Q>i1?7uO`Fcxqd;8j4c0*sxa#lFs`6oeUEe^bj>74*ZsP1Z%@ zGsbThgc{O8V6$M3;R4`-1sJV|CjK@5WI>q0`c^Ifi^lDxac}Z|3&RY(fIEF5>ZWSk z-|*AGEdcKCHEv&xdy986g&9r&_Z8ECcyA?5<9-hHI)k0J^HIXJK{5FS9OC+e%oh3> zWB>Q)(W8XVYxy-3+DATPU+{K?VTP}O`+OmC2Ws3e`3~TY{i2q?uW{2g?rrYWx`Q?DZ~5E6{Vt-8*J|9M8ut#jTl9e)UJ~jRVCL5r{ZaAerx!&EKs zy_HbVJ;%Jc@huLzAH1~(-qV&E;k{#N47@+m!jH7Kaaoi{;Q>rPj6JaPR)Q$~*OtX} z_g01hRc`IAxB;#iXOCBvpcK!;6{Zl8EWOj$p{H$|QeSE1&40BFQ*N?@K8+ zf;=`!RW@nz=r!mCep*X8TDEsp`H(eTL6T=7aln`$*|8=bY!+EaLNN}k$CjbZwrELM zL;qq8eo8CgU}@UG51$E6DsNZP6|CS^giP59q(fnS9;}tXf%lNL_};M=Jub0`;Ri9UCaCGHuGU?0{C$5+vbvu zpW+W1SPS^r0v3SA7EG-jTEd?w^GNvc#Z5Emd25g)yQ@mPX6-Kb2hVZ)R?59WJ{sf+ znyo;f@F#4Ift3?3U!<-pNV5D?WviCUj_a@#aD!XQ13+E?wh}d4!9d|p*y`ru2cw`J zi_$p2gl7XRcJ^qt=4-a__(IwW0==DJD@n73wTM4qD-cfZaS#872fqXll^jn~gPgUurrINW3y})}CQjRfWLEc@HS8PNt`dG+2fqbZ^%0Joo z!U%uc3ASan_iSVBa_x@UnITDQdj@kN9Eid1GWsgO5t}Ke&KMykmdMjqXM`0 zU?797-Xx2$b>53+p0_F903#zmu&I+a!(GiV^FM5g*TUyMuj2umYc%<1n>%UfvZbGf zFK#hvI=4ZmWJ^z>vt^LRyA^PTx83@(##_AAsNp+=-)t3jqDlpSJmLCM!T+RG*mBz@ zyq5Ne9m22DX=nJ}9V0Z}-**hr ze06O&!-wq@z8={r()xC%D2vE1>UjLFKAK)x{TZIWOW3d3)m5|cEn)m_K~LY^RnyJ= z$0>eg9Ff9R=P&;(cBw z;(6>9wl2-9Ppx@Vyk?G`WF)xnGoT?{Z;3kMI!T@5+VkV6YK#K-dn?Y~U{* z5aqo2fJmckc^&_ZPweZaT=7qeA}GtOnkR!s~!P zox-Ja8u*^0LO*A~3I1E+kIZY}-c=%wl@b`|19&T4F((6t*i||0Lh?g+=4F6rNh?hRr%-b9n{Gw%MK7zt0 zV8mN>Tt-HbCv-gX&HU9mVJD@~%y&@u#%eSFHH9NLn7PLZ zp)+rrnLmFbYI3?$f2YUmTHN4BaKb(AaHnck-L$!m-!}L}!dDJ%wo5t+XuLHo>1d$w zKE9-5fR4%FH%|n5;mM9<%k46I?(&YG$x@OC5#V$=S!yN$jk_e0HUf=XoRUrk+Bd&r zqNFZAU_`Zf<4?wmG*xVGdZ3OTq@&Yy^z-uUTP8SIr!YiE%NS;|N2gWs|JxNE)JF{fp z#N_6-Oi*reOL~gVfZSsAr6QMGk1j;Za|TbM<#~c^gmTBxU6aF2IeGHxN)cv2f_Tm+ z>ok`fkgfK09X(S=&(hJeb@Uud8gEL@wPXODr=#cT=zJYLUq`>8qYHHO0t*_`XA3PD zNXtekb6lvCzp0}a>FC8edWnvH>oKjR&z3%BVESyCjxN&C%XM_Ij$WaoSL*0hO|(d# zt!`py>9eFD*6ru5kc$q?zYjXHXhj^3=Jx9I4tI=WOxZzCFx zFU7N6r?5ju@6^$|bo6c=y+=ov>FB*cLoYKK>5QN40|wsg#jibl01BW!ZsicW<7#KMDNCWa%OqP&5l8_En zfj*8Ca?`OIXq?rhyoPA$;4!ig;WP}rBKsxvi z8i4q+1Wy8uB_!#0NiO5p18uqNcn@e38jwYDiXuq*G|+exPtsdX5mlJ4SQBTnF7ZV1sn zdMcNl;)@%^0{23hnZHM2pGq_TD}}Ra%sla&&^d9^%%@S<{;ZkrrSRwv&HPIWmtTej z`ujrvhhM=0ox=UUgatZW{gEq<^N)#t48nF7g#OqWb-Xu)=j}Pc-?$+3 zubw*1t1kG(%k7r^tP5 z;uhX^)D1hJ+s3(3eNMBhg53kKMXs=5e&&LgsmNxD&EwR~F{*-BYu41;u*o(GG{u9W z2g4ix&;7#`#sWJt_+QbC6}%1%FTkbnKkuQ9?OVfGCa|1K7`qO52QU~8=d89d@CB~n z0CoYKNpv~jNt`t@whKWi;6R}70%8RJ9SknGf*f!#;8DN~K=++O-k)$GAR0bF^w)&p zy99q6U@FLW0;1jPMEmT91p-DK4gnMt0U~{t=pO)k0NrtqaI6q81L!+|=uko#V`Bh| z0fz(L0z`R_y&}OvK(u!f5Hn`IPuNQ(EZhh8>oI{-#P|ncm;J&(0pK{0-vmSh;pLPg zKy-K=;YC6?^Vaws33CW{1EzugJ)#3Egd<}sp#0I$T3{ev0K}ZBQ0+*k17Z%A5?xR9 z_k;GS5?&{Ct`huI!g+*;0aHQW^ne%<)q;@)h=#TUq9ZqmZdD`reF^6i z9wod>=nwxp9^(%O#P}%iV7G)3q^#85D*a|umR};H-r{xA_JiZ z2pvKVB}70(M8t^5M%QIAmIXvtedw-=KE(H*Gv9=8T$I)Io&4_k&sXM~Z~B~>$-lOl zj;%Ec8&Fwz_K2ZLBrk z|KxI4?&G#o^DRH>_LHV1@}nM;wAk`A^E^!pEkEk{4-d_cZ}E@PeEF;XR=hv;?*rww z0p)I*NBLI`j<{%Hd`D;sFN?JBe}qOLl4sc8T(m$wBs{46hlp{mS_mHmJ~d?2+X$+@sK=#N(7ljfaal(%jBG)m&^oV7_Qh_RR7e?m5@9)boVrCC_g? zBfWZiP4znL^|9A&FI&Cd^~TjZQLm=n?Rv4^S>DCoAA7skx7D9mzqJ0v`k_88ojy4} zbA2j(zVz|&wfT&oa)k*ivcv*y0|T9GDe2F0eSTGVtTT+ks7jdIuE-l>}7=y&Lp(P;js< zI45{&a7pl~;A_F|4H6pkZZNe$NrUqZoL@JH4Cx#)CZsr|GUVeBuZFgU{TfbfSkmxJ z!_OM}gxW&;h0YB<9C|G@IIMHn#IUVlHDNyC?ZU@|mxNyocZsk?42@VCaVp~Lh=jxt~v#7}E9?^x-2coY<2gme?nGtg!=2}c>Y`fTzu}fnQ$JWHU zTa%sEe%86xO6xUiXrrt~GaBt|RMW_(ap%Sp8<#eIx3PN@Ta)2UikqBk@RV@VMf*^KrN1lH-TR7ssEEza5{DFeqVh!ij{h6Jir{66YsYCVrL}*{nyi z!e$4WU27Jc)H!Kl($1udNk1e-CO?=wJb7{Qf#gfcE-6l1%FvX#DLYdxrhJ>yB(+EC z#MITP=Tg5+4M=O9HZ*N++Rn6#X)d-Vwk+E?Td}RuR%3IqH?jAyPqdfV&)Yw<2Q+Wp z{A^nj3qdz>VTCPR?K50N6BFI&Y^<4uGYx#k9GZ};=Uq+8TsrH_RuF11;n1YA6q|9y=Eky_gRf6-9M)QMGrLlv?z+4!4_dD z2l~-Z=?%&sd?3f9wdU(O4#xY(j$xXEH|*5L&7sAbUHHrvmh!w#H(VfkJkyHz%*;pe z{;MATQGdsD5&Ta2`{^!LXKO7O$@eVQSTsvQ@&Wj3I)0vgKeBxg8Lz}|u`b`BB}2YU zvoRY>@YI;+sCo8eV29`_u^k8>AbgPUA;J+r%hQ#%UPM0)^aDN8i9qR-zV=bTu@5x0 z=K%|!{m3>N_`lO<*v9}1$*q?9!VGiMAgaZj5Cmba4;n=~%$R!*?IF#@S!eN9@5)LPP zN=M$mYc%S0N>@?4>-6`_`unQ>_UtD3N&35&{+^(}SLyHL`uijO?bcmr#_R9y`g?45 zYlLhiPtA5i&uEWU@Fyh7n1YVug@m&RXA{mLoJ%;5u!!(EPp33EpBM`W z7ZNTaTuk^p;S$0Z2$vFa!exZZ35y9=5UwO#rE;{I7;6aE60RdGAzV+mfp8;XDd8r< z&4j<)`=-P?)d-hN5!6U{f#{<^G0<%XijnVL1KlCg+eWy9a3|p|;6G>O+slaFEzxN| zfPff5%L&zpDLd_hcXir*feuY{OgZd7gpe5aNuMO!rdtullMQ|Mwt*XlVO@Z%xQgQ@OcU?ngpTl+u3S?5Eq>jk&&8CaYBa z-|wK3MULHTUNDX&y-ELG(}DB9G#}je*kNdpnXz}z2UB9HVb~9n=c+-f1}54?Bi8Az zc99q2;2ZmdIYmntCq{TYm++GdfL!)4wEHqI{I!GC`p(U^J1sy~w6OskhMt(mRmH02 zzZHBj&yN9$`CYcsOzDjiNs76pDAb{eBxN)0f{<#anfMG6&-L17n$NNzAI7}#*A_<0 z=H%Odt8-CC?+ne5f7LhG8RpPLiqf}k@$CN!8z|P zxgJR1&ZK++&WR+Yb3N-gSB5G2R9nWj)fU`jmJN9xtB=1naBl067i|?l(QS>jsR|VR zKSLkIl1WiDt}UQNb*e^Y?B~=Bc&~mz&b)AkCX$v;_O9dPTsYSprB_~Cg88fuO=-)eS^pPsp`Li{qYNN6(_C6 z+{_p{^S;aUKN`=Sbp~`b4N7-&?sB&v(xC~LWEnq(kop+u=f}{k8T(&%)ukr0fso5G zZUyH%_L^tk1FYL>)w*x6nvGPqu7sla8W|0&`;nmmbA zK8@Lqp?H4j3(&Z(se-)&q2W{T zw@&>(oB3rkeH!}#3kKGAIjRQ$Jtn z-QCBGUF&CEN-WGo-#Jcrg777v=nZ#|UwLq#&Y){`Xu>7gm`B%fegKxJ*%;Bhu=y#S zPjwjsc_WvOtRqWIj6>Vn3pL5(0MVL-GkHJzz}L*>pmP@IGQEv$0h zpoHrz-ko~xcS0aaLFM*drSUT9Ekj;}{wdI#fNI!$h2*CR)jX@#%RgTqqYeHM`zAf$ zfGDA!g!k+uYGHowULpx_Y^vXczV>1 z9J|yqAFB*sL z+P)cy42#ZbY*{oE^Ry>}oc$9WS|K?(f{D;TRu6x%i2LsE_~5K{f_#VriiRRj4Q3&o z5caH#<}@#6WjIn0#{_Lg$O4^>uv+3dF(dk6#Oj5gEUD|-9LO(gZCD$&9HIMJkQpb% zhv1AD>i4Kk9yKefzNVU&@ni45KB}p?q#JqEo$$UVBhvq^bCL6pTCu4{X&4WT+h8HJ z>j$+yXzi)56Zlt8MPb+8e}pw!?$k4O*~HAHGrf5P%dT5%K z!cy1~6woBB`hKl5sew@WJqq!DY3=?dus$I)l?Q?SHfSb`TLvCF!BA? zCh%Wr0siPshUJL&NO63VG%`#-Na=|V>}_N02!_1POb*+NP+xcEvfNaMwwP+LKNF#D z%oBfmQBYzfdLAg2z^ZSmPu_biRaC(pc1J{f6Z7{+wt+(pM}@_U327Z15|0TEZ6Sx2 z-sMn6nu9++s$m#lYo;ZhEo|jm^wdRQv zO2+<%W6`aA!M=e#{fj<^lZ!rUh&WI2~|3z}u2)>1&y6S!+3I zxneN~HVe!S93QwOa9?0*NVkx@kdC1vLW@GLhq{I}3R@PoFYH2CYIwKsyzndGEFwB$ zNkmyhRYb?g+{l7R78M?q5p^)?Le!0@?C8Ach0&X%Pey+j9UYSqGce{#EVD*iH&~BZ zFAuPKH;HSK+2m%^z_{jdWpQWYGUG?Y&yL?5|9QMQVMIbv!sdk22^op~6Hg{yPP~

1e*#LA!+&k9Yg%O4p(N;Cay?|J^pgf5=xny)V2&x0mTGBuh}&7Yq*!ITU1m^8t3 z9q0r$a#r*2fVsdwO`c#{3;YC_Ir=R=c#5zRsarY9_fP3sOI32WsaDg%f@+>PRp`X% zIxq6+;JVJN=9_e`Rp%b#-+)^&@NFLUtk7+&bC2`U&kB2zI>BFl)@tg2n4jo6ak|b+ zJbjwbk<>}Ps1Efq|7e=kG#fEIrVFdh^cbi3fazA#NpPLhCzx&lzXLi7k+&HWOyhx{ z0QUh0J13apW>xdQI7MuS9{UWBFR+@1f!nj-Veex;=~`=@|C+{23t~+hAb71{g6T4_ z{Y(+9oi2WzzcABk3YlHakLcVEI`Xf}2t(bRX2YZ}6GmE&+F&&h4mktN8ce zR)HHes|)J2v(9}J^*V-~@xTf2tT0o@In{i{EMX~Am!9XJ&a#?rg6lh5aIDKFA==!r`=5$TLYH*D zYJo`c%>^RG?-#^ds`Z?v-j&l93q_8WFMJB`ANBW>i|k%97at<$ymZkZh_uDRREx!H z@P1nlzrEPPL!OTYo&G#z<)fePuGJT%dpWS0nb=ue2zhNu&%|@=3=`v_?D~FzHQ0W3 z;1Y=o^J6%a!G*69++J~KR%Yc7ys#)yW+#rF94ZG750>dw?K!^ILL6(03oIU>Gq~H* z6n|+;#uD%LywlP|Tr(NF)Ph?maom?j@Xbs88aOnu_N=eRWXuY@lIGBgb@}zBenAc` ziR2-WnS|We!RzyspthP9aa1Z-k{rAjPeCd(xkx2aw{nn+RK&M{O2v+N&1?>Br7pk8 zMJnRUNXb1QH{(V^#IiP!OsXUC6fq$gy(|S1u_97&;zgWf++tXkqP688EwjLjZ~XJM!cIT4sC%h-@d#NV!XM$C*Bdo;yt=p`0zrV7-5J}o$BDn zi$xhU1m%XGda`W}uB}LKkWs&_77o5BG4Z$q`?W#&tkBD6h43kbM=gus2Umn6ows#P zs_sSRO5vs0=2N+gK;kJ8F^F**G3+v5t3(-# zjbtTvh5UK|^14ct@^}4aWbcL)1Z3= zskG7MXV-{S#Hpf^`$KLHbnq|Mh*ZQSFC}RKNi#^&){0bytQD!WgOvt+@!E_&jD_PH zH5b3l_+7`Z8LBQHzk~SQ#4p3l@XgBDY5dICyX=PF63?GjXt+cHSb|ZKIU8*(muFHcDGZi2nuADWy{Wbg9%| zPxN0)r5_i%UgMTcQm6YS>Ent`gY~q(-z5FI5`UF<-P}j#ZQR^b_jNpY-))w@KC(ro zy<&?j3v;(i{GBZi>3Y*HT;ow&rTqb0+vqk{5WYib+15taz5K;B{s@KhrhmX!Y-E}7R%@HXy}_0Bq7<$u{F(_I3-f0+#5 z2!Een%gEp4A(_&)z}w=C!Od!*gyyc#}b z52gLkRlb+_Bf$T3kKJF)O-nXZ>2ppf=A54Vqg_G#)>bpm+Uu>C?0Xxk_~UyY*2DV{ zYu8?xaz4ELl=u}0x7sIlSSxtHPo{Vi`Y%$r!{{3R6@`lsZn|HV(t!Qa(+l8n;=Q`R zy`Emkm>OR1fYfVyK=N|In{`0icQ`-bM-Rx7`JV&Q&UVP-%cb1=qc8bj3f};KdAYRp zTDjD9{Hca(2c>Q}{BCtn%AY1+Hj@9#ah1PM;j`dd4#{{K=~sD|LsI|PMXbb# zf4bl*KYmE2^B(x$9g?==4@=$XKUedo4wIiVukv+=Wj_9VSjHIvdHo|&-WT$Rj!5|w z!o5eN-ahDkN_xZ4x}qv%I=w2SyyKJ)_<{;)rwsC!N&ZigFN8elsFeQ;@+XeU9=`ji zOz-c64J#$xvr^ivM!e@LWxNgAd;BHhPY$i&-&1%YMm+nAQfDCePg8i>s%pNT!b=8K z^LHrR%=8|wcTC#PUR}*QQ8*7_CxzF>)bOJeE&~6b$Kr?G^1A7DXY3VQA|HBb*lDZw z+Rb*?Ztc+rFjHG|ijK!OuDI2x=mgN>W~`zUK_}+$g5!}+ab%#_$@FQAxj}zYK#NDo zQ$g3&PXjGJt(DvcTAa@*+74Rmz$m&o=ujNxD!PTI_5>>`*i`F4ODKr*H>IEs(G{(3 z1SncvWKeW##22?P6fLig@PZSOPI2`{vDG~xMYl&Zaf3|JYHJ`&&pnRLAs3sCm?!l| zZ54zPtu`aE51~IDNnhE+X|O!?RR%g63_fh2GYz!bc~bG!4wRzRPL!h6j+COit6fsX z=wV2pr-4>GFIY9`kJ=;&BwC%UDSPS$nxgv}>^-7(NtJ@y>QeNhh6w!)^Z)~`PUcj6 zb&RcOb)2o}+Feq`7-TRw*g)qRXmuu};tw^*)fthJtE+HCJDEE2QwnOYP0>#o465x; z{5OF9sQoK(`M{GAVG1qpz1WA98j%xtbrb9 zpr0|&;|=tLy0o}GH?b}Q^dtj4*+5S*&{GZcvj%#afu3H67U{DYbr^zHjZ)>fz#yM# zpbHK3ECW5;K+m~D>*=$(cNijlHqSs88R+K>^n3%oz(6lF(2HtmnLb-w%h1zj&l~6^ z2Kog9z0^Q+1HH^ZFIP0B&x#d8rq5Ow=#>U~m4RMupw}4awFY_}(YSFSpAv(@dIP<| zKyNhAr3QMFf!=JO>0HWbS35~tp&-r%@h@chqmEbT@+jL5xwwn1y6Fzk;@C|M#XE^s zlk_go;_kKV=h#gpxf%y{>$KC?t{8j35VM&|Q0>mE650p3xE3v!AB^n>Ev`K)`T%G# ztE>3sL@Ngmf)@6bJ^e&ZT(?sShoK;DxG9g1fEEWlDnbPrP&qsbT9kk)!Aj8LrktW* zB)N)z40PRP$8pe3VL+9@35uZTmq3eUhoVn{uA76GNna&!O6bF$qF*t{PaEi0JvCnc zwFmC<;T&|tnTWFS2I#tLsVdOI2UQ5_v`S4E=Sg4r{FWj91&Xii<8ZF|U8Sf_UX_A6 zvsSb^#p`u8M*ngt>x=KMvvMVyiB)Ymg@+;h1%)Ta<16TOsZ#*{5DKqNt>J4_82ooA ze6m#y_dO@|E5PqU;e8`6@mUnE2LCvPJG8Ii-%R?6 z8vX%=fP!BEd=U5p@l)4H zdK}Ox6v_|~20sQ0I=n>Ey@BmOF98b2E&+uD8SAA(^MN^_uK;@kTW*l@l|Yf;C7`eu zxKYL*1Qhnx5?J-o#!8K09NcB{-;K2RjE6(|z?km%rTlFlZaPk0(Q9C`_8E+Sqo zVKHG9P}p(bA>|ps&Y%mO#Hb+r5-1eoc1j#dxE3hdz-K_=dE72ZPb54I6bb)8m|7<3 z;e=}mFA|z}%Mx~GAs`|a5aSflH-W+t+a4(&L0CdqP3W~($~zEFBrF4p_}7RI-zW8Y z6BYrH5hpuCj9Wkvq2+$5m6M zPHia`+b#6~x)ot5um>XEAiBvRX=otfQo^%@w}HX|$6<-%fFj}Tgf)bLMVstDx^Xl@Rk>2BVLhoDdAIe0 n$RS)tc%IPwnv_3CI1MOrc!22737edidbvO$FD68go@n-e-|`+c