From 5da06327a09b767f763f8151e66fb0596a289c4a Mon Sep 17 00:00:00 2001 From: mike lowis Date: Fri, 9 Apr 2021 16:37:06 -0400 Subject: [PATCH] changed LEN to Length --- lib/obnc/FilesTest.obn | 18 ++++---- lib/obnc/Strings.obn | 42 +++++++++--------- lib/obnc/StringsTest.obn | 12 ++--- src/.Oberon.y.swp | Bin 131072 -> 0 bytes src/Oberon.y | 2 +- src/Table.c | 2 +- src/y.tab.c | 2 +- tests/obnc/passing/T4Expressions.obn | 2 +- .../obnc/passing/T6ProcedureDeclarations.obn | 36 +++++++-------- 9 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 src/.Oberon.y.swp diff --git a/lib/obnc/FilesTest.obn b/lib/obnc/FilesTest.obn index 9b37be0..2388e2c 100644 --- a/lib/obnc/FilesTest.obn +++ b/lib/obnc/FilesTest.obn @@ -395,33 +395,33 @@ module FilesTest; buf: array 4 of Byte; i: Int; begin - for i := 0 to LEN(buf) - 1 do buf[i] := i + 1 end; + for i := 0 to Length(buf) - 1 do buf[i] := i + 1 end; f := Files.New("ReadWriteBytesTest"); Assert(f # nil); Files.SetPos(r, f, 0); - Files.WriteBytes(r, buf, LEN(buf)); - Files.WriteBytes(r, buf, LEN(buf)); + Files.WriteBytes(r, buf, Length(buf)); + Files.WriteBytes(r, buf, Length(buf)); Files.Close(f); - for i := 0 to LEN(buf) - 1 do buf[i] := 0 end; + for i := 0 to Length(buf) - 1 do buf[i] := 0 end; Files.SetPos(r, f, 0); - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(~r.eof); - for i := 0 to LEN(buf) - 1 do + for i := 0 to Length(buf) - 1 do Assert(buf[i] = i + 1) end; - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(~r.eof); - for i := 0 to LEN(buf) - 1 do + for i := 0 to Length(buf) - 1 do Assert(buf[i] = i + 1) end; - Files.ReadBytes(r, buf, LEN(buf)); + Files.ReadBytes(r, buf, Length(buf)); Assert(r.eof) end TestReadWriteBytes; diff --git a/lib/obnc/Strings.obn b/lib/obnc/Strings.obn index ba95fd6..9ca30dc 100644 --- a/lib/obnc/Strings.obn +++ b/lib/obnc/Strings.obn @@ -9,8 +9,8 @@ module Strings; Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Compiler Developers". All character arrays are assumed to contain 0X as a terminator and positions start at 0.*) - procedure Length*(s: array of Char): Int; -(**Length(s) returns the number of characters in s up to and excluding the first 0X.*) + procedure Len*(s: array of Char): Int; +(**Len(s) returns the number of characters in s up to and excluding the first 0X.*) var i: Int; begin i := 0; @@ -18,7 +18,7 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co INC(i) end return i - end Length; + end Len; procedure Min(a, b: Int): Int; @@ -28,16 +28,16 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Insert*(source: array of Char; pos: Int; var dest: array of Char); -(**Insert(src, pos, dst) inserts the string src into the string dst at position pos (0 <= pos <= Length(dst)). If pos = Length(dst), src is appended to dst. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) +(**Insert(src, pos, dst) inserts the string src into the string dst at position pos (0 <= pos <= Len(dst)). If pos = Len(dst), src is appended to dst. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) var sourceLength, destLength, newLength: Int; i, lim: Int; begin - destLength := Length(dest); + destLength := Len(dest); Assert(pos >= 0); Assert(pos <= destLength); - sourceLength := Length(source); - newLength := Min(destLength + sourceLength, LEN(dest) - 1); + sourceLength := Len(source); + newLength := Min(destLength + sourceLength, Length(dest) - 1); (*make room for source in dest*) dest[newLength] := 0X; @@ -54,12 +54,12 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Append*(extra: array of Char; var dest: array of Char); -(**Append(s, dst) has the same effect as Insert(s, Length(dst), dst).*) +(**Append(s, dst) has the same effect as Insert(s, Len(dst), dst).*) var destLength, newLength: Int; i: Int; begin - destLength := Length(dest); - newLength := Min(destLength + Length(extra), LEN(dest) - 1); + destLength := Len(dest); + newLength := Min(destLength + Len(extra), Length(dest) - 1); for i := destLength to newLength - 1 do dest[i] := extra[i - destLength] @@ -69,10 +69,10 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Delete*(var s: array of Char; pos, n: Int); -(**Delete(s, pos, n) deletes n characters from s starting at position pos (0 <= pos <= Length(s)). If n > Length(s) - pos, the new length of s is pos.*) +(**Delete(s, pos, n) deletes n characters from s starting at position pos (0 <= pos <= Len(s)). If n > Len(s) - pos, the new length of s is pos.*) var length, n1, i: Int; begin - length := Length(s); + length := Len(s); Assert(pos >= 0); Assert(pos <= length); Assert(n >= 0); @@ -85,14 +85,14 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Replace*(source: array of Char; pos: Int; var dest: array of Char); -(**Replace(src, pos, dst) has the same effect as Delete(dst, pos, Length(src)) followed by an Insert(src, pos, dst).*) +(**Replace(src, pos, dst) has the same effect as Delete(dst, pos, Len(src)) followed by an Insert(src, pos, dst).*) var destLength, n, i: Int; begin - destLength := Length(dest); + destLength := Len(dest); Assert(pos >= 0); Assert(pos <= destLength); - n := Min(Length(source), LEN(dest) - 1 - pos); (*actual number of characters to replace*) + n := Min(Len(source), Length(dest) - 1 - pos); (*actual number of characters to replace*) (*replace characters*) for i := 0 to n - 1 do @@ -106,14 +106,14 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Extract*(source: array of Char; pos, n: Int; var dest: array of Char); -(**Extract(src, pos, n, dst) extracts a substring dst with n characters from position pos (0 <= pos <= Length(src)) in src. If n > Length(src) - pos, dst is only the part of src from pos to the end of src, i.e. Length(src) - 1. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) +(**Extract(src, pos, n, dst) extracts a substring dst with n characters from position pos (0 <= pos <= Len(src)) in src. If n > Len(src) - pos, dst is only the part of src from pos to the end of src, i.e. Len(src) - 1. If the size of dst is not large enough to hold the result of the operation, the result is truncated so that dst is always terminated with a 0X.*) var sourceLength, n1, i: Int; begin - sourceLength := Length(source); + sourceLength := Len(source); Assert(pos >= 0); Assert(pos <= sourceLength); - n1 := Min(n, Min(sourceLength - pos, LEN(dest) - 1)); (*actual number of characters to extract*) + n1 := Min(n, Min(sourceLength - pos, Length(dest) - 1)); (*actual number of characters to extract*) for i := 0 to n1 - 1 do dest[i] := source[pos + i] end; @@ -122,11 +122,11 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co procedure Pos*(pattern, s: array of Char; pos: Int): Int; -(**Pos(pat, s, pos) returns the position of the first occurrence of pat in s. Searching starts at position pos (0 <= pos <= Length(s)). If pat is not found, -1 is returned.*) +(**Pos(pat, s, pos) returns the position of the first occurrence of pat in s. Searching starts at position pos (0 <= pos <= Len(s)). If pat is not found, -1 is returned.*) var idxs, idxp, result: Int; begin Assert(pos >= 0); - Assert(pos < LEN(s)); + Assert(pos < Length(s)); idxs := pos - 1; repeat @@ -143,7 +143,7 @@ Implements the basic library module from "The Oakwood Guidelines for Oberon-2 Co result := -1 end; - Assert((result = -1) or (result >= 0) & (result + idxp < LEN(s))) + Assert((result = -1) or (result >= 0) & (result + idxp < Length(s))) return result end Pos; diff --git a/lib/obnc/StringsTest.obn b/lib/obnc/StringsTest.obn index f3933fa..8199b70 100644 --- a/lib/obnc/StringsTest.obn +++ b/lib/obnc/StringsTest.obn @@ -25,13 +25,13 @@ module StringsTest; begin (*test Length*) - Assert(Strings.Length("") = 0); + Assert(Strings.Len("") = 0); shortStr := ""; - Assert(Strings.Length(shortStr) = 0); + Assert(Strings.Len(shortStr) = 0); shortStr := 22X; - Assert(Strings.Length(shortStr) = 1); + Assert(Strings.Len(shortStr) = 1); shortStr := "123"; - Assert(Strings.Length(shortStr) = 3); + Assert(Strings.Len(shortStr) = 3); (*test Insert*) s := "cde"; @@ -47,9 +47,9 @@ begin Strings.Insert("bcd", 1, shortStr); Assert(shortStr = "abc"); s := "foo bar"; - Strings.Insert(" baz", Strings.Length(s), s); + Strings.Insert(" baz", Strings.Len(s), s); Assert(s = "foo bar baz"); - Strings.Insert(" qux qux qux qux qux", Strings.Length(s), s); + Strings.Insert(" qux qux qux qux qux", Strings.Len(s), s); Assert(s = "foo bar baz q"); (*test Append*) diff --git a/src/.Oberon.y.swp b/src/.Oberon.y.swp deleted file mode 100644 index 0627e870e1c18ed2153d21a6056ddbb8866ef7d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131072 zcmeFa34C5vo&O(kBM3U~J6uXj(^6Vi#TKe*o0dqLgd_zjU`UfE?IYR9^Mp1O99KY5 zQQQ#)71t45aGcRm23!zV+;`l@ea8(H#sB;BJ?Gqe?tSi)w1t`9{C@xT#hWB|IrpsJ z^ZkC$w&jRZIyWZAEkCk_fB)3dGW!0hv);b{#Vx12^gb=)BV&`>t2N!3^WVAET6J<_ z&PVL#Gkt(7`X^_mhbt?_XD7Ez46mq753lIiQkkBdSUx*{AbX$Kn*)1uVE1!irapT3 zaR;;-(SDQ|Gc$u{{VmeRsQF@?(KdF??2FAe}n(I=05rR5AxTq@;|>{xQ}bZ z{$1#QKI^{jmk|Dg{q>jopZB|8{{BP!^~?Rw*B0(S)L*~R|2+Es?w1h$!~FHD{LeoY z?mygLztaDFg)gx1{v-VL@cpBGfra~z^!G#ge6Dc+QT~3_|2)kXXn6n8{`#cajkL7Lw)u(- z4UF7z|KxvSU&zLIGrS2Zkid7bTRsFIglEGVxDR|Cd+BTN3K)QX=!N592|NN?;8)mX z--4Uq8n_%Tf;tRAHyjTK!hUc&cHocT3-Doh2fPxV4bOsYa1tC24}u56@3B2^gInN( z@H)60rl1oJf;+HpzY1@Mx4}hlCY%AQU?n^hev2J_Gh7YNgwx?^a2PCwpJTXP2hWA) zz-BlN4uBtF^t}gm!11szT#cdlRCpYGoQxla2g0owc;A8d!*y^G90*tA=NN;tVLf!f z{?H2h!apdtUxJmNFT2*BHQj3mJG%!uHgxnQ)rop#Yh`*>OY89DM6I3-ZyTCUmR3h9 z6ZKUsi)JR6x{>T`X<2kZORYXsuMQ{YPF6>fjvZ5z)Ajz@@hy{M14CQJDs9o*wb}8} z>R6?BsJ`v=GncGtX<4y!bY^0>PEfUEbaFZwpB$MPt0Ys?{B)O>u4u`Hzjj+?`0TYq zwMy5}mdewT;hOzwrHL$!M0%cl&D zRY!*EmG+uGF;4cyAFk|}nkM?>KrWp6(Dc?yePDK~;yy_x)+;;e?vE+Or+2cJeMqr7 zb-G%&43FZUC95pAl|L0ls7Z!LCAYL^sxqzY>90>$C$_ffgOmPJ7LDl31C{CVwW>EH zf2Ly3kI#&SP;zM{3)+hp)|3X?Umc$st5C&!mK8oQG%|8GKhQMj>B<;&yiiEnCR>Mhf4sw%J*;65oXs$JJ|H+Wve6D~(9@z3BG(>U1ql zTbxx{0!rUogAnPIG@I`oSB_Z>oq|0SH^)~*-1oAzLlz+sDq$q}EPxV!XauUDnnNHW`&G*5z^n~+0 zvu1K~tTHrF@)-GHRbt5GZe^r8j1*4Nez3H|+cYs#tBhD}t&Uddh}u+&WP}yw>}+Lv zdU87MX~%0@T@UN~z$kO*TwNci^6^E`UmqGiJMA!|hlfK?TbuKdthG0NY`QW$IX$vV z-<+AArdg^AS&Bz0qh(Q>nV?;$5|6~SnEK|E?Ddt2shRplQ!BdZ#M6LObr5K^3iq4S0?Pe5UgITPE_kvy7luaBgqNL5q$FyB3YfNB)xq-YX|!}`ZskA46f}# zlR9l6IV!u`-q*fyuz%B<{_O6N>D~7J{>}~E8#}tQn@3PthElyDA$rmRYN{iLR40bV zX3%zyuUY+HzHN2x+Q?XSOT)G5WWyyCjr_H->UgzY%U>HEn;fd=FAb|1=Pwb{%5?s* z1fkseEWXSNVV(&fTw zX=#4X>*v!F-SwgBSZ#UB#*V(VC$@JFw6E#x>Kxddpun&19O&-o?@!kE^d;>{Z+qWB z=h{tO?R`n_roP^u{*L8I(ob55M$48Nbk@#+6MHrdB<g|U{i=I>8=5Ka4bf2R1U5F7Y^fv&(9xN( zWi2gjT%TnkIr^)5pC!rA#4IKQ-C%Mql9fx#Ta-=fF({J$$3-;(A+4ugBa?b!G71$+cP z1RsQ#!VWkKj(|r&3;Y?o{=4vP_$a&y`d|b61$+Ka@ICkrd<(t_-+2ZzC9;H%j9pN4DTY&Z)}hDXDPu<_pruY;Gu^I!(ffs^1w zSPvbr4i16?;V1Y3E?(PyLG2D0GwT4-Ar4Q_Ti32yg=yAJ+ZC`{>V70tda-x?s6!ii>K? z33mCSkp(g+a~k}z1jpD^b);>HLL+WIa%-n6^x^BO(`_z{1-e}wP1+7lT!oPJfP{HyG!*4sKx>l_$d-`?4^sjtJm)!ORR z-N9a*d3DoE+ZLD&xiT^9TxOqhqoVD}uo+3}+tCqMCW~qmi8m0ji`phC+szYe>bDgM zpH;TYe5(!i>lq(J_S~|h@ET>oYxdR7br?Vm>2Ypf>~0HWUA6WMc`nTHJ8$TgBNp~R zUq?s(AUbQGjI;g$)XnlQbvj4D-TIjKqw51Tbo$|Ki7QW6gH-)mReZ|aEN9XR&{Y{N zl>hc^QsuHbksN$N(!Hsx%R(BH%R5(tEP#UfPU%M#&P62sqWiN@pyb^JNo9=Mpy=9H z%3pI;!aiCkTY|9qVE*~ik0d9YkgV$&;6K+Wef3IR`AXNaP!Y4dQotDFQKX7Zc2@=q z^07ry`ZihKbgW%9Z#>Q0%@K=EJB^kzU73=YawYCsb(Xzzw94iIpRr)k@EHqAgI2az zYg20DZTSydozd-WL$$tKlvK`2Wbp>o1V2Yy8FC?Vd&|b^1W%N`d1UscKH8>7lhr3A zL;PHl9C~Qtt{kr`LpzqZwowdU56=<41*~Tjus+}dwkrg@B?Rn}r$5u0Z~i?d^_>?@(skwM;TQT$9DUkCAu*Ib~8#q zV;BtyXm=vLF~DL1+=Jx_XkU^~fNQtK8dhi=6oh&3^yy_*FP2%c>i){G`Hk<}ef<>Tt-*;j2-wC(D>){pfGN{8Q7=T6a zaJU!zh6H{cu7WB&5&nj4|2_Cm*bY-L0#Aj*;g{I=KZ0+-_3%!31H25@!{N{d4}#xf z)Bgg#51)d|;B;65f5MjkI=m8O<8OjqSPv`U4($6I;ZoQJD`7wQJ3g74;iK>Yn1EB@ zWRSn+Ah@0R0pEvrz%)Ds_J?m#mT!fNVH!?@CGa>Udw8;fyL90JTs_|P7!p<8c#=|21Tl7TDa>ctjc!Q8Uu4m zWf*?<_j|)wew)TYG$gQ0zOkWkzP~Iv(!^(Lc*jOEck7LLzj6d$@w)piex>A%G)imn zO4g&49EJDJr^jyPlatPVIH@`@61{aKMpkZ0gS{3NZC_7Tw9)0X#1rOmFcSh_=k(;v z)@`_=y)s`Y!?NchtHl{D<$`W5lSN+PSyzf0o=zAtWuUt<;;ofX&@MBg{x3C?7)Zj1 zlEspCsomH$m7&o#mjbWL4-RbZ4JK4BoK_ct-ZrzRT`}saOl+-hbG6$ppMHcUy{P3# z${y^W?W{3rVZz=hJR8+-7i?#3j>rBRsuLB1|Ezi3lhvuKqdRNUnbGQsf8MfK)6>({ z(cT@EMXo5al5i7(D%-XpqXuu9dwrhjmK*MP5BcHN?^2A_6nu3i;x zx=Iyyczqr1UArHb(EFv)L1N8Q&z%%%Uen`9#q!VcD0IX*YsCpEJbBFBV~$->niX2m z|NhpXV)YtLNN=QgkE|IIPO-z%1$>u3LEb-1Q+x@5~tm0{Z2>_ii!VMce#iR>vehxpUZIJm`HzZ6!~dxy_*7 z@c2}C-F-#V9F{R?d5&g0dfjM=oJ>bJ*{86)6M!$}pW{a8W%+s}kMoaN+|&;8mvf%1 z!Y#6bxNe({)Ro1{7pogZ=Rl3I@7k13pJ$ej%8Oy9k*Gtq=IZ>Zx@0}DwNC5OEK04B zG|O(CnZB)x?OT&`t0|l;pwr9V$sUZ$LzpJ3FtF&fe}vj zAzu_Lmewi^{Mv-UsES!8#FJU_xk^ZpRcwKtel&`y{pN)F(P!o#QdDH22Sq9T&Qn!4 zmBuHGP$rot8|o|tv2(#G?OpO3oA;I9tx;WY0k3jzZBOs!^rrrBcbD1C-c1APJ${dG zZRp5u@q2u0O=otC-{V{TolomXL)0Jf&GvPD={ z`2wGU_O;o2z5Efs*VDHyeUIPcTj-zZt?rIf<6D?S>8)TM`L7`pvRhuu^0zv>*JiKj zk2pyFPT%AA_!j+IdW+w~E!qG2_YFV)f71Qg@fb(D+2B8~Hgtf2~_5<1dcVg535dHoBbB3 zf#&k}fyVG<%io2){w;VLJQvP~DL55Y!Jo0)e+&NwUxOFG6r2rxa3DMy9t3w_zuyQi zgwtRl+z-Bi{eC0723`cG!zs`O3*i9x8aDiu@C<@ZCda-<9~PBQJsY2?AM znAf(AENBV&SXiBq998K4=MAky9X@4fx~eJey-khyl9$qlP3}hh2s-p07|Tb@XDqMl zaP3EWQe-TLX0>vcjNnYrrkzmUBDF!R%p8rn+}2DB@j||`-JIB_8?HUEudNz%(#R|0 zu1h3iY3G)Kq!9=@rj=`I%R05T;odz`+N>N%OD`(85P=3yO8Rg~QU7-svSgacLsN;1 z&1T*rjFoEV7f@aX74jZ3q2xnHJ-{nsxpudVC?^ie>Q^ZKwz%pn@w%6$aEBrbHP1Wk z^0yj|p?*4cRr1}k%R*$ln++4r4Y4VAU5n^9g*uCrh9}myclCGpT1y)U#Sq52E89b` z-bd(1xlOw)3vZxrQyN?(24e5U9I0w*EYD#r*RXBJDu-t!j^@mzT`u^LPdiNr%#{V` z?^?^mtN?v1EoV0mKP~E1MC2v}*h8hRv4ml|BSQ&9S=K+$*V(|Nq=k1jTvJ%A~QQn5S4m5tuYy z-__I8*T$&2>)fM0Kir9WeHDL_4J_xqRrZ`K#{7*!XRn*RyQ8B0?{@`RR_$V6Zx!EJ z(MQONcH%E|C?)-R=vVVoyKHt)Hn}U-%jfK$tkAJSo4NnO^sP`yTszh1o3A0U)*7r? z-&IAn!TfPxc<3I9Lpsdl`=w0Lnm-QB1{-nA?p8hoJKN<$=trEB!`J>M@=dOtqLWpb z?UWr?^m|ePqITS@u**kO=Pc4F)Mmx!LY4imz5hSw?f;r$tR{u2I z0AY-N6~DK_SFzczf?0R~{DJ)c4g3gH7N3RP{+BaUgP*OmuWF{3HlK%buD98>_=IJp zjONre&KkyOwPvR_v!zzA)@N)nD36&$GE3#C(ji>6v@m+gD&FdFJkpT0t>Cwq-)j&# zF2YM*I{u&P#`bI=e_r22aFiCxc3x98wpzSmXu>!W7dTo=rF|-d%H(5XVa=QGC1o{_ z`cU%5yk9BtBhB-bk~h-IQ*=k{S?S`zn0uN=@O2kTH`m9^ThxupX2C8DicF(rTw_73 z*CABc`ZHP0@R7Ic?Qb_jqMuv7wn$NGqZRwL_)Z&%#!W+m)N^Tu&gBeBXYZs>7qh>7 z@H~4jERf!XX)@LdVy8!g zn{7nuO;Cd7)p9y(evgA#(`lTPG=IbR?-vO3R@pF`c@O347PryHp52$n@_$&6k?EWXff$(T}5ZsP!e*?S#PK86@Hf(yW>AwU{ z1+C$~0-OHT@M1U@o(%hf=H<(_ABSV%5uow=Z^HZF8hA6j23`o-r|&|Tgw=2;+#h~` zjejeA3$$MUX80uB1gF3NJQ5xOf5z6o9;V=Fuo(Uc_J@7o+t~fupMM)13xCJPzX_fL zRX7P2!K2_~*!k~-tKnI&93BA=h67+f_yhL-ZSXtzEnEq&hwX4K^uQtTXZ!%ag3rRc z;2rQBI0ZC+{~*wQf8T@efXeJ!(CnWrFv_iN@=dmFy2&D`#`}=~C=JOC!MJHzK2$Ru za%-ShEv0iT)Q2wLZ9VgPv4?mC5q{?#BUaf z7u!0irioAr3zol2os~qG;>i3Em7-ssawUxVF8kORHzI4KDqBLT9RnUO6@J zY->#a$g*VArXI%cyVs(~hD8s3>Eu9Ge21?o(QZbtd(VZJoZ$N0)I_f}e4bfYfe@dvU-)(qvDdzJ=?K0OSATA%dKh(13o6} ztnJYOQgYK3W~*yACCzP(z;Kr+DpYOA+c<HdN;1;I5@8oBU#S5i8?}fRj;;`~Ag-z{6aEP3TtOuBj$G#Xb0 zj$%+VswWLMZH{}B7nu$3R~fXXZde~c^CCEkA~?!@GSn)5&Sk2XyfN=rN@~-HwG4xaxBzSpou>FlSE||LH0l9dCSe%ma_lf?v2Uc zV)K6sZibuS6YxHGFZ?syg6;o#cr#oC7s4o<49CGD&>3k5z~Ar*+zDTW55gPZBAA5D z@Dx}84}!lFnIC}82Y4^M3T8oP19ZVLAb-MN@g4jabS}XA;BvSSCZQLW!=vHe@MC-m zABT6rWv~;5U_EF)!Q$_#6I(uovLF`TeCZ0UJQRheMzhevPl;i}0`T zet0Xq1>OX2gcrdjpmPal;aoT!PJ<3u0|$Wi7Pvp$5B`R4LUR{>1h0dChG{qz`ruf2 zJUj~I%lH&NijTkt;RB#^3f>2AhBv_L;AQXTnKBz&MP-8K89y{qR)S083#p z90ZSpec&I|$-lv!@K^XYXm116)lWkFj~!TR^=Mb(l}y7}8a9VYn9I-RrR@WqJ>5y) zrml{DEv#y3rJIvJwQymqzuAGZ6|jh8(BBVbS)Jbv@eX!x*}FsOff$He7OwD_M=X9 zchl0zNZXFgpK9T=vc)n1H9N}FvdHB2wPQy++d6F_YTd%4O;aND^Ai_7OB&s8r4=Sh zT8L4LR%u#1tiD(%o$EV&ov~`VXc5wsy|CH$)$KmVpLKNF(N>!&eNtt1I~#h3doE19XC<+&GMc}mFBh(`DQ^Bs8kzoz zPW2eB^sxglTXYvb((qUmMHh{RC-UE^l_$D*xO?E$X-W$GEtEBnkKkhg5=SjBK z3W2zLVYC1I)jl&osqJ3-Y4}E8>RBndr47Z>1c!jrIERBP!VMRXKCApHt+MMUR)$8< zee$=`3YWi}DvwrWh9+vJgwF9ylUx3q{quxS8nrYIa$Oa|&ki^!zcCpur#Y5t(Nc#S z@;lwDqpWzH1aAm&V|MUKxaW$&?M9v!UM+vuEs|)cL)iv+`NwS^yuu~hfh2#eb6h)f zHiXI++gvU@D#0TUQsMGw8sowZJ>M9zt|Be-&u*O=DhiMFy8*y)(>wX# z*XyL3Qqjhp@u9KCs_(9+gU;e%b;IKSa)Cuao|E>PNd(Hd7{+I6ehXNI|#|L~gGD4(p8 zUY)E#;*M8p);UIZU4F}(sv6n!Mm~Hzj{YR6{B_$LsIg{8n-TS-tuU6iCu`gLI})=7l69S@5PZ_XDnb3P zbA3X}-Ks%5?SKoN8+%cylg{p>vp>;}e}D#`ba!?oJ?j&WMCk2Na`_oXXULSbEZE{l zZ%6w8KL$4SbteNScJRL*c1+mRk!by6vZ;H3Ku+Nxg;P)Lw6visRHk*fgS4=kw$$LX zff_n(B^lCw#kE8mdL$h2Qros9N}?+@_P*^KFz>hX$aQP8RaHg|f_UEuw}g<3ZdHj^ z2dOYu+5Z2_u!Ur2$^O5_8&yBV#{V9?3!V+9!&6{6><{;X_h8#!4OhYI;c|E_Tny*K zEIbXmVJ+Mb{)&zNXZQpB4t@*2fiJ_CKx+uDg@1v|;ANow15Sp=!(XxeZw1XS&>8QS zLOaMWumTpsH?a9X3pc|jK<5SA2-m?|KxYS>4`)FStb=w~4JW`8VHq3*4~Bg}=Lu>p z!mr_n@Ok(Qyald?i=hrWW1t_FzYikAug; z1L1Gj_kV%kz%Svu@NM`!d)`eq;;*Rry1?{E+=3Mj*LJqFW*U6xZ;A%2-^GY$&u5o{M(4u9qg+Uf+ZNjh zp!%9*@sh=wYFmhBH4N2}eO{_Z z+0x=3^!7`XNu|LlA+ZI!6e6$sx zD9*d#LGt~4!ZBKGhM0~sxq8BD-)#0qHX;UlRcXRG4|K--)r|0-K+Z%EE7b9ndBsCc{bCtEzxlUAuRx$mOcx&9z zJuQI`>m^iovxS3t(L{zWyXukMbl=cb`#|tr6}4j*;iw$*UMuMUe)dRcjEovNsbeA` zHAs`i%NG0OmpQCT0>bMRH4hh&mNdL#luXXJa>=)K_gB~n#k4irL|LOYYQyGpt!j6;DfqhhWvngUP ztj`zgC6016EZ4RYzaiYTcc{6T)>1LJik#7g56;~d?gl{}q)G0suf}=t<+djsv$if- z?jLd&Qt9O8zU4pWo@A3oaXaXdKR84g2mk>&1nF= zGxgBVm(*%<&_C>^Jyz^9*ZsfkJ|Bsr2>-h@3m-TFt4*Zw(@-2m@ z_N-o))wU4(<~1&^aA|$B_>@(+hW4F}kl8eXwuNbD8^l)7a9wp#f$@-ZK)(f1S_>m7 z5QZ+z_(&gBj_zJmp#A=@ zgqMN#{#yYD!K2^-a1*w=&i;EJycM>=>2M011pC6@u+{H?Kf&)o>ju6JH^V33weS+q zI)Z1yPM84gA+Qa$!T@x_dUycr3z`@3L(sl~FMx|-J3I{*!NcHo+2(L9%)nDXX98;9 zz+2%xAiG^_4W12Wz-gfU12qTW(eNmc-ToKs@IQmj2zUov0ndbOa4`G6Z=n4IJK;n)0gi?v;4bQc#@l}Y--R3D26!HfgZ3QU3Zt+Y ztlp^3v<3+~>Eu%Qv!tU8J-BsZH3VC#vA8R#f)Qp@x{lEXM+dt)`v+(bp^@dqWkbkR zf5v9R_=oAcp*hT>@#emkS9{YC(t!6&T*=kvHNm>Fso_vAKfs(bb4+mWYWItIIm1z? z7&)9a%|6BYOfo*hynjwo9b$)9nRV06Kb-q=rsbFha6wQ;b&71-%c(T^XV>z2r!ILt zGMH-lWbD=i21`$4#I0z8X_k+Dwgq_cvvU}U4HGBQ?}l@%+)T>_>7-=o?k*O&OIwEg zN$epDijm8@5$hmSQtT6;nw!3nJrZ>kOcv-`=X;6#*r(Rivoa-Z`&Bw?aC8eIH^rPuq@3P0z@B6x}7)~jBtOkcjh0NiO*8`n-H5ERR z?%l2M+^cd@;fdFl-LB8iWnXm3{c1^>l3Ga!>AYHY2T$z>^2Rbhjf1@swX|S}g$C)& zj-Z(IIonO+WNn8^8^PEnM^s}t`>SeM8=Y0#>`%&-e!;4-lAbJH zx!Cnt_M9$7^4y}}izesjbPZ44(O`ea$(uU5*LFnxl5aiAD*Hyhl7!2yuDGhCYm6kP zMd_-Ozv?TMuXO%mlYj|CcS1c36*V>usW;7Sw&pSqDK|#QmUF7Q;S*{hzFz0<>%jAK zvZqydf>(^g6r)>dqOCzhwLeN}km|l&MR(E$>)U30E9AR141dE#J0DIV4F6=-&~oXT zGrE@d_KD~Vx|sijzF=4J1srW=pIIul6KBG1@L9gGz%2K5i6vhlub?!5T=zjCH zz}5Bh8y&;R;#G^YtMe#B<#j!;6{U@*CH;*!*!-_zbMn?Xjj+l1ggJ>^8h1%X5mLiP z8>5jQ)v$IEH;U#h;>aWCbeK$prVv|_uGz)m&(Y*e3M!b?+wE1GH0Zp#;M;UA^f`iO zy4vXB)0I)2kjw`&v1kIX;UoF4WC}q3Lvsrcb*c0oLAlJn);w+M;-l40{F&dN&}p98 zxR@RoMz%A~u2FYewxDYz$5-icmW~F^?;goCz90!WU`mOdlJg{Q*f;ZNB28q3#te;c74?!q>gjsGk7 zC|nJ)@nyrG2-*)&WBIG$1UL!~g+t&LY<7*=?|>PYhI3#GJOPe|HjsV40CYA$E8K-$ ze8=(yz4`0Oo{}6ltu7mf0 z)(2b*+MD1t@FF-5x}XylzyYv7Xbk`N@C~>gG;V(-ycnk85pX9yg73kX-~yP0Dx3)q zhWo%j@Cp18z6xIijlpXk|7oE4`hTL{d;~6m=Y#6e8DRg^_Db}pNmMmle;nY+|JQgW z!izLr$+}m+)j-jkX**L4=KWIplI%!h2-L=B#qiaF~)bmPxw#+kRM@KrkY3?}ZH!R7OEK%_r<5NuIXG(mV-l!vV$VmMN zAGVydBN{tv7IgNq{Eku|_PC>}%J#Dnt5lk6Tz0fNjecVjvnCM!qfDH-2S#Ym4O>o5 zg-wWe@uRu);fzq`P}CB{rj3SdpggDrO>Qakv3f%JI%6}cR^Eg&Q#=Y;qjQd*zD|gHMLnm`mutLHrGTH*^oHh$tt+J;~dUD z%~Crp1N4*(L;k`aL^1Mr8^0}KmVzE}VcXO)UiHm3U-fuwr?k1^+Y( zhARZlY&fkOL}6U9wBxkizK;I>@-;hF$#;MFbxu9br&AuBGS6E&HV`%gY8W0Muc&%n z?YE|q)BBZ|-eC8dzx$%I^wQ_^0x_?8HP=zg#y&y=n#WHTOM^^V%71tcMXAAFjD*DY zDw9R(+bT&-%B{57dE!!Nx~;3B?sS#d!QqX54wlc`M4Wyh_LvoWNF$1nSp9gsBXA)2JcOJ**8>b zkqdX1j3bMqawu8ed^Fvx;eil<7%ir_z&NYf+?eNJD!l0oRd6h+#$WPnCLFso| zC>={kXS-(4rFrYlH7r<=d5Mzt9l89SBZGIPF8KbUG1m({MR^v50X8XUDm0&;nPS~p z^SRXUq^~i0w0N(O?1tN@e_-h1bGs z;1bYz1!K?+8{xk2ReS^TD_j8s@Mzc{G_T;hpnVNL56^-Xa0qBlK`Y!3?hX5Z<`n!9 zZi64g58>PJ4frg43O)=Uglpkn;O+1>kk8?ja2Z?(&xP}07RKQjFal+33_7{q4u^t# z77v8rv-k&oi64O08hjMagHxa#t_v>2N9xz=_ZSt6>$afMu`<7J&R24~6}q75xFgG$(Gq&dT0gtg$(DX9X3)tux4-dLK?-LzD1R zIZb}pSfHs>HP${`Sa#h7NJkZR)wQuWd(aM7o9j_CFzr#TdD_(ovargI1uH}_jfiQ1 zJe2Bx{9YCd@8@yzsw@_M0b8qI(d(90Mv99ic=4f&S9!&fU!#Co_Z4pNYjlG}WZ?$C zMmH9($bwoC2gODX?hWne5G^E*;^GITiBcFLHIv*_mRyg@+GSe+=aV}*MZT$X^MAW+ z(*^S@G`+{}1+F`6uB^G4*UsH!nwh5HJ3o&d@^Qw3MYS^)sEb}^lUJyYu`=YeE%*P@ zdKw~`R?PhSyHdGx=Nv@g#9jQF*?R7n0xF1Y9-+_I*f6-^zOu#-Cgz)jO^KJ^&F}v} znL0;4X_5Y;Npv3%%X_l=sh26ndu(6_wr>KW|X*W^N}P5&3r`8+1Ko@_aIpU zokc`YWe%X7^6Y3iX%bc3#4l5B^*?n#s>~K@PhV&yJ$-Q_IXr75hvyo}VWE*6wzwr) z&{_=laKAfB`RL)|T?*cB0ucpW*8aRoySMpCn&joNpOnWs*bN)Jinqo0oNz_!Vow~MWa@PspeEns2qRENDUdDp!9n;g3(`^g<>XZg?FKItBF*H3} zD)X5RvKw6y>sefP6Za6Nbs$20A2CNKaa5)p=y`V(ERxCoxtf_8z$H3Rvu+|9xh?4j z6ldQLG#ki@R}2yt$@GT4z`a{6wqk9JmLA6KXP5d0<&HUvd~}=1{LI3{%fC9Ej$_i= zIs1zpfETr1T)OI2Oi3g}Eu_x=Aon}_Be~z%onG#aE^p`vmp6Eg(E?e#I_o7?$Gt>X z`aBEhGqrW`@!9jo$ImZ5B)f4)?#2nByJ1yL7^sNSVwE!AbmrE)>PX4`vN{3evPgC3-~&G1wIT~tA80hA7oQ&&Hizq@&0dN z?|vR$3bLi239_HV8vPUaeI>{~{wH`n_UkANgKXS~z=I&H#s4_=>y2+fga8L$;bU>Ht?Za4;x1nuK@3w7&qP#t@T>RI!DdC6{aAk{h$@4>;#Z|LyJ z`F?mscfyEWYpZ72`o`cU%5Y1{xl>qV42Q)vUbstU7v3Q7@;AJl=#MO6?-^TD5H`DM z4ZmdfBY9%U2_p#SCyRG3PO|5c#TUe~DVORab{sL|ZC|~lCo$QJA*ZjHk;2-3*Cpgu z?DAFC{Ik@bnZ9f@#O8C^fjinjB@?G5q2;MekBJgLtRx2Yr{W%ncRU_azz= z+doRv#Y$rnoFnOQOTq#|cC?9HBa9zpP7%K)3%uV$>;ta7%&TOq(TRv9?JiSSFKHZmEI_|59R*?md+_x)XB5F3R*K0$j!sL6I zITW;dWh+N43{6iD&7z!*RCc5zDP+PwQ$M z!#1f(#P6y9ItxlYogcUK>88e0E1Z`r)PQO&UB|0TcM6g-LN$$#RsQS;kW5Z6a7>fZ zept4vO``K9EZMxpYrc|(X|Oh-C@2$)Pme0xnWb&ZWyo?eWK;_qvX+wRq0!)Rywbv+ zw*s`^(tN;cW+S3(B*EQ$4DCr5yKJAxki24J_IY7VCmQXPN@8kBNy)m*$OgZ1#Y}wU zw6G}0%CmbZ-;Dio?>TDp+*P_vRi-p@@loA~s-3SfAzY`5x^VoGg|dh`ZI=2nRA-a8 z;cW?+zKMv)Znmo?&0@cGus%&qj zxhjaz;ulLRrz`n>U!571R_76lza@V?sts9bXJU?^au!foW$5eZ=(mH;o1Grw1a7tu zo)brXmGQ}QEA7@bWcS(*%|6Z|p3+y9t?5K9iTU;HNI&B25jyCQKoc%*g_M4c&y^tL zk^q!gn{c4V(}rf!NTYhLxnLT;Xf|AkDuwh$67u|>6SRKgV!LIS=J;n z5p7k$6(-`>#tNLOS7z_XT~N|o7C#g5l+$l=4Xp4=7#Lx}lerqg-&8EuiqsZxC%7XG z)fc#Ckae!~gN+Vfi-Zf&(!_f?tA1{y-cl8J8w8g+X_aO6fRn6qhO{%NYjp5FlD0XN zbv$!a30ExcE4F~6X%@N(uU2)l{BjAm{?^^eH1MFWM>}zqt$Qo!-pUT2$*TG?uXSdE zjz(HIYv$0f`$@6MrlQFA6RvN~3m%syQ;vM(tP11?_hVBdosMLuJ-JE~l`DnlLX_eX zslBD?(8MgsPB;87`IS!^@u!qz|H~wMmHvnQ{|0ZHeFr=LZSZE0{r`Hn0$vUm!Si4m z2I1+TJpzsf%@4RY{2ZJAvv3Vu1YPh**dIQJjjy!^g4Nrvq;C}F1 zY<#U3xE^#KKsVfpeg7GF6=*EJ3!VbU!;?U30*(dkv*1k7z5%_Uz5bSi z#`W)jZ-K_|-vloPogbhv`6t7Hpt1H_;Ul1Z{LX*`Y&xX67?n+2WmhI zkIW6WA+Xpr%+u+%_GJ9ISQFr&r~LtvP^Ny=}1i` zRiwU#wWvl>DZ1{>m!(^tOqOJ4bj3^7cF~-lnV^ex>ey6zXreqEQj_?S-yN8B&eK~f zb#LGgqx5=TR=&G%YsIpo!U{@@8M}Ui-MrRKBwRP_OiMJRT>R&9T*r}|v;(QaoO2)B zhLwF${JbeEm8|f=Ipz%Jzlfh;iEl{~p;v!HG%Mwn1?%dG5v7_4@lmi{74TNRz zinC&H>U6cPiG|sE5pG2FA-~+juN}B z)L1$c8FGkVvyx|nX}4W9_q?Lql2y-0bVMp#!~AuYX2*Nnw{qZ2C4UqImrl)}@xhg~ zNP)D^k;2{??dH#)IVsknlLf<8zeWt^?ucLxBkrKtyb=%#w-TQ(4b|kEie9s&${xukOj&(Mb66uYZp(2+z&qAL z00bO-g6X9&DNS+8KE;!6C1?DcwQ(zfJ{@O0Xhtm`>?l1>K8z0)0_J%!Iakof3up3qO=;h?x{&x>bvPHs{QJBRrb47$a*vtOJ=YuJiVSf z`@6~&3Og!TFDZ&*=AIG=iw~2l3n52~aP~hYUCUM2U$XzNGW!b~85>^n|E~wx{4a&` zVJ#d7%b*Pw!2&oKv?kzd*!N$CH-OFrcmZf$z#2FZG#B6>*z~u2Nw|uKr1& zz5Z9haiIPFbza~j;GrNt!7t!e_!fK)J`JCQo8aHztGyDKP0h)jRYS3Kze^BVZho8c?;c|E}yZ|nQ=fZP9d-&I2 z3eEt{g-<|p1|A3xfZMV0wMW4BL3{UWkAO?zOwc|78{x^Y3XX$gLGuHaLo3`5bgtif z;2N;H=<6X;urU0UmjIDQp+i2RnjJKPUA66{QKiSm*q%_Seid8^EmA~_?J_3}Vzb(0 zbMr1)(H-Qx5H-YTGj9ntSEs5I=jz}*H?Yr!19rkoCPcmU*~~t- zba>;!qGJWmJ`qF1XQvWBuORxRdg`y(U@6oU_lk82&JsgM^jhgI1STo0pb9U!;B>>= z`D;&P9|0}Sa~4_IHaF4J@l?m=FSwE}THehwoD+o(uS#Q`X27$M+tHSiMKe5Z5Sa-c ztIU|N&A;kb2+se#%*T^D9`c`d4Kb9t)l7zO=#iz;`Za*+pz#3A472rt&X#mtu9>{b z-&6d46w%zEyu}@q6jv3(<5Z{;tJmoq>*A3~H~73>dufC*K%3?i78ZDe+lo53KTy*O zk?oIEYAHwQbzx^0)Cw$fTzX* zjd!3jU2iMC7^XcaP|I1DJ^2omj4yMRJJEkk-0cvG3&50NpMrd@@}-?Et=8Jt=E_Lt zZt03TEFEW}-_!27SV_F!n~-)zdC*B~)pC7?7 z!f|0-KNg&ksfZK~=JRKkxoLBDzF2uI2ywA^gX?( zKhuYNqYkn4(efWppGt$WB)Ny;DOVw-3y)nTvF1wi3HEzoM_6s{RI&V;U<}%(jOH}f zJt>qYWFD1;$HpUjd5K|((x;=$4f)|NDf@^tb%#^@=4v9$yUm|>X&0DqW5OkJrIyyY z#u2oVR6D<0>Rv71Bet1t-q5DK%pI{^J8Qv%TU6N#Rn4Y=mBt{`(KY^mAhuSYxBoBn zc9-`5`yKomegQv+Z^7r`Gw=$~et_qI)&}&#lR>_KhrqY7^S=PvAMiXFhbm~Tz%XbX z|0&P|nj6p#2g6ux zHvL`L?tg{b;TP~z_&4|fyb_)b{h+b@KVh4H46cL;Xa|kqKMHgnz-90PI1g5W#_AWq z!{7$$!+YVK@CMNS|EeP=!`%OnAAY>drn#8*jFg*uHjgPS<*RN?Yut(|lg2rrMuM#4RLbJcQ-3$_K+RfWzVa}-3Nur;RG285>p=B-!AQxz z)9|4=z9idhqOz5B!wf5we2#=JNP^dKP$!x$7}1nFE1=*DwVbkh0LeSh~WT!X<}YAiXOrqmo# zmebdx*!Vd63u$a!|LdNL-2)bT>jbhz|K_xD9ZJ|l#>;ivBgQntLdWO=rVrHdd6qN$ z&c$GwxIXdxBs;&#>e+56gV9Wdnr)^TRkM|TeHt~&`=R1W?HW$5)iiH1HI{9RRid+g z{l`MPY5Y{a0p3hD)guC7~8MGm7UXf;r&p+}>S_Ngw*^(9= zZm7Z%hHh9lt9BJWd_rTlWH6Z(aJ*qu- z@pjG6zYl0`{%xQ=_PzqQz{f#j?^?sZ4Jxn&hTvofXZYQUZLYcaUx%;3O%V3Z8{l`X z?_USn6Ym%}5|)E({l~#=*zCW7FM#&NyBun;4VHoC>^}}34UYh=?|&HF4?d4Q{~7o< z&_4fff|tX^unk7wsjwE7!=bPbXm5Xw?cWK%2hH=>S%L3^_rl9z7S4jO?*C`l{2zpO zf%f;U8%WZhRC)VcbF62 z3QH|=?L#{=rRBwA)$yvIYpuR88zd}?>Yg~WneW-9Z>UWw^1G3MXh&M9chi$&>AYv} z%(%N2SjeJc@M%Wnzmqq=oP^J5$#W^L;ag3LqdLL)?2MQ(&_Cm~ONGG5u3UPI=j@)!>C(fB6?I~;tvw!E)KKq z?x^RwNxw?ohSdCkPFWeYxZ#}ed@-W=j6U_m&MrUTo4>KHhuqg7;jvcbNtZo3$9MfO zQuwY_rTkR=C@Q;AmyX)yV=CM@aZU<*A?zI^exXu+rPAFqh{Ja6b?M`#{hHFB_7JHB zAGc^EhmTm^iz3O=yu*${XU7noB#-Z)vZL;HUXW3+sMhGkcg5-iF{(C#Y)LxNT)Vc* z@snD|g-Ck2!ZdPwe<3@wD-ywzn!aW>Lb#d=wJyv>n?|8;B9ZK0){Hw8^O2gLSCoq& z)s9HTM!0TkZjz5jZVG;w6cW8-S(Td=boWZx&%CPdE#z8M{_7&^GbGI%H7yO?Y8yn_`E*5A0kBp8raeAimDknht-BDrY;@P#qu(T5~r=1!_CMxu%Zp{B zVgFz54Yi+P@81L$z;<{BXq~^-_Wv1M|2Fsu{0nIB{?~zg0++zWuoHH`4Aen;`1eB} z91q{aA0U6h%V8&+2issBEC%h*|6}+vdk0gxA5VU^{OK=NZ0h$A#@&6Oy z1o$O3{rBM8@CDHN{!hcF;5v9Myb3OXi(x11fU{v6RA2;p;COfvEQiD3KzJ-X5FP;g z!u>((1g?fR!c}l7oC71EJ@d~3?GNx+2x|iNc{bN_!seN&x# zQS2L-Q(8r~Z_q$=nuWOqb4}Q~`0Q!Ty;UFTyZpu*>b1 zrH|C?b+!NU+s%!f(&u$-Ov#ZSsIE%UNtM~{I%`M2ud57?A#$~AyWdwxSNoaH=dO4~ zHK)n1l@Mxp(K%$I%bJtaQvPgds6E~N0}X-rNLerqu_|1(1Z58;K@E#8rORKVc=}I7 zSHir`NK4-(%f>d*A(Q($1~&C|=S`;i%=84>pSPj-=AH(=rei~A_h6%)*0|L~$w%Ba zKf7Ua3=d66y~g^RoMzZ#l3fUrbWeiD<`s52inV9w#b8J1iT+`Zf^2gw#a->4VIK)U zCE9n9xr5oVoeWOu>|Q4;IBh5ghk5wqDsiifD4^oeYKl+r8Kz;mIX?^yWM^=l$bJC~ zr!_y{%Qh}bPx?!%k$*2N08Dcxu1xbU9?@`e(^pAw@RZm_V>UPtbk088i6gyU%v!tQ zF50hoNtA!hA5WNGj73gsYj!!6isA502Fz6|sqZDVk>s(6hJxJKLi(8bsnTG{0ELHb zMEfabZ(1yKAEf3BBWhT?QPHX4#T_@IV+mC{>A_x&m3!^jB=gRr+HIb?O%pR5($cAY z1Kdt*zUnttqmGG@HhsdLb>-!(;-pq;uv9BV@ zwRUWXw6smzA2hfu*z{7qz7&J$4G~QJX*G*c_GcEPVwznq4cA3-mp#fZl9518mHgn8 zh|4tOf%Yr#Vmr-l+>?#^eEL|tIf(MytL}cVFMBN3$8{K_sTqEb5j_MON$OH&_hWHX zN7%`zJ>9M$D+InS5^}8n>)+H>wp&OO2XYoM+8_TE_4HaX|KlC@ce5Cx!CM!6 zR3f1u=K8j~7qUm0XiGE9JED6`D;XZ2vU;V)iuie=O&mNzT>vS|(!>@bHl@8#)wq0& zvLMS*6}**BUz*7lzLk$2RS5bcts(j&?hh1`^rrr>_p_F+0PHUw(r7th4oksGWD6%t zbz5)gTi&G9CU5CmuIJE4^A$l4WQ|Dod{ri(osA;aCXmO%qoUbR!<9xo1FeFsNE*}` zIXM&Cs50wSqwo;QE0$(G@Vbt*U7UYBP=1K-e9D$pyV#x4+*26FlGsUqy28$^rph!~ ztm0~O9PS)0$k7=#$V@64grZ@NxH*<`n$VF@eY68?Dr7W>m`1=?^qj!41Uua<6+R_t zN+XoUQPX9WOBRiOkGBm>csY$*us=+ZPnN3bk#SO|;oG`8;J&Cqst-`nVXiE*Z zDW&ZHdtovkj7=u{|3+{B{}DSs%>UO}0Jp*y;B)Y4_!N8?bUxs9a2Z?*FM>;;4xMm3 zJPEXCz(Tk$+=2bCvjYDJIv?<@@LG5kyb@+XX9zqIj)9{=YXkmLY-2`k{fun+tUpTke# zKj2z;8@v#-Xb!_FxE+7OFW|>;GkhGhwn6(8JPR&>^I-}$ zK_5H;7Jz&aKc#+u4sHgWX>bla4Nif6=!G6w4GY2AgW7_GsBD^cZMp7D$fUimuYEI1 z5?cy4iW=!|pHF^FWY0${7Iw}4a$-$;Bl<~VPG$6}c^ICxP7dwH($l7X)rKC_?X-H+ zfFN?JqPkopSMHigGWtq8>DG0Hm;pB0RFYxY#B)Yk$A`xBLX=q+nD6w$z_Kk~vVO)- z&`R%HC#v%vyxBp_E$LbdR!F-p#cK90%KT~DfeT?@O?7%-1a?8)bf(36WhA{rtlW7M zsoYf{joN`rj~h%-G%ZA50+y6qe*46^rDyCxK6Ex)|OQKd=Ba+_dK%;u^}F8{E8<5S)3we*f_5R4^T z#=E+b-n0cOZ73{DY<_w4i2a&Y;jC&XaKBtL)PtjR%>|iXkBy05vK~8q*v%Rtc|L9g zvlA_`kYiD0Sh?66<4RM@`d;s3E0&=%`dv*bl-O=)aYx^M`RAnIE?bN>99^j2&Jb`@ zOoNA@xzu%*Q_nQJOC%t{$WdpAZ~wvTAysw;v6X zAotbKpN!+y!Uw`*7`OH{_AEAf1lN7^;HwZAbyT?Ita(oJ`e`Bk6?WZHz8#NAG3=vQ|11 zf|YEOh`CaqD)zrq&NY_m`?)@74#Okugv?=9VXV|w1N%GcgUpH#7O~o~ZpqOYe$N>J z&cSDoq=H6&`Fi1U%+D$b`T$AF^+m0gMwe|_c+G>$b!}N8TVu(}qR^?Osb<@9YE84A zEluSzOz4nebK<&+?!1rWhOQy$*lsh3Fzf49A>P6THyyJ~s74EgEZGE}w47bihwM4Px|)5{1+XELRsDF8beD%XTtoWj-{ zI*6K2VQ!!(4L))N5SlW$?3N7}mECaflzkx#@icy*%e=7rkvIpFNo?D2XT&Q>hS={f~KN z`>)6Q|9ulX{c9jQU-JMy2*K8WAHTmBbS}V^@M_S$fI0&}>jY%y{}p@vR?zzYcf++X z2~UB?!kyULe*&Ee_z92=e;vFX&H}CZ?}d%_t za69}8egr=N?JIC4yaFzS=fFRM?DrAqg@vH?2M0haXzhXa8ql1BzhZm;7knSI20{A` ztb&#BXt;yQ@kjVRXuiQmKGvNsn*hWc;$+qod&=!ZqT#SPU-2N#fvxI7EbT+_9zeK!>5OxFMPe= zJNh)G{hRyQzj;B{$4hex5zwe>`dtPmLIS-Gm>YpTc~g5=Cr6z1*&!>-oJz+TLetTE zA${rlo7mB+%KVBEQz1g6%06j&#1%+-jdLUR(^58z2)1#f~>IzPIcJD zm}n;r5sf-aGjEbLmEpap8m}nT}RLJA4_9UOtfp)=}@qH zPV*1aIU7N=sfcQWHVodT=AyrYRB2|%A�@Oxzir(lO+ts%Q!e*}bTC#suPfLJdVF zt$+F>6%S=XCw($)Dz0vtJ>#ymPmK8bQ+PPLk$%D(j{fsur!1F_Fnpt2Rg`(jZZtIqf#?;+>61>Tk4>RoL|08=Dt^uN{YH-r*cV_lAS72U5G?n zu^I(2hjFPVV<8un8Mk(_ADQV4NoOVlm^0`8QadX)NYwMSYdd-e6z**9V2N$!%8L9M(e1< z7w4k5H})$`h*JN2{i4Xb?a5ii~1KqIeWnSf#a zVc+IKTapq>nJ9#&@{DInb3s)gEqvDtxk67bx?<5hD|chA30iU4KXHz-=c{q!juJq& zs$Rsk&?Z=9Erw>o@uTV7+c4wQ8!*|#jci&)!r{Oz;}#^-wmA{c=L46)n~n zh($xYFHsz9;L@oJUSE;@k9peiCfQqz|6j=u{nL2=J3#aPSHpeaPVDyg!9~ywTKE4= z?C_i6KjC_K8ECxy-k`nw-wE2cUvu{_0ga^>=kLq@{y1nn{r#Z*`kn#7=GMM_gP^_p zpA0(VPh;%bv;Sa_J^o;LAUpuHUx4iLAHw(GdiW3ccaWX_ez*>sNU-gvEejXZsqCF44r~T?$IWISs+2LovG)gozs_ z88rkGb{+|_37d_a%}A%jF`Mh#Y%-U~RV_PPyrJYSoAIM@BCkQBdMEZO*^Ln}ib^-! zw)l(*P6(;h8J{s{#koU+tXgavvdN(528G?-=j3z^=+`-c)ZHE$cWu5zYZ7ZSgY_Wi6XUS#a9(6F>KmAN%`oFS7W@l9<6O$@czr@(@ z(@;H+^Qark%2L^w6;XPNC8TuABDF#tbjM`2+$|0mvNg+!W=zQk73)p}dUX`KUu>)SiKHuZHVd8Yi>t4`6eUr||RXHDC23WmLI z|0~s~syP!`3P(@Z!v?;|fxGHz*_k0ArjXrA4Qg=sXguAbMOH+SXLS0f1 zZm?tRfqAsNMl;eUs;P3v{ZK+qbLyt8Tg{1-JI$=3K_ie92{W}~A8dne8OjUAsUk1q zT)tEl!|W`B(ebFJT{r=mRrv6NX$fI`D0v?qsdL_Ety$=w86B!(B}k@9dJRW7*#w5^#gr-&I~_Ul+*>60LDr70AKFA-%3T zmyf=^E?Ghh7cHVZculcPzwe@#Db#*y_Rf++d*%HrJ|5Y!yQEi#C17EL6=xI{e2h_` zCL+>NH=1K8maO|)UTK#Y^#-@Q>qJ8Qi6B{WADQDTscSd=5Q|Fa;7v5AH{EygA}o9<{aKjEGgrR3e4&oYUm*I?`8{S7y!tHN*?7jghe&EMR|sv zCVP_d37^k$I?KD z9%wIstx$mx7>1Rg`TdWC{ow)deS8Bqz!mT;(0>0b;lXejzJZs(78ryx;S4w(R)WU( z9|{kKPvbAR89oU&!J9$j{1Y$+XTviIsE6rESw6P;1G~+A%TP7ci8^F1+#7!0ik|^4fpJ&? z`@!F^`Tq;P1Gm7-LF4{)*an)H|44WUXzzggz#p*rwTHm>;k$4vdW%wN22%1N){Q-}IV_*@; z#=jrj2ks5~z?ZS%HKu z`J=r&q}a2R*L8?^=uo?oBh9+bZ;MiH?^njB>a%4*9AQBOyINChYJR-M@6sXj-Z$vT z<=}SR2#2(#ugCjzq+xNsn5JU6fTZfA>YjVV@A>2IOUTFSU3qe>XI-GYNUh`eC57vI zs%SvNK0w|h0VM?In)J+4r*jcjdPGvsWTq3G<)+hI{dByuQ04)jNJcU@sdjd1w#kDw zeNcL`E-2UixL9Q!uN$>;sdm3B5lgh3u5zyL1#$tjHl2Re5QyslBwtE%E#73 z_{}5~(^@d^RxBOia97rC>2a-5n?U9Ea@rmoL{lj4LJ`u7SA(~rV149QES;Isn$gA# z3n9BoSgCJ932O_%xwjQ}_vQ2uvh)ELYdt|r(|Su^b!6KpDr2ozKstI97F`J1IUR~l^ zwqJnj#0Fnc`$%O-o!Y5unJRp@TDF2q7ejijdxDH~buIczs33n0_Eu#T1+9PG~OfL3J4Ucv#c5Mq#!^dQ)}L85*h2Icv$`sr+}-tGpTJ zOr;sBU-HdDkyKt}G4SodZe(piZ85ECp|!=eTtO2~)Lz`<_#>piP2g|L}SwpA?*(sS|ujU$OdB{$sXbjCw{)m#gs{!_Pw0AWG*H;-D z+mqP&9nTxW>+}bb>_PloR@z~=VVt8O_-IoGlXi`1_lapNr%lY%%uaPJ-e2F&Igr%q zLfPf_U5!7fgYj6tuchEf`H||d`rx#3(f6i`)l9ZOh-PuSoN>BHe9Od(iK}Q#!#&)E z&%JwQd`pEv4z&!r+y%Hd7&>tQWZPhN>UK23$VV zmb($;+or5UvK?FGkafdhd6^W4;3ZR3O{`09GRwgGDZATls^SUVd55s@v>NjlIHl9&z*h!UHm zlQbmV(65`Y2r3F3V4|QiC){@3`MY2ZTo0GSCqd^68~{2aa1;0) z_Pgx-8{s;*0=@=cg>&Ka@Htow+CT76*d3n4j=u};1kDf79RJ(l6!-+}2Aa>m1!xWa zo$wtv2Q=<48~;YoIR6(w`~P*oi`eQH!T{_Jn}gQFe+x7p{{ol;yTVk^8u$(1eq`ew zxEpSTQ{iY>29le_(CnWRb|>%^-MwmG_y?LU2z51OZtP&Do}4;%?sa~8xin%tPg|4i z&?k7(-I4+Ql%5Gw$6ZKGEBE~mnh19@MXZ26;))SN?pJ>c^LkR}xUFZYHa|@+(9l^f zeo%eqG`za{-A!J;Thokm>Co4w%;Za?w$lyrLLECd(OCUD{mVB^b|!7@8#tTOp>;9O zxx7wY&J>?bMd2cm7gQxaUO(I$)1Ex@2u0`!xK^W(j5rZhAJ}g1Zf2+)cTh7 z_pmO>-Z4oweFziXtn^r6tTxKG#%fJyD+d!%!Dt96iE=ett(n{j8%Z|>T@+rUiXH2wL<|gZ?=FEz7w1RIsSU1}J6eBU+EV_!F z0;$h#>09M@SItO=D+%uSUTex4hSO8ld+W2lgqmf#zZX=V-jJOMvpT!G_Mh9aaNdH3 zH<(m4L|$)i6KN0?ZEaRzY5T9CkX7#K)9N&TTl@C4i42s5S4vKu{~>OVCS8#=bNHqb z4~3Jh;NA0U2CZP_A&K&I%k|xEwBqct6cqB=*wE(C|6#~R!h)7kWkwIyZKBLR`&kI; z6j4DWd$dE8&8^s1EYIGCa;%cpVnG%imgP~q8F3BCadJXg>QD(yukt%UxfUEHnJ|vb1=Ktf;~(@f-BH_jYuL5;1uHMyNOoNsf{QjuH0!2Kk}mPbC555KV9Hp{ z6HYbJ7~VpHd)K~m%<89fQyAECV~i$996%ZG_j%EVI7;wr&F~^|ZqJwSSuvuxK%gQj zr?=Px#VIS(gN%B+yc9sLWvw{Ub(jKq&K))kgYB*l`fFYT&cG<#ztv6wLP!Wl!+`1P51#8_rx zXyQxrkR1tDWNWQF`+`cWvV&Y+RTtst-(F{m5P$A4=w&HA6^5BhP!plbXFM=jkIxSV zn)}0v4>FqL{%tY9AB;K1;*%R?r9sT2ITy{vlt0XfRs8Kc9>EeKH6x|kCz>Os+s}l~ReeK?mp9ixQLZF> zDO;@XEX0g+ZVZ*W?@5=cBm6mTv+3xFDOX4-sZpPI`o|>L={tgo9lb73`X%X^%7&|1 z)796H8;Au}{%aZi>pdPtvkfaL=FVJ1XIN`^+qPNarV1a~JG82oRX003-&tcI%yJjO zl(zQxxDHyM*w)U>{#*psq`EpiK4UJ)XhnwPn#i~z=B01hf5sTSbSaaM5R1|ZJ zGJQ{#f^n&ga^yv&NlJ?WU7ya`buqQR(LUT&lFE9Q)Pw)TVw_5_Q${{5nw}B^C}YE@ zth*NDDWrEo*sib8jdL$5@7~Gfr^!?)vVDw)m3w-*xi`CSu$BgW+D!`)f-3ENf^**L z@A_Gmsf8fCmEa(bLA<$X9A5GJbED<+rl#pV;REmd6 z3lB>K4OEyc;~Sp*Frty?y1GG%;FmK&%3O{-m%N%L$BU(GZkXswQswHH2{N{c${mvy z5|mS+MC4ydAH)XLdylgd)($FY$E7qv5ewECbLPu(05jaQ*Ere#JCjFm#HN(}KfwR= zPvicl!Ccr9{*KN5Q_#77)8GMY^^0LSybs0RJN!9`1nCU;wmF{ZY^d%i(RX2|R~Q|18`Lm&3_$5VV8N z&U+Ml{#y7h$kv|+bKpbJ1qXo6$a@cHo&3h|Cv1GppT8NdgKxlU&|3LpKy&E3;0em- zSMYPV9bE_wL)I7XR!2E-f8vP%;k<*?C{-qIah-e-nqJ6pReR?&NpD9 z?e6+Wr;nE{R)^FS)L4yJiwo|0R;=ndfnztA%c_wvZK*EvT?=fy**JA*VCu}ap+S~@ zu5d@{xz4(K0lxo~CjV)6YGAr07iIbpJdNqMf37eOF5UB!0@F`7Yc2g+xZq%UUQ1ha zm7{B4!%zpmQ-druA+2tUC+S<=s48>UHYjGq4c)H}s22uW7_a*)Y=B7|{yN;VVt(3I zHYq$OMm`cBgKgRU$i3_5+RN$Tk|$`RV{gR9YX7!Tkw?~^Fk|thAI60KILzz%lOudr z;Z3AWy}HVjs3A zEi~kUk&klQq}m;0&XTHy(ep5QCXbvg#%^|&S6OkXhm-oIc3fTsrUEGDUCwha&&9ii z$(#0;EB(3-s=Y5UbaES4cKe~mf}S*rGTLqZ!G$zNUr|@^Pl2ZDsB_ztBODFA%Ke175a1xW&6I_ymyu4}7 z74o=gN`tp}j1pRsxlP}md{WeON>iit<++tA718l8w>xzcPE2#=8baR{DbAxw9*-Oq zrJ|9W1x}45WgEQ>E?n8C89^SgK&pi$3aS^5`2DX`KBT-CO4{}*nBCIj>0jy+C?Hdx ztaWacziS*Cp9($ZmY#AY=CZldy{49OIkvnm4K=qgEu4j$-ZD%g8A;#=4q%O!;N#asub&?(OBl{HU);49+FsF5|cm4wtcH67b%Dmfe72uIFQ-;woiDuzzI!dx6a|ExQu z>Oo%;*?gMl?0-z=aeoZs|FvK^YRnD zpt1jjpt1fA*cRRh*We>K2ljyvfX?3A0$#>PpmqHh!a4A1(0O~C!COId{Iy^I9iYAV zhoKJ+1?>m;TYLsLfzHzVDCiu$13_o$Y5xAZU_#MvJRk2R`~z3QrSK&<9ah3-Aiu%6a29BVCD%pna(D1Zs?Nj7sR`F)tug*rOc1EYkzTQvgBTqJUbX_^C9!K87O=?@b{(0 zV~DoJB~|X7p%)`rWkpfh6$<9B(JzwTCqks@L$eX)O|2^HSw%=K(e zlgQCzi+{IUJm+#FB`02Lo*Wa(CMUWD)+#Y^h@+SubG3PriUDn^jDKRS5*G8mL*mg| zp%tVhKHs{m#3#%ft;iuh&1A&}jnZknM-7gdN{35F5N`MIj(htt$t-1|`;#w>d2Pg% zvA(J!uWGGm*JXXwN?R}fDLLU%bJ@>EV)G*PC-fHqlUs47yjVr8z%r?Jx&>6KOkjJ2{@n|7w#?>A8|+UaUl*7&*>*D&)q z0c~+5_i^&NI|p*bWDNIu|Gd{|+pd3&=GGaNie^C!YyrkEHX|HfQ!%#Y`#An*e#Un& zWVyIb^+*D^el%K2PF7Z>`QTHN1KILkHySOa%;>5nNi(5r+Qv|$r34ifRg*Lo1KMPb zp+-x|8cCoEqHF?(bd4m)@d+B6^vW#UGt_$?)9%kJ)@V7EueL_pM;a}TpAGi<(LE`U z!l+3yR5UzehE0N6(KL$AG(74?OWh(Yw?TD`G@4Iw2(6?3!iiu z{{EUja2|Xfv=`qH91c2bPiyr5f=&P5a61fx)&M+L)_V+YgX7^?(7E;tL3{2$iY>4G_7{Qn)SmJ+O5O#n~;6=()YxchY zS~IXO>cUa0=%`kG#fZO%AJsHDw65kVy_4u)UC`6N ztap*ySAziE!z+WZo6y+>VJ_w<3QDvXqEU}3N#WIMKPz*B&SfYU2`?< z!uX8Vy*1Bl*!5-2^D18^u`kiw!Z4w%z8E|2T1t=UJeHNblR^zdv8k0Ranalvwf?f^ zK|v7OQi9Co=6O^MXtT*G6)RCAyMu~lgi=k(G9^-)PX+C00ynD0V%-eYB|c$axh}hy zE$Q0*>zAFbhbp=LYUFFILWbm+npP@jUWuAeR`AENK9=?-nj~rcRL2$zZ47H;c;l;H z8F!q%{+&a6ufGP8R~40SbLAiPWnF_bb`4}okEv=+q~C;EM-?(9s94dOq^TItCTk2E z$doKoBBf~>yDFJp`Ks5+IgJgZ?0-znac!~(vHw36jKZg}@o$6G@FAE9yMxvOybhkh zzP|%j!|8A$48zf|2y`~!6xb9V!QQ_T&VZTl0=E4h;W4-e{sYc}!(b2i8}|M8;Tq6- z|1+Q;G}f>E_;se=eQ-P60zZWB!f7xUx?o?}8?>fiGE4-W>9-@?i!b1A_yJr8mx9jk zI}VnB_VC*Pv}fOU;4;uUgOg!8yo4X%d3XYD1Fbix!3y{|91b6bPS_4MgJR(QF7P0QbtfDK`@x>D8%&1x!n4@^I&)9H zfqr;_a(xKygS$Zc_x%vgfulfc2D)H3m`>m+goIYk^sAmycFaJHvxtsk zXW+i$`fALE8CmFDxHB9l@#J3iyAVBS?`phhD!UI0A%VCmHYVEG09G=y6$a>3R-t}6@VUkgr!^XkT z%p8Muh!?bSCerp22?R3hn8u5EZ5E$P?O5 z>>V7)Q&EdGp=?ycbyNIz#U2aFU|RUFcqxCGnb?|dYQ#NCzISkD2SHRVIdrHZeic$O zP+GD-cbrzPhh9M$?y%0wFlp(efLvZQWcsA)OgDZtJv*O$-GVU2Y|XCPcqNzF*jk8D zgZcEwU+70lI(~w=nv*f!d<6l_N0{LGJIuu#M}uDFmaSa2AKRKlO&Tlj@xtE0m31Rg zW8*P4!tK>T5~!$+ z28CI$1@hfcv}KA*fr_!=JT~fA-(5PyGAjL>vU-HNJGJGyJF9Q$(oxjiLdKY?-6UsR zsHyepCFYH-g$n7?v-3_n#|}??M~k_c^mnUn)mW{|)JM$47)E873e_f@045(z@DbEU zAveuqS&Nj3S_~NSH2zfmYMQ!~r=?G*K2{3p==IptF>e_^QPnaQayP5YG?ToWC~&?Md(lcnIzWohA5vxEgehpw=6l z4ktn%EP{ogvjjf~Q$S}5z5_M_ohSH|d=Q}Z2sglW@O8Kl&V|pwr{EZn-(n@KfLSmT zwt&q+`xib1Pr}WhH4K-5&LPmbg4zo~XAfM7FX96DGRRMH9%$XdJlGTV0PT;UGX{0O z;IH6^a4CEg7QhGKE%17H0e^(f7740`!XtIyp^ zWM4>wswaB5Nax-Ymdh*y-xa;n4alg*o?_A#V$zn>5gyP=~^G zDykd^?z~<)RYR=zAv%^&1rMKZJ=_pFwJbOa+{r6B%uvtZGQU$_(9+f3h`xT7$sWT- z1DxvV7P-~5V%DF|+BS8%J62a|&8K)(t!}J-2b&5{C8hohKK46E%YW5HORf*M*}nbk z&~D?N(bu}&8`GwX_6wc*F}f*-POqfLy|{OYHWI4HJ`J~56h-xS)!a&xwxNN6wiN^Y z%TmTQ?rSxbTPG?I239^3}*KDHL~VP!hR47)H?8FE$i1tW}P~#JBYM4p!cF3>x@!pq|8+g zV>Zn=VJH?}{9-HqYHRg*F?}w0UE;fHWlt*2`N^ExnWS{29_glF>W%+2DN0XC1#9KoVOOBruQX)4A;VzrOqv=tyvZ==>zr80LMiN& zT^l~KHqn>n9$>vY>MXk#F~F)fKzGQ&Y&R4xDd(5-h%iv3gE za)0nx-doEoR5zPk6;4PnLHI->A;0yGIBAV|z20`U%e}&Hp=OFv&-~M1-;mb++A3<| zrjJy2rXYvH4f$;$X+>K(;vj03mTKlUUESM|bT9f{-BlHCo36PgSp8(RRF>OJ-zNua zm_TEKy*-+P z?O=j63@qhf^A_ZA4Zf%xjFFQZu5lP82V?*s2W%V-$N{J2V2uvv9Bh&a=DdjInKIP` zYcSGtY?Do}CNo;C*2@p`Z0gV35Oh%7Y}nA-QC*8Z$tKNMinq|DxSr{e?2jEcL^l1D zswZ~ZX(w76`;a;r#l4eEMNch#+e!Y=V7)5oGPi?EseW?GC$wNq6_m}Jn5rpllYH_k z@^DtNS_-y@Q)wpcrM&`~II{nh+2@A!|K0qpf4|0-e*m-(faU;b?!V6c+YEk>js87& z3j6w(a0i?X2g3hiBX0-q2A#dv0TW?6cnn+i$8bLMg6!E-U=Z-ouuE^O3mLF4K*m;tuZA;W8SD?*pMNjVT>J~MQFX5Uhv8vtRgI(H3^&3Jum%o?!=N1=CO>Zl%|QXSFZI{x!?{WFYgc$m{Lp)g6gn6^9!7mMtF&Pq_|e%!)W~E-ga}8))wl&+Ouujv>)(ZF1-Vtsgn|8(ZCs!yH`heK^b%1^;_ z<8(Y<VR%CKjlwo1c=R9E~yAN0c1EVwSNdC=vB`JDo~@AaAJ!uX{xrRS^Z zH6*C`sL6%6`Es~aDt(254aO;Lxju#_u`W87z13=QRp{<(U*$ga`wJehW~QrmE^RZV(MjSwC2?=G zay^A}t2#|J^)!Z%tJ)|NBfS+}gax~LLpf)H&acNW@m8 z3&-`c-oelnunu=C8b)LJXw$}2Cdwv`cN>=%6Ukzf@$B_8ZfYO#eEB;|wBhK)wBGaQ z^=VTrE!FpuOSMjouM@ zJx%pYT>;Yj%5s-FclwUdhB~p4(B|Y8gZb+*SfLA-AF-M?um9KDaE7 zmq6V6??V38-hVS-8fY!R2Ji;BAAi8jpmhKPpz-|8VI2G&zraiIH~1@P9RE_73lHNb zxD{@O8{r061KJbdXgB~K!gugfxCu1gz6P!b?E$z9y5JG~3Ae$Oum@}lZSaqO56{7cZ~?4@jo^>?9DWB+!&9K~^M8deLLX>PfCu4z zxDRxuz`daHa``3x8P0~oVL#XbwgUMjp2Yv~Fx&`V1^FjF3EDs4V9>q+?}4|$i})gL zhc)m$(0PIjU?%Je6X0=t6u*XFzzy&dxCXujSHo2>6FT5!%KZ_LFXJ*e3kF~TNG9F~ zb^peXKWUrUbLQayMcuk4)BSQA>Yq&Km)o6(&YY9(>W95Kt8-?$$KUqW%mZ?y{B3Wc zPJ0K3(t`}sbT05`284HZbmwRJyYTFc?)>14?sQ9z`o6^)guzCq85>?a)OJ$%>4$Fm z>A~*h91?yX(7oDDZu5WD4*wXH@1$|b&tdGP`FS9Hesm*rbT70gddnt}Yo+c$?_?m! z2U6a=+Q+!;*?-HG-TQ)nR zwIMPIM|~tC9$Xt^aVgQv#QGR?t?Y=`l!=8H!X&)%dXjG}*%!svl9cWmJ9`MIl5M6*t)E2gxNzC@i|<>Xn!G*sHri zuCwX((MEWbv^Et=%SLx_6Uv{$*tPc$SqEzD8-@i4K4bJ5?e4{X-{z!I3O*Ih<#R2& zQrCheaS?_oPXo1AkR_C}`qJwl50W-;#n)OkglArroT#BU8P9iO(Wrlok@yxEJSAQU1-g+%UDMf@}Rtv^I+zWwziMj!`Cc% z-Xtm53^{G(b^4ItVH|ZqjYT0L!89yd!Z?OiyQ{%rJ#rqb818*lGGGX4_s88eo(nR9 z1EWTFvWb!}T8=&k+$f4y_|7QIL&Y(N(xjfeN4=Bla@kQ`U5DA`Tw2xb{?o{$$Z`Wx5OJ`yF9$KHe!#4^*ry;a9A5Jws4k4ATh9izgM$OwK1Cs%o!k aTa_?hon2n(iciNYXtK!}rdG5xuKRzE*{X~H diff --git a/src/Oberon.y b/src/Oberon.y index a8290f4..76f82a6 100644 --- a/src/Oberon.y +++ b/src/Oberon.y @@ -3598,8 +3598,8 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"FLT", TREES_FLT_PROC}, {"INC", TREES_INC_PROC}, {"INCL", TREES_INCL_PROC}, - {"LEN", TREES_LEN_PROC}, {"LSL", TREES_LSL_PROC}, + {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, {"PACK", TREES_PACK_PROC}, diff --git a/src/Table.c b/src/Table.c index f375689..24145ec 100644 --- a/src/Table.c +++ b/src/Table.c @@ -93,8 +93,8 @@ void Table_Init(void) {"INC", TREES_PROCEDURE_KIND, TREES_INC_PROC}, {"INCL", TREES_PROCEDURE_KIND, TREES_INCL_PROC}, {"Int", TREES_TYPE_KIND, TREES_INTEGER_TYPE}, - {"LEN", TREES_PROCEDURE_KIND, TREES_LEN_PROC}, {"LSL", TREES_PROCEDURE_KIND, TREES_LSL_PROC}, + {"Length", TREES_PROCEDURE_KIND, TREES_LEN_PROC}, {"New", TREES_PROCEDURE_KIND, TREES_NEW_PROC}, {"ORD", TREES_PROCEDURE_KIND, TREES_ORD_PROC}, {"PACK", TREES_PROCEDURE_KIND, TREES_PACK_PROC}, diff --git a/src/y.tab.c b/src/y.tab.c index aaab518..f641eff 100644 --- a/src/y.tab.c +++ b/src/y.tab.c @@ -5576,8 +5576,8 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"FLT", TREES_FLT_PROC}, {"INC", TREES_INC_PROC}, {"INCL", TREES_INCL_PROC}, - {"LEN", TREES_LEN_PROC}, {"LSL", TREES_LSL_PROC}, + {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, {"PACK", TREES_PACK_PROC}, diff --git a/tests/obnc/passing/T4Expressions.obn b/tests/obnc/passing/T4Expressions.obn index 35b9162..74ff492 100644 --- a/tests/obnc/passing/T4Expressions.obn +++ b/tests/obnc/passing/T4Expressions.obn @@ -407,7 +407,7 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; Assert(i = 1); a := ""; - Assert(LEN(a) = 10); + Assert(Length(a) = 10); Assert(LSL(0, 0) = 0); Assert(LSL(0, 1) = 0); diff --git a/tests/obnc/passing/T6ProcedureDeclarations.obn b/tests/obnc/passing/T6ProcedureDeclarations.obn index 268d0fd..28d3ae4 100644 --- a/tests/obnc/passing/T6ProcedureDeclarations.obn +++ b/tests/obnc/passing/T6ProcedureDeclarations.obn @@ -51,8 +51,8 @@ module T6ProcedureDeclarations; procedure P3(A: Matrix); begin - Assert(LEN(A) = 10); - Assert(LEN(A[0]) = 20) + Assert(Length(A) = 10); + Assert(Length(A[0]) = 20) end P3; procedure P4(A: array of Row); @@ -81,8 +81,8 @@ module T6ProcedureDeclarations; procedure P(var A: Matrix); begin - Assert(LEN(A) = 10); - Assert(LEN(A[0]) = 20) + Assert(Length(A) = 10); + Assert(Length(A[0]) = 20) end P; procedure Q(var x: T0); @@ -113,7 +113,7 @@ module T6ProcedureDeclarations; procedure P(a: array of Int); var i: Int; begin - for i := 0 to LEN(a) - 1 do + for i := 0 to Length(a) - 1 do Assert(a[i] = i + 1) end end P; @@ -125,8 +125,8 @@ module T6ProcedureDeclarations; var c, i, j: Int; begin c := 0; - for i := 0 to LEN(M) - 1 do - for j := 0 to LEN(M[0]) - 1 do + for i := 0 to Length(M) - 1 do + for j := 0 to Length(M[0]) - 1 do Assert(M[i, j] = c); INC(c) end @@ -136,8 +136,8 @@ module T6ProcedureDeclarations; procedure Inner1(row: array of Int); var c, j: Int; begin - c := LEN(row); - for j := 0 to LEN(row) - 1 do + c := Length(row); + for j := 0 to Length(row) - 1 do Assert(row[j] = c); INC(c) end @@ -153,9 +153,9 @@ module T6ProcedureDeclarations; var c, i, j, k: Int; begin c := 0; - for i := 0 to LEN(T) - 1 do - for j := 0 to LEN(T[0]) - 1 do - for k := 0 to LEN(T[0, 0]) - 1 do + for i := 0 to Length(T) - 1 do + for j := 0 to Length(T[0]) - 1 do + for k := 0 to Length(T[0, 0]) - 1 do Assert(T[i, j, k] = c); INC(c) end @@ -165,14 +165,14 @@ module T6ProcedureDeclarations; end R; begin - for i := 0 to LEN(a) - 1 do + for i := 0 to Length(a) - 1 do a[i] := i + 1 end; P(a); c := 0; - for i := 0 to LEN(M) - 1 do - for j := 0 to LEN(M[0]) - 1 do + for i := 0 to Length(M) - 1 do + for j := 0 to Length(M[0]) - 1 do M[i, j] := c; INC(c) end @@ -180,9 +180,9 @@ module T6ProcedureDeclarations; Q(M); c := 0; - for i := 0 to LEN(T) - 1 do - for j := 0 to LEN(T[0]) - 1 do - for k := 0 to LEN(T[0, 0]) - 1 do + for i := 0 to Length(T) - 1 do + for j := 0 to Length(T[0]) - 1 do + for k := 0 to Length(T[0, 0]) - 1 do T[i, j, k] := c; INC(c) end -- 2.49.0