JFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((" ,.Fh Ch@ 10D``DBB h4 @dX bD iD ІI$TBB'$"`I)Eb`(m9@0hb&!1114  b` Dh "lTH)TAiN  A" hf%n£!aY4hcC"5J2#Tզ@ #(a`QI+JHB8h@!!!hSMNhC4$11SB!`&2Dc(p*`"XE b!IJ&0C41 b `hL0JHLi1L -XX`ݚb% )*Cp& ! $40)!b䜢hC@D 6JJቨ4B!`b `0@ b`&ё^IÆ LO7dX h@)A "I`6H !L'@ DQ B!Bj4  L@ @hb&%$ D LQ~7ҜtZ&pӘ b `&)F؆` 7DBB&qI:LVF2B1 5iL4$ mj4 @ @ b`0b iS` 14V1l˦I7 @` L&ȒB[lC!FlIY +@!"!%$  HX J00CبDE18! L r2ϳ>Tس:=8Ӓb  & !`) "0$EMSIAL6D$B`&BBX&1C CT4h! @@4 0Yf |,tCE\T}nn` b$1AN&$ &IS`0118` 4  9_^8B14yꞿ3wlK 7 &@ 0@ @ `Ȓ b( +$2DR:]Z3cqcAȴNb11@#@18b`!upyt|z8lZ+]}3:zKcwA9SUU5AJ   2LUp*HR+EUEvF2qIW8)-JYDUQ  b `16!B& n$I9y~yntpX"QE,m[&C44 b ``@  BQ0&:Qud J7*"S-5(J7U@`  b1n.2/| ZrJY]3~ڕyצ1Ͳʬ3}[9NΨWVun}Tc~g6g=Mq6}GKsx b``L!nu"6ڬQ}_4 4IMtSҫ(610 b`],k4r:\_GOn骻q[,C*ͳԖzhUݐ9w L01 L& hQm(4d]nNiF wfG&ܱx*uθIbBʤSnܢaFj(@`8箄Ꝿ&IltgxgɻM%Mږ{z)]vSqUټ& b`0CT 8&`% '** -L/(4$cךRjp.h @1b!  0n7ʮB Kt}UF˞tr\7Jϖ~%Ҹ[!hUqp!&7Č1] *O4צN.Ǽt0!J%S101CC&1 Lh b bey ?fW7Ƨ,ʒ2t}֚m[PzvvF@ʀ  hb @%(#!!bBâM4BF=x Pցdd'YS̷ͬ 118h`bSv\>}Ux/ޝ7UI5h,pܞ^[U9=&v8@I!(XjaS,S3]av(KWP4j` -#ݒ7Jն&W"1t!^0 ! &X2y=yomNz.zVwfKݚж26ϗMa5L0C]q$8EQTl;yj]\U:znT62U f%uLb!  o7Q/{jyϣCJgS[oޮOO>_W6O~oC,2T`44\3zc(B A\cuݛU4컗AK2B6vǷ\n9WXQ,y:Bz` `4 @C&r_'RdxyNu <SQUM+#S⎬7v㦩K]Jy:KX5b`!!)*d 1RYn+έӚKUJX7U3˟EA}lŪe6@@  b b4x2\>|z^WvB{3^S׺Np^kέ㜅VզhW6rw{xz=)@h+ !daYZC.~mQniڲ7|0Qgj_J}l;8Po)Ά>4 @dtsNqОgͷ>ǻ \T`ыfNf7(pu9|]͙c{#(h1 @ @}6yn;*SHI*Bj"9̻&{y]4գ7>Wf~םZ0niMRsTH/NL` @ `/9ywVY-tkZJ~sGCz|z[cV-KX+csSTWu6kK2"2QiM b6y֝^]k׍ʻK=U**MVK2R.ZE9}v6{i1m]jZҌRUJ)De%dR*K~eS>-у$eͮsuκh%lGNl8#~:n5Yߎqf?L'@ @ojȲ*d.ܴn3q$ngլNKbS%{ߓ\qM(zOk=R͕zX_~=hE'J]\YA&]ƣLk4>5tdUFm8ʋ+7T+K-%3oU]kRKV=cNjkCiGY)s󝧂뫟CX=na\^ RgOA5F|-P_ew9jWM;暜Q}rUh;p_>|+ng<%̙uӧ>phss.SE67FH[W+8sc<=3Z_FJ^Mz('.Rǖ=<}<=hr7Z6v"pV-:jS٩}vf2UeYN\K JN*|y.!~O{ k#;1rt݃:>8sVL]*gs*-dY*Wdnb b&@?=1Ms*|ZW3VY.+ӋcSZg EWfgvZNDeSBWʋ$ӟLu?CԎvܚ/\hُR]zu3&UWZRvj^l[֢3u[ةZ2=Ox]wԥΛbyu͝p뚫3UsaVX;I>7~xgpa;_կM5yĔ1dD׳<K}*D&P&@18{N]n)E=Mg_811YGE) "J cMQ]e3>_Q=:f]IzTQS US-izΛ$Iv3Q]]JM$[VT *N5-eBHJO<侴euRVzseOv--m(JƬi`jKڹW+n}1Z^.sLyq9}4/sw@ZH!]M&y،l-nq沯Ets'mi9E: Q"Z 5ֽC^mkV[ʝ>]3n2,#\B `T(U6-N,gF~&[bB^w*<=UÎ+mBePW:IPڪ7䫲anm J0 Pg=iQpڎz\~-kRqXl9]O.w}Ku&kSuHS $BRee:̢r fnYmSE9Hr3PQuVE 6AM "vty|yU.Y!nm4kqB.N4UdF鶫,qLں[e ⒅kYknpwBϓU>^Ѳ+214E8,:"=YվٛG\N{UǭJ1؆( -Rd [ۏͣ1f^6%fF$sB̠YUӲs]0 &\Z\_dL)f{!f7}6_w5SYŵUUYe]=73uԌybv#3]ё+fXx?ί'jĪZ'KZCOmVg ٚ5![omjbїxue ؒuU̔g5ziW:7':]Uˎ:ur;ês솅Dq#$BGVQ}cWQd.ŋZ5yrhgg^1ʎxGo|u?=%[V63fH41ӿFBwwnlӯǵ*vp$FJdi::qӏ^|{sF5skb+b;+ɳǽy9mIAJ1ɚz9j]<+htU!lNZ`tafcʍ4⁳G/LJ|TZ5%TͲBLSd-.ط%ؓ5ˡæRdĉV bc@$::v֋oV\fwtr~.V:2.8n.YX͎hk1.Jvտ}ڸm볧-%\s^Lݾ}fƥ<;9 o-^,/B9T,ųXҬ o,4 hxiӛfR-zlFfR&oSG/G=fl"#o %$4W٫#1e;Y(62+W4:lt#:;1[G3YfzseN8dًI8Oy@ԉ``&!#8Hs3_OFRثRulvth;Ì:dl @TqVR* ˣnsuX4%y:f2h]KƣVi%:f'w?LkU?,iÑIg]B%6aUiUg&>zuƧM_5^^Z役:stNg\Y+6ٞEֹgZγV5vkD-d=y55(&: F%`Ȏ-@ 9}l|dNPGDWmp%܍=mbZFlӺ23jqъuپY|| FxiP+$'*싶M+oEșPBf x8O;)3:!319t5!K kϥ:o 鞖3;=QY٣ܘ0JCM`I5f|֭sb)[b6xe8Ne!Bq2c8&(Nv񺭁TmdB6AI"^OOA(D#4o,i󶞼 ^ϯɽEz{κչ  J2# J0lewn~̚!)N(џLbU9:x}qҲ6m~/LmҘ>F蛖޿q]V FbRF|qV]ب5ltO՜&e\u5N\&\تP ʕ^dKN}!F'3ԌIT-!Ќ\%||&zcy].:yٿ,n㨍vL1I"5I4ЇJ+y_4t[Aݦ>f:i2\2eP۱kqED1g۟NxǫOMJ4uH\EūB ]I!["IHl>GW t0peEN]2_g:nm#7S{qR7.ŲAVL,qhJ A$n,iօ7>]0g3MiKkK^#PJ8@LjVD,kU yz̪|NKυI@.v}5wy}~cLIWw!o )E(JT1RjґW{!#4}g(CD%bJ+WKO+ &3doFtr걤Zabb!ͫ7%ѯךU-Ăj*ÿУTҷ=|<=X[q6*iC"(d'"$- yyTnh-|z]fSn'dZ1Ky} />u_3\8 Nz8~GLP;iHvL@`SM"1`8x`q/mAI}E9qOןơ^r2U`JP,cBkW!$I)d+bܩir+уXJ-)~tc>&ĂVB-K_?z$. h0R)F@9"ʑe>\z\;5P:M9u9ɮsaOz{qҬsq6ȦN@gm ;\$8' #R#%M_28ІU[j,#"˟P=++| g!4n^䪶 i5P$ϮYCc`Wr^010#Њr3$H ۀ29# ?ӯ ,q=ی;G0O,, 4A@83s3o !<5-׼ 1?430D$a ;8cO4 ̲9G&o4 1ͫ?8<3w>9? 6 8E Ǡ~ߙs,< ,/1\O8<:Հn:,ӽDb.4'8+Jr<<9]+rˑ0 <8"CP/ < s c?2<O;x7}000 Á(N5M0ϯFo<Q!w0 # L4Ҏ +1`=LѨAuM 8 @h  Ϊg0[8d_o|n00 8 whhtS/-ŸsC8 0 07o8$ڍ"ʘq{ T2ѱa0sFsrљu[ ?Nz2"8fɒ{Oc1+3vzM|"D:I}KYaLω` 0 G+(+f?)ŖR+}0q@{1'7#:w4VO0 $βէFS4LBer JeN*/ =A1=$l\Ӯ@j.檄kz%eqe^PU콹4x=3` X?Rʺn.Z׍x)y"ř?21l6oW5O䐘eނ͠@{B2y^%kZ*ogxBVW`h9mh]zXX,нP,ۍ44&}=fJ4E6~JC 06}+n'Ui1᠗$ClLE՝)[T@Ub̶&R3[gXPB =J(B41|xs}Px蒲@[5"J۲syo#$;X#L z\,;tEfwҸ,=ěeӽ'O (7=u~*"x(Q$I0Nm5ͬz hEb0?%0+l2ͻXl RH#rA/TmXb̪?>޻|P:}f}Sb*QnW4{5\@9I{;MWjMxs1;1dY~>r[WRlW2 UսKzrIv6G'1gglOrm"(zLfo`Tx0fbhmNW= [c3 $'4jy32`$^vԩWW|[|{TFg4CPaڝ {X6]0[Ö4W`'LqϊJ.,3U[1[v Q!!FuZe$ eQw?ieg]TL-N @X-nqBٸGV'd H- 47O3y=Q ,swwF%"wXMhO{5! p:;K(o;1O6`.9I~hŶͱ]Yqưpmaƾk^'y; S!",`8t侑5qGZw)Ayw/<^?Oz1tӪ($S]n91#T2yJφ |R|3sJ(]U+G{a&Pd>i6ClR|2Ռ7Cgخurڛgs.3uo=p,!5bh-?KM)UzUk81ְ` ZIy6 qJN-ե5ymχ7cl,iX .CR oz⯫y/R褻kPp20%˄c`6HapC[q7C(Dz0DG ϴu{m[˯Ac" i;?vGms$יg,h?(sc}^?Z׼s8&IGhDm?Kosy[r)| Cq{د}4} /{ePE4]s։* -?ۉ붻]:+m'Wum}njj(l*J }mKVT~ 5o|YYLPK,"jC*6i<}}mg*ޏ<2cs|㐓bI/v}Hvw gM$YQm<}}}}ڡ, 5`na%mv}]}UhQۼu,0<2}5uSU[-3lMUQ }d[a-9qLԻƥŻIu<<}g}mD#͓[}3qԗq[\^|+ (ŵP }qqe5=߷ (Bt597=#a*8^ȁ 2y`Åqi}<887w]Գ=xQD\}Dr)XI 1ϻ( cK<u6YqJ|4tu<o0[$-| 4&'=M}R&ʨLs.Uij M\_҂B!wh,o3g]o4Q7u ?o.\o(iˣ&CpLTz7ʙqoyv1 ԄajAĕ]ȘYB1/&aжiv1$J]I1ڂ#y ہ+-AiVmmRYY̺}S*_އ #׭qrBv YR̿XB=kqYH8Dvq%=j1 PUjץ0,#>!Tף,8Ns|i,:$BWpہ0NNʼTrJkY?4@K_oYa @1沩(SgaA4Q6HwF!J`7pVhָe"֬jO>$,JdLTf9BV;(L\ h7 6: /[)+R1.?`2UM|r*Mѫ/-?H@l!M*"% d͖<HbģHo몯H^nTG[-9#%9I"9MԾtd%yhGN Z`˿LJܘ1 3Zޥ0ږ[z hfɎ$X览N7a./m ՖG]8_:)]`9xw(F.&n$6NJ?[^F GYdn΄΋9>z nf`~@lֽL&".qj'1q8hWݎ's@;B ;fdBy|q=S$`RD>]F ig ^%"MHt4SIK+fe Tnf/޳tdy%[1!Jdx'@^PMoxMS{TPfB|^*}'sUC-JA!AFx(i؟.C` \nx<졆|nxYPd(n`/fL#2t>#DũE^?кq OmNkoȚ6Y?7*&-BA0QRj`鋘LϡL61O{˗&T܊TΛ7 q5tfԯ09mKxt\6j0"4x/\ҙ UL}%jXƄ QYgк87d]G#aPJHrCN\xKg 3]Jy1`\` Ә![MͅX\ΖABn %̃rd@fL*tf]>]x*G~|ˀ`1|>;;_`GEqIؔ嚜 o3TrUsqǣĭ`FC1No}~`?52%f o5P  B楩I<$̙G.4v|ͬa,U+)7v1yP&_6WcBa1g$љWx5G!TxHRbL>}UȈ26KNV_OAk-eT~0 ""3›O1Pg(>L<^F,hF㘘ټËlauVGW5$Švչ6b.3N?/4Ow!~& <~0"1rvb Qf0U5Ax=Fo3S1z9f|1/&E(q3dq1&F #(Ua<DM@Af.gI똏fnD$;2?05(B A) >0Kp|~ED6EFZFv癩>Pڥ0 ӛf. Tk3mGVc0Qf;,ƥT`B"ߖ7*s iN*3("U FbqBbZ - ma_\X5 3.(drb;R`@58q@T&bfj\|{Tӹ$4AهB9itbĪہ̮D{ud\%jc5Ɍw,Le"m̠\xꙮkC ʔLD鷕x*D1(~?P& f&3Y1[c`J LzARspa\|t(TWJlKT"z 3 +ɨ80&]>Mg;0Ll&Ll61Z { MRSn(-=:fP& 8]!ryI'U,ynX\ n?sB9$̈́ u6`6/Y3Sd%1)w< 54QO8nYSMd&@k&<[DkcQ>&\ [%N:VA g08AyG淟R4qډswD:AOyDm<*\Mg3zA0c"țDɄf. ,jH#U6;U}1M 83y|kcBk889?Lچpd4L\W 2g&SLue~2-2!¦"Ӗ]:)&m;4bA?0k8d?)}AkV,&E(hڅ۸2S5Aq0F"UbYө䉗JF:6ry.6CMw> b&'5M{P|]T}8_3P,X Bc{A(7g9кӅr(55HDRiS~I:M_Ǐ  ZÕZ-k54ZV3Mg2/̹ڢiYԊD͐c]#6чu>Lv"pAFaJh]Q,MFfܢ&)>@CG(X%ߒhF(m.U?i.q.مw2c('kXIcbZkXD&#lGu g\)KlP#B`P[y}sR(UpAn%MW>fqԳM/|5FOm?ٷbx*ٚ-X9BP16ճ0ԲPP^cuyLF*e Ù­ -Ar8ybf&l$>!WQHQ.TIL ,?y"zmճ65Vq|L_"Sgϸ 72Ϸ#5Rܾb{["R>#9&e0Nf|6s5 ]?3:`"Γm@'gfLyybXq #=7VsE2%ĠG,y,n~"T~ _eXt^Q70ٝA7%ÑAf%3Vr(ij7@{_a_}od橶bdgGGɈlw˜' u.fYRh96i[9!>2p@*1&ELf`B~TM3F᱂\N`J AAH |e0sPJ|1>'L1L t nLQ cqsLUIQu4^a )u; о`vNbJP!1&Œ,.Rݳe(Gb}ޠ06mŒ`Q5ܙ#[`hP 6 cu 36`־& :3>SmxuxNMFdԐ9$G 4;++!>L(bdGRG pgʟ)3cܻ ~e3Hdiѷ)"T??ŋU"aENbw .SP@@_&l*1<8arcj/POܰ!48v ˊ|w3PrՄmCju594"~Q:LA[&-ϊc:f#YQ)="T{ajW><>D8[ǃz ExF6IOb"/"e֜965 &x&c̍h ~X9|K`01gm; 0md<Ӏ*3 >%]%Ӷ>4\AC85LY|@(vu{]:d5c::VzjzF]g.1dM3]bQn* "'6Vӯ28 e? Lu3IcaZ|T؉fm5:gyd9Rq:nǗ0:6ZvsB`G˘Lh8Oèf^Jk깠kMԸ~"nCop&. mS̹p{3b\ML;1|op܍l~_~&7<+\4g a+2 k_ߙ[ S7"ĚU@ѬGP&=7]=(!>cdːa,:~\r?i>ij28̵=<vm<)pc `1CهX õ{0t91 _`'cQf(\ehP" #YA>Q>yzS7Jy 1X Bp8s,v|G";_1+ks7#LZpڐ ?81|+fB\OB8<aMf*ȃϻo~5yֻ$ïb91LA1{xU5") E`+byg<\_lZ3aE c`;O0f,KNDd0XHN3tW3 OlHCaoUܒ&"Pه[2 FZW0'KWOt/ A δ 㹇E5L,JJ6DmZcdtRf w'1h_bc|ith\h/{XWfg`r#v=s<\ĻlkRkaٚţO:[鿿ogʡ<|h1TqNau3.,Y`c! Di3qۙaVh~ˆE<4бWf A{g2rL>8ljocMCAMO ';Q|Tv8&h5nqW IUdO\9P6y<fG&OT|8А&-22fp\tl~4zllCq] L9wB tiX\Fܠo~h?y/~AP*~ OãR(q` SfKN gfE]4hɈ6c Bkܮ3p=; DBAg0? =ˁS|Kt2ci4F3gJpee˪*~qwՐۏa4b1}S55 Cs EbE˸Q#4yCv{L^%XЈN6 ǭª&H*qsWv+gFuAƢy)MfhB2@PC '%}k"Lϑ9"z]BUΝ5@9&5';\>%H;u tۄ8V`zo3{@>'_l6dG+f:;A]BM;@D87"u@r2}t[ ¥4ll&>r!\O6&}n0!=`8'pftؾ=k1Yf(|uOrZn4(cuQɞ /L - T؊ۅ<ZEb*~&vߐ%+Fa*YSFM7/n&d5&i\>0@c"h#h n` `8 >=Ȍ(u`RǑ46`4{&R(H``7 abo"`ݻ5,('7j =5f\ '``g1|L˜"Vi[3HbT1g>`|č米?5_r~IjY 2p=kX0L4jLP-!Pr/gQm37}魻N}Ri`C4ŋ6,]R=ӷL#)(eF'%i&0L| 2UOULjliIP|b:}Bd_]vjvSCWe5$Q0>6!1A "0Q2@a#PqBR$%3?l/;?(g=T3iMm#D =>J~¿h,%_\rB>Q_qSMi3*:t(h{TR|aYR[oϧESFZ5`ܿ07a_8")&])5cbzԯF7KGz(JHP(F3X>?T6ʄJJޞJ dͰp&a)x]R~7NɘY18hHRĝL|2~#갢Sn<ً1ѓr]ٴq'>[\LoQ`צeBTf[ٌxmcgr`_ؾ!ݐ660-EQ  Ɂg@SC^&\z'Q8B= a?)?P:U?N@*>4}BrgX:;\N7jМ QK&ZNܯT6a6oa㸍練0d8E+`rVuhhhD3q=x멯oݙQfg<x?ӦÉV2?=`͟H$DXt`?TEeS'5g !{Aw~O2k'%8?6 1bmxls48>Hx55T[|G"0~{L`KPT4oU1c6|OF. >"De? FasQ^ʬrMne@3`d4tDDn8?2VC+VxHLeV748M* qU?M7& r g.Ѵ'o&\̀]` MqF*D,hA14l"\"@&T.f<r.2)&}0i#Qdƃ&nD3L@|@r"&#ɍs Eړ:cHfvd"G*fA\YB@S\X Fngt&,Yr*E!CDf mbiwd49Аc2uPr%&PCLlw\EP?1BSO(7#(☎B V0h@0SQrfn!kv?uw5LT!E "+2%}eAv`@Wc͒30+26Tc>fn<RT(9ֱO+n&W˦?UDZJAdQ`ZBAq0e*`"㈊Ld0X36fR@, #aJ?a 00GQ B% jfe WώE7iF ӏ(2}1:&e3A:%E]DPT A(DF=YTUm%d EPy<@ k mF^ft *Gs\DmšmAK列N2?gI8.0#%0 Fb. .f(FqV&P:vhtCwb-& ˇ#Lώ&#E!Rp'Og( xXX%,[V`Y LX!65mG],|Y*> i )4wdDs\f44M5Al|J8 f 3ןfyeSl"3]1X̸O+s"saWqR)yTccLCP, ;qh 4}y!IɴEv{9T2EXٚlG&@&W,j 3ǽ@j&zG&bLTno'cƘ<OLx=?(ؙȵʴRZ/R<֝Mq, nTյ$Yk] e`.u'V-w!h cOc4Y61&Rǁ1)4bG ,Cs 3'B@+1bg[Q4‰'˽&, o'"T5=`UvOj?BrC 8C XP ɤ:kȌMԻ1&ogG[@@aQp34_B QP_ hVbb C:c-h.!A ω 81J[ل'&)(ۣ,'X)\A 8D=Bo]7[{1QCP3&#Ez/gܻc~]q`QRf,eT ͤL=5#MC:.1\PT-8w Gan|c"%Y0LMٛ&L rsSd8u+W/Rè@E\\٦զ}1zQ,b~;"k6)F:YWc2TLnjb6ۓ9.><~1,NEn '74o_(*lD+u wӜٕDƼ@G3(e&lQзd@l. ȪjÓlUٔHn!:l"fL9v5hIu ǍL-o7:7EK.crmը௙ u3c]XGȘS2}#XZ?dO)f!ɐAbfG8T3OfpiNrfX)4cN2"F4!ʕL֠]ZŇLɷ%~e3܄E؈a/D>zzc=5V>L[i'b 'C>R#I( eR@9修euaFt`ŊSN]#bqk 3 j75lU*n}jOMWfUT0nf"!%zːc&gڥJ*i؜BV n|@7:0}bf\7M@9@gPМ`i 4j&p1m5?Qfk!ְcd luR>L'м̄&*}?툊怇J 0MfM) NՎs;)rlT=" (?9ɅZul@;%R&}: ^yVԛ# g-@@PRLg94^C>`&\.G7gйUL1 *: QDsAjqDl2-4u7Eox`܌c˼/*'fd*9㱆 D ;da:K2gbeh4{FҡgL |v3 }P ?tz`Ț&&o"{preLB$5fl L6وAn &3za)ϑŴ(ϩɄMQ\ޣ 3>=v~n ԐVPTWLĹnt̛3W=ØuqyYؿp}:O?g'ŷY(vf ,gQ9AL^?1!+n$֢&*`հ3$Ծ &5)\\@:&0E!iS3y7/URA<~"1e0YFNioIB;?Lpl=1V1w0`Nd`$C#O-ϙp!vkZ˹.fn|NɁOBdԽ(݇_-l3i0FԢ7+fLe9*D h;Ob`F1<"ڑح(E`Owֻc(VUlY{slc5UGESowѹ oy0Q{v剷 lsI6 FƖ8cimJIΓ 7TQsQ9F $h1"U/]Ps2+7s73YO|U|ΠS vcB=Tǘ>aۧjN3(côRƣ){Z;_@\P#؜gK=2͸1-qs:"1+*~`Ρ r"6b&mη$j 6>aTPŚ#1`R FD֔My$fI`ʻC3. >aӱ*1%g'i1lJfxjPðvېnk_%8 Q)RY4SLoɧ>lhđ&*&"ϑWj 8f_Xv3#B:;116&@caS0?`1sR37-b!q7Fa+4cE;S&Z3t;rq34)jQAJ!}c]@>`E3w]ҳ/8pÌe\I›, "1!cjTfb[if_i~ߨ4=ndY(L5cGQ ̣!5l=S2w,π-Fk6&wľ͆,UCJgP9cswbPݍ&ǰq0o*`C ȕ cF+/@B˩5fU #62‰(h۩2b`m4xm1V/lZo}VjiT/n 05w2Ʃ7b`<> 5٠%z"wv.n,LYWjfJ3wBm(w@\D|)d=Yqs?=f} s}&W4&Ĵ Cj}34s\m 0 &, &Lm3 % LTʶ.<x>FTLP"u-8 x (@QJy̨ʂT7?1}?n (6u^#>eh@Nnf*I<)aaԛ{}֊c]f{ UGT;,ͦʠyӌr1#nZE标80a+`DT\˘O(ٔa7`N[#6H#[YIU>'͙(M:.e/ONfRk޿> aٿ`G?~!^a£SP)cPD"l& 6ȇ)1t&zn|0dAc#'Calumb 4 ֩L=fݸ2oy.2I$\@=%?.$γc.U' &6yhc4~DžYz<fc@X~è81]K n DRk Ž &QbƣP pэZ:ljX3ʕ?ݎѲ(G` (z(PԅB~`kS6xM,bmwQ_ 6rMp{CdСG՝K cmؓG'ӲTnTM4k#Q{1O\GeN(QbsDO{h:Kihc'\?3(PBgmA)g 9aTq%#8N0m^T\cXQ%…^(/au9羳:o=3 =n-~Q~މs>0f' dΟ?n:cW=vKCiREd]|E9=(faݹ[9d* 8۳ݣeJ0}BKtLdIPGcGTıa+6M/" e'af[:^ 03~z?7*TqG Px{e`Q+yh'*94omJ(1W/Ɠ^+LJӓNJy-_$^kS h&fn!fusB'j9pV!8 0(蹦*9U4Xgc{ZUVӧw=Wf8TXңe\we7D ;>@SZ;VjgqHjP9 z#"bȯpcv)(et+w4gQ ,{ Ži$5EX:m/\ntXG\Frv~,Ԩp5! cL%O*Lx yŦqdGh 7cnSz L mgZl0G\dSݼ.UiVm FVcNH9dעlUe^,.I&Q&] mѝL/賀A5aS4s|CQqpoIH;|e_ -!Rb}/2tu #r@Uy6Tܻ0Phu]Ļٹ_@lrLдt#T1OS76~uwliΧ[L}LLiM9!7_O? IuZuNv,/!P25䷴CrwhcVI *U5ϢDiYLtaUvp}:'{?]fmst' LzMVrMMʮ0uFS naW7Ԃe Fk;B>Ƕ5D7w2&dK~ُƂڴ,;2Z{CX S5Mh?-$JfID£&x,-q#DQO2tj@GI @!Sv.2JvY*d &V`~#=27Z,TrdBCdFW K Tz;x5qTæʙ`;*kHQ&\JyݳKBt fL :|zt^c;`3 +ɀ-V;t)>au?7Xw`GRwAWHSnNeII*pU)ai0i8i9ͧPѥfcXUV6zy4Hg]NJ<-=֪xbS3fYOC. Py֩+kYZylg 9j:D3d\އoipwa6@nbq#\A}#R5Bl p2U]& %QΓ~3TLG]BbIU MӒcl*T&t9c=eC'~:;6x5@M4 [BnդM0I>򫅨VOt525j=wS1 0b L{mkEUm O *c T̸AiD? N;Ӛ`s^ǀ檓N|sPL:6HI?Eޙ'sf2M}'TjhhwL)? 煨 J Nu'䎉 ԅB4NU|)Tm<8B0k{2`i &KCe~Mޚx!%OA!Wk|!;T$S%L;kiTxG ײ4AL&ТJ.#4hmGhZ$4LtUeˡK*r{:s^D\TwPnQ[t\5ee=UG7˞je0GC,T8|P}(lsjhvwdOWgUtr;\DM)eEOHM >Rxs|BM:M}6aFbD eQ1[߽?P 9ke6N|hyD:9jpj6?ڎ-Kz*sDKay %^цAoyK)4nj]ˮ78uXjz5"汲!QQI=75iͳu}Ձ;V*}!TKC8nys]0etPmaS`CT*Tvb:ױ9*g<L0ʧU|!&eaL'϶DM$g53ZLk)#-S'wDcwE{0G;Ii#6?CrnC +Ϟp$puC=2oY4t 4FC9/Q:~'ET\t?T󯺰u8{C3B+'^XdamZZM<:}imް׎D+rKanUi*e"ςZs2潤CsS]sNRζqFHh4asۍaxJG9 ̕"ks7u)ѽLOE>>.suU?&hTUy}T!@& ?%̣| K]yoU#p#ZUDdNl9!R hNNg0[[o&O@p/ݯC3ȦRf+9إM)džA:J7@ˌqOK y]^3cNDѠqkXX~Z*AW,&קk*qglamFtqJ-'B|m>hwk!6!S)yBcW NmUZUIˈ.Ϫj܌~vFG$Ba;fVm:k x]^GN 1t /Tۓ@h+¼rW2gOݗ.Jxl"y%MzE1[uy,s-p,MTo8xʯ k $1Y:ȉ&̨;ÃVߧi dˠ "9BOȧ訸; i]c-{p ԉZ°1gif2nv2ZCW5[Pup|i ԜRʨX}I4w@Mny'K):\全9O%KxA Fn_٪*&i {%.*È*m &gR$Le" .$8OTT\*H:~F_ 5BF1ͱNrk Und*.|sޓ=Ld*6x2 v@)I/S5=%_ACFTثZ.xÒכxfd']%J܈#Ul4:({.|uꦵ'j{a~0r9#U4!apAd@ȣ190&hM_Ē)UUmsM%d 3o8ɵ=k:T*qLwu]h]chʓK9:_ө41{y.n|-@Wgl(:\D4cm:d Ow<_T8biS{d.ڃ(!UߴUMo7LԨ}mp:O: ^5*|MSK~`zSm\T ]& Mq+HTK YQR`s3΋ "'NߚܷunKv2/o㖍`vl&iA:VmE,9zg`̞>G^IwyTШzOM%4&@*O4; ˾*=}Bk?BaoA6 Csns M`Yy,"=S3{qn*'ڵrrՊ||LUHnJC) ve1/-ѣ@U[Uȵb*omx`n.Ӵ>*SLUZ *Ea6L\UR\w{g6Dhk[g)LdeW02BV5U6U,— cG `LOU8}~ K op|4q9(\~_=m7CdxH9eMl*ᕉ1Թa2D(܏TaBTUՄf EPC ?Obu'5Hk8G$y*cCrՅrM9Nyk>GTXdnoh4Xj;]9#YM­2ڲ3*joEARzeh@rküOWwZoU^69)'Xی;kߒcN ]< s'{lp Vi3R[ T`LE^ GS: P L}} (႘Ӫ}AlwEZzev#޳)Ȯq}C{bSֻ;IT}6s]:y)\ֻ{`L;%{zFKO}Uv-oHhQ2һK Y~LeڻPrDMwbby'rcTL$Z\2ǸT+*8Qt8]R)cAsdxDz6CDagXܩvk̦uQsdPqa|2ۏ`V w u6Fzho]m&wtX|>!<]Q1Z\ӡ݀ aȄ[qasUM>XrN ~LJ 0H}&ɨj=ʿı ^_> us{39+Z~%iv#03uO_תUeq| f}eR:,E ۗ.{`U\@ dgM04c6cj R3Xl@{n5X1-fࠉïNg~~wsDR:(rJ"\yŻ_o=ʼnZ*ѻ.4a*1uaouُ$I,)c[F@^ TGR&Mbnc\wMw*vVS6yL8džjvU ԅ@Mvy{D3=rYSkC@V@3QbP!q|Vڎ#Pf2{F2}!pT{M7T{F\L_0[5ZtTgi]97Y.ըfJf,s'D:6Yt}U4q-4cB>+ cmƲpvmh:ZGf32'k#o<'' _Bcd'CM#fp5k,;OV=G3Muj\eԕA-e1 ʬ4l9l)hÏUITk- y޻PŹ}ڸ50yQ'U2O@!T<SF6/H z7?XN3 BS)0-9s!SiTUw.HҚL~)\eT{Fly*.,Qp:gy. h-O`]}1ZPkP t:rXϧ^⏉8CM2c-&,y9MvXމCp8fmJuY,tHS]k:&x`!ۊ`r)lKS».R~~J9iuuވK{лO]W ?"Nh(uBJm췍܀sToKM.Cyho6{`CCvYpv9be0U??D *X~ӡ_4T'"ԤX㪥JjtđIu)w犏aT @{6X|Ml.rGf!V3+UȔ %Z|Ujze0ֹ^1OT>0 %2HX'vN+Ҝ!7'hp8+v.,R=Qѻjxѧ'dMH?HnX\=3AuĻ>^G_m 8\K@XAAk" +YsUt5vi?cLhI_5 <)JC /Ak\6,0;&)s h&q9SKU@^5_,ͱ$&nȷOݷڧ 7u^G89y m _,Rg/pjǘҫu0\?J]#\w"b=G%γX7l8a-[QU}r=B$h MUJLƦGS3@*\"B4E /VnͩNw,**Z[V.p9gpXgյ̧kc)ou7Bh 5U@FJ&,~t7)%37 S@sns)YMtn w4'xisWXa>o%kV}G'TU0vg J~lp*D$&vgkTwU%Yi^!b\xF+' ! 3\:G5iDWhGO*iЫwMwD|qvc*5C-aDjp^k V5 (7kKi7ywYoTʨ,B9rriL]60QR *`mVaY.e1R뾩Yn5c/k{xuﵤhCFjپ冤Vh zPab4^eRbgB 4]+_񓪜SC9[QG:Q`Y+Qw̬ v@ R,^,. 짖W _yDu๲-b>.$ )'}^'. {jWR9hb(6IVh ӬxI6Z1U Nm.ޣ4E@f>Ues-)*3 u=UJna 8:~K M-ܰm̧wd+I*imw Ri&Uh>VysnԳ>"2yNv%Pb:T.a5T=\S({*G^EhZ>G5هع өrU 4XC_Ul8 o5 Vو|uDasuDO%-0n5XgUpK+#2UiR6N 3G uBײa5u9gIN+*7O$H0Tn{qla_4O@RÅkXItEGqpyjihOͭ'>IUQu6,vg)Qc~ùh=Ή*}Wq ~ձ|UEYTqW.-y&Sxl_%in&v_y{oTG#%xy,E==ځ}C -oRHxuk L%昦A(qf|N7%Li-+ j#柕O4a_n!'(o9wK{ UOV絽:wbsAbUq5˟$r uL '*75n MB- /u:܈Xj&QNMyNH0TOUJ U0u[$o__ 9hqftY'J8; ?A2F2\dYtWh^ke*ƅp^j +|+Z>DmH B]Ty,#<=s ֛MٔZHsPF\8TiK˹NӅ:h(H\Jc&tJ}jnlo}CI!::<5\wBQK"3Qp51:eZ=Ät*# [)ܺ֙Jߴ?6hӒTkZ*zu|8GSktN|62f'3FOڵҝSH0ZKnj=ڰr֕!U|`1è?-ph >Jr: ~M`ۼwC%(Nn{ h ht]\0tL|~Knhø.q7D G  jANt#EO.`89跜1isCUkATiSkq#O^L@y2E x',(3 JpM9,Q蟲aC1L dWg{x|;vbkd杈uVaT׫knK ˭h,q&VEPf3RygbP2rjS]G>I"AG&$.ϧ$Yk/r{s4ւO c&5 h[(u!7x*5&89?>wu$2CR5F_[>u*=QΥiH=f.4l@-}#54@ ΉO0 l2?ҝ#0iO̩>. L ~X[`L_iAAx[XbuY8GЪT&gp9X٦:&yh 5%pRG%8&jS&LTXvjyn`{<5x4Â\9kچ4Laa^֜X.M4íf%;`G2~s ƛ;aRWm7 y"b0,hSmggԬ\>X:~kVGftRGyoᕼc|װezER4GUFPě.WX he< Z>NO85L5Uꖵx9amٻE$9 PH7~JmLtJӣZUS*FEauV.9+hȧze&73#^yg 4ˮh"7k {af ?ȉ[tZ<-XTʹ q,YXurr=L#iӺj~fL--jkRDwGkRѧUFe+w/E+ O_ XXQ|韆Dh Uw S=2 X[IRL1a.V"lxXZFWQZ] Ht9:uGV5U1oJ0Ktb:2~v:ջ6;Իv4O5 pfts\78S)fD+y놚A' (դ$2YC*9Tu*bXG \/<P hWejgiemmf<5@u 2Uud4i# dm;03 y/SA@L1-Uh0sGDse:CYV͵̭p;Rqꁹ->#Ś)wn(X!^UfL.ȧxx*7Cx,%?*|T Ҥ zͻFJM5?򫦣ˀp>{aЅyzMZbmn4 QʂZV; pKNTr@*bJgFDd7Soxuf>eb 9`\ZM;; 1.NCCs>KXiLW=G1g-q Ku[<|a'U9fF){DU*ݝg+HeJdazDiZu1P /GCD=ե{G%"oCJm*!B."J D>J"ᜅO8ےy͟{@~C R\rS=!0ѧK#yT!(tE"hF$y J.*X\1{ySjATZAy*7,I-p/ ȱkH^U 0<5?6g.7,'{]?!°檃!c/uLko#]"3թSi{8F)u6{QRrjh^e`mQ.k nBZ.Сu wcoVm4+ԫj}793 wz|,;3!'a\4+}X OC:V: v&ʐܚj2$ƫ 75Nmi"K}eLC |fD?LZ DHQ-YLA t2tj81br`yp٢d*9pNLɎmAeUUmFSk9D,Vm+vMN +߽hsC~jMu f^7%xSkO|K`&[%G 25 pH*:xOUP 2ElЎרּ`AzAne%By&O2N~JfsЧ*urJk*}"O>ES9,8;zhUs-$Z*\ ᒢw"3Nmi.D[*jUBրT8wM#Q‹]}HzK]rWf^v4:j[}\5ge7M; ʁN\f2|YaZLĪJ5y$E9 a);҅[kKwFs|tXO>"%od.wXi TV+Y= YI瓳w*.اR=5V u DHIMl&G޽s3~S XpZ,N3.+NCϢ6)TkUCK/y[~ɞhb*Y!֓:}\;OTЈUܟe?Hȷ3AS0 OHd8c^e/+zK]N*0}BDDfh ҷ7u0Ч!5i9gT}hUˋTeg)T?#x,h$xD4MHj]hBT M~ z7Jm':[96K ;o-Ӝa-)BfM'5W(;iWR4*Zs\YեUeGR9*g!y5DqNx}{MZS{IM7G$Ԟ8Vlߛ5V#JSPĿLp22X?mLx7fsM&%vJMߝVq3&"u+i<\$'^cg-@緸<x[:5 i>iЧa̔Ǵ) ei.:+U:cȦ֋DѪh>iL}8N}\ BVΑ$!s44^hwW>:xpY[gPp:*ױ||y[we4d4ٜ±sM9@Jz$cPee>nMSԂn\Lڊ/S57ky-s ADn 57}`.7-J^x)eArW,۫mVHUi,EKDTWf;ܘ@b< @ve`m';Xu:02޷{[PTe@$$4[jqGhy'g@QRx,> O&BgdӦ$U,)؆9 f(*f?־\ڔTMʡZ|0V0]:A5 ǻNjnaSΙi'h26Vo5I3dpH' 쎬*K^ZǫM!6e 2FɏU(Xch'-e`0SшżDesFt \52䫋*} >)o\Wm)0ŷyD41akUK'MVّs'!S\tE[F\&b2Lg iJ{p橐Y颖FSFDt 0N!>yPi) j0P (TELW%  OB{u<0oJ״Nf+#%a⒨Pm4¹M0aC۟А_wUUgaw, 4wE q g$BV;eӪҗi晢J*)t'876x`8uL1˄B$nOC^ Ѱ` ^5.)o/erlRۏtn3oBegTc̷{1ZdWg*WԈ FTo?!Ҭ]0px*,j2SCT+E0%9‡bwaSӼCrsm0sG<UҘB9ܴ6ho!&!UC/e[=*UamVEa`p۷zEIM֞+TtpX8yLaJQr]\OT0 peCDw-k{߂Ԇ* fn0حŶePi{h9L&؀ByVSlpJq98[19*!Uwӵf,R mv3 AY -%i)UTCa4dcc{ydZ8\UnU>O9?v7k!kw]!aiT{ƖP[K|]TYXxzsLT2=.e=Z\;v9 Oc]rW^ ΩR;PLIsX^*-k2Ui1%R@˪uWI]PڦRH'1>OӚCȏ /rQq,cSjwIғbpQ$[O9se; ӣ[ao^hP%Fj'?%/|*FnwWt=>LZ(妨TyVLNl>.ᕏ;CMZTAkcf]QQn傘3 ohdKO|rXJ]Iܴ 8Z+\Vl/a, ³bIWɐ\3GhEmrU|DuԢiRBmUtmrjԫW1H](˻q.s_{ɓ0u4Tj?OfA:a&_&\<=Pi0{5*Lx^4oq: xUuwM@I\Fқ1iz%Ps olUsbӏSM9AT/ʂq%RDStt鳆 ]} }ZdIaM"JaW`gtF3$Ð9x+̆Ɠ@ˉJp,6Qu>]Sh#Lp  UTS#7yP&zǗX9.VsG4LTmHnAE0HP̭knp6p*w901qE5Bvlvj3Q2\z8L!'9+F߳ly'CQwݪ'޺X;iOS\l v-Yn!uXhiϚb|d%bu'2x&ccyJ-aOjwU ;)9BJ*fLseP4fn/U-dG ƈlysR_=*¹5o$8jT#^J{x5CڲJ *MDD:SD+Sp W{U3s'䯜<x!59[7ИCEVRᓪ[ӢX3> 9o)/]/" M`qچqopS\hQwo,Ȫnm~JSdnNtHY57_|Sʬ{rΪH1$+ʛYCFaSi/rMw77NeuFF\uR 1QO-9!9ʧLn'5S: uTE&G&T%ZR9yu'HPiקCZC ȂE;6-_s-ks `Q)6!KZ\yM8-b 4fߺw,Zv؍&Gka WFBteb[Ҍ@sXb7`~(" qqOڌ{@sWw=[k XSsia^O-7:}REĽ%֋bMXGT N\wqf_lh ~zdW 35cNH^- m~^J%Li U*=h*99 dNי m'4 =^ . gU,})H-2=\qvQBiܲ-TNSk槌5jA`v] ƔSl\nƗD Dp˞cU:&Gsfc0ċ[2+[ leUstO0+Mw,M9җOY~Ik,|k UAg*ė.W,M  ]jaҜrȭNU= W$2FP8H,8L;J" M~92~RhoO"2P a0Y!b ơӉt*FNe[48Sʁ#00!„uN!B%JjNS` fm<[L X]u6=murq ) HCŒuV?wݴz*2tM*Tis=ѥ1HSܖDo(yOsH*o1O(CLӜ-v{ˍ̢skU:z+`G$O g/?Z5Maf^0o v̑™d1Ls I|,[%ZrWDJ*خ.>ISME6sT%V͍ UIU5c龠]nssa eisne9w'D 璥y!N;NkF\]uE"lY%1!;@Fn赘9jNV$"5:c)d+FY&gT~#%Vg+[ {<ˉ4JB6ۡe0 #67'i"sa$oz-vy8ndYRyT4 ?ֹ/oSV>U8e &2s޷-p,NAnV ՍCy2skþisx ϼSZ2o S\`<t9"I俁Nvd֟MJFن>*R Sj Zŧz@]Y^wPYZO9ALr~MYsT(Ѷe5. X~*8+-CSih]#H,*=֪n-R4PsGBTE=i'(Md2Sv:mҟ{@DCT`ys*d3*38JwB9'l/v* WpƥS~jwCvVzQEPlrofyFI5<&Qu٫S\Ot#j"'gJZfUzuTkK}+_^ jnq7wS:bGIW&O%yuBC( ؎!U(L vRӞQSgRK%We4ܮlQ'V3r` M,SN5`^ MpR'`*TJ\RXzTMVΪ-<{ȈJim뾉棄{f曊#\kǂJ%BoEwR匩;Uk|r@iV ''Z-'#0eIg;U'dNÇ!hPUFj])Nb&TOlL> V]᧽,8mVĹT8+XִHh:'2m uAµRT*WRz&419tKP8dUVXF7yhGvy/]R(aB eU"ntLl:k}a4Ʃ97~ =IWtF\NM+To$é7@T$ocZ eW]Nn5淘iXBo&HE{JJEك\i,>6uH) ND&} r^S_&*Gk訷wE,gz 7xEu "M*Y OIr*`yU5r^TAQP*+Xp 몴oBuѣOMU570莫z,嘒\5 _CA8g$3PcJ!90V"s`}|2M[f p9YUpYF\Z/ԫ{9J;UYCZ9v7gOk9ͤ*oI̪o:j}1u^L]MډT=}ٜh~r͒ʬUJu@2{MIw sn*,IW0vxO+HtUM:cD2s䍆hr4ө5\"~ix鰦SW!9R)ٷg&)T{LL*$#;lz|Ka{KQ{Y=Rxie}Bc n2X иsrVku1~j)\w! 8rꯦ3sHTa>IvF״r5wODi <&4 S[̑MBtԩb+:QȕBduqU ^o//lt+zL;,ް=NY"%E)FHx&rN 2U M-m2fJLBf LtswŎ ijUo;MÒ0zQĨ;;D^rr_(duty-}Ӓjb~ٽZfa uE2=9F>J/en|?p$Z69;ܿ5%O}Jgx9qpRz]a>jCi>ͪKG;+°&ꆫZQ@dUVdi)Akp{ ENо.l`)W) %hMb~ xvU٧~k E$^NlIth1NkɸTs6RՍD4*nžpN&DHPEc*7xE1D(vFS*Ԩ[żAAJO)>2d?OOvz6~jj2Y rw\RG{!ba-=OagQy"XSs#+v?6rN ouT5c4V7*'s)ﵤԞM9s0uIR$~0LFY}U;iGXU:#2:"DTd*dR{8\Ce \Z b~yަ~mGxћ] ufb}nG%@ BNNl#]5S+D禊Ri><>f\^zrMhh:(VR$ǂ'6jaVUDGUwltU;E7x-6E4Vtk#6SHjR.DgR}:&Ϣ;Ng%15n7\(maiញԞM@t7{ \;C^HB2kS97 fBe+5G2WխRi.{Qh=G0 ,‘vAN$:W35W7U#z쪔Lw__:d*] O%~Sp5^[bhlQs2/)z;5iBq.Ъ}Xݐ7؆7VT, Io8}GnTZ> hXpXv统2TF4hiS{-tX|S4ƆC%jЂ湠>J@@X;6 _4>US6YFY咎0Sja$O##$ /4W4\Nj)r@N e8l+Mkipo~d'5{ajw^9m&M♘3bknYN/x,FWv޺WeaSRc0%7uXLs[L%f|4!n)wFeTQֶe'G u(ӧ<ƪu3LjKIbZp 0oi>ebnT(!4 U*m8 K2Dv%:Xz6.rprn'z.h-JɍXی9> LZ%awj# m26l'DFK٢Uz4m> Ana ھ|+轌&g.i'[ ^Is# LjeW3B&Ys'ՍO N i-2GEA tR⃏vSpd+<G=CSi6*r]6V|%Xs)-M7`l] a&e;CkOC#AYiXk 89љ j NB;=.yTR,7{\rv(U#019?-$NS0=ػ{f::AkI 0|D61.:}3rM|D˺ǒrBU|"}DڜUZ+u3+w=C -Dvnlޙ*e$4ݪ4(lg,NY >8y.-mrjpvbvJC$*gCaC(Or2`Ach&.U{xf6X;a,Bu?X7$O8Uq>ʙ u`Ԯs .7. $stnvpgM<􅀾7{+}]֗d2uh_Vv%E&Lu32lXaMsT7o{IwlߖʂXSgx0Ϻ83PܜUkR~G J\iʣ"|s>AT3=>JȊtۉ [FϚ̔GM}(rA \sC]-eaj8Sk^-QB%5 fsu%]"NjRITxl9,}FcWg׃roŰ_.iuNU{&-N?못OF3F&i4UټMdHtU sȬ%}rjmQ%B*(PBjjZVHżOD:W8s{Wd2EUnL)%6Ub,Y==9'ɐtld\!P֖˓qL!hAdN nmV2= ִ 3 Vnג Dq#T{aꂵ BÚ3eSWxM祖תv 3d-B. Xa;CmXSaUa*yM I=Zݮns|FjDfs@?UfYP^mSLU;mpӲ %5?Ui!a9Z׺ R֑~G)X"ThwsR=Ld7K@]a:g%b(U^915 A'xm$|kZ^i } sN{r懚U reZd4 tZl(hOU0O"4Ҫwµ̔@s|Tҏ{: koV!3r&ZnU}Wd}u.qz#Q !4!s@~~UЧv}Ou#;_"֛ޑ桽Uܙ|kN¯sT #Ԉ]J%=vTe S&9f,Pky1Z r6$?6)%Fi=Rw& L1؆C'4.h0>h_dSB&sxjNܼhahC[5T\Cs|M'-|wfL/7UPjI?W4*HwQĵǝ:UZoHt41 } wB%ak4`v T4f9ʕa9}wBZ2V:$5EbL>tO>˧jkʕAQw?%<_3"LB=#Ȧ,{f]$;kxО\:Cs#=`?]NkHeyhi҃2VB r\i<7FIĺteZhRXU.ͱ)aMa=&ӱ^շ=ӏZJqZWx&TU4DTЪjMKWiWsD(ŚIUAȝ=L..cs/Ɨ݀g'e&:>9oX4.n;pcSt-DHF[7 VW\Z4^X& m h@JWS(_4{6%bnCÚzrXVRa{X*"X=1 d^2(ves̯֗&}j=א⪁.>U80IgHT]}6A٠Z e;ӕZE:O8TϮ;FliCϼZgW mrźOS-ہn碝]TyܧLWqƆ3h>j/ 'bg,=[LǠޛBz)D<5G0}j̀B{H>\JjQUhTTi~ .mQ]u<7;Oo3)w\-FJ g`ZoD)x)9#s.i$w^a9X߆oHj6v\:Ueg7LFp/n\6g}jRCi#ԕ x,3s(ViNf*Ҡ*E혒R%FkLֹn nR):]ҪDCQM-yJ!qCp#CITm[!ScZchvjv75O;WeN|әMIn'{jpdHdQ.YAavlz Wn:'8#>ΛUJ֍tySCfnW6T#)we@(-i@V_ ?6P7 | ķyftx {FJv,sbp? #.5 R/5%4Gf8wBKxMzmNצT.oߪkq M8OZ_)~OK?/~[R⭯_U?]OS<U[E7˹t*r }\= xk+Ѷd VNhZNIxfۂk- sc< jՇKG4h:Tzʺ]tD>aO5lMk/!T3ƎMD0uw5ID*uYXCr(3iSwy9pQ_JNFEnb&2u]>jKFlgihEcYלx.h=Pc]*uNWJH+{L9/9*X~j`溵7̥N:vs)4O3_ُ5]ի'+O%rQLsWeL9'"B| 4 jA @6y*[ʏ n+qWe)c\k9gaSAѸj` <̗@3UO<; N qDCG4uz5/ShQPTSOQL`J>HY:\VEd tVΪ DL(CvMkG=Sapzc C mV6&zKsMt8N})i§!P:sDv^V'kwZgMT}'3HJ7QnP" zJTY2O%Ul @ ,c:mZT fB##`ZuPŴQt0BR:Xw @,fQć8>< f"Y49&fgeU~5^]:e`7':u,S\Y[1ⷕ(5j? |G#.|gzefx8ukB?i|X:#A([:FY;1 j-ϒ,{-O'-P3£e'Q06-ZG%IkTꝘ[[S[w3fٵ)B jhh@#cJM*T䝢MJi~i |3& תcZ4().ˬ*iS>P4ʡ2<¤׹+| .m@AM2ܑ;2Pa -Lw.+0!krK[iڴd}L vТgEKMU vasyƂ:ibiu\C1qUjƊW8{IO ݖQµ=:/@:Eu'f#U DʬᄤrzØ_uW[!zUPQ2m%vχ[cZτB2[ݟig4l[MZ [Fgލ ˸Jϓ^#{?U$1RŗU+L E%4{QŞuV=h{E5 EBSD>aǪ:.ĶTve4vB湁j4RUèR:UxWh>^4k @<9JFD#/0 rThv@)Z<iDɘPB2nav=3z_U|0U.l6Mit}5yoT;2?D;63{;ٍX:Peʥ0Z֋O*0>;]Й__CtE>s`\@N*q2F6hJK ^\ײ59(kNcz*"sr~ Ɩ "Tq[>}"|!n? ^Z]2|jW^+FJ(^ժߺj|@~[Y nqG^_ .+?g:Q؃zwRvD3qP~mLj+UDi4ieg:ފ"ȡ =QԔ@lm0S"v#Ѩ]Tc G*g'?S5s,4 C pOuMaΌ;\c]6MNwBJզXNuЅu,{90@>6㩕O Q[aT ->K?(#jM+z}nޡNm-<|dJ)^2\uL'*:Ҏ)ky(wTtxX_ItOJ8*cʂu+N-{rPA6i $CBn`p2U,F\\^2sAŎu>aqշ8wxTj ԘVsYEvM[t(EQ71Qy-E^S02Oe}ۺ5k=l%3ۢk5脑Fa= qtQ&;HC~%wGl>Hf5*3n~'r#[S#p02ۊl{@'(!f:#gʔwBO0SXV[fRZ%> L;NSfZW~ZJq4pqO5Zl+ Zk:m#qʻJ9BsI1FX snXogU!JvA(ӞIB+w6=T:XG=y\; R(s1f<=2@Ts](/P 6l;P5rR,LYV״ N4[4tN:X29UUN.}E,7>V1f%We,óy^:'CD a9>IτriK HFYl-uԴǩ 6J' Mͣc!=[̑Aˎy,vy#vR$Ss^L(ex{>6TSo)nYڭvu <[ .K~uG[y4%Ti܋2VG S堟 MG{sx;Y+kD OԢ2)ۄxڏQ.UZg,1('8eVX`KNzme[gS3MWyPUKtWgϥJ~ 17T^`d 'xRbI(=:nrpmo/Wdjk 7ef՝S]|DmV4R O4V)T/K9B5hѩikgO5%Nxy]Xcc*K4E܁i"-/$7lȢ@Q(#]|zq,daQ]Zg&ʻƏNXmPzT Q\HBm>(*7_, niGTiyx#De@MdO܁sO"@UO n#YAVoS^oǺy=dmi=q;SLWhewO|dn7mi*$ !5vJ^OiVh> lfuLIkD\xZ#6Hٸiin B^:L8OĆtFѭMq23T+==Jcԩ[ﻗU|p^J޿L/ɡ2{xA{gf@EG0\>9a˪K:Y#FӔs+-kE>\â8rz#D̦Sr\6́Xwq H-czϨTi>Jn\*j%sTܱ}E>J!Jķgc4Rö=IOe\JOY *?YXe?Sm ŸQ#O8o uHBwOG;=p SE6ZV'Z7ڿ̫r[*frD5+:ֹ*6l:x'9O;yu ?VUJUjS1nV5۷wg?lj0NDѬ#pU=Gj٨FBZrMAuC4Ji$D\Ni}z-T65ZV2*2+a麩68QiVgQ>"sRk"AL&*Ew֤s@:V xF$3 lA. hԮѪk /SMJG)O3(z)_$S7JJvO%g\@lڻLN}oq޳z}~~TfSNKS8"&ssP`cIB\G23Nhx!E[ta ,~6ia֕ڮ`jğl=iPlt~OɅ)J gfkS䫙x~}'dZ ݵnPbwڬKNGW0Sƒp,5Kvb^@BgogvӓSmw5jZUxty*bicXV_SCZ^~kxOwz%ժa&qmG谴i vchS mJv> -Leτlے_iĠe:簎FY N~W1q2VWa^#I޷?'o=m]vdB#ll$aooX'=<^ݟ߳ǧ/Oُ,jL=[ڟ)TK/\Q=/M]9 'UN&閫g JۿمʋUTuW0拭nj~A>V>ϟT)%4jUnr@,q2LftB 2d45'SkA5:ըiG)P>^)nwU  >4r $ ٔYk {Y8 sd7.J؟5E ]z#P8z!fT _4l)ԣj+jVJNBJrMRRj:tg/#%%wTP*V$P੘jWsF[v*3Uqg5T2ghpp*t5 WFU].m60]9O%ӻ8&sXvW8eĪ6ʎoC4V AD%T' ȢP7.kPw6Wl ܲV({a䩙` gَ~y>K5_F}@'ŧ}Kyo-?]OG'/Ysf>c|eLϑ> !7~  q脲\isSu> 0_B}E.[9gD.)Á̎$KLiR۞qJd^hV'*o$2%`"S Vj:ݍQCdeqdV;5jX[oSs΍`_Gn7hG캎s 7FĈapwL6AiT3!xI˒kČh OǾ|SqfPs DӁb!kD<q4؉k>W"F7_tQ0Q i꣢ᖪG"@o!o|ܚ#5],"Lpea>zɥj|ef4֎gԍ(F']MOoK]d inmȐ &юMyq@Ore_P, wzY&NtOUjS(CC"ouF\ Ag?(>4V z"SG4LS fs觢>/V%ًXnN+ RkT!W͖Q1]>O F(XoKmi~JFl:l"u m-k:h4Ph`6yf 2uD-LDSIaez.ਚtYhAKg%9ׯD5ѦFڬwB pGX_e//o;4^}܂VKEMRM,~v5=JƉ)}V^t2sӮjeTL.`,5Bg4doa*l}Gg2-:Ӓ&T8ŭ*t)Nt\ch戹nNJ '0z-lوL}.tG⩹|&dBu OA [q=%bg5 2!S{s69Ǫi%FQM}` *a c<pz S l:eRC$jUkEk8^܎[FpCVWihϚi FO{5s_ZZr7K\~m01K/`6EW@ EHwq;zpS2PKt(憋aX'~QQ%S9&Fg%sA4ӈUrnPV'V˧E!s]vL6BqP T6YQmkd=3i{X@Я{=eTeBr0+~Ti> d>m9I^!-?4j1úQ"mKX[mvk6 Dw3g }"~p&h6WqfU!i1: ǩnp[t`ٟrhsn-AZ*:´R.k]uIXnZUk3P{k6C:,V-ӺQH:tҦA7waaXvqqT60 Tk~4#":S,jù~F]7KXnqs`&"KXJ)ucg/P(Cdz`z`/͞MT1~s]/@r *-xcF'w% 5kC1;E@_Z@p!YW.yT:>a,U">%aulp8jqyu$Th~9*ȯLwEڎ=#[B~c jsV25C5$I/FK9xXa_ C搏Y2YHk k񚅏yL!QbX ;)TɹZNPĹjZr̦3ؓwąs:N9@Bn9Ŭs.M=o ]e\h4+=U3P(N e"MFl:,ڀO9 =76QPB!Fzt^=G jiw=!s|=NK IvxRcVKꏪ*Ylkn#6Pe&9uVs{܏Dw ̂{.XOrtw%OxSۙ'w^{NcT67˞9,!zӛKb|SiXB32Ng5V/cɸ]5iZvv/l'Nw M㫑mџuW4Ѹ'H@TWkv7R<KLKxHXw5ָ"i .]ƦsO5Ru_5GT0{1憐-vl(*Ttb)0xpiNPwPThiC|s)=f765x'8O-\ A9ce4xf)aȻX*)9SCEsRI$a'`^ݽj*1GcrUmqZrbiT47gjxl#UVT0C8Ӣ5 Ou{9rٮ4r*6I樄Ջz#IYQR ҡz=C9h门=q9 KaVeMt$ꛃ5#!apo5*ln5nchx˸}+K .szeU?86!cs^C K|psnnm*2eȾ26xFkgT hAiU1vIyק*x%# c(SvB1)j+EFWyW{g/dvBW*Y^iվ[)eT*;aoGs.qxqm-nz.4o:?xZsEUs5nOS^hQ tO*i0N(cIy'c@ آS<W#SPMny#5}ymw~Y*Ns.q19Q b|"dJZ=Hl5(}AN=HGc̹(u9M%*LiRDs cJ@{]@Wg*T)CM3G9&ϦMᎰ993:Pv"Bu0Ak9d`Y iR1ڂ}Ȋ̔D;1⭈s/oUw@ڔ\eBF8UB'ZySk|O Kď }IO]cdm:-T"9&^?Tlq0JnAv)g+m3ncU7|>ypmpSS+JohmkG Y5=Z14x("bUJUh+]T6x-dHkd4%Z.r)Xu2S h)7UzSsog7vzmHTm,> `4zXc5; lxNȠ!"%ǒrUS Xr%,%?[ 2~}-Cռ붅Vs`94N~g۱,6Pj4l.)9aRR(Z@Ca|@U<{"v 182*x8;w~yKOXSd\GQ)6VjԼc\s1RF}sAUw2+X37ѫU5hOd| uR`-3/F7 | Zb*ꅃ,iQBpU W yUl ;lzNUoe%¦q0n2h'\A iq^=BaG v=9k@U:' (b\cR'l+VKU!BQɡVw ~+TӤ7sUDt' Qq4.\1cZp194v"'N֟%OsV6:䱔ǫNg0<,}cy^is`8qb0Ŕ!#%P\ ṖRQf[7㘔ݐdl!T 8u`PB}z/7ʄju9l5ͧV p!qƣ" A&faL$&ytB'eM!"}HQjJ%\٪D"!{dj)5ֺ+vPg-[SuA n6g$pޅvk!ȃ$ϬK6{ksY(QȊm^s;ޘXjK\Rܲ@`1M4)]HAI$=*WYRC+c~}Uz>u_lмz4=c'g_~T._ @!ڷa@"U<^z_~~/@*0G~iF\n_?K_Ex$ ZUY>緈w~X\~z+^6#7~z5z]M0dܭhOAՍ_櫽K/1A .JT^z'Hѷ~VЊGp\Ki>?Uz\"EJIRz1as~'Mz>3юo ryBw6?1 >"[NE_/KYCRJ~?/1;r߸&ehk1;r)*ܗа oWԌ}.\r=JE~RT}ULFW[lsbp&low._EJr+֥~ z?c0{.RV&*[^(Korn>w kftbʑ??g2J5^*TQ%z+ֽ.z GzxQzo_ 4a*fg8éf2#wT|Ns>m!GЊٷϪ*GV R>Wj쎫Uo7/>WtQ]4??rEܹr2C>RpޜD:Bݦfrs2J5ϭJ^%7j.nja$8QF; +fh #>cLEޅ6鸍a ?螧JeIHM+ٔj`b*tB`gHpZ <²MvE87ԇii7gңY8cb2d+Xß iGv} 53m@Cu~/YhXq;???bjU?NvVyG3N& mVsTJ2u>gѝNNs؈<,U1(*yNDU8NI\.j3 OF&my+oqڑݛ@|5;F6mmχգf=JYcxiP.+,E+vlWE:qU3<>*e.Gac/߻ .^ڥC͌?'藔T"yϜN2m֝Oah6W^"9!Ҫ{2y%L"c/@ s JqnqҪ8.Pi)J.eB%qiҖ2=lXoy!Jvmy4\?O?Lyf_&+i9gn!T ,]$ZXtw 4vN_RU<`q63TT*@ͭ2>=?賘YrKhGC yC;D"ݮ3\4Yt!kEt4D*Ǣmlf!H2ҾOmW3Lh7+;z=L:̱حFf}fplhHW(Rp=L`Oa2vوe(  >|eN9)%Snoq}״"=&]0*ovK;Lg̳rwmԽ[]]"hT[Sa|%{bDlıF!)vy/>6t32j#+LmZ=c&F.[9vR&p`U [x8579;s1Q)q803cb.7n|SfmyBHIv?0PusNjq8bQC/2Q<\7=sn[+5ۙrQ:tvE2}c=೩Z_/IkYQ0ޥ⧺tY,c5<J4jzjp0į< 6oLx,E\;\y0#U3Xf2:/?ybs"@W5 -BPȘ$;P)pep+-@E ۱h ]616_,*s0}MojDbKTP/RlN!8rNEXS }}u,u7^w/>#a-x0z DG&_hX`AaP+؋|G!gh;AWAn&sKPҍq*%q:ypzvs@Ydv b\S?8Gt,ra g#TBcؼkOc˯HrIGf#LLJd,N<gTBsWCA0ےqX_?y1|\3PZg?f9\yGtCL6q:',& -ܼ{pmy{\ARk<^Sľ(HK-qRg107R> IЋ^[+\שjHkIot@-⧴7V,*9 R\UyTVuaBbƿ1 dQ`v= @WX3RSٙAkXZ~IZ*4a.iC6T,wlJnGDKu.j+FRlg3r;.mSyx{WgQ*Yt{1op0/b3M>YMj:-ffA3 p#_qa!-kCSLxyByn#Ek~. ⏴ ֈ RnOyxM w͌0ΰ[ܭB%ׂ__B&x..lDJDZh[l +5F:x;K+ʲ\yW_@?ISo[i<ՀܤWvFe? جck-وj([ݿf06]I/]dUT&8/4/_3+2GRj*AM O9bur*),% o}L20~5L}(~xِ!8l܋ßxfʍbt5ůKK=ԼjnmdDϢT3ݧDmLΑlMu2W*0Dqc%a" iEi¸Ut0A/vcEyx@} *ΪQ^ﳬWsbdNC=EFf5xmoȔCWib(4ЧZ[փ0)FA+t>ʽyN1lƯ>0x8gAl+lA2FI=C(3G1S48?쳵 1!g-j7wnT,rlN u㙀#_ beĪ`e-?t;xoq^[7y*srnR13kOeG ەKsDG0TgIm&"*.|x]y{҅즾"&X :F Z;/ZVrusx/%zwV[{5^E0PTo]{]|LLM  חS  6(~g1*ҹpmE _SpZ{և-5 ¿ܯ; d9Έk$i TR&~ȣCL;1u ݹv`! \c~%{u}1^2͐5VƢKuMJ)PցcE bX_%3^<ŠeQniGyJW_ΊbcgCg'Ɇ8\UJpz,C/ ;ڊe*p}eԷ s̭l0*Rw (J2V7dSY,\^D,YcS^^cP@n@ l?(ljivþ[RTcm,x C qz^ h5)okѴL@lk^pi03sfR!W{ruE0޽P7WF*pFS' qa#kɰ }u'T 2rxѾV /5i7Ra"ԦkSn DS @ߺjNf >=̅vfeԍƱ(]g/i\Ӌz@}ӦXiP&N 3Gr7v-h;AA08Het;@TldM7Ѯ8Vhׇ"t-_.#e PglqAvR~IV|_JU)wmF"rU*B(ڷ v `j)?Kf:+R˗P*>ڞX & iӨyzAn?L*vʺq:g!ZbF+Jx9eLьF``R\',xҜ% k^ 4,j8L3r8(b(d̥]UgT/E.AX7X< L¹8z] >&Өyc/u?h5SD#x.+y`tvB4 %{,”fǥC} ܣG ԏo X$wgYeCPa)D!pP=H !P_(w:x״Vf%F_/(J> 0 X0Aw {17drn򍣱8N58or=C\eTs\F*.iZ/""NCƠ6b=Y fFp'_1Fa,~^ѹvL%NZ;Ҹj6^Y]NKQ9jZy .[;i euʸf0S߿IN{KCg\(-~ fA`9ka.`:]bRl~nMw^ n)*,/@rA^rGJ"SwXT&Qi?X9d\zeDzE@濾 ™)uɴ=_i\;]>k#~7,b75tStpyMn%OG3⢪y~hLcah3veÈnV꾦0/y}fwf h{`r{ΜRq&HMɸ?|i4(, saky4 =LX`10̂^|GBM;(3O,Mnd,C|)4VD3l@v!`(')il"++(cXcJۓ,z@ Mw!RَCh9J- ϓlP|[.lxD(XcP!Z A* -;G1*̳Es+̶yS=:"ʻLjoe(#b[ ϼn:Nx(cWeK^)=9v 阱YU{͙;R=it%İw1&˃L+e nkcɺ5W_{]X73E)cNO[?׬~y3]pP9v')@P܍+y:L}v_ R9iCغ1l&MP9 3.ؖO0ipo;u12ͣ-l4W4Dte_aX#>ޱQ!YW{JþiN7eȩ2 \P]XI\ y[Z#s{KmM)%<ܬumf:Fߙ7uh&(RPlr8͜)rۆe&<`Ru6cY@]piX`!RH֎ =P;n=\3" AH\5'M GP*pF"_Dv8ʑ 59w6Cv uc`N,eBݢlS>`-zSG0+US_`INk(O#[X5n58|T[2蘜)> Rl*FI>:]zinwOMu_-R՘8 LZ4S(̞|J^eC8ԶMj80 kb:#䍥t?x Mijz"y4)RKHŦ\T2X4#ڱ݄۳n,'vY"mx5 ;+(}k ˿lJpo#/(lUQp8S5NC/-76j%+Lps0iS i:<@h}UӞbĠ~߃aQ7#*v}}7GGGQ$X֥reۥuqC1ʧk/X7pJuVo3Ji%FפZ:VR 8Vdeu-o=k@-.E~D~9j 2ccT2+fR-*myqnLeTEn9˔,5b] N(Q 2ݞXmxNqf/-WT3,LQa|.:-Ws&1BJKUUQu/ Xqc̰ K(uf UkHL~ "YYƷaSa3jÒn3908#_X4@5α}pt; q *m\AZ8r2ƫEهR> pza=75{Ģ2W*:@Z KoX%k~􉉧P@5RI 6UET_vN{7dfk_!N9%PY7ۤu!PSTBUroA%-H"2XVGIsIQP|п rB5.p}`!riC&n tKzL˘DF55+;O러DYElA -grl= 91Q+.%JSS2ӯՌ/^1!􂥀ٞ+hc^Ng>pdu9:M37+5g,EEkAy*lFQnZ~C}!WpwU7*k f6fQQjȝ扺:ڟȧ l kmAp@fC#ˡLqs/$;uu; ^S7+M:Cдۊ ;&ic.CgMU}'\!{%z5X:55\CQTW8fk>0  w,yB9<v1{ܪb6ǴW\thP c|z |6|qqgM9V:B ?FT9ה(7G N8 iw rx! jϡ(ݙxX2ʶcK5}i=u5Cs+Eqhj׈EU_)!_mK xb珙@r̍l2{9C,T(r\rCb\S'J[';K#؊!*UŠ jcuD5)ia*c̷muoAd`@k Kb1קoN`DR¸ , zb%骻AϤtλ4Q,|acEyuYֹ-|A9/iV^jTF/LOvpOc9C=?빉Pfrzw Ɋ<Z.˗>ފfM;Fh3V% P',-+a] KgDZZVq9D+f=f RK|7 1eQGwt9T'i˓ԏ ^O9Qt0 Jĕkkc:>[~q Dh<=&`{dJΠ BxWPt%T~{i(vnPF 5KC"H2\Wi'ٹ|8P 3 ĸ1$t} P3g.%{n{ -*k$OA<@k^{VF rŴo=wίhT 2v)itsrK)0RQ&̩[tg\k YmZ "gdIPљiӣ=}fgl8l}c.ǘ4*`fj\/ъAg̤pO35B_2G7QsʨhRၥI{푱at\{h![LJhcu>D׵L@3([|Fq<ĺq4#L^jA8}9#ѷA% 1K_V`菊j`JsZ, n5|DX t.}%ٜK^ p7+2TPjffn&b..`HԏJ6kI*hVSe+j>ePɖW (prCo8W"8"eXΐYMaˮE5\0QX#q1A/!~ϛ"BfAyc]!N ^ٍve(YA3CvьMҔ\4 i8HNPeLk^1,a. =!'V2r^XK֫`!*AǼ!u# -:@׹ Z_׏JE%1S-naNefdK;ezd 4')6;Wr˅)Sw٨ w {JuxB/fL=Jd2ڰဿq*1ײj0lX:jMޥ59=a_~%x/`=vf]VWY`VHhkTy?ݽo +,D6Kޘ:Bڕ ‚S$93k7WU|fiD5|2ߔGRӻvw !2'<WEo{lK!hvz[e1}fo~¥3 _1S_蓏*mR:Vp8qvo@ 8CVK@;$ eBs̛\AC #K䎉fU>&p*X/tpD\"X Jd,2e h-W0ֹW0-!;%.D!uԱo Geѭӓ MRPe/*%̴u89Umt'U*avC]ʼn6}JB GKU+xtu_tE,Wԕ_N1Tq1T}?NOw0  WlPKtK!*]He|ͽGl)cMÓ")KŐzEas>*O:h4Bg+/ DhlٰykY̺f.HJAH9rDWq2tb6Se۪K*,gC@%U0tWȻAD|Gg˒0qbY VZ0:V]Z")}Y4ltNyqQM13D 9ZΦbG&nҠÉg\$p3&%UI}J8ޓ( N}ҙfIc26w@z+S2sc,?Xg^c$FIqUl {_&Tͷ̺z۪_އ+D1b^gCpA\m>]+1`R_T ;sa IZ|[9s1"n 5CJ(auqݭP:O4.s+=rgЎ2v< HPn/O8sbA|0<%8^FtA9԰Zw4*s,r8@ hpgBU+o7NEq @w ѾoNd\W2oa0sI"'Ml)S30f5o,nQLBk84:i)LxodPkg\ L/wK./t k}BV%7kC7eÇ$h! xGZ6 &z?+LcgrԩUӴLgC1sӦmdh:N'W~-LLsT|z%-X9h[|%%Ur)Q:l+͗|CQC qRx; tJ 4_Y͘|fep;@ KcL '|z852w& 0&QڽY(EI#7ˈ[K Կ|c?R4ωe3)G Y2q) ?XVx|L`QMavMҀ YQX%mpg3M`x J+oˊ-0_k?_n:1-# n*vjs/jxO[U :_R{C|S5IpV E[ tDxALZ22FAܹ§KPv,B FNVp?E}f$;L; K_\w۲sS>n:^W3DsMʲ/OB$Zt=|L"~Yrkl@BO p1R¾H0M ڨA+mħ荆qJPz8PJ@59" C QIT6yn.v#\φmmQj ^s/Ky#*"!6C |J&֘2%ӈeK%0y[x5ᙅK"!^b2Z2i˙˟ e)Eݯeqȥ5j,3]lVN2ƫ5bo11u)~gz~"r_I{( =sɃT{˼u~)9g%.XE)Lf |XI~R3/WI!=#)):J^.Zqܑ[@aGfiޏUYvNndE䧳LTTJ^qPY%'A8b㼩WM?1%V^.Q%{mpSC;#0$ƈWmTˑ5.ԡ7QU~R,\6R!:]A V @x=}fơLy#=pSW A&h>LQ,VY"u9[v)̣j2xf'a'Zy23#v} ݡs"l=m9(&%q*VT N%x[~&%~Sx%x X[^#ӹz̫S4dv:CGPy마NYНۀ.VVD`r }%z~ ahr1b ~GRSvJݵs2>t2q՗z9ˎ𣈬ll_(JzrӨ>!R2z03gY>Ъ]61.5Xeݩ(/ӈZΦK7q,Ctu3 hQn}2)eJTfp)Й+x#3_fMƷeU{%T;·B!$3bkhr{w+'94d]NAx=j S+* m9-`u8Ҿ%Er|D5 O̓){]0T8@<[F?5@r⯷]"-X!O \`b5Y6lZc`&rbanK?@FrE a[D6_M4 JLq3+yQy=">龡+'%G70j*eHs=X2Y]~ muYH}‹28^Sb8QT՟hL#x9Zxk~!¨|\6$p }%7tK' ̎YU3rzO6Jۙ3P ү@f YY޸] a2uC,hs ;,wcmcP}cNC A0[qK?(bYiy 8G8{xѴ+ߙ*@k6^N\cqEB0 ![4švKWvPR\b-WB}Eܶu<ǰO*O7ַ+fvؖ0 FkSb^ }n͋ףFN5dPNY(/-VT#oըfImn6Ʀd@B_ISў+:Ni]Z2^.`Kex?)J2uM%b yFXf%D g)k1!jwGO*usn7S2wI@ʢ1fs 2RJ6R 7)?Mbfzn'L"&E 1'z!R^FK!}Iӊ ]bZ@Jt$6^.v3+ PIJ)2FsYi+OUVMyDK_dǰˡq9Кa va-de`ģ|Z:=yo`Xw1緘δJqYr^4|t乱G,X)X,S \PGb_I`cv&H9%V `&6ʼ so꒩ 1CAo,))>,Ez-OA g0] aK֞GШ1yd[T6&؏q ,t`G_&s19Pg!'7 9 fwg3I.eDc>F)ΉLWY Y4xL &,m2weN!ĽgTh仪LqZMd&Xad\1243+q 0H)}QJE* Fk"G>m>ӓa!"{ѝ}i  pLXQ\< /o߿݈L 1 !y 6`dӻ2nX)^,ZU2F'2q}rTAaVUNжYje\=]fFYږ\/3$}.Yr.kCNh ;Z~k%-.;!Ny"}W&#y.s(=/wؘ>VO#jiЇ 6kTE ETu4,}AGXo/uܕ9+r8+ a!eM1$p0>"Pe F\g_5QQN;C [m3 ee_pg‡SZ|[?dfVl8-mJ{2G\־g'mSM;1M%ҹz' Omkn`/ӆ?D:ԡCyͺd -f/Qx_aZuJi.WlDR=/*EcnTL}!=WXoC|-v3u9k5"y&|X,\;8`<,GCkDܨ)v@XfEL-"\*s([߫}gC2E%:*3iPX9ݶf27ԗ6@4*c!ŘOɣa _s+8秆i<6|\(y_)a{,'78;[ O{\4.(BQ<!/oio.ml)2b!q d˿MbfT0j[he]hyD`/3w~I\^(&,ےÇ'C QLЩӿĻe<& `1/ PwQp=YY|ŝa1nZa~sh혠IkԻW YYu\J.uqa).A+sS)Z"7u.!ʤ y{Lyt˭}Z>k)2:21yu7K;83Ծrena4zz1s/G$̻Q#AX%te}"Ef51s3[T/j n6n*g5*+iNP.Q" ʳGf;Fgf6Z7*ӯM!y6d37K0JƠVvgkk kgK5\R]w2_s,}Ha5V(ԀYyS%_ MIB=XP,p'#l%QuSN}FTZ`A\p}s*TɆdٿYf<ޮekΆ$AϼQa)_R`~ܰ5gl0 0=_V(^@|Po3,s}HfWf}|Yf!~ l#"eHg蜲AkѦ98B2D+R et3p2IbSal˼04#7qljۼ@}%,m^rÔ5 ^&pkњFJ0@ -_/_#Gt=ߥ&*z&~Wa\תvj[3|g'̹,a73ƜC:u3b[q&P;3n٤~f4l#h0;eN$.\׭Ds_nI[L($S#jG1:e[[a :Mߍ9sKG1fJ"T/H?TJeB:lqIbgpWl>pd9VѿD 0FZ\8L_iOyuTՇٍ̽`c6#ӬxhT~s-Yؕq3n2J`M3*?b }#GeVyFof<.0˩YcÈ0[N"Id9뼭urK.˲[)A=Rs9Mq2#|ͿO7~ʂh1_mk#~o05 D6Q+_8h0TA8~!In߹+sWJt:mg}љ=xVfe{9N_Z0a!b2uO/CzMl+c*Xbά>@ĥ ÝJ+ҏ~p[s 5pY͉OɹQƊ 1fj|Ҍ bz<.;:Cp8<ǡQCmjqL ܱKG J/B+W2x3e uw5'ZY@;ObGAylz˸oG,_+MarV|E f\}e}B,tg>'򏥱{YC@;OCs&q(Yٹlʬ@]IONv2^j , ^tF%/JO-6F]JD!n5۔5̱ooS,_ghe;ןJN zX%t/֏T$+g/zCP5V xP/5wpVj㯩o512]-#\6u0BqWXegEom|EuS"J-Z&k/gLp2ZMYNs,F: r/w}6l[xunU6D62#]R-n+"bS۷SϠg៊4CJl_ Ŷ*=SV#|33"9pva7U&,-JjncG\5GflXruE 0[ \<^~YSe-qybX5/\?tI*o\X*efؿB[]#dOywNgR#Srňs%0?(, M3W_i|c]H;} PsSj$|ɣm+ y>ψSs(:z;j=G5yFTZ^ 0WxYL@PTIR3#oWaGy'b.\\cޅMS\0S1pŸ~?lLfX/?eMw ߂ozhu#g`z.,0ј NB 0f<0S~+@nj癖J'i+9en1:fjcё0Sƥ-L{Dys. vzJW̪Z2M2hG&68F,hseCGej]89V]X[2E~_> 2؜dr]B ۼx)܃Ŷ:ܲ ecĢi{\G<aIȕ/+q.q*N!O"V$1}Y7>VܚeGcuocBV0jwcmh,By16Uvv< 5BXLy)ĽVx' Fr0XwaN.20vgcQc4H>&ǙytKH/_2,]#-ݼ̉g)Ei71w4Gn)_ $J޻MGNf-SamڋE3NqU>鈀PƥF-i=EvVF9-U<7*~Ia-ku21O ڐs#Z5qc1B+9n1@=tӆqʩAyw,ZÍ`+os)"/%@ Jή%^L6/yA,iT&rSrwܥGgICבLOgfg&0E d4;Sg2@5fSAD:Wyn zX#y~U7f̸X1G\U{k7=$vCATDw7q1ü;1 T'RX0;S>^.' %pZ>aH:i*q?}=Q J.:J(OCܔf#I 0TKHY۩-e; ިL՗A7.We20tv:ٝ~g0*ߖZ1!LqiC.gb+70p`UjGh9G[ q:yr,d|Զ 㙞 ?=sq&Y=>O-n0JaADj~uMIk.vDsS&Еq閇0Ic^f)q^f9B\fu q 1+܉TvJ{&r`擴^U~s0Bf nTEEwԵ2;/~p:]~Rƻ"#:OKq^%s Tc{ʰ~띟SЇiv G9obvche\3;@-n=#_g̹Ri)}=ƍP_!uNn{[KW|JHXv1)fC]MGw ޠ]ǫ|1С\,xX]cu /9Q; v2qb^%Sat);3Me|Cr9*a`3^nwz.g̥qԮӡLG? LRcge8άܢVxR/y%<}Q==Z6c楛8L<@ k=c9 %)%Ǧ'3~ g>˧4coO9"s7ـvXwgt#ɡFJҳF0І2C9d¬wjAϏI2B.(+)Ybbnc+3G0X;ͣN"`]7ܞݝLЅ(>DžʶQ{NjS]S]B:4x%,U0:Ϣ>=KVF}陔X+ai3a7yvZ4 )ڃ[NDwO^~#ѣP2:Kc-k.Ȋ^k%2\˄szjLL1&qqʻ3dt;MADP+c{jh ^&Z^ +%{âh-bծe~#5[PFcB2-0%n2{LѼb,~aSqȫU6ī6ʋQϻO>'N% '1y}<¼L!bopsb\?hz4WzQb{ b'<]#kUQz9+-+Q! :1MOE\el_&wYMGImOV?812zƹ'ȷgg3LՓ` 5R"7틤.`NS%ʆ=9 wrzns9ۜ_[/iVcF-oXm0MR <>Dqǎ=Ftxϙ]5s^~gs4+7RmPV~jq (P+<1#0Q vD܎J`ZV{5I5h/9$sQ6(;kSdeivJQbssmi~c8Ks~==" L32cxr-LLgN`2Ѭ0)JDt}*d.Rs0q]%T-hJ tjLtOi nvo:6A/Z8Snڥ=xiޱ7,F 8gZICلmKY܍PܳWȈM!ꌚ/1q^;9h= SQ̒R,NW~T6޾ed1~]x: +]438=Ǡw cQTucqb2[zIk˰B.D37(wvy*3g/K9xeJ; zY{J[*.)^%~Ck8ZW%刱m3!0CX/LOĻ,>J}(J%Td~H}ѱCf/a'S vm GInw bs-ǟS!d۝RG>5Īnc!vaX xYUJu\o-;17K{x/ea}NJLf lN*4#| ]f_uwswĿ 3Vlpg΃!B4%,Of}7 Ny%ܓwR/ѯ^/5 jsң屪˞ۨ$+2f]RN/9~+PN*@sLĠ~Bʀʥ ݾƥYUoZ5,6TgUBW jU[۟H*Ú0 &.1p#ڠWAiB]~0}+db ]vEgh):͈I(`|?tcQXDLwgNɨzae>S718w h}Y3T W:?Ƭ{況}0lpao$t6C6}fW_9DIg^LgP S!h?skZ `{|5P{ m!g:"MLC= Y}q+SF22R(Ļōyo"&Ne|+-7a5 48ӿ_ގe GH˸+q`'Bgz6{~=XY 'tD=1OdN7AeTR'3^YdNDy&} z-S Д3{eG {"[.o;QxkT#fMf+g0|*KXās^Cܖ3~bm { ]=u8z)ܠh+1]]ݏGc(ؚ51@iLx0f\RseHɁ͞bX㈻"Z;$X(:89O;b/>}'髠> $-%TuY#MXbep pFpƝb")<^.eq ON\)}!3p {:VX Por=4Q؎=As X(^3<̪L,}ĵ% `勸<@z^2Ma(-lG׫X'BVu/XqT[IQ0&UNV#/f$kxzzkIe724yzo2Wa4@ vt c$hY9ε7%w% Aٞ`H8'()%u3.~4py;.Sxk՗fSobѤ̡ 萯 (gs˙YzC lp@daLYnk{f1vnK\YL:K) *K&,ρ~gmR/KdQ=WчCT\Ks238vp#Ib-c>P@a&h%Fos~"s"Am1L#,D𘾒`do&fqQA4I{ē$*@Uڍ8qK[-j z mtq+0flHg9pL )݄v`c>#<х}@p%ncџi"T1+u.+d^*P1n}y#SL9G_eu=݋1}aD>X6:[;YzOОIwl;AHxرQ-r ӇYi3Lt^20E3znsL0i[rvwNc}7\Tj|ٽ ǥ?2S!2ƙ]#fK^BO1,KJ}-W傰xJ1 秴/i 0Y-}3-(h-N_.W!ZU0UҎ(s,50u3(ryl k? ; {,AؤyW_>wij .k hNҜe8/ܞDvҷ/ C6 e1h/T2n!0_ޑj"*ܗ*-Tfx+`-7D.w*_Ϫߤ12ޥ9ͶOy 89yv &&q4b"wR%Lm_7U(2  2F̺AvT8ZT`)92ֶ̠w 7r].XPm79A3"~浘 }(<#['M X-̙U3Q^дP Sh9>m|])5JhTuIPY-& s49ΦLŲ yi/c%C}fZzz2_K=cu7Eyֽ1Ms;&,[UQl-o%T؆ ;J`'0pԾ:Jke{TJ;s`5(<] J ߈^wV%<{\ʧG \2|Jo%f(c~&r,W5Oiǘ`M Ûo%h !pA(`1 (CEch,_i5Lc8O*Q`M B 2BW(Uz$0&w˳` 8 k3EH\u1̫W FڎT蟑ƫ76Bf~4kq5ƿmX4jR`)rU&Kd5_hMlalLD&~pr$zj8g%z Me\eFFiӏFopz03]3ǥF %PJi/^s|"4Q.bb.1V1j1rCzЍ5g)}a'I1ݧ[L0 `T,};jf#; *uC*5`ORܑuҥ, 5X(s(1}Kg@QPSL/\Muxj%fbtnKჸktXQaW `)!_ 'e@%#6pfd,'w-"* uIpaMv*rf.9"eB5ǰu! _J+9^&FS̽4>/?J>Y|jjcY(pMosuj˴"<: }BzMO1ǯ2#؏} <z&Sy(VJ踄N%WWĪg!JMs9y#pplЕ¿4dǙm۴\Kc)xU@(F>C\xZjc2AcW-t3aќG.9EW 5 3bi2rܻTeeЗJXBU60"Kݱ`?/7>҈"1sZu{nb wipt{ʑ1Nc*Ѡ/rfE=b^950 ]Y* pq@}e${"QI4cw#~ص~7rfQeoDNefjԫ~!cN.fp_F%W9fs*gʢ@:Mn Ö9>!Zi_AwsQJ3̊Cz0Lquwc$ aԮ '%̹ ֮Q` XLjJ?;1)rzX_2^&&aRu#hwacΌD,%Ĭ-aB;-L Ś#E"d^gmeu"Ըe[M'0uVBb& (Oe|&ԮRW-~7%M,;8`:pJgH:8\ L5u Hu5ƒGJ+vk{RbQK{eCw@^(Ꙧ9D}e&ۇg9ɂ:!G0)f}.{C tq.4@0g zF0f;.C`Qn7:FRʲl ` ΄]Mb--2Hx"NyaUѬq3pwCi~!fsG63E{ť="[~AzNO5D 8*ݟ cKs=<Hi L_ڗ >`Z\ 90Q.C<AN8 4@rcw_lu,>{?M"򹒍x ͬJ2a3̵,Û,S"YmJQ+3SҽN`9ԋ1hz*i2fxf(&ebpT?V X>f/<]j1^#JFGBmn1`.U #k *?Pmx<gH7C ʷj26_#3D_KF8f#cҨ'hdI^TJb1 v&&Z͕ ip5;tPTXqslFi#9jg̨w&& d{N!sewk~_$ Ji#YrPUb;f"/Kc9i z5Z=<55ʢl @|,3*>铄,9L$! ϡkѿ]>5˛Hϣ~YjQ1T?uۊdڹ2^͗bc"S''dNMxA͹ _hP|qEcPlT jϰe!.-;yҭi ]r\Acۜ 5g&Suh>uc3}jvBb`.zi G702gP̪bY/=QLh0 d:KkY|3cI!\j+2,GXvc$!8^J:A^3:B5DrK<2=BPXJC8RрIoG'P eep]y _#9=C߬2F 6i J.g/Emr>:=(ff,tZ,C3ZoE)I@~4@fHĢOX8|DBɾrDe_X9 7! CC}>"TR@ Yߢ\KĪ7d73}bw>YFRS*(=sa}a8lje}XR`7M9/Ҩ_yd..k d֘ W^0,%J :_XY`C/A+Sp34#Bimeqś*醥0yk:53b* ǘ=Jv2GieR$\QS}c(ێ,`)ŸH<@nJV(.sA4u7٣B\oLs*THzWTR\3} Lښh|]hk,4*k>hNg EKzi~Ie@W@/Ó@`gcѴJL ~\lZmm[򩢧91;s;u(-re^]18"WA,oi%·lF+zv\T,J0I>JNJc9%WZ=22*ehZE=AUxQɿi}Y\E!$վT'DycmpVly3( FKt40bS<:* 535 ]~[:8=>2Lec^ԩY|76^)1u/ "WT*.UI% o3 rɛ9f~Rnl6̪-;N{6&-Q>%t59 =SD} =35aAy5*Bh+mX7q/.:S8 n[9oPw+טp)`]_3c7)'9әUܰWŌh!f&G"^L2ZhДMZD:y!:?4Z[{gK~9 v>O%7|K_XGYYLCO}X=e*!1AQaq 0@P?/TR ҿ}B.\ ./B.\r.\HAGqcYKH:8Z- ^ r˗/+.\peƢtr/~\aU@˗t(0Eȸ.C \(HL :?rѹr˗`˗\ yʉ 8?ĹqK?}<=1[3=P@:J333a!/_\r_K.__a6 uG=02/aHtFTRt*S:$r˗*ErTJ+ tW򨒥tN+RJRQb躃^eAX._*T}oYR W&[`UiQCfU|dNL#Ѓܹ}.\}_}/*J\qbqܸ *U[]ZS]@5T*TAper˃.?Q%tu ~@6&B1s_n\Yrˋ/(zBTI_en-q!c ҄_*T\/*TR}n\}n\Yrآ+miHrM%JTQ%u*.qt#lhtCۡab=0ƒK#$u\2չrοJ+/qa O)D8f՟~~%uRu.\} _CsGAp /u]rUꌾ K.\Zҥtj$a0^J`Dfaf#% ;ch[$]#|oM*!P%J/lJJ+e1_ٔʘrԯ}.\r\}*T+ + l|B涞 2#ԓ.5io_edͶYr˗JRq ˗._\QǢ e"G>BQ(*$p`˗.}C*;.\r\}jWa:nΠbi{x* +u/K -(,wF* ވLڮMsX[n\r.\rR'f/6XvkLJ< n㺪eOF A* M\a2X\uV+d4U!"`w2yFXZLPr .CGt%n;]*B `[ekIܴ(䟿撿rӹ0z;T0Q8HTAi,splXUo+L`Bj|ےpӎ^vAUTUr@ ݩxF- ҉6X`JVt*422tr˗_r J*_NB|gh6 fc ANs%$5& 2]FE\`awt$K.`=//]W{rXIPHͰ]/l h4גBlHƱ#߿ig~0)#Q^B}~/1~isX(ϘK? O)׼ǩœ| F":_*W0e9꧜ف!NsSUKB:0 !JoRv00B#< dSxKY/d`y Ц^‹c^/ e88)Ef!PӃ{0I9!npHW .,y贝0rǟ5r` P{ioPw8B4)ōj*k+LvS2riʆT =o3#Vf ;+ODA, B!n=Ņxq9MBϓ=cf%n7-o%[*ϙV Ru}@+E?\rѹUnTJDK1V9F$yQ! ՕbdaR8+V-)9KHHW>yuhw$%5˗._r.\W*\+}vEzd(l0(LZ>_T0A r|m,%Zd:Jk#s{|22%baizIf; R[*r9>0m5V򚔆C~f YuӮ 7 BhrԿ.\rɨof);`S# " X' 1.Xq ]S!qr#?SdHrX^ ̏:5QtuS&Gi/v/99IsXr?/B082Y_Әjg?Ws[O*j]460T/:=e4XX-yJIv쵨<̮r I<1K˿}wLx)P!osAոm;:QPJ)^׵6OD*& $NJ_E4^ ljRҹr$RPG"DzcUn W]JRU[J*7 q!k~JU7.ԫFv)ح@%괡_.;3yY7CՓ.J pS~KCβJݝ[ Bo_*TIRWST\z,<Ϳ;#i}=o+o"L*Y\ޞC-eeuIyW*j& cvsA-koG ZP&>.(14ODVwwwzV>+ @ ү?#P ZDHqV2ŔN!S-_C8xn$_w.\_wy`堨5SP=[]Uhߨ+%Iʺ!^d"-r׹R=Ve}t#TWM} Ǚj'kLPY1P1 #c{j0{B|l2s0e?Tf4ypwFoʵ 65D"_ '%. C@mcǍy~&mR{ 7J/H N_rr%J#/^zmm^4Lny%Q3''=8MAoklJFNפx-e˭+R[Ÿ.Uq 7.\"UmIP`̺֋UAZ&K8! |sr'ĻN**WG~0UxCoAMrR)Q 1ejleϭTZ\ L RԡV( %r7(򐥗FJk&ْ+l;nT "^6Al? QEB7i3NU z Jkk0ч㔙f}X=+E| =Cf⮾kC?5JӰnJM$q 77)RV9Db;g{3jø ^ M!{J&ST8b0|}n\KrkM ᙪg`N%fi)nX\Bh*~An?79^,雔? 2˵`f+ 5Pmu;[26aB[*z2,!MI2p9WBmc,tzWr˗/L[)+ZvsCڊٓ:EXJcjnݔCrw _L܌ؽH)ݧ=@;pU/%QvS98㜭q?wrSO8L]aY#;wѥKiK)c7)c@L"/[1JXP`h[y!EboeZqO{C#\_._/(4rRJ3ʸ"9b5De]l"I))?v2ª#bu+'E`⇵k{ݒ)ǿ`BW9\%V, ݕajk*O*WQ̹D׶:G{D|Lcx| |Z u;yϠQ)2❘V0Z%>' ¥={9 J^rl!,!߸2, JN-`!b`D[QYvcf`2`)q77gSjB6>!ݼk˗/r%]*k#rf7ӈ4$57,`B4#*e)G?,1̺"ިʇSk-tTݨX hEs%%==u<8c;y$Iڢ_O37`|& *u}HTj;?bielU<dHcC,sD$&651ah-`ERJjXh` 2_D}Zu> Ha# ʸƔ6?}ʘG$KKK< r,1 r^2 1â!:^qm̗zi~!ME{=OVHv2Y._}oQ2T66R^}H?~lEk9S }eƕ=O If¢0bXb7sv<.\zy"C5olLD\!6 Kr}o\r+øj&ʣbxZr66.0h#M`킣UNQ,9 7ZEZhri-,QU-_!b_r~LEN% Y8Vˢ\˗/w-eD dv>'iዀ6"C=/SP3Co?ք׾n6'{A*ntf.ܼfg[h4ݧ?n豎!}X4Z!)J7fdg3pc+}ށTN8M{d0n䲂csΧm>"[Sߊ.ϧw r˗._J7/tPiI_ ɦxc d5c0O5Jk$BVe!M[FwׄX1 bCzeӫ@څa pd瑗y.pT>Q9H˓u}ru/jW}.\˗/_[k r ÿc3d0EoUKh0֯f*|b:neоY ʚQMN#ZbJ||b#1!b#IYb8a&£0Uo!J^7zG+"+B1vP/Sʌ_JVRY~S+vy!TiBɸ|[2%Ɏ^ kJ;[C;pTX:ZWbam4ps}53c2g[xh0(bP+g>f~#j3m Y2BT1Wous<L4~Xu *~be˗/\"i&)㝻9_k'e3l-a8/ A._^,&wRHϘ+ z3b@LTz&^G{jig鸎ځM/o+3 ԳRrd4BM :nI++Њ+~(D,)\Gn<:e1w8~f7\2}La_bm5 U8#22OUM=хJ*A.U{\+-ێ5L?.L9mJ0TJw?WՍ]^UM^Xy{6(w," Ev ;QB|`X7 ֘|{JzW|2W.\r ev~ }?|:Vb<8}~*)q Rӽivj $2pTh @}e0w~=Ȥso!SyvCq~? ," v{':#&jr Q}3c6 6'j-MرSJR&tt<^RT>gץ -GDqKƭЪqUqy !pʏ"ݱk{Q5,?f~茗U]߃xbݯ!T U?uL7LI!n$ϯw/u@sɳFpb:(ٜ&v<-!Ji5]ahj|NpqG7īf-gzWXp.FX}TD嵍/\< lwA-R]ц7NX- i>%tB!rls%;.rRJ޵*_|U$WoJ])yM3cOi8BG &)t"J6K* ^pk$%+Px}Pp+ T&IQpς ئ$c+i v0Ơ.܌bW!Zq4y!YrC"b6VHJsv\?BG3v<6b ؀g!|0GXɹ&\  C?8drSl͓fGo$e)cZ5'ҩO M[RRw3ȳ+x7e8EsaqUeFEApJE$Ko }o$z*hsk|gs(J.f!E ὏ `,yC}J"ӤKxNA.=]мɦTӲv34=(+ T1k)L`XR* (+[_c3%UJ][%s+?ځ t(4MɬnMe=̻@a@Ƽt T's>F½ɞ?L.U}FE[%y8T NrDB QH @m$ +xȕZ3@f"3 &11T31&tX#ζ4d 5/C"i UKɖ/0P_{k _o,8y^1nx˲1f,u+VDt5߀)C@<:g`pBVicАѷ]ku._lwe[""mƛȝcpg[}(S`ԯn&N3ɃFgusf#0eqY 0 NnuƬ^Y9 P( lL@N Өy8M<8pJMn 036S4\9u-g CWkU˗._KЮ͙0mCE %ak+>M]1~bs,vCΎ dx=8LZ00ො^o |=تUDϴ^)7V\^Sұm (> bjŽ3 1k'#Y2'FNQP9P'?&zԩ_.=YkіU#s_H&L(szf3ty5`'Qs4$4ld|cU+w F1Qq3ev0KȌn y ZjF>X{ X5EuƠ/wHnͷK7%$U33U|f6cPaM{ƹn)7Vþ+/m`3N tݚs~ N`?*`rU'(Y.Ԥ1#،aYGm) X%,j*v~ێNQ{[W(!| Ǭ Co5W1Q3HsX<]AgT6?K*OOWm!23ow=NB/CR[%L_ aB˖K",Dl4oX}Ec{+NC_ <}#цH22ҊPB EW )X 1b X- XD p3v"adv%j ¹ca-Kޣl;Wg/ F/Y&Wj+8lßlq2N*YN0_7‚lՙ> ͋!&צ,[L R>Pq%I/P'ǤXc0I?셞*/aXA PŶ im>J4PdZŔpOP[,߄Y@+UeeIYbSukQ3`e#Cp4ªddcMU2VKa.Wc Ԧg]7Byxo>=h~6~|j#W%.15Uo_㾗/꿃SWt=_/10)tx ˥e?T ^~FE b ž'.lT<69հVDhoL4nk_-Id`66s^t+ )Z4i 5`[dޠ~Ț[jA1uNTSBhƫs1/&cSMiLpKxqV>+aRp!/?bA6ʬh [1gNDZg?_V5N4jpq;|E=WR F_'/g_1 Vo\Ꮏ&W7J '-UhTAC/"FemyBdMe®3p/Zb?Qn6a@$2Nl8#@9le#.!9pzPXIS +q*z4kjs?8.Rv0.Pa]438gI@8 mfh<4T$݈^/A(/mmyTXmeI{KfnԗUf%aܐ[-N*YK c'x녮gljbqw`wr *C[cpɗ7lӫy X0̉oR^U]2 k8[aOTk./ByBllNDǢ zr힇_ORkǘY,J;MQ*˗6S 4nɥbR0K];*y<b,WQ36 ]=t|v `ÃMxC Ac@J3{UԢStcU 9=gT9S 2I?C2]ciiBhFfnb[bml65rexLULY>8(j.l\1UZDsue ,MkEBƞU_%kbvqQ&j^,y82ZFh"-d N`0;lmr wREE0k`, b8:Z%ĻPklN;c+8e_[wc8ߗe;AsGvW඲_dG¿~12[ǨZudҥ}]+p؏@ 0j_cVgٙc:W}XF6W JSpߎ*[Tp*RKr܊%xnʐ,N3_b| D4 Xp C" \iż FypMd&Yj` q4t%*ʇp_`j9Xv-FQlee~ tlbCXZL)DҳErj-<8\N&9cx`51F\YcWGtn_5ÕL+JB;aB hdI|vJHgjbQDG9ya`pfzFԿt 5Zu,4Ŭ5z׹Ah!Bj)V4h$vn+%L2grI(Ҷcɗ& 9sPagI{@T)(xuZj'8 uݩ{@XBȮh9HX ^E k0,- `J?-R#1FU<{U'h4@ x@̢ͫ>(s {Q= Ѻ qIW`RgRPR эoe4GMQ«k:iݟ0A@!\mB/ٍEaEFy&]}7 fMxaBw/9_-ƗOy mf*gB'Nj#/rղ&e0`*#bz^K Ib}(ow rH y\RІfҲ0m KTFRx‡vfPw}60he Wn IJaE1Klp*6?K@ݷ4'Bt )DNOnvBrPxizI WEoq3_;edx旒3Yj^NVvޛ:Ra34鴅Ijͮ$M[WX{"7堂W;Ɓ`8X@+eBPbOk֪hKuhYWʦX[0X+u)\ؼ*˭AbRႋ78#~ H19r\jk_eheB[4LD9F(KYnuĽC燹Eu`m?ilpt_vT`L_ ewXAXq$ե>X*v=H ,HU5pXRW\]2SD#BXt)صr*3Gyc_/e]z^a_)A>)1MATi&*-ʋdٞ[< ׅѦ0 3^EIP21|\ Mבw2xܸm j~EcwKu8D \&<%.-2z4(F^ ^"ʽT@Rv!!m9~g;n-YQq+ U:ז&ZY#T;1KE3ZOoGیO,C~~;_^o4D'LJ%ƈ@C1EH_^C߃hN܁i}.b_P5DEKϙA8DYMiZ̪ruX@CIZzKds X.Ȳ1峼m1L-n YE(k+P\Ns` g5* whYfa}Rռ9,  o^m|,CTc4B*۫?@ qC^~+pbA1X[ "98z6w u ט[39:{wB<,_>ŦNx8}3F{oL}:φʳ)| .HA/*%)[Q^gWjZ(Ⳙd6^9dEٶx ?8Pq~nYH54n!7Z/,%O J:vZkl]=einRVJ%^V5I, f)I! [  Y.aC"cuF%+ڥUi4NDcsPG{9*YAv9p"` ~3)$L~tB֒kno0缩-Ear =t Ҹgh n g 2:*Urb#IG'r ,b_;JSP"#PET`5ⸯ)2,/cYc/L3h@P _r3z>5b]XXW֢ڣ`g#RF@Xp ԡanԘ!U@b--Ӧ̀A򈣹c0ѷ@p9WBAF!k)"Få۟rK.K$jŀvVJ#] n"3sD*̠74Ns) 蔭SWd$o <Կ vJn{1Er_Ob 2vCcp{V".yb_[`j0ૂ9fOӦ7h+ǔ{Lr dlu˵>l|&<1;Sa2`+54qBn|XmVë;QjsX @LSVDolJ5}a\=x͐x?.ގa.ʍ^fIR-E* gf`uD0B` ."Oz(K֭P#$雄R.+W>e7]-O-*PY)36\(\J:=(sr*"3p."rTw)6`F1r /Oirso=ATډ)wOhP_ aevPN`՛ٍXچÑ S^, i@j ;ucgDV ,3 Qp=Owq`,s$.42? G"vƍRryʖS]$DWQ0ȞA`Bn{z$Xza[Ь), L{q XE/3F2c ^'g_$շL(fjw nf)lD b#~e}U lgdm2W Eh\ybB[VD.KeoK(X ̝)/hb6Xskx_1Uu&4TbXUwtx&\Lr o9 jɄ"zk j2 4AAZr鵹!#'S08mM׉)ŵUǡ!)nO1-n\5(ܟTG>TZ\czTv 0@W1 @0mRvRtdJܼR@F2"54BA6(gLkBiNfRQݼ*0<,805 g>=2R/m/5Ev7;"79n 32 %5Щ3Qƻ ȿ "WյGU QSN-·.{ʞm.WjN'Ԍ,(ڰ`Q%,.@|B O[igOx,(cQs*8!A@!Z\"ɲd vvM(hM#$=Stϑ׷8cZvF#SOLِb!: U|P*VZb֡O+SK/cPx r {/"ٽc30a,KTBf{|Ӵ3Cee\[a0ivQ0PZl3\ҳFc Pg VJ.`Uyq=xu+46\h+ m{]xϰf@>#v㰖)^V.1I퀘 [XٖuZ)`&l{٪9kGA(Uut@]T+y_*\p=fZS*X~p܅m9m* u3oԷ+m!Ig7L_buRXj}Pϸ's7 b ObK#~b-(b\sLD, dҏtfR/;ui%^qb to!PggkXAScNC}ojHb1:fKF qN?.e? qPi|v" &bKq tf"0b]>#V.QpswMcz,@[~b~Q骸U&6 [!+/}azHe2f-K8q1N֪UNSe.,7pDh>z%w497a*Ulmh"sb k75{bP]Q'Ee5wO+uUDwfljE0[w!,чɘY+[؊A}/~]hj?eAgQ<35V' ;o/,lEe. Q6pY2 X 7*S;.+־ɚAՌO.YV\3^<#;(F奱O~Q򧐝vX׳*1v0# M)FhFfDfY~߷NGi'AKq 8Ɛl}V;B&񕯍"D(Ͳ|BEN އ/t$e[CvdCL MYmƎ.TWp =xүew@c%h̨UJ5@Ҧ)pneYJ0P-"aq`7oi,!bZ+q( y9Y̻q8R e8I46eY"[RsHhز4A…o^p^7ܢrg2ݟ\;.ị% l%B`QyG\F[[\% Ơ ^8DUzUl*D5'1EW y;p56b( :7v~(MmSVn`:VB+l"o-;̸ՋL:D, fw~rF#: ߴbΘ%&ILdJq \4m.qv*ٵcDW,3,ᭅFBh@f y7Vr1-qU@!yWn-ET%hY6S2ĭR(Kl.8n4 'l#ԸF.c>cVhj#( 9v>nS(ޮ+ L>B,6:Uj,LS^@fP֕ y,he*5dȇvQbr#SAu0Z{̿ĭLV(6/zeо%r8r4#-%Rsi̳<_/CY2 >ks28{K"\1l^Ɲ&b|i!X\H`j+,B >a* l׻.pJr@-¥Uo-SXR7[d3b5CXams2}43اDF2𜟨KwEƍ/Z1Nd2n'޻NTd|Mx)?fm][~ɗv% Hߒ Ar‡1iмX4X&ʓA~.Z.GI^v|BUɘ_4Kڲ,!A;( (`Sd+GuWtq rZSW5UCMRPXL1m8|@g8̡tlm,]ʪe.4M1}v2rITĭ9~PH߆qdhFܙ7M@yUanEE1lZZ0Pq@uK^W gWA1gx-S%n}Y" "3;'0h[Co-("@}b_mANvNo࿹_wCINvGL슕h?/v|~ S~?a-XҲ+?0TZFfN/E?r1Jⱏ*{ؽ1.U.0s*xw|ᘤ$~I&]C=K0]'ܴ 9}x2i4Xd<&Ƞ6)|d3c .&N{\UԶ6]V aшPA]&ͭZsSg򷃛2*M%^M&u 7bV@/rQMfDQÇV1q8"Emw+_{&$J+;@4gO̲ ˳߁>D/ &Z;GVV^m)|R5H&6=`~ѨnYdzR`M".Eb]R}EBoo`Z&Jx ߙfj5=E" | !Y3&p ι"$g;˪$D4,5M]HJ&X`6,FTE ]+CYV]7Y]a .lͱE 4#1b3 h],tby bpX%%su[f Qnh&Q|D \HoA;`4؇!7AnKa3guBpL(o}K'Wq F \PK$̬qIN},?07)-iܳq5 m2Y (#k|gXR'?#QBo Հ!m}@.˚Arr%-]Y<ȋz&L&{[ÿ2zLc : 3-:4/}iwPch#|Vh|ƹ5rGwmf:w2RL+QqnY4شuD Vv Wj1򺶧kAR+egb*ཏK÷7@4%1M]%T%VX@$l{fvsօ ^W9~V{%S$<"; #6_=΄w}RAbV*bGSR\c4;Lf%DqKswᘀKsMF;BGt뗣 2*qVfh6_lr+$GDwv_'<{)cy9qpV\Uj=ʙlRZA"Φs_;#Hbe&!%> Pԡ!4xҔ”_DTÚnT E]7W%"휆Tv.ͿE€8)e*]{FexĶedTƝFH[Lbv @tTC|Z\pJaAVjZ;cT*)n_!%ў26Θow&f,o `,Z8+ g S78n+$.L/"k}{ Jah*Q~q7|ef+ł1Ʉ2[$c,eAiZhU}$s,G/ TYj"AbweCB̓=ux]Cl&l|4ZrPX45ah  y5`=;9e 4A ئ`yk&XQc C5M0ԳA!o*!0e68GLb` –/(\U˥%b'f bVDI>*)|2C5q!/4=[LH6%i!abEVjU2D~X/UQz>Pܾs6*bes XF ኹJ>lb8鋯A:'"xS!MT%(WB {DAn7oy\GGZ!d}Bh %A*(QG{j:d n -,$f [Bqm)"Lh UP5X[. ~+ 3׮ oaߕhTL,E"c@U]h,נcKpro2t[&y3gzK}F^$mUj1}#wcU1˿1Ífo'VdzIH[tL)ipN9Z*dآiZeQxã'fgyO] jRq To(Xٖ`2)⩑1cx< ٘z0A H򙋖g*C_A,(7!@0@[0I&уTVtNnWN ٘,.'m_*un֠q-%j6f)R ^{K+UF6T/q>6QVeUq3-D%VW[weoUM7ž#f@UZ 5(/$ei+loqi Ւ֮i5J;a3VŸW*[ZUPH8&;$4%a|lq@&oD8@oo/.R.^,?WIBgeЗ< 򦒺NT=2c!ڲ@?XcK xaV]> Lb}SjI4q9LRan}(:Ȍdy1Q0)뙈c7yn*FQ[``mf5{ &hes3=j]RYwjR)4QT*WiVhSl9bʁXj! fkLJ0;wKnT,hyBk>heWK)7=<Wjp*9 eXj7r|aPzv5vq{tS<@*!E2P ^pA6QIGgYvHKxgf!nw+LDVdWzdw ֗=HK0W^ yYww P1߷UKGmoiYNe-=n9sEJxǖ`97'NG EU8ݙƕe C 1J-pDIh%Z x?'a97}O64@tLR|G&theԔ B("d&a.Hee.q~h [0>FV/x -mt@4Z)dEY[fc?2LSASM )6ALU#$sNPZx9qnŸ4#c 4@wt0_JؓU;18#[ SFVXcyNM;*)*̷KGvA "0Kҭ,J"xӏ(jaYŘ7+\ ɔLQa2ih ;TstTD丘 Gf@{Љ?r zVفQ9n_׆v)wڋXaS|۽],q|E0!:RS= Zd/89^+kb uDWl)v8 Af{4(Yyn̰䯍{ {Z6DkRQ@  C^&jD!6q~ _@zH|FZ ՗0Qq{I|"Pz-AC6L-D)4spq`b0^c Kv,(U|EAnp6xށ\.c ^#(1TeLO%bR >JS 0eAH6ʄiWQ4;eTw}xD7 3;'%s~Ҟhܫx};&2}יnnљP+, qe)O0C men6Zl çDRT2|nʎg~ s~`/QUa_{Nߘ3 ADD] 5w `N AV(Ķi5NۻBO'~mt1(\BPM7uF!md ,rlآ^WF'v52PZ܈~'0ZV6P3,K">6[?b/s;vr^QK ZU;xT^LKg,n4/Ҋ(I9 V wC֠*Zp #O5zn@[`)w*K5͙nBK0k9̍5ey.~>b zqZC|Oٖg[3h |3n|Jpnr>ʝ?+*7VPLMb[Qݍ2,e ^ 7:$Di-I:{ڢRS`ʭݞd?]U/ Y8G+}٪Ke ɮPGI"ɭ `4Ɇn8`wlH3% l=V]$0B#N_c/aDĠS4J3z`WeCEwTb9|o1E/bw"v=q7:i.CCheEŰ('sMr֮4"`d{ogԣj7b kR@b/u0(f&ں7ĺ3wQ4y%,4_I[MKS#' K;#;a(:ebJs~WCIxVa]O7o8 Id +/۰'`nMO1I\> 79{Nu7@IPttn,4qW@UZ" v@{>c)u|MȽWI [N"#V>"AKS!vfzK8Cؗɦ[xBRaa5ŹLs`˖!PÝQK'AwCݧs&j)[Y}ٖ2O1jA%:*eKP^}sƎ* + =Rh(}"!>l Zw>e#Er+,Os|^RF A/-=$g,ݡ~1l40Bd)m'Aߚ1J,.kL>E' c~o o0\d{_$טd'\N f@U@{$X 8{'5?hcn5чJ>e/D{6U;fW9XG}[!q13a@,6W3whdy!fQiw*XEx_XfM A`̢\Y,qzc,}{&vndv˫ۂTļbŃ._E˗J2~^b8e203E@EA@.Y'&_]i< qy|a8z#6HRŜc#4/xPJyy7`1t=UCkaϸZpfDpG?A2$h(A5v67 NUocEUy{m%Mȗg0^<%"Ҹķ0UhUe;ZqqF$n}s9J(tV(a9\;I 7p:1vkYFmf:+w)N٥v/V+Lʿ3ATo&>IH&f誶*\sY;k[Yг1"& `Y{pK|EWe;%V4Z*Tۇ1b/"pA AKja q͌.j9U1[BG8#,d- sZLpt`oiU> )&Y9!.,RwRYPXC"FXlxln9۩3Y< je,e+6"v]۸6V>p#q7M|Z& M'i4xѭExq1PѵʉQ6hN&OeӦA"hd0ea1 mҎZk %j=Wt RR? G"b*Km~hW1/e9|sNnOZy UQV8_ʃQ['y$1,A98`rUX~܍@A,AAsYVjߘ7.i\L˩+e"HBhQh*{֫{/Yj*SM!dQzc:0ˌ9`~^ 56e&HVaX*uor;M*, hYi̻*0^a#ܫDފN: 8!x+k Xc*8>S0{\ Zô6.XP. B`sCZ?(ca K0K 1:ZE[.1,^;&:x*2{%; robTohV+g>zCNbmeawU+K0b8|=g*d4=ĨTRG~bj*) oAi0\EK 6"Tþ"l 4- vN>LA*{%ADXPDwao0Y}r0GȏZfw?Mܰ.iw.( S& 9UPo.sٜKo/><$UFx%071>F6KHq Dz\pC厭w% .*%`x8nұ,݌tTBext.rE.1vS UdA z4\k*LA.h{?IGDt)4XnBlĺvg},UܼKn̽^tgLnxJ9^3l"$aȁ LM/h;ʦz+%l5 ۫( ӵ8 z[.1uW8^ZoKswXKLb/ q"D= xD\b^}VWYL+dV̦h /p/,BDwTzo{!՝o苓f#kf࠱>ABl](ɨ' CfjhYi5aB A/1q )E(o2?Ɗ`{>6"Vdlt֮*x:Q`6dіZĿDW3z]#`4q*O䕝:i@Pr4xw-^+\9yA̴Y9&܉t +U_XPhq J dœ[_:Lo|!գ)kO4/2z0?!wO8o [>(jbT7/GcdGEc Md75!v BF<1,!*"3LtJK%NzBu OYG1bH{Kpeo%o a ʼney06&Lp5 hP^cXU{?1qLeÊ#}0[͑XWT<#+%K\SH0_I$UMҷAt#5<߆t >J=%SG#A>Jt*#m/D0O ހ~п ,W_P#H`.%-ۿL _+%7/*dZgYA~N|,H+3ƩO7~na0aWZZӱ>.6w@ TVm }BGDx%)dV4&0 f,4Khulpb\ӱ 3*Q0iUO([FO;NIED BII0_r1%l%o1v"09.!pkj4XRXpѝ|+6prŘn] n^R# U<!#(8Hiem - [N`J.T҉S" ROhk %8 u >)geQx`.q,qZ"i/e0>UqNJ\x @+rհnahG7yB!(D(̳-X'4f9[6;YP̦t35<]*%[ɇ]@nOD6#Nҽ^0yE^oh0`e;&-@yd(tx)1p'`R^E-5{Ga[_-9TեxL+m8ipV\rXqxE.ձwNupܶ9ycu)فR9:ҨMވj1Yj*!u]$\-l /£y\1i撬=Ls>Qiw`fT0dШimiX&e8TUv"( Eȯ#cpN,z0n2ZwYZP*A oga`@ Q/i -@蝪FZDM©_0 :\ΦuM\ E6V8ք GB@l|ah+Ȱ*Q'lE^fop] sYsnarX" CR%8h 䔥neIp3F0?0 hyv!^fji4eNK[x8Gj f%af/?c/ZK mW?K9A]!fvq-{h4(Q @+ZG嗟v\*,fEl^&8q[LP"rlj4 XZ;B"US l>).&. \P{)pfx2>/¬r/xx/F%Q_L|?!Fc|U_ n](N|B#P86Y蛁#agAEA18A)QxJGr.0T3W*̣]땊)*W IV]w"]Y .VS.9yT(հe3[ķc wTQ!|Nڌ\ZKxE :'v"ۊkUE3F\ g'uk,Q{45JᎾp*4J7rCe./5.a–-OlNF#+Ǹ*Ih+4{ 1%zhS<˛--,[9=S1q12˷`Hsc0S\ U}Y>X.Q)(7+5)Jw3eRkAv`s[@8weg\@5 -L@ o /1pV{Vrhde &Z b{.uu(Ec 72ؖdHg&4S-Ūyfd܊hhrܸw !ouZюoU2;`ٕX+rJRZ=Մُh6\@vąMψ:C0qIP"X9 5~.YT#DS_4\ :|8"OEs; Z*ٰ(G6gBPKߐ|{FdP3JI^ OxfeMܮG@oQ?vnR (cH ؐXm@~@Ǡ¶!EL7=VPUwx `/~1ZsL+F^* (t$SDKXwQ!aPM zŗvpj%=!h8%2FfzEiYBzO &bt hUñ#\+*d/+?nPap!N@F.ɖ{ a(%Ǚ B\b&t}gii[lG&6h<D;~.LӔ|dQ,;X4^kQl̉@5sXv0\#c!(mjYJB<76ŵ1U|. ZKffx3HD9) Icc.#H1e) ֡ܬ$]|O!x3r6c.m&88Hܗ+Dj@о&{0EQJiT8E QM/&g[oFO.[(jX$w$ݰ9:XMҸ!n%U-A@ ƒ6@~ |1H06T^ҎKGh ʦx~ݡ(]Z-Vbfod0'ZWlsC*4)8ahP#I%D\m=4 +>VM'ZHUFKwy](BQk - .2ϔT axUvz.YWX9ʨsacnC@385)_#ꇡNB0]Aġ,=&40 `'qolø ~+ R-]Q*OG4)!⢓B`= JwSU}پ,Xbcn\Me7'VL)bōm!>,ߊ_TA99P)Uce\STF=KpA FB,Xk[.qfgҟqݸjj: >b2m& [;z,0a;b D?3xhX7bʗ%p4{;#._15߷.T;oQq"'kaP^HװE#]F]V=t[)l=%e 3qnz/4; Uh JtFĺS[fV*,XF3Z@Rk4!ayr?˨9.ha a Jހb7<_اH ,uQ2y ;֭C\wz!106,F{y!ώP7D*w+bzIrOܵqK}6dDLO %,Sz')a SK2+%Ĥ7 *%5AЇ k EP8hdR[8-5Ƃ#d:dإJ卛{:[s{O":(d+ R]d] %Up7(EGs]#dǁ%7B›Hdp/w_ kjnY N1򂶷xH׶0 ɿy.W^y px{>!֤mmzT.wuM©!r xw^ݒKUT.5V0Ʌ aq w%Fyfj 7mK Kt'3UL.5,ɿ~mbĜMͳNp=1+f5Chbw\LȆ%$RRM#..9R炇?E!Db(;ɛٹ+x~ѱ&f#׉IND40JD[|/ /N V5T>%4k&]YcnR\,2p+QcK2<nW,̡RȬI6ylu$ |DmfK)-МSeA_æi;?iq&Vjterxc]q,YP\K`'Ld"&l~N +9uCaRmލR&oFpTFW١Z`]۟$uen"e~MYu}@{PmB\:B5( SDgR..)soc`"fy)^P!P:f3%`^J1jwHQ@*a _snpl>eCT S+'{.V U(1PXl@2AZ-|9yiW #O %w3k6afjJ;cM0yJ>FlQAPVS-賠86ja@$Z7eKf:?!k * xB cs̽UJ%+d|M,@ 8{scmÈW-65 KufrԸ K"(!^y?FeW@`lf~zYSg[T3f7@nez]C.0@]r,vX*w2 fj+tUC1^x{Ǹb;OB qG,ޣDEzj-`&lwءy ?gAĴ Cp゠#l 7g1{XU0.m7;0U\.RβUU0 [[Fp\"9@QqAlLveL兘-a+X ~O$Kdǖ:n!WhL؈-֏ܻ/\qR͌ÌZ8}I-jƘ`eK07!% /UɚnT",o(p~P-г&.~cJ#"@&_, ̂°ަe FT 9L o2p 2P+d`hg{vo_1-~cO1TOw K,L栂ޕ&D@u.٬ƊU.}ȚV4dU[pJ|ҖU dX¨̧Yȷ-UhDvѳaR0Y%obQT^pGȈ-K(Jdv -` ûw+D^ NϕR!M_IWGRЂ{ M%jNkFR[;G3 PwZ +/aEu>E#dyVf xXov7$%)ڹG)0zj#AjY mxFū D.2#"vp/p6=s(ܮQ悆X`m7XJȇgq`Ӄmka ̶M)RB`[ &-%kTӪ10q6 0z+#+f#A|$o%C?؏TWLXx؎TY6|Ԫa0@HH0Td ZVeArQ|m"4 >me,5; +DB(lR[̯$ P )BCD\`Mwa97b(&3h[tԁeQx(\$b#Bs 095BEуnWS8)|D=tЕPKh]-MXP2f#Rp:V's0vx<&=uiو# mm  s7M16` KdV(`ef<^ҸL[\"]1ޠ|0<^UycG$9?bˈXrbjhx @RsWKޭ6ЃW,pWf|j KU;\Y^a! M(.Xc*86 er+U'F_<]=q\30C Ҍ9.,Bs 2R͌J4 ǵHÃFYPGÌ3^̗`z3n l I4m̃v7Ohdr5* E& 5`_Mie3%hɉp1Z(k@*E'^<+uɉ]pCL[Y%TlDUt ;V']kp0]& \D(:&iu瘿Hmy/%^& ei-V,))> Z?e[4!ݓb)" W{+eӕ5y2,w,W9zK/B{f­|6 F&p+z{P鵗Rl<3{z*Ux+qa|"ysBu@zYD,9^K5K}P-艔K>f躋y/#2Gdqn` ^ )Kaǔ) \WB-90 ys2[Lfc|H*̭@IK95!t'4L2EM!21 kj92 @L̕ͅv0ӄ11|UpQ79En`1,g'yx (K k!0ґ:ROҞ{Ѐ0md=jEdۮ1 B%j Utn]^cmԤL5,‹cl5Z muzZ wK7uX 1mBO+k0q6L7V` sNa=HC:a4BÁCݿeͿ)y-4F@ H9Y,ړ!|  ,ض\j`(Ja}NNQ t,@q]EBPF.ES-ҡFF4{1-GSIjfuQz|3#3j.Fc8z1hGst옩(.UU 3xc v%,&UxC +B6=ܾOd802›KnnAo}XgF͢cϽ/N?1R>-+u^ ȍxUnC`UQvCw;_pT-0|~ 85[r>V7Jm{>(Ÿ%DSfŨ~ Dq$@ ˂pG8eU&6 xcbC6Y%%%0p!mh+G@a-P2-=ڵ+Mvek,H!*gy3ʀ2r% 3^B6(wP= 4)G4TZEH3V<[A@#!@>)vxa'/cmJ(Pa8^c7}" ʯ+9[/P\@@#PV]QmObC)`ܡ'}PŏiQ'6;h4kY%̳1"![18eq`áYi.D>yFg.Z?aIu`}B_yeVA 7UKA9ؠΎuN.a! *iAM-*F LiĬvܵ~vm>NH`KeSFY3B*cN2F#sw˖䬹AeYZ R\KX{׬v$.k ʿ3Ef֦'W=0T_Kck^n-ZB0\RJ ReA%u5P ɫ ߃ kɹ_l m p,edgS{m{s ,hzki͡y-7͑ m+=)xSp{gG`XJcU9fhbL@4. ng\fgţl~&,&6E-n,&B LejQ Fy4TZ6_RR`t^5 4i棣}9鰘"O,f?LYA˜y]) ]+0gQBI FqU/]ыx0zL)%P3Ig̼.) 12W%\j~JٚK mZal٧a @jWC/71 L+eU,<L5dR,69ơ+Zn? rȌ.+)2CAR#;25< @;=1O67:Y"~5I%]8UċBk0ǥv&Wj8PXJ,68HY;U~SGJ~dꩤyEL֒T/yd ŰǴh18\Rf$Ӝ~V 4l֌*6é<}"u(c xavf ۹:%% %؏sf1#1!oZ_8\`T֮Xg&lC`ULP9MLFt}lk\@+Mʈ1x(K3b-&Ҕj6@`!QV.Xl4>Ax啇6URLD6r7KkԲM/u TDA/k6@Q5QY a*6Xg +nԠ">pK3Q.8qMl.*/G0O`jyߋF[W.<\Tqh8MHY#7]ŀi4"a;qG Nw;%F6FXSWuf1_ht+X9IzJNjS`H+meyb7 1^I_ Zns/ ;-2 Jlo.30.w=_5R(Wph袹L:/1_k6h-# &4@s?PF0R(s'"8NLq5TSHMʱV ᴄ Zv%8jxQ*E,(9EjhةH m7x'.L@lpZ`\Qa,Y,65k6g^ˤe`K>'.Vrfq LJ М6isV*}0Q;Eo)W̒jзm wJ-0%w?A tj7S$q^if.LF  Ma!0ۺOИtèXZ$)g v}m? *>e\Ee>3V>PU߂)v0]ַ0#L9WٌTBq[m_|{㢚Jȵ T[e 8VܬjR^ TF4 hdlcdp b[j^^%L7pzfQ>udAc~tPc3TA¯n{Q2q~ 9VK:T@aL/pL0,L:eo!* Jh.jR󽌤n@>%%%TA.23<Ŏ Vn?fHm1dSLüe^Ⱥ+p2(cظ4myaaZh^:CI䀛unr4$6֌;FXuBzc?3FǵyHr=6?*=Vd'## =1 JeB[oJ(Pji&ܥ[dFTyDP!:S:[Hp@t!?drߕJnʌÍ1=Qh'Q>VXj":ˇTXd@HfX Q7+!~:'J1Fd̞` )hӥ%* )fO  ,%j\-~Fzad3/KYEky'.˦4%\/.<U*4)enlX..>hip&Y@ɔ+TUƌqTńܭm xauyn8ͽ՚fƽRiO7cN <N\O*R\W剪6S^;p+G33FEb{YXU|ehG<" v(T¥1J]!w"81FjUN#-;́?U 2Ytw&#)` $I.@4\JhʔpVXN&Ռ!~ C MC}+
Linux 4gvps.4gvps.com 3.10.0-1127.18.2.vz7.163.46 #1 SMP Fri Nov 20 21:47:55 MSK 2020 x86_64
  SOFT : Apache PHP : 7.4.33
/usr/share/doc/libthai-0.1.14/
38.135.39.45

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
AUTHORS 0.244 KB -rw-r--r-- 2009-01-19 13:32 R E G D
COPYING 25.905 KB -rw-r--r-- 2009-01-19 13:32 R E G D
ChangeLog 77.679 KB -rw-r--r-- 2010-02-28 06:05 R E G D
README 1.11 KB -rw-r--r-- 2009-01-19 13:32 R E G D
TODO 0.085 KB -rw-r--r-- 2009-01-19 13:32 R E G D
REQUEST EXIT
2010-02-28 Theppitak Karoonboonyanan * configure.in: Bump library revision. * configure.in, NEWS: === Version 0.1.14 === 2010-02-28 Theppitak Karoonboonyanan * data/tdict-{ict,proper,common}.txt: Add words. 2010-02-28 Theppitak Karoonboonyanan * src/thcoll/cweight.c (char_weight_tbl_): Replace TIS-620 characters in comments with character names. * src/thctype/thctype.c (_th_ctype_tbl, _th_chlevel_tbl): Remove non-TIS-620 characters from comments. Convert source to UTF-8. 2010-02-27 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_get_dict): Limit path[] scope. 2010-02-27 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_get_dict): Print some warning when dictionary opening fails. 2010-02-27 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_get_dict): Do not try to open dictionary again if once tried. Multiple failing trials degraded performance. 2010-02-25 Theppitak Karoonboonyanan * include/thai/*.h, src/*.c, src/*/*.c: Add my e-mail address to license header as the contact address. * src/thctype/wtt.c, * src/thctype/thctype.c, * src/thcoll/cweight.h, * src/thcoll/cweight.c, * src/thwctype/thwctype.c: Add editor modeline. 2010-02-24 Theppitak Karoonboonyanan * src/thinp/thinp.c, * src/thrend/thrend.c, * src/thcoll/thcoll.c, * src/thcoll/cweight.c, * src/thwstr/thwstr.c, * src/thwchar/thwchar.c, * src/thwbrk/thwbrk.c, * src/thstr/thstr.c, * src/thcell/thcell.c: Reformat source. Add editor modeline. 2010-02-24 Theppitak Karoonboonyanan * tests/thsort.c: Yet another GPL header leftover removal. Update my e-mail address. 2010-02-24 Theppitak Karoonboonyanan Replace with a rewritten one, so we can enforce the license. * include/thai/tis.h: Rewritten based on Unicode names, with TIS_ prefix. * src/thinp/thinp.c (corrections, th_validate), * src/thrend/thrend.c (shiftdown_tone_ad, shiftdownleft_tone_ad, shiftleft_tone_ad, shiftdown_bv_bd, tailcutcons, th_render_cell_, th_render_cell_tis), * src/thbrk/brk-maximal.c (th_brkpos_hints), * src/thcell/thcell.c (th_next_cell, th_prev_cell), * tests/test_thcell.c (test_ans_nodecomp_am, test_ans_decomp_am): Update character names to the new TIS_* ones. 2010-02-24 Theppitak Karoonboonyanan * include/thai/*.h, src/*.c, src/*/*.c, * Makefile.am, include/Makefile.am, include/thai/Makefile.am, * src/Makefile.am, src/*/Makefile.am, * tests/*.c, tests/*.sh, * tests/Makefile.am, * data/Makefile.am, * man/template.3, man/man3/*.3, * man/Makefile.am, man/man3/Makefile.am: Remove CVS $Id in all files. * src/thctype/wtt.c: Fix file name in comment. 2010-02-24 Theppitak Karoonboonyanan * include/thai/*.h, src/*.c, src/*/*.c: Add license header to every source file. 2010-02-23 Theppitak Karoonboonyanan * doc/Makefile.am: The added *.c dependencies must be from src/*/*.c, not include/thai/*.c. Silly copy-and-paste error. 2010-02-23 Theppitak Karoonboonyanan * doc/Makefile.am: Add *.c to doxygen.stamp dependency, as the doc comments have been moved there. 2010-02-17 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_root_pool): Fail if brk_get_dict() returns NULL. 2010-02-17 Theppitak Karoonboonyanan * data/tdict-{ict,proper,common,science}.txt: Add words. 2010-01-30 Theppitak Karoonboonyanan * src/thcoll/cweight.c, src/thcoll/cweight.h, src/thcoll/thcoll.c: Remove GPL header left over. The library is LGPL. 2010-01-25 Theppitak Karoonboonyanan * src/brk-maximal.c (brk_root_pool): Fail if brk_pool_node_new() returns NULL. * src/brk-maximal.c (brk_maximal_do_impl): Fail if best_brk_new() returns NULL. 2010-01-25 Theppitak Karoonboonyanan * configure.in: Post-release version suffix added. 2010-01-15 Theppitak Karoonboonyanan * configure.in: Bump library revision. * configure.in, NEWS: === Version 0.1.13 === 2010-01-15 Theppitak Karoonboonyanan * configure.in: Add 'AC_CONFIG_MACRO_DIR([m4])' for the new libtool. 2010-01-15 Theppitak Karoonboonyanan * src/thwchar/thwchar.c (th_tis2uni_line, th_uni2tis_line): Fix type of 'result' argument to match that in header file, so doxygen recognizes and generates doc for it. 2010-01-15 Theppitak Karoonboonyanan * data/tdict-{proper,common}.txt: Add words. 2010-01-14 Theppitak Karoonboonyanan * include/thai/thctype.h, src/thctype/thctype.c: Replace non-portable isascii() with most-significant bit check. 2010-01-14 Theppitak Karoonboonyanan * data/tdict-{common,geo}.txt: Add words. 2010-01-14 Theppitak Karoonboonyanan * include/thai/thailib.h, src/libthai.c: Move more doc comments. 2010-01-09 Theppitak Karoonboonyanan Move documentation from *.h to *.c, so libthai developers have the doc at hand. Users can still read the doxygen-generated doc BTW. * include/thai/*.h, src/*/*.c: Move doc comments from *.h to *.c. * doc/Doxyfile.in: Set INPUT to @top_srcdir@. 2010-01-08 Theppitak Karoonboonyanan * data/tdict-{proper,common,geo}.txt: Add words. 2010-01-08 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_shot_init): Return failure/success status. * src/thbrk/brk-maximal.c (brk_pool_node_new): Check & handle return code from brk_shot_init(). 2010-01-08 Theppitak Karoonboonyanan * src/thwbrk/thwbrk.c (th_wbrk, th_wbrk_line): Rewritten, for harmony with the rests of the source, plus potential integer overflow vulnerability removed. 2010-01-08 Theppitak Karoonboonyanan Fix potential integer overflow vulnerabilities. Thanks Tim Starling for pointing out. * src/thbrk/thbrk.c (th_brk_line): Return zero if malloc size overflows or malloc fails. * src/thbrk/brk-maximal.c (best_brk_new): Return NULL if malloc size overflows. 2009-08-22 Theppitak Karoonboonyanan * configure.in: Post-release version suffix added. * data/tdict-std-compound.txt: Remove loose compounds. * data/tdict-{ict,district,proper,common,science,lang-ethnic,geo}.txt: Add words. 2009-06-18 Theppitak Karoonboonyanan * configure.in: Bump library revision. * configure.in, NEWS: === Version 0.1.12 === 2009-06-18 Theppitak Karoonboonyanan * data/tdict-std-compound.txt: Remove loose compounds. 2009-06-18 Theppitak Karoonboonyanan * data/tdict-std-compound.txt: Remove loose compounds. * data/tdict-{ict,district,proper,common,science,geo}.txt: Add words. 2009-06-17 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl, best_brk_contest): Back out weighted scoring for solution contest, as it sometimes tries too hard to minimize word count, even though another solution with more known words can match more text and results in smaller unknown zone. Accidental words problem, which this scheme tried to address, has already been alleviated with increased recovery threshold. 2009-06-17 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl): Add break pos at string end and let it enter the contest, instead of backing it out by moving back str_pos as done in previous commit. That commit just missed the point. Doing the right thing also guarantees consistency with the case when some text of valid words is appended to the string. 2009-06-17 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl): Set str_pos for cases that fail at string end back to the last progress position, to prevent it from wrongly winning the contest over some good candidates. 2009-06-17 Theppitak Karoonboonyanan * src/tkbrk/brk-maximal.c (RECOVERED_WORDS): Increase recovery threshold, 2 is too few and can trigger wrong recovery position too easily. 2009-06-15 Theppitak Karoonboonyanan * data/Makefile.am, +data/tdict-lang-ethnic.txt: Add a new category. * data/tdict-{common,geo}.txt, data/tdict-lang-ethnic.txt: Move some words to the new category. * data/tdict-{lang-ethnic,ict,spell,proper,common,science,geo}.txt: Add words. * data/tdict-std.txt: Remove a duplicated compound. 2009-06-13 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (best_brk_contest): Compare penalties with '<=' like in previous code, instead of '<', to retain longest-matching effect in case of equal scores. 2009-06-10 Theppitak Karoonboonyanan * data/tdict-std-compound.txt: Remove loose compounds. * data/tdict-{common,proper}.txt: Move a proper noun to tdict-proper. * data/tdict-{ict,spell,district,proper,common,science,geo}.txt: Add words. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl, best_brk_contest): Use weighted scoring, rather than parameters prioritization, to choose better solution. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl): When recovering from error, try to recover from the position next to the last break, rather than right at the crash position. We care the input string, not what it's being partially matched against. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_recover): When checking a character in text, brk pos returned from brk_recover_try() are relative to 'text + p', not 'text'. 2009-06-10 Theppitak Karoonboonyanan Split normal word break and recovery routines apart. * src/thbrk/brk-maximal.c (brk_maximal_do_impl, +brk_recover_try): - Split brk_maximal_do_impl() into itself with (do_recover == 1) and brk_recover_try() with (do_recover == 0), for logic simplification. - Strip unnecessary tasks like best break contests and penalties from brk_recover_try(). All it needs is existence of a solution, regardless of its quality. - Use memcpy() to copy brk pos arrays instead of for loop. * src/thbrk/brk-maximal.c (brk_maximal_do, brk_recover): - Adjust calls to brk_maximal_do_impl() and brk_recover_try() according to the changed prototypes. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl): Add one missing change for last commit. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maximal_do_impl): Update 'shot' after 'node' is changed, instead of referencing through the possibly new 'node' value, for code readability. 2009-06-10 Theppitak Karoonboonyanan Beautify code. * src/thbrk/brk-maximal.c (th_brkpos_hints): Adjust indents. * src/thbrk/brk-maximal.c (brk_recover): Adjust brackets. 2009-06-10 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_brkpos_hints): Add check for cases like 'เฉพาะ'. 2009-06-07 Theppitak Karoonboonyanan * configure.in: Remove obsolete Win32 checking stuffs. 2009-06-07 Theppitak Karoonboonyanan Add symbol versioning. * configure.in: Check for -version-script support in linker. * +src/libthai.map: Add symbol map. * src/Makefile.am: - Conditionally supply -version-script, if supported, or -export-symbols otherwise, to linker. - Conditionally specify libthai.map or libthai.def as libthai.la dependency, according to corresponding linker option applied. - Include libthai.map in EXTRA_DISTS. 2009-06-05 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_brkpos_hints): Fix comment style to C, not C++. 2009-06-05 Theppitak Karoonboonyanan Fix wrong case of syllable like 'ช็อก'. * src/thbrk/brk-maximal.c (th_brkpos_hints): - The case of SARA E/AE with next third character as MAITAIKHU should not apply when the MAITAIKHU is followed by O ANG or WO WAEN. That's a signature of new syllable, such as 'ช็อก'. - Add the case of syllable like 'ช็อก' or 'ช็วก'. 2009-06-05 Theppitak Karoonboonyanan Refactor so brk hints is prepared only once per brk_maximal_do() call. * src/thbrk/brk-maximal.c (brk_maximal_do, +brk_maximal_do_impl): Split implementation code into _impl() function, and let the original brk_maximal_do() be a wrapper doing necessary preparations. * src/thbrk/brk-maximal.c (brk_recover): Call brk_maximal_do_impl() instead of brk_maximal_do(), passing the appropriate brk hints subarray to it. * src/thbrk/brk-maximal.{c,h} (brk_maximal_do): * src/thbrk/thbrk.c (th_brk): Drop the do_recover arg from brk_maximal_do(), as it's now a wrapper which can seed initial condition for the mutual recursion. * src/thbrk/brk-maximal.c (th_brkpos_hints): Add prototype. 2009-06-04 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_isleadable -> th_brkpos_hints): - Turn simple leadable check into a pre-processed break position hinting. Instead of doing the complicated checks on every loop, now the clients just check the prepared boolean array. - Add more complicated cases, such as Thai composite vowels. * src/thbrk/brk-maximal.c (brk_recover): - Change prototype to accept brk pos hints, so it doesn't need to be recalculated. - Drop additional checks of preceeding ldvowel, as it's already covered by the brk pos hints. * src/thbrk/brk-maximal.c (brk_maximal_do): - Pre-calculate brk pos hints on entry, and free it on exit. - Check the hints instead of calling the obsolete th_isleadable(). - Pass the hints to brk_recover(). 2009-06-03 Theppitak Karoonboonyanan * data/tdict-{ict,proper,common,science,geo}.txt: Add words. 2009-05-27 Theppitak Karoonboonyanan * data/tdict-{std-compound,common}.txt: Remove some loose compounds. * data/tdict-common.txt: Reorder some words. * data/tdict-{ict,proper,common,science,geo}.txt: Add words. 2009-05-24 Theppitak Karoonboonyanan * src/Makefile.am: Refactor and add sublibs to libthai.la dependencies, so the final library gets rebuilt when its sub-libraries are changed. 2009-05-22 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_isleadable): Consonant following MAITAIKHU is not always unleadable, such as after "ก็". So, drop the case. 2009-05-18 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_isleadable): Also check for certain vowels like MAITAIKHU, MAIHUNAKAT, SARA UEE in previous cell for non-leadable consonants. * src/thbrk/brk-maximal.c (brk_maximal_do, brk_recover): Adjust th_isleadable() calls according to prototype change. 2009-05-16 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (th_isleadable): Prohibit consonants with THANTHAKHAT from being leadable. * src/thbrk/brk-maximal.c (brk_maximal_do, brk_recover): Adjust th_isleadable() calls according to prototype change. 2009-05-15 Theppitak Karoonboonyanan * data/tdict-{ict,proper,common,science,geo}.txt: Add words. 2009-05-13 Theppitak Karoonboonyanan * data/Makefile.am, data/tdict-*.txt: Convert wordlists from TIS-620 to UTF-8, for easy management with modern tools. 2009-05-13 Theppitak Karoonboonyanan * data/tdict-std-compound.txt: Remove some loose compounds. * data/tdict-{ict,spell,district,proper,common,science,geo}.txt: Add words. 2009-05-07 Theppitak Karoonboonyanan * data/tdict-{ict,district,proper,common,science,geo}.txt: Add words. * data/tdict-proper.txt: Sort some words properly. 2009-04-29 Theppitak Karoonboonyanan * data/tdict-{ict,proper,common,science,geo}.txt: Add words. 2009-04-22 Theppitak Karoonboonyanan * configure.in: Post-release version prefix added. * data/tdict-{ict,district,proper,common,geo}.txt: Add words. * data/tdict-{common,collection}.txt: Move some collection of words to appropriate category. 2009-04-06 Theppitak Karoonboonyanan * configure.in: Bump library revision. * configure.in, NEWS: === Version 0.1.11 === 2009-04-05 Theppitak Karoonboonyanan * data/tdict-{ict,district,proper,common,science,geo}.txt: Add words. 2009-03-31 Theppitak Karoonboonyanan * configure.in: Post-release version suffix added. * libthai.pc.in: Require datrie-0.2 privately, to avoid exposing it unnecessarily to applications. This had even caused upgrading problem when libdatrie with different soname versions are loaded simultaneously, one from the application, and the other from libthai. And with libdatrie poor symbols handling, this had caused name clash. Thanks Loic Minier for pointing out the cause. 2009-03-30 Theppitak Karoonboonyanan * libthai.pc.in: Requires datrie-0.2 instead of datrie. * configure.in: Bump library revision. * configure.in, NEWS: === Version 0.1.10 === 2009-03-30 Theppitak Karoonboonyanan * tdict-{common,district,ict,proper}.txt: Add words. * tdict-std.txt: Remove 2 potentially ambiguous words. 2009-03-30 Theppitak Karoonboonyanan * tdict-{district,proper,common,geo}.txt: Add words. * tdict-collection.txt: Add another variant of "x" transcription. 2009-03-20 Theppitak Karoonboonyanan * data/tdict-std-compound.txt: Removed potentially ambiguous word. * data/tdict-{ict,district,science}.txt: Add words. 2009-03-12 Theppitak Karoonboonyanan * data/tdict-{common,geo,ict,spell}.txt: Add words. Move word from -common to -spell as appropriate. 2009-01-21 Theppitak Karoonboonyanan First SVN commit. * data/tdict-{common,geo}.txt: Add words. 2009-01-08 Theppitak Karoonboonyanan * data/tdict-common.txt, data/tdict-proper.txt: Move more proper nouns from tdict-common. * data/tdict-{collection,common,district,geo,ict,proper,science, spell}.txt: Add words. 2008-12-28 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_get_dict): Move comment to proper place. 2008-12-28 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_get_dict): Adjust code so that brk_dict is not checked twice for normal cases. 2008-12-28 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_maxmimal_do): Call trie_state_is_single() instead of trie_state_is_leaf() when a state is known to be terminal, eliminating redundant check. (Requires libdatrie >= 0.1.99.2+cvs20081228) 2008-12-27 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_shot_init, brk_shot_reuse, best_brk_contest): Use memcpy() to copy arrays, rather than iteration via array index. Yet another minor performance improvement. * src/thbrk/brk-maximal.c (brk_shot_reuse): Re-allocate 'brk_pos' array only when growing, and never bother shrinking it. 2008-12-26 Theppitak Karoonboonyanan Reuse break pool nodes more deeply, improving performance a little bit. (Requires libdatrie >= 0.1.99.2+cvs20081226) * src/thbrk/brk-maximal.c (brk_shot_copy -> brk_shot_init, +brk_shot_reuse): Split brk_shot_copy() into brk_shot_init() and brk_shot_reuse(). The former is for newly created nodes, while the latter is for reusing old nodes, with memory reallocation minimized. * src/thbrk/brk-maximal.c (brk_pool_node_new): Separately call brk_shot_init() and brk_shot_reuse() per case. * src/thbrk/brk-maximal.c (brk_pool_free): Do not destruct BrkShot member. Keep it for further reuses. * src/thbrk/brk-maximal.c (brk_pool_allocator_clear): ..And actually destruct it here. * src/thbrk/brk-maximal.c (brk_root_pool): Save one malloc() call for temporary 'root_shot'. 2008-12-26 Theppitak Karoonboonyanan * src/thbrk/brk-maximal.c (brk_pool_get_node, brk_maximal_do): Get rid of unused arg 's' for brk_pool_get_node(). 2008-12-26 Theppitak Karoonboonyanan * data/tdict-ict.txt: Add words. 2008-12-23 Theppitak Karoonboonyanan Add housekeeping routine to clean up dictionary. * src/Makefile.am, src/dummy.c -> libthai.c, src/libthai.def: Add destructor function in .fini section, to be called on library unload. * src/thbrk/Makefile.am, +src/thbrk/thbrk-private.h, src/thbrk/thbrk.c (thbrk_on_unload): Add on-unload function for thbrk module. * src/thbrk/brk-maximal.h, src/thbrk/brk-maximal.c (brk_get_dict, brk_maximal_on_unload): - Move 'brk_dict' static var from function to file scope - Add on-unload function to clean up dictionary 2008-12-23 Theppitak Karoonboonyanan * src/brk-maximal.c (brk_maximal_do): Adjust if-block a little bit. 2008-12-23 Theppitak Karoonboonyanan * data/tdict-{geo,ict}.txt: Add words. 2008-12-17 Theppitak Karoonboonyanan * data/Makefile.am, +data/tdict-proper.txt, data/tdict-common.txt: Split proper nouns from tdict-common.txt into a new list. * data/tdict-{common,proper}.txt: Add words 2008-12-16 Theppitak Karoonboonyanan * data/Makefile.am: No need to install 'thbrk.abm' any more. 2008-12-15 Theppitak Karoonboonyanan * data/tdict-{common,geo,ict}.txt: Add words. 2008-12-15 Theppitak Karoonboonyanan Switch to libdatrie 0.2. (Requires libdatrie >= 0.1.99.2) * configure.in: - Check for 'trietool-0.2' binary instead of 'trietool' - Check for 'datrie-0.2' pkg-config instead of 'datrie' * src/thbrk/brk-maximal.c: - Replace 'SBTrie' with 'Trie' - Replace 'SBTrieState' with 'TrieState' - Replace 'sb_trie_*' function calls with corresponding 'trie_*' - For 'sb_trie_state_walk()', also convert TIS-620 char to UCS-4 before actually walking - For 'sb_trie_open()', replace with 'trie_new_from_file()', plus dir + path combined * data/Makefile.am: - Replace '*.br' and '*.tl' targets with '*.tri' - Add '-e tis-620' command-line argument to trietool * data/Makefile.am, data/thbrk.sbm -> data/thbrk.abm: - Replace 'thbrk.sbm' (TIS-620) with 'thbrk.abm' (Unicode) * tests/Makefile.am: - Add 'libthwchar.la' where 'libthbrk.la' is used, as th_tis2uni() is required there 2008-06-24 Theppitak Karoonboonyanan * configure.in, Makefile.am: Add --disable-dict option to prevent dictionary data generation. 2007-10-18 Theppitak Karoonboonyanan * include/thai/thctype.h: * src/thcell/thcell.c: * src/thcoll/cweight.c: * src/thcoll/cweight.h: * src/thcoll/thcoll.c: * src/thctype/thctype.c: * src/thctype/wtt.c: * src/thinp/thinp.c: * src/thrend/thrend.c: * src/thstr/thstr.c: * src/thwchar/thwchar.c: * src/thwstr/thwstr.c: Update my e-mail address. 2007-10-17 Theppitak Karoonboonyanan * src/libthai.def: List only symbols in plain format, for Mac build. Thanks Vee Satayamas for the report. * src/Makefile.am: Add libthai.def as libthai_la_DEPENDENCIES. 2007-08-28 Theppitak Karoonboonyanan * NEWS: === Version 0.1.9 === 2007-08-28 Theppitak Karoonboonyanan * tests/test_thbrk.c (main), tests/test_thwbrk.c (main): Update check values, according to the new compound words support. 2007-08-28 Theppitak Karoonboonyanan * doc/Doxyfile.in: Update for doxygen 1.5.3. 2007-08-22 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (O Ang - Ho Nokhuk) * data/tdict-{common,spell}.txt: Add words. 2007-08-15 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Ho Hip) * data/tdict-{common,geo}.txt: Add words. 2007-08-07 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (So Sua) * data/tdict-{common,district,geo,spell}.txt: Add words. 2007-07-20 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Wo Waen - So Rusi) * data/tdict-{common,ict,scicence,spell}.txt: Add words. 2007-07-12 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Ro Rua - Lu) * data/tdict-{common,science}.txt: Add words. * data/tdict-district.txt: Move non-province names to the bottom, so they are separated from provinces. Add two more names. 2007-07-09 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Mo Ma - Yo Yak) * data/tdict-{common,geo,ict,science,spell}.txt: Add words. 2007-07-06 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Pho Phan - Pho Samphao) * data/tdict-{common,spell,ict}.txt: Add words. 2007-06-30 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove rare words. Rearrange and add compounds. (Tho Thahan - Fo Fa) * data/tdict-{common,spell}.txt: Add words. 2007-06-25 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Remove more rare words. Move some compound words from -std to -std-compound. Add some missing entries found. (Restarted from Ko Kai - Tho Thung. We need more space to continue adding compounds from last commit.) * data/tdict-{common,ict}.txt: Add words. 2007-06-21 Theppitak Karoonboonyanan * data/tdict-std[-compound].txt: Add more compound words. Move some compound words from -std to -std-compound. Remove some rare entries, to make room for more entries. (~80% done) * data/tdict-{common,ict}.txt: Add words. 2007-06-18 Theppitak Karoonboonyanan * data/Makefile.am, +data/tdict-std-compound.txt, data/tdict-std.txt: Split compound words into a new file. Selectively add compound words. (Half done.) * data/tdict-{common,ict,science,spell}.txt: Add words. 2007-06-12 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (th_brk): Don't break between CR and LF. Remove last break if at string end. * tests/test_th[w]brk.c (main): Update test values. 2007-06-11 Theppitak Karoonboonyanan Redesign itemization code for th_brk(), aiming at Unicode UAX #14 compatiblity. * src/thbrk/Makefile.am, +src/thbrk/brk-ctype.{c,h}: Add character classification table, as well as operation table for breaking between all class combinations. * src/thbrk/thbrk.c (th_brk): Rewrite the itemization code, based on the break class table. * tests/test_th[w]brk.c (main): Update test values. 2007-06-08 Theppitak Karoonboonyanan * configure.in: Post-release version bump. * data/tdict-{std,common}.txt: Add words. 2007-03-03 Theppitak Karoonboonyanan * NEWS: Updated. === Version 0.1.8 === 2007-03-03 Theppitak Karoonboonyanan * tests/test_thbrk.c (main), tests/test_thwbrk.c (main): Fix word break check values, as white space handling has now been changed. 2007-03-03 Theppitak Karoonboonyanan * configure.in: Add AC_LIBTOOL_WIN32_DLL as required for Win32. * src/Makefile.am (libthai_la_LDFLAGS): Always pass -no-undefined to enforce all resolved symbols. Thanks Loïc Minier. 2007-03-03 Theppitak Karoonboonyanan * src/Makefile.am (EXTRA_DIST, libthai_la_LDFLAGS), +src/libthai.def: Add -export-symbols flag to limit exported symbols. Thanks Loïc Minier for suggestion. * src/thwstr/thwstr.c (th_wthaichunk): Declare the non-extern func as static. 2007-03-02 Theppitak Karoonboonyanan * data/tdict-common.txt: Added words. 2007-02-04 Theppitak Karoonboonyanan Yet another fix to white space bug in th_brk(), as spotted by Suppachoke Santiwitchaya. This is just temporary fix for use while the planned redesign does not happen. * src/thbrk/thbrk.c (th_brk): Allow break between Thai punct and white space. * src/thbrk/thbrk.c (is_breakable): Allow break between punct and white space. Remove rule that inhibited break between space and MAIYAMOK. It was not sufficient anyway, as the space before MAIYAMOK was still wrapped. * ChangeLog: Fix wrong date in previous commit. 2007-02-02 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (is_breakable): Allow break before white space. This fixes wrong treatment of whitespace in HTML in mozlibthai component, which caused glitches in webpages. 2007-01-13 Theppitak Karoonboonyanan * data/tdict-{common,geo,std}.txt: Added words. 2006-10-14 Theppitak Karoonboonyanan * configure.in: Post-release version bump. 2006-10-14 Theppitak Karoonboonyanan * ChangeLog: Converted to UTF-8. * NEWS: Updated. === Version 0.1.7 === 2006-10-14 Theppitak Karoonboonyanan * data/Makefile.am: Specify LC_ALL=C to make sure 'sort' always works. 2006-10-14 Theppitak Karoonboonyanan Fix 'make distcheck', plus a little enhancement on dict location. * src/thbrk/brk-maximal.c (brk_get_dict): Try openning dict at $LIBTHAI_DICTDIR environment before the default location. * tests/Makefile.am, +tests/test-thbrk.sh, +tests/test-thwbrk.sh: Added wrapper scripts to call test_th[w]brk programs with LIBTHAI_DICTDIR set to trie in build tree. * data/Makefile.am (EXTRA_DIST): Do not ship the auto-generated tdict.txt in source. 2006-10-14 Theppitak Karoonboonyanan * tests/test_thbrk.c (main), tests/test_thwbrk.c (main): Rearrange source. Remove some unnecessary variables. Adjust style. Fix warnings. 2006-10-13 Theppitak Karoonboonyanan * tests/test_thbrk.c (main), tests/test_thwbrk.c (main): Fix checking value for the length of the output from th_[w]brk_line() tests. 2006-10-11 Theppitak Karoonboonyanan * data/tdict-std.txt: Added some compound words. * data/tdict-{common,ict}.txt: Added words. 2006-10-01 Theppitak Karoonboonyanan * data/tdict-std.txt: Added some compound words. * data/tdict-{common,ict}.txt: Added words. 2006-09-19 Theppitak Karoonboonyanan * src/thbrk/Makefile.am (libthbrk_la_SOURCES), src/thbrk/thbrk.c, +src/thbrk/brk-maximal.{h,c}: Split low-level mechanisms to brk-maximal module. * -src/thbrk/cttex.c, -src/thbrk/dict2state.c: Removed unused files. 2006-09-19 Theppitak Karoonboonyanan * data/tdict-std.txt: Removed rare word (ยาจนก) which potentially causes wierd ambiguity. Added some more compound words. * data/tdict-{common,ict,spell}.txt: Added words. 2006-09-17 Theppitak Karoonboonyanan * TODO: Updated plan. Cleared what have been done. 2006-09-17 Theppitak Karoonboonyanan * data/tdict-std.txt: Removed rare words (มาระ, มาริ) which potentially cause weird ambiguities. Added some more compound words. * data/tdict-{common,geo}.txt: Added words. 2006-09-15 Theppitak Karoonboonyanan * data/tdict-std.txt: Added some compound words. * data/tdict-{common,district,geo,ict,spell}.txt: Added words. 2006-09-12 Theppitak Karoonboonyanan * data/tdict-std.txt: Removed rare word (มมาก) which potentially causes ambiguity. Moved entry (มาย) into its compound forms, as it alone can cause ambiguity. Added some more compound words. * data/tdict-{common,geo,ict,spell}.txt: Added words. 2006-09-11 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): Used is_breakable() to determine breakability at the end of Thai chunk, instead of hard-coded condition. * src/thbrk/thbrk.c (is_breakable): Added condition for Thai chunk ending. Also added condition so text is not breakable right after period, comma and semicolon. * data/tdict-std.txt: Broke "{เมทิล|เอทิล}แอลกอฮอล์" into two words. * data/tdict-{common,geo,science,spell}.txt: Added words. 2006-09-11 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (is_breakable): Added non-breakable cases: space + Mai Yamok; * + {right parenthesis|Khomut|...}. 2006-09-11 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (th_brk, is_breakable): Do not break after certain punctuations like left quote, left parenthesis, etc., also covering Paiyan Yai sequence. * data/tdict-common.txt: Removed Paiyan Yai. Added some more words. 2006-09-11 Theppitak Karoonboonyanan * data/tdict-std.txt: Removed rare word (ทิวสะ) that caused weird ambiguities. Added some compound words. * data/tdict-{common,geo,ict,spell}.txt: Added words. 2006-09-07 Theppitak Karoonboonyanan * data/tdict-{std,common,district,geo,ict,science,spell}.txt: Added words. 2006-09-06 Theppitak Karoonboonyanan * data/tdict-std.txt: Removed two rare words (การก, ผลอ) that caused weird ambiguities. Added some compound words. * data/tdict-{common,district,geo,ict,science}.txt: Added words. 2006-09-05 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_recover): Guarded against accessing beyond string end. * data/tdict-{std,common,geo,ict}.txt: Added more entries. 2006-09-03 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): Adjusted condition in previous change a little bit. 2006-09-03 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): (Optimization) In recovery mode, stop immediately when first solution is found. 2006-09-02 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_recover, brk_do): (Optimization) Remembered previous recovery result for reuse, cutting off a few repeated recoveries at the same position. * data/tdict-{std,common}.txt: Added entries. 2006-09-01 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (best_brk_contest): Adjusted condition so that equally scored solution that comes later overrides previous one. Longest matching is preferred as a result for such situation. * data/tdict-std.txt: Added three more words. 2006-09-01 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (th_isleadable): RU and LU are also leadable. And don't bother checking for Thai digits. They are never passed. * src/thbrk/thbrk.c (brk_do): Fixed wrong choosing of nodes with error at end of string. Added penalty for such cases, and made sure the break position is not marked. * data/tdict-{std,science,ict,common}.txt: Added & removed entries. 2006-09-01 Theppitak Karoonboonyanan * data/Makefile.am, +data/tdict-collection.txt, data/tdict-common.txt: Split collection sets into tdict-collection. * data/Makefile.am, +data/tdict-spell.txt, data/tdict-std.txt: Split common typos or variations into tdict-spell. * data/tdict-{std,common,ict,district,geo,science}.txt: Moved more words out of tdict-std. Removed more redundant entries. Fixed typos. Added more words. 2006-09-01 Theppitak Karoonboonyanan * src/thbrk/Makefile.am (dictdatadir): Added variable missed during the tdict split. * data/tdict-{std,ict,common}.txt: Moved some words out of tdict-std. Removed duplicated and redundant entries. Added some more words. 2006-08-31 Theppitak Karoonboonyanan * configure.in, Makefile.am, src/thbrk/Makefile.am, +data/Makefile.am, src/thbrk/tdict.sbm -> data/tdict.sbm, src/thbrk/tdict.txt -> data/tdict-{common,district,geo,ict,science,std}.txt: Moved tdict generation from source to data directory. 2006-08-31 Theppitak Karoonboonyanan === merged from datrie_wbrk-branch into HEAD === 2006-08-30 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): (Optimization) Unified the recovered node immediately. Chance is that it gets superseded, rather than picked up in later loop. Rearranged code to eliminate source duplications. 2006-08-30 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): (Optimization) When unifying converted nodes, clear all matches rather than just the first. 2006-08-30 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): (Optimization) When successfully recovered, stop walking immediately, increasing chance to be superseded earlier by better candidate. Also removed unnecessary check for str_pos < len, because it's guaranteed by brk_recover() when return value is not -1. 2006-08-29 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (+brk_pool_allocator_use, brk_pool_allocator_clear): Guarded the free list with ref count, for thread safety. * src/thbrk/thbrk.c (th_brk): Requested to use the break pool allocator at the beginning. 2006-08-29 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_pool_node_new, brk_pool_free_node): ~(Optimization) Kept freed BrkPool nodes for reuse in next allocation, reducing calls to malloc(). * src/thbrk/thbrk.c (+brk_pool_allocator_clear, th_brk): Cleared the free list when work is done. 2006-08-29 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): Calculated penalty for unrecoverable string with (len - recent break), not (strlen(s) - recent break). 2006-08-29 Theppitak Karoonboonyanan * configure.in (LT_REVISION): Incremented library revision. * src/thbrk/thbrk.c (brk_do): (Optimization) Do not contest best break when trie walking crashes in recover mode. It won't win recovery criterion anyway. Also got rid of one inner loop condition. 2006-08-29 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_recover): Do not try to recover after a leading vowel. 2006-08-26 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (th_brk): Tokenized mixed Thai-English text and called brk_do() chunk by chunk. * src/thbrk/thbrk.c (brk_do, brk_recover): Accepted string and length rather than null-terminated string, to support chunk-wise breaking. 2006-08-26 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_pool_delete): Adjusted code, for tiny performance improvement, esp. when deleting first node. 2006-08-25 Theppitak Karoonboonyanan * src/thbrk/tdict.txt: Manually revised word list. Removed some archaic or obsolete words. Added some new terms. 2006-08-24 Theppitak Karoonboonyanan * src/thbrk/thbrk.c: s/penulty/penalty/. :-P 2006-08-24 Theppitak Karoonboonyanan * src/thbrk/thbrk.c (brk_do): Calculated penalty more accurately by measuring distance from recent break pos, rather than the crash pos. Also added penalty on recovery failure. * src/thbrk/thbrk.c (best_brk_contest): Fixed boolean expression by adding parentheses. 2006-08-23 Theppitak Karoonboonyanan * libthai.pc.in: Added datrie to Requires. * src/thbrk/Makefile.am: Removed old dict before rebuilding. * src/thbrk/thbrk.c (th_brk_line): Added implementation. * src/thbrk/thbrk.c (brk_do): Be satisfied with terminal state only if the following character can begin a word. * src/thbrk/thbrk.c (BrkShot, BestBrk, brk_root_pool, brk_do, brk_shot_copy, best_brk_new, best_brk_contest): Added penulty on crash recovery, and considered it when contesting shots. This can prevent long crash shots from showing up as maximally matched. 2006-08-22 Theppitak Karoonboonyanan === begin of datrie_wbrk-branch === * configure.in, src/thbrk/Makefile.am, src/thbrk/thbrk.c, +src/thbrk/thbrk.sbm: Replaced old thbrk from cttex with my new version written from scratch. 2006-08-22 Theppitak Karoonboonyanan * configure.in: Post-release version bump. 2006-08-05 Theppitak Karoonboonyanan * NEWS, configure.in: Version 0.1.6. 2006-08-05 Theppitak Karoonboonyanan * configure.in: Update library version info, according to recent API additions. 2006-08-02 Theppitak Karoonboonyanan * configure.in: Disable debug by default. 2006-08-02 Theppitak Karoonboonyanan * configure.in: Enable doxygen by default. * configure.in, doc/Makefile.am: Use htmldocdir variable instead of pkgdocdir/docdir. Let default behavior install html under html/ subdir. * configure.in, Makefile.am: Exclude man/ subdir, and use doxygen-generated man pages instead. * doc/Doxyfile.in: Disable SHOW_INCLUDE_FILES, as showing include files included from the documented file just confuses readers in the man pages. 2006-08-02 Theppitak Karoonboonyanan * include/thai/thctype.h, man/man3/thctype.3: Clarify character level 2 and 3 in the document. 2006-08-02 Theppitak Karoonboonyanan * src/thinp/thinp.c: Use WTTOp enum instead of int, as per recent change in wtt.h 2006-08-01 Theppitak Karoonboonyanan * doc/Makefile.am: Rearrange the man pages. 2006-08-01 Theppitak Karoonboonyanan * doc/Makefile.am, doc/Doxyfile.in: Generate man links and selectively install man pages. 2006-08-01 Theppitak Karoonboonyanan * doc/Makefile.am: Use html.stamp target to prevent unneccessary generation of document. 2006-08-01 Theppitak Karoonboonyanan * include/thai/thctype.h: Fix HTML errors in documentation comments. * include/thai/thctype.h, man/man3/thctype.3: Fix typo. * include/thai/thrend.h: Fix errors in doxygen tags in comments. 2006-08-01 Theppitak Karoonboonyanan * include/thai/wtt.h, src/thctype/wtt.c: Add documentation from wtt.3. Use enum instead of #define. * man/man3/wtt.c: Revised. 2006-08-01 Theppitak Karoonboonyanan * include/thai/thctype.h: Add documentation taken from thctype.3. * man/man3/thctype.3: Revised. * doc/Doxyfile.in: Append "include" to STRIP_FROM_PATH. 2006-07-31 Theppitak Karoonboonyanan * include/thailib.h: Add main page using content from libthai.3. * man/man3/libthai.3: Fix typos. 2006-07-31 Theppitak Karoonboonyanan * include/thai/{thbrk,thcoll}.h: Fix typos in comments. * include/thai/{thwbrk,thwchar,thwcoll,thwctype,thwstr}.h: Edit comments for documentation. * include/thai/thwctype.h, src/thwctype/thwctype.c: Add missing functions corresponding to thctype: th_wcisthdiac, th_wcistaillesscons, th_wcisovershootcons, th_wcisundershootcons, th_wcisundersplitcons. 2006-07-31 Theppitak Karoonboonyanan * configure.in, Makefile.am, +doc/, +doc/Doxyfile.in, +doc/Makefile.am: Add document generation with doxygen. * include/thai/{thailib,thbrk,thcell,thcoll,thctype,thinp,thrend, thstr}.h: Edit comments for documentation. 2006-07-03 Theppitak Karoonboonyanan * src/thcoll/cweight.c (th_char_weight_()): Remove unnecessary check of c's range that always yields true. * src/thwchar/thwchar.c (uni2thai_ext_()): Fix loop condition that always yielded true due to range of data type. 2006-07-03 Theppitak Karoonboonyanan * src/thinp/thinp.c, src/thrend/thrend.c: Add missing . 2006-05-04 Theppitak Karoonboonyanan * configure.in, src/Makefile.am: Add check and condition for Win32 build with cygwin/mingw. 2006-03-13 Theppitak Karoonboonyanan * NEWS, configure.in: Version 0.1.5. 2006-03-13 Theppitak Karoonboonyanan * tests/test_thwbrk.c: Allocate more buffer for th_brk_line() output, fixing bogus bug that blocks the test. 2006-03-13 Theppitak Karoonboonyanan * tests/test_thwbrk.c: Print out the strings in problem when the result from th_brk_line() and th_wbrk_line() do not match. 2006-03-13 Theppitak Karoonboonyanan * tests/test_thcell.c: Fix bug in test_th_prev_cell() due to wrong variable referencing. 2006-02-18 Theppitak Karoonboonyanan * src/tkbrk/Makefile.am: Remove map.c from cttex sources, to fix compiling bug caused by building map.o with and without libtool. 2006-02-18 Theppitak Karoonboonyanan * configure.in, src/Makefile.am: Add -version-info into LDFLAGS. We start maintaining library version info from now on. 2005-10-28 Theppitak Karoonboonyanan * COPYING: Update FSF address. 2005-10-09 Theppitak Karoonboonyanan * configure.in: Formatted configure options help strings with AC_HELP_STRING(). Used --disable/--enable help style rather than --enable with default yes or no. 2005-03-15 Theppitak Karoonboonyanan * src/thrend/thrend.c: Add Mac PUAs for baseless Tho Than and Yo Ying, as well as lowered version of lower marks. * tests/test_thrend.c: Update tester accodingly. 2005-03-02 Pattara Kiatisevi * src/thbrk/: Debug information (default commented out) Some new words added to tdict.txt 2005-01-13 Pattara Kiatisevi * src/thbrk/thbrk.c: A space is considered and returned as a breakable point 2004-10-16 Theppitak Karoonboonyanan * NEWS, configure.in: Version 0.1.4. 2004-10-13 Theppitak Karoonboonyanan * src/thstr/thstr.c (th_normalize): Handle char of "Level 3". * src/thinp/thinp.c (th_validate): Handle correction of char of "Level 3". 2004-10-13 Theppitak Karoonboonyanan * src/thcell/thcell.c (th_next_cell): Check for acell.hilo before placing repeated SARA AM into the same cell. * tests/test_thcell.c: Add test case for repeated SARA AM. 2004-10-12 Theppitak Karoonboonyanan * tests/test_thctype.c (test_bool_funcs): Rewrite if-do-while loops with clearer while loops. Get rid of warning of range checking. * tests/test_thbrk.c, tests/test_thwbrk.c, test_thwchar.c: Add missing string.h includes. 2004-10-12 Theppitak Karoonboonyanan Handle the case of NIKHAHIT and MAITAIKHU, which can be in either above or top level. This behavior is defined as "level 3" in th_chlevel() returning value. * src/thcell/thcell.c (th_next_cell, th_prev_cell): Conditionally place character of weight 3 at above or top level. * src/thctype/thctype.h (th_chlevel): Document the "level 3". * src/thctype/thctype.c (_th_chlevel_tbl): Change levels of NIKHAHIT and MAITAIKHU to 3. * tests/test_thcell.c, tests/test_thrend.c: Add the test cases of NIKHAHIT and MAITAIKHU at top level. 2004-05-15 Pattara Kiatisevi * set the mode of cttex to firstmode=1 (we want it fast) 2004-04-08 Theppitak Karoonboonyanan * AUTHORS: Update e-mail addresses. 2004-02-22 Theppitak Karoonboonyanan * tests/test_thrend.c: Update check values as per new blank base glyph. * NEWS, configure.in: Version 0.1.3 2004-01-20 Theppitak Karoonboonyanan * include/thai/thrend.h, src/thrend/thrend.c: Use TH_BLANK_BASE_GLYPH as a base for floating upper/lower vowels. 2003-09-10 Theppitak Karoonboonyanan *** Stop using CVS-generated ChangeLog, as it's hard to read *** * include/thai/Makefile.am: List the missing thwstr.h. * man/man3/Makefile.am: Add EXTRA_DIST to include missing man pages. * man/template.3, man/man3/*.3: Change my e-mail address. * tests/test-thcoll.sh: Also remove out.txt, to pass 'make distcheck'. * TODO: Add TODO about normalization rules. * NEWS, configure.in: Version 0.1.2. 2003-03-23 Sunday 20:26 Theppitak Karoonboonyanan * ChangeLog (1.55), src/thctype/wtt.c (1.3): Fix TACio_op_[] data for (FV1,NON) and (FV1,LV). 2003-03-23 Sunday 20:23 Theppitak Karoonboonyanan * ChangeLog (1.54), include/thai/thcell.h (1.6), src/thcell/thcell.c (1.7): Add th_cell_init() function. 2003-02-02 Sunday 15:45 Pattara Kiatisevi * debian/: ex.package.doc-base (1.2), files (1.2), libthai0.postinst.debhelper (1.2), libthai0.postrm.debhelper (1.2), libthai0.substvars (1.2): -some more bullshits 2003-02-02 Sunday 15:44 Pattara Kiatisevi * debian/: conffiles.ex (1.2), cron.d.ex (1.2), emacsen-install.ex (1.2), emacsen-remove.ex (1.2), emacsen-startup.ex (1.2), init.d.ex (1.2), manpage.1.ex (1.2), manpage.sgml.ex (1.2), menu.ex (1.2), postinst.ex (1.2), postrm.ex (1.2), preinst.ex (1.2), prerm.ex (1.2), shlibs.local.ex (1.2), watch.ex (1.2): -remove these bullshits 2003-02-02 Sunday 15:35 Pattara Kiatisevi * debian/: README.Debian (1.1), changelog (1.1), conffiles.ex (1.1), control (1.1), copyright (1.1), cron.d.ex (1.1), dirs (1.1), docs (1.1), emacsen-install.ex (1.1), emacsen-remove.ex (1.1), emacsen-startup.ex (1.1), ex.package.doc-base (1.1), files (1.1), init.d.ex (1.1), libthai-dev.dirs (1.1), libthai-dev.files (1.1), libthai0.dirs (1.1), libthai0.files (1.1), libthai0.postinst.debhelper (1.1), libthai0.postrm.debhelper (1.1), libthai0.substvars (1.1), manpage.1.ex (1.1), manpage.sgml.ex (1.1), menu.ex (1.1), postinst.ex (1.1), postrm.ex (1.1), preinst.ex (1.1), prerm.ex (1.1), rules (1.1), shlibs.local.ex (1.1), watch.ex (1.1): -let's debianize it 2002-09-20 Friday 21:40 Theppitak Karoonboonyanan * libthai.pc.in (1.2): Fix Cflags to not descend to thai/ subdir in include path 2001-10-03 Wednesday 21:52 poonlap * man/man3/libthai.3 (1.1): Main manpage. 2001-09-30 Sunday 21:03 Theppitak Karoonboonyanan * ChangeLog (1.53), configure.in (1.18), include/thai/thwstr.h (1.2), src/Makefile.am (1.13), src/thwstr/.cvsignore (1.1), src/thwstr/Makefile.am (1.1), src/thwstr/thwstr.c (1.1): Add a quick-and-dirty implementation of thwstr. 2001-09-30 Sunday 18:48 Theppitak Karoonboonyanan * ChangeLog (1.52), tests/test_thwchar.c (1.4): Add tests for uni<->win/mac conversion. Use stderr in output messages. 2001-09-25 Tuesday 19:26 Theppitak Karoonboonyanan * ChangeLog (1.51), Makefile.am (1.4), configure.in (1.17), man/.cvsignore (1.1), man/Makefile.am (1.1), man/man3/.cvsignore (1.1), man/man3/Makefile.am (1.1): Add Makefiles for man pages. 2001-09-22 Saturday 15:19 poonlap * src/Makefile.am (1.12): Thwbrk is not listed in the library(typo-error), fixed. 2001-09-17 Monday 08:53 Theppitak Karoonboonyanan * AUTHORS (1.4), ChangeLog (1.50), include/thai/thwinp.h (1.4): Add K.Poonlap to AUTHORS. Rename thwciscompose() to thwcisaccept(). 2001-09-16 Sunday 21:59 poonlap * man/: template.3 (1.1), man3/thctype.3 (1.1), man3/wtt.3 (1.1): Create first man pages for thctype.3, wtt.3 Also template.3 2001-09-14 Friday 21:36 Theppitak Karoonboonyanan * ChangeLog (1.48), configure.in (1.16), include/thai/thwctype.h (1.3), src/Makefile.am (1.11), src/thwctype/.cvsignore (1.1), src/thwctype/Makefile.am (1.1), ChangeLog (1.49), src/thwctype/thwctype.c (1.1): Add a quick implementation of thwctype. 2001-09-14 Friday 21:07 Theppitak Karoonboonyanan * tests/: test_thbrk.c (1.5), test_thcell.c (1.5): Fix warning. 2001-09-14 Friday 21:05 Theppitak Karoonboonyanan * ChangeLog (1.47), src/thwchar/Makefile.am (1.3), src/thwchar/hashtbl.c (1.2), src/thwchar/hashtbl.h (1.2), src/thwchar/thwchar.c (1.7): Remove hashing. Use simple linear search, to get rid of memory leak. 2001-09-14 Friday 20:48 Theppitak Karoonboonyanan * ChangeLog (1.46), include/thai/thwchar.h (1.8), src/thwchar/thwchar.c (1.6): Use lazy creation for hash tables. 2001-09-14 Friday 00:54 Theppitak Karoonboonyanan * ChangeLog (1.45), include/thai/thwchar.h (1.7), src/thwchar/Makefile.am (1.2), src/thwchar/hashtbl.c (1.1), src/thwchar/hashtbl.h (1.1), src/thwchar/thwchar.c (1.5): Implement uni2winthai(), uni2macthai() with hash table added in hashtbl.[ch]. 2001-08-22 Wednesday 11:41 Theppitak Karoonboonyanan * ChangeLog (1.44), include/thai/wtt.h (1.2), src/thcell/thcell.c (1.6), src/thctype/wtt.c (1.2), src/thinp/thinp.c (1.8), src/thrend/thrend.c (1.10), src/thstr/thstr.c (1.3), src/thwchar/thwchar.c (1.4): Add comments. Check naming convention. Refine coding style. 2001-08-14 Tuesday 13:18 Theppitak Karoonboonyanan * ChangeLog (1.43), NEWS (1.5) (utags: r0_1_1): Release Version 0.1.1. 2001-08-14 Tuesday 13:16 Theppitak Karoonboonyanan * ChangeLog (1.42): Prepare to release Version 0.1.1. 2001-08-14 Tuesday 13:14 Theppitak Karoonboonyanan * configure.ac (1.3): Remove configure.ac. 2001-08-14 Tuesday 13:11 Theppitak Karoonboonyanan * configure.in (1.15), include/thai/thctype.h (1.8), src/dummy.c (1.2), src/thbrk/dict2state.c (1.3), src/thcoll/cweight.c (1.3), src/thcoll/cweight.h (1.3), src/thinp/thinp.c (1.7), src/thstr/thstr.c (1.2) (utags: r0_1_1): Require autoconf 2.50. Add --enable-ansi and --enable-debug flags. Turn on all warnings. Fix warnings. 2001-08-13 Monday 13:07 Theppitak Karoonboonyanan * ChangeLog (1.41), NEWS (1.4), README (1.6, r0_1_1), TODO (1.2, r0_1_1), configure.ac (1.2), configure.in (1.14): Version 0.1.1 2001-08-10 Friday 18:09 Theppitak Karoonboonyanan * ChangeLog (1.40), src/thrend/thrend.c (1.9, r0_1_1): Merge special case of NIKHAHIT with tone/ad in general. 2001-08-10 Friday 18:07 Theppitak Karoonboonyanan * ChangeLog (1.39), include/thai/thrend.h (1.8, r0_1_1), src/thrend/thrend.c (1.8), tests/Makefile.am (1.10, r0_1_1), tests/test_thrend.c (1.1, r0_1_1): Add test suite for thrend. Fix bugs in thrend: th_chlevel() typo; treat NIKHAHIT and MAITAIKHU with shift_left_tone_ad() in th_render_cell(); also shift top-level character left when collapsed with NIKHAHIT split from SARA_AM. 2001-08-10 Friday 15:25 Theppitak Karoonboonyanan * ChangeLog (1.38), include/thai/thcell.h (1.5, r0_1_1), src/thcell/thcell.c (1.5, r0_1_1): Allow null pointer to struct thcell_t to be passed in th_next_cell() and th_prev_cell(), where no cell data will be written back. 2001-08-09 Thursday 20:33 Theppitak Karoonboonyanan * ChangeLog (1.37), tests/test_thcell.c (1.4, r0_1_1), tests/test_thstr.c (1.3, r0_1_1): Add header comments. 2001-08-09 Thursday 20:27 Theppitak Karoonboonyanan * ChangeLog (1.35), tests/Makefile.am (1.9), ChangeLog (1.36), tests/test_thinp.c (1.1, r0_1_1): Add thinp test suite. 2001-08-09 Thursday 18:52 Theppitak Karoonboonyanan * ChangeLog (1.34), include/thai/thcell.h (1.4), src/thcell/thcell.c (1.4), src/thrend/thrend.c (1.7), tests/test_thcell.c (1.3): Change return types and arguments of thcell functions to reduce information redundancy. 2001-08-09 Thursday 18:13 Theppitak Karoonboonyanan * ChangeLog (1.33), tests/test_thcell.c (1.2): Add test_th_make_cells(). 2001-08-09 Thursday 17:55 Theppitak Karoonboonyanan * ChangeLog (1.32), tests/Makefile.am (1.8), tests/test_thcell.c (1.1): Add thcell test suite. 2001-08-09 Thursday 00:57 Theppitak Karoonboonyanan * ChangeLog (1.31), include/thai/thcell.h (1.3), include/thai/thinp.h (1.8, r0_1_1), include/thai/thrend.h (1.7), src/thcell/thcell.c (1.3), src/thinp/thinp.c (1.6), src/thrend/thrend.c (1.6): Rename struct thcell to struct thcell_t, for naming consistency. 2001-08-09 Thursday 00:52 Theppitak Karoonboonyanan * ChangeLog (1.30), include/thai/thinp.h (1.7), src/thinp/thinp.c (1.5): Change th_validate() to use a cell as context. Define struct thinpconv_t for describing input buffer conversion. 2001-08-08 Wednesday 20:58 Theppitak Karoonboonyanan * ChangeLog (1.29), include/thai/thcell.h (1.2), src/thcell/thcell.c (1.2): Add th_prev_cell(). 2001-08-08 Wednesday 19:49 Theppitak Karoonboonyanan * ChangeLog (1.28), autogen.sh (1.4, r0_1_1), configure.ac (1.1): Add result checking in autogen.sh. Add configure.ac for autoconf 2.50+. 2001-08-08 Wednesday 19:39 Theppitak Karoonboonyanan * ChangeLog (1.27), configure.in (1.13), include/thai/Makefile.am (1.5, r0_1_1), include/thai/thcell.h (1.1), include/thai/thrend.h (1.6), src/Makefile.am (1.10, r0_1_1), src/thcell/.cvsignore (1.1, r0_1_1), src/thcell/Makefile.am (1.1, r0_1_1), src/thcell/thcell.c (1.1), src/thrend/thrend.c (1.5): Split thcell functions into a separate module. 2001-08-08 Wednesday 11:45 Theppitak Karoonboonyanan * ChangeLog (1.26), src/thrend/thrend.c (1.4): Add guards for cells without base or hilo char. 2001-08-07 Tuesday 19:43 Theppitak Karoonboonyanan * ChangeLog (1.25), src/thinp/thinp.c (1.4): Remove uncommon predefined sequence correction. 2001-08-07 Tuesday 19:40 Theppitak Karoonboonyanan * ChangeLog (1.24), include/thai/thrend.h (1.5), include/thai/tis.h (1.2, r0_1_1), src/thrend/thrend.c (1.3): Fix NULL redefinition in tis.h. Change rendering function API to return total glyphs. Implement Win/Mac shaping. Implement string rendering functions. 2001-08-07 Tuesday 17:29 Theppitak Karoonboonyanan * ChangeLog (1.23), include/thai/thrend.h (1.4), src/thrend/thrend.c (1.2): Treat SARA_AM cases. Add is_decomp_am argument to determine its appearance. Redefine WTT "cell" for decomposed SARA_AM case. Add code for plain TIS rendering with SARA_AM concerned. 2001-08-07 Tuesday 16:12 Theppitak Karoonboonyanan * ChangeLog (1.22), include/thai/thctype.h (1.7), src/thctype/thctype.c (1.7, r0_1_1), tests/test_thctype.c (1.2, r0_1_1): Add consonant shapes classification in thctype, for the use of elegant renderers. 2001-08-06 Monday 21:08 Theppitak Karoonboonyanan * ChangeLog (1.21), configure.in (1.12), include/thai/thrend.h (1.3), src/Makefile.am (1.9), src/thinp/thinp.c (1.3), src/thrend/.cvsignore (1.1, r0_1_1), src/thrend/Makefile.am (1.1, r0_1_1), src/thrend/thrend.c (1.1): Add partial implementation for thrend (cell clustering). Change cell definition (WTT hilo byte encoding is too complicated). Use menomic TIS character names in thinp.c. 2001-08-05 Sunday 19:42 Theppitak Karoonboonyanan * ChangeLog (1.20), include/thai/thinp.h (1.6), src/thinp/thinp.c (1.2): Change th_validate() to take more context. Define conversion mechanism more deliberately. Implement th_validate(). 2001-08-04 Saturday 23:04 Pattara Kiatisevi * ChangeLog (1.19, r0_1_0): -before release 0.1.0 2001-08-04 Saturday 22:46 Theppitak Karoonboonyanan * include/thai/thailib.h (1.5, r0_1_1, r0_1_0): Resolve conflict. 2001-08-04 Saturday 22:32 Pattara Kiatisevi * include/thai/thailib.h (1.4): -sunCC prefers ((thchar_t) ~0) than ~((thchar_t) 0) (from P'Thep) 2001-08-04 Saturday 22:26 Pattara Kiatisevi * src/thwbrk/thwbrk.c (1.5), tests/test_thbrk.c (1.4) (utags: r0_1_1, r0_1_0): -casting 2001-08-04 Saturday 22:11 Pattara Kiatisevi * tests/test_thwbrk.c (1.3, r0_1_1, r0_1_0): -casting 2001-08-04 Saturday 22:08 Pattara Kiatisevi * tests/test_thwchar.c (1.3, r0_1_1, r0_1_0): -change comments to C-style 2001-08-04 Saturday 21:59 Pattara Kiatisevi * src/thbrk/thbrk.c (1.8, r0_1_1, r0_1_0): -fix missing casting between char * and unsigned char * 2001-08-04 Saturday 21:58 Theppitak Karoonboonyanan * include/thai/thwchar.h (1.6, r0_1_1, r0_1_0): Remove duplicated macro THCHAR_ERR (already defined in thailib.h) 2001-08-04 Saturday 21:45 Pattara Kiatisevi * src/: thbrk/thbrk.c (1.7), thwbrk/thwbrk.c (1.4): -change comments to C-style :( 2001-08-04 Saturday 21:40 Pattara Kiatisevi * tests/test_thbrk.c (1.3): -change comments to C-style :( 2001-08-04 Saturday 21:24 Theppitak Karoonboonyanan * tests/test_thstr.c (1.2, r0_1_0): Fix signed/unsigned char warning. 2001-08-04 Saturday 20:57 Theppitak Karoonboonyanan * src/thctype/thctype.c (1.6, r0_1_0): Remove weird characters. 2001-08-04 Saturday 20:41 Pattara Kiatisevi * ChangeLog (1.18): -hmm, do I always need to commit this ChangeLog? 2001-08-04 Saturday 20:35 Pattara Kiatisevi * tests/test_thwchar.c (1.2): -remove wprintf, useless 2001-08-04 Saturday 20:29 Theppitak Karoonboonyanan * ChangeLog (1.17), NEWS (1.3, r0_1_0): More detailed info in NEWS. 2001-08-04 Saturday 20:16 Pattara Kiatisevi * NEWS (1.2), README (1.5, r0_1_0): -move release information to NEWS 2001-08-04 Saturday 20:11 Pattara Kiatisevi * README (1.4): -more info in RELEASE INFORMATION 2001-08-04 Saturday 20:07 Pattara Kiatisevi * README (1.3), AUTHORS (1.3, r0_1_1, r0_1_0): -more descriptive 2001-08-04 Saturday 20:04 Theppitak Karoonboonyanan * configure.in (1.11), include/thai/Makefile.am (1.4), include/thai/thinp.h (1.5), include/thai/wtt.h (1.1, r0_1_1), src/Makefile.am (1.8), src/thctype/Makefile.am (1.2, r0_1_1), src/thctype/wtt.c (1.1, r0_1_1), src/thinp/.cvsignore (1.1, r0_1_1), src/thinp/Makefile.am (1.1, r0_1_1), src/thinp/thinp.c (1.1) (utags: r0_1_0): Add WTT 2.0 tables. Partially implement thinp. 2001-08-04 Saturday 18:08 Theppitak Karoonboonyanan * AUTHORS (1.2), ChangeLog (1.16), README (1.2), TODO (1.1, r0_1_0), configure.in (1.10): Release first version 0.1.0 2001-08-03 Friday 18:20 Theppitak Karoonboonyanan * ChangeLog (1.15), src/thbrk/Makefile.am (1.7, r0_1_1, r0_1_0), src/thbrk/cttex.c (1.3, r0_1_1, r0_1_0), src/thbrk/thbrk.c (1.6), tests/Makefile.am (1.7, r0_1_0): Make thbrk and cttex use thstr instead of fixline() and adj(). Fix a memory leak. 2001-08-03 Friday 17:51 Theppitak Karoonboonyanan * ChangeLog (1.14), configure.in (1.9), include/thai/Makefile.am (1.3), include/thai/thstr.h (1.1, r0_1_1, r0_1_0), include/thai/thwstr.h (1.1, r0_1_1, r0_1_0), src/Makefile.am (1.7), src/thctype/thctype.c (1.5), src/thstr/.cvsignore (1.1, r0_1_1, r0_1_0), src/thstr/Makefile.am (1.1, r0_1_1, r0_1_0), src/thstr/thstr.c (1.1, r0_1_0), tests/.cvsignore (1.5, r0_1_1, r0_1_0), tests/Makefile.am (1.6), tests/test_thstr.c (1.1): Add thstr, thwstr API set. Add th_normalize() implementation (extracted from cttex). Fix level table for top characters in thctype. 2001-08-01 Wednesday 20:13 Pattara Kiatisevi * src/thwbrk/thwbrk.c (1.3): -new implementation, not convert cutCode to tis620 back and forth 2001-08-01 Wednesday 05:21 Pattara Kiatisevi * tests/test_thbrk.c (1.2): -cosmetic on error messages 2001-08-01 Wednesday 05:20 Pattara Kiatisevi * src/thbrk/thbrk.c (1.5): -fix const casting problem 2001-07-31 Tuesday 22:03 Theppitak Karoonboonyanan * ChangeLog (1.13), src/thwbrk/thwbrk.c (1.2), tests/test_thwbrk.c (1.2): Fix changes affected by the revised thwchar. 2001-07-31 Tuesday 22:01 Theppitak Karoonboonyanan * src/thwchar/thwchar.c (1.3, r0_1_1, r0_1_0): Revise thwchar. 2001-07-31 Tuesday 20:51 Theppitak Karoonboonyanan * tests/test_thctype.c (1.1, r0_1_0): Add test_thctype.c to repository. 2001-07-31 Tuesday 20:50 Theppitak Karoonboonyanan * ChangeLog (1.12), tests/.cvsignore (1.4): Add .cvsignore entries in tests/. 2001-07-31 Tuesday 20:47 Theppitak Karoonboonyanan * include/thai/thctype.h (1.6, r0_1_0), src/thctype/thctype.c (1.4), tests/Makefile.am (1.5): Add test program for thctype. Fix many bugs in thctype. 2001-07-31 Tuesday 18:14 Theppitak Karoonboonyanan * ChangeLog (1.11), include/thai/thctype.h (1.5), src/thcoll/thcoll.c (1.3, r0_1_1, r0_1_0), src/thctype/thctype.c (1.3): Refine thctype interface & implementation (remove win/mac checking, add combining char checking, fix vowel class bitmasks). Make thcoll use thctype. 2001-07-30 Monday 18:43 Pattara Kiatisevi * src/thwbrk/.cvsignore (1.1, r0_1_1, r0_1_0): -.cvsignore 2001-07-30 Monday 18:42 Pattara Kiatisevi * configure.in (1.8): -add thwbrk 2001-07-30 Monday 18:41 Pattara Kiatisevi * tests/: Makefile.am (1.4), test_thwbrk.c (1.1), test_thwchar.c (1.1): -test drivers for thwbrk and thwchar 2001-07-30 Monday 18:40 Pattara Kiatisevi * src/thwbrk/: Makefile.am (1.1, r0_1_1, r0_1_0), thwbrk.c (1.1): -thwbrk implementation 2001-07-30 Monday 18:38 Pattara Kiatisevi * src/: Makefile.am (1.6), thwchar/thwchar.c (1.2): -thwchar uni2tis620-0 implementation 2001-07-30 Monday 18:37 Pattara Kiatisevi * include/thai/: thbrk.h (1.4, r0_1_1, r0_1_0), thwbrk.h (1.3, r0_1_1, r0_1_0), thwchar.h (1.5): -add new interfaces and descriptions. 2001-07-27 Friday 17:43 Theppitak Karoonboonyanan * configure.in (1.7), include/thai/thwchar.h (1.4), src/Makefile.am (1.5), src/thwchar/.cvsignore (1.1, r0_1_1, r0_1_0), src/thwchar/Makefile.am (1.1, r0_1_1, r0_1_0), src/thwchar/thwchar.c (1.1): Add half-implementation of thwchar. 2001-07-27 Friday 17:17 Theppitak Karoonboonyanan * ChangeLog (1.10), src/thbrk/.cvsignore (1.4, r0_1_1, r0_1_0), tests/.cvsignore (1.3): Update .cvsignore's in accordance with test_thbrk 2001-07-27 Friday 17:12 Theppitak Karoonboonyanan * src/thbrk/Makefile.am (1.6), src/thbrk/test_thbrk.c (1.5), tests/Makefile.am (1.3), tests/test_thbrk.c (1.1): Move test_thbrk to tests/. 2001-07-25 Wednesday 09:11 Theppitak Karoonboonyanan * .cvsignore (1.3, r0_1_1, r0_1_0), ChangeLog (1.9), include/.cvsignore (1.2, r0_1_1, r0_1_0), include/thai/.cvsignore (1.2, r0_1_1, r0_1_0), src/.cvsignore (1.2, r0_1_1, r0_1_0), src/thbrk/.cvsignore (1.3), src/thcoll/.cvsignore (1.2, r0_1_1, r0_1_0), src/thctype/.cvsignore (1.2, r0_1_1, r0_1_0), tests/.cvsignore (1.2): List more auto-generated files to .cvsignore's. 2001-07-25 Wednesday 04:31 Pattara Kiatisevi * include/thai/thbrk.h (1.3), src/thbrk/test_thbrk.c (1.4), src/thbrk/thbrk.c (1.4): -modified the th_brk_line to accept cutCode as char* instead of int. -modified according to the changed interface the test program. 2001-07-24 Tuesday 21:23 Theppitak Karoonboonyanan * Makefile.am (1.3, r0_1_1, r0_1_0), configure.in (1.6), libthai.pc.in (1.1, r0_1_1, r0_1_0): Add pkg-config metadata. 2001-07-24 Tuesday 20:14 Theppitak Karoonboonyanan * autogen.sh (1.3, r0_1_0): Remove ineffective warning message about 'configure'. 2001-07-24 Tuesday 20:00 Theppitak Karoonboonyanan * include/.cvsignore (1.1), include/thai/.cvsignore (1.1), src/.cvsignore (1.1), src/thbrk/.cvsignore (1.2), src/thcoll/.cvsignore (1.1), src/thctype/.cvsignore (1.1), tests/.cvsignore (1.1): Add .cvsignore to subdirs. 2001-07-24 Tuesday 19:51 Theppitak Karoonboonyanan * COPYING (1.3, r0_1_1, r0_1_0), src/thbrk/Makefile (1.3): Change license to LGPL. Remove excessive Makefile. 2001-07-24 Tuesday 19:49 Theppitak Karoonboonyanan * autogen.sh (1.2), configure.in (1.5), src/thbrk/Makefile (1.2): Remove 'configure' invoking from autogen.sh, output some message. 2001-07-24 Tuesday 19:41 Theppitak Karoonboonyanan * .cvsignore (1.2), COPYING (1.2), ChangeLog (1.8), INSTALL (1.2), Makefile.in (1.7), aclocal.m4 (1.3), config.guess (1.2), config.sub (1.2), configure (1.4), install-sh (1.2), ltmain.sh (1.2), missing (1.2), mkinstalldirs (1.2), include/Makefile.in (1.6), include/thai/Makefile.in (1.6), src/Makefile.in (1.6), src/thbrk/Makefile.in (1.6), src/thcoll/Makefile.in (1.6), src/thctype/Makefile.in (1.5), tests/Makefile.in (1.6): Remove autotool-generated files. 2001-07-24 Tuesday 19:31 Theppitak Karoonboonyanan * .cvsignore (1.1), Makefile.in (1.6), autogen.sh (1.1), include/Makefile.in (1.5), include/thai/Makefile.in (1.5), src/Makefile.in (1.5), src/thbrk/Makefile.in (1.5), src/thcoll/Makefile.in (1.5), src/thctype/Makefile.in (1.4), tests/Makefile.in (1.5): Add .cvsignore and autogen.sh 2001-07-23 Monday 04:44 Pattara Kiatisevi * src/thbrk/Makefile.am (1.5): -changed to use dynamic link instead of static for test_thwbk 2001-07-23 Monday 04:32 Pattara Kiatisevi * src/thbrk/: test_thbrk.c (1.3), thbrk.c (1.3): -fix the segfault in char* stuff 2001-07-23 Monday 04:30 Pattara Kiatisevi * src/thbrk/.cvsignore (1.1): -testing 2001-07-19 Thursday 06:43 Pattara Kiatisevi * src/thbrk/test_thbrk.c (1.2): -change to be non-interactive unless "-i" option is specified. -still segfault, not yet finished 2001-07-17 Tuesday 12:23 Chanop Silpa-Anan * ChangeLog (1.7): latest updated 2001-07-17 Tuesday 12:20 Chanop Silpa-Anan * src/thbrk/: Makefile.am (1.4), Makefile.in (1.4): merge map.c and map.h into one target, save typo error 2001-07-17 Tuesday 12:00 Chanop Silpa-Anan * src/thbrk/: Makefile.am (1.3), Makefile.in (1.3), map.c (1.2), map.h (1.2): Dynamically generate map.c and map.h in a build directory. Remove map.c and map.h from the repository. 2001-07-17 Tuesday 10:54 Theppitak Karoonboonyanan * Makefile.in (1.5), include/Makefile.in (1.4), include/thai/Makefile.in (1.4), src/Makefile.in (1.4), src/thbrk/Makefile.am (1.2), src/thbrk/Makefile.in (1.2), src/thcoll/Makefile.in (1.4), src/thctype/Makefile.in (1.3), tests/Makefile.in (1.4): Fix dependencies for test_thbrk, so map.c won't always be rebuilt. 2001-07-17 Tuesday 05:30 Pattara Kiatisevi * ChangeLog (1.6): -ChangeLog is now automatically generated by manually run ../bin/cvs2cl.pl :) 2001-07-17 Tuesday 05:27 Pattara Kiatisevi * ChangeLog (1.5): -add cvs2cl.pl 2001-07-16 Monday 17:54 Theppitak Karoonboonyanan * ChangeLog (1.4), Makefile.in (1.4), aclocal.m4 (1.2), configure (1.3), configure.in (1.4), include/Makefile.in (1.3), include/thai/Makefile.in (1.3), src/Makefile.am (1.4), src/Makefile.in (1.3), src/thbrk/Makefile.am (1.1), src/thbrk/Makefile.in (1.1), src/thbrk/Makefile.ott (1.1, r0_1_1, r0_1_0), src/thbrk/cttex.c (1.2), src/thbrk/dict2state.c (1.2, r0_1_0), src/thbrk/map.c (1.1), src/thbrk/map.h (1.1), src/thbrk/thbrk.c (1.2), src/thcoll/Makefile.in (1.3), src/thctype/Makefile.in (1.2), tests/Makefile.in (1.3): Add automake files for building thbrk. 2001-07-15 Sunday 23:35 Pattara Kiatisevi * include/thai/thbrk.h (1.2): -add th_brk_line interface 2001-07-15 Sunday 23:31 Pattara Kiatisevi * src/thbrk/: Makefile (1.1), README.TXT (1.1, r0_1_1, r0_1_0), cttex.c (1.1), dict2state.c (1.1), tdict.txt (1.1, r0_1_1, r0_1_0), test_thbrk.c (1.1), thbrk.c (1.1): -first version. -wrapper for P'Hui's cttex. 2001-07-09 Monday 21:54 Pattara Kiatisevi * src/thbrk/tdict-preparation/: Makefile (1.1), README.TXT (1.1), dictsort (1.1), dictsort.c (1.1), tdict.local (1.1), tdict.nonsorted (1.1), tdict.org (1.1), tdict.txt (1.1), nectec/adjv.txt (1.1), nectec/archaic.txt (1.1), nectec/conj.txt (1.1), nectec/exclam.txt (1.1), nectec/formal.txt (1.1), nectec/idiom.txt (1.1), nectec/local.txt (1.1), nectec/nibat.txt (1.1), nectec/nouns.txt (1.1), nectec/obsolete.txt (1.1), nectec/poem.txt (1.1), nectec/prefix.txt (1.1), nectec/prep.txt (1.1), nectec/pron.txt (1.1), nectec/raja.txt (1.1), nectec/riheads.txt (1.1), nectec/riheads_org.txt (1.1), nectec/riwords.txt (1.1), nectec/riwords_org.txt (1.1), nectec/slang.txt (1.1), nectec/suffix.txt (1.1), nectec/verb.txt (1.1) (utags: r0_1_1, r0_1_0): -tdict.txt preparation part from cttex with some modifications 2001-06-15 Friday 19:01 Theppitak Karoonboonyanan * ChangeLog (1.3), Makefile.in (1.3), include/thai/thctype.h (1.4), src/thctype/thctype.c (1.2): Add th_isdiac() API. Add function body for thctype functions. 2001-06-14 Thursday 10:29 Theppitak Karoonboonyanan * ChangeLog (1.2): Add ChangeLog item. 2001-06-13 Wednesday 22:35 Theppitak Karoonboonyanan * Makefile.in (1.2), configure (1.2), configure.in (1.3), include/Makefile.in (1.2), include/thai/Makefile.in (1.2), include/thai/thctype.h (1.3), src/Makefile.am (1.3), src/Makefile.in (1.2), src/blank.c (1.2), src/dummy.c (1.1, r0_1_0), src/thcoll/Makefile.in (1.2), src/thctype/Makefile.am (1.1), src/thctype/Makefile.in (1.1), src/thctype/thctype.c (1.1), tests/Makefile.in (1.2): Add thctype implementation (first draft, so dirty) 2001-06-12 Tuesday 20:18 Theppitak Karoonboonyanan * Makefile.am (1.2), configure.in (1.2), include/Makefile.am (1.2, r0_1_1, r0_1_0), include/thai/Makefile.am (1.2), src/Makefile.am (1.2), src/thcoll/Makefile.am (1.2, r0_1_1, r0_1_0), tests/Makefile.am (1.2): Add $Id: ChangeLog,v 1.171 2009-01-08 14:58:07 thep Exp $ 2001-06-12 Tuesday 20:14 Theppitak Karoonboonyanan * src/thcoll/cweight.c (1.2, r0_1_0), src/thcoll/cweight.h (1.2, r0_1_0), src/thcoll/thcoll.c (1.2), tests/test-thcoll.sh (1.2, r0_1_1, r0_1_0), tests/thsort.c (1.2, r0_1_1, r0_1_0): Add $Id: ChangeLog,v 1.171 2009-01-08 14:58:07 thep Exp $ 2001-06-12 Tuesday 20:12 Theppitak Karoonboonyanan * AUTHORS (1.1), COPYING (1.1), ChangeLog (1.1), INSTALL (1.1), Makefile.am (1.1), Makefile.in (1.1), NEWS (1.1), README (1.1), aclocal.m4 (1.1), config.guess (1.1), config.sub (1.1), configure (1.1), configure.in (1.1), install-sh (1.1), ltmain.sh (1.1), missing (1.1), mkinstalldirs (1.1), include/Makefile.am (1.1), include/Makefile.in (1.1), include/thai/Makefile.am (1.1), include/thai/Makefile.in (1.1), src/Makefile.am (1.1), src/Makefile.in (1.1), src/blank.c (1.1), src/cweight.c (1.2), src/cweight.h (1.2), src/thcoll.c (1.2), src/thcoll/Makefile.am (1.1), src/thcoll/Makefile.in (1.1), src/thcoll/cweight.c (1.1), src/thcoll/cweight.h (1.1), src/thcoll/thcoll.c (1.1), tests/Makefile.am (1.1), tests/Makefile.in (1.1), tests/sorted.txt (1.1, r0_1_1, r0_1_0), tests/test-thcoll.sh (1.1): add building system 2001-06-11 Monday 21:16 Theppitak Karoonboonyanan * src/cweight.c (1.1), src/cweight.h (1.1), src/thcoll.c (1.1), tests/sorttest.txt (1.1, r0_1_1, r0_1_0), tests/thsort.c (1.1): add a draft thcoll implementation 2001-05-18 Friday 11:51 Theppitak Karoonboonyanan * include/thai/: thailib.h (1.3), thcoll.h (1.3, r0_1_1, r0_1_0), thinp.h (1.4), thwcoll.h (1.3, r0_1_1, r0_1_0), thwinp.h (1.3, r0_1_1, r0_1_0): size_t definition in , strict_t to thstrict_t in 2001-05-18 Friday 01:15 Theppitak Karoonboonyanan * include/thai/thinp.h (1.3): Change the spec (comment) of th_validate() 2001-05-18 Friday 01:07 Theppitak Karoonboonyanan * include/thai/thwchar.h (1.3): fix arg & return types of uni2* 2001-05-18 Friday 01:04 Theppitak Karoonboonyanan * include/thai/thbrk.h (1.1): use thbrk.h for 8-bit code, to prevent confusion 2001-05-18 Friday 00:58 Theppitak Karoonboonyanan * include/thai/: thailib.h (1.2), thcoll.h (1.2), thctype.h (1.2), thinp.h (1.2), thrend.h (1.2, r0_1_0), thwbrk.h (1.2), thwchar.h (1.2), thwcoll.h (1.2), thwctype.h (1.2, r0_1_1, r0_1_0), thwinp.h (1.2), thwrend.h (1.2, r0_1_1, r0_1_0): Add comments. Fix many declarations. Add thglyph_t. 2001-05-17 Thursday 23:12 Theppitak Karoonboonyanan * include/thai/: thailib.h (1.1.1.1), thcoll.h (1.1.1.1), thctype.h (1.1.1.1), thinp.h (1.1.1.1), thrend.h (1.1.1.1), thwbrk.h (1.1.1.1), thwchar.h (1.1.1.1), thwcoll.h (1.1.1.1), thwctype.h (1.1.1.1), thwinp.h (1.1.1.1), thwrend.h (1.1.1.1), tis.h (1.1.1.1, r0_1_0) (utags: libthai_0_1): first draft API 2001-05-17 Thursday 23:12 Theppitak Karoonboonyanan * include/thai/: thailib.h (1.1), thcoll.h (1.1), thctype.h (1.1), thinp.h (1.1), thrend.h (1.1), thwbrk.h (1.1), thwchar.h (1.1), thwcoll.h (1.1), thwctype.h (1.1), thwinp.h (1.1), thwrend.h (1.1), tis.h (1.1): Initial revision