From 05ff778105d3f6eaabdd9a960bb5d15d158f5f31 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 18 Oct 2019 13:33:23 +0200 Subject: Update autowaf --- .gitmodules | 3 ++ waf | 176 ++++++------------------------------------------------------ waflib | 1 + wscript | 43 +++++++-------- 4 files changed, 39 insertions(+), 184 deletions(-) create mode 100644 .gitmodules create mode 160000 waflib diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b2babe7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "waflib"] + path = waflib + url = ../autowaf.git diff --git a/waf b/waf index a16e11e..887215c 100755 --- a/waf +++ b/waf @@ -1,169 +1,27 @@ #!/usr/bin/env python -# encoding: latin-1 -# Thomas Nagy, 2005-2018 -# -""" -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +# Minimal waf script for projects that include waflib directly -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +import sys +import inspect +import os -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. +try: + from waflib import Context, Scripting +except Exception as e: + sys.stderr.write('error: Failed to import waf (%s)\n' % e) + if os.path.exists('.git'): + sys.stderr.write("Are submodules up to date? " + "Try 'git submodule update --init --recursive'\n") -THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -""" + sys.exit(1) -import os, sys, inspect -VERSION="2.0.11" -REVISION="f61823cc84301d06f60113a498aa121c" -GIT="x" -INSTALL='' -C1='#+' -C2='#&' -C3='#%' -cwd = os.getcwd() -join = os.path.join +def main(): + script_path = os.path.abspath(inspect.getfile(inspect.getmodule(main))) + project_path = os.path.dirname(script_path) + Scripting.waf_entry_point(os.getcwd(), Context.WAFVERSION, project_path) -WAF='waf' -def b(x): - return x -if sys.hexversion>0x300000f: - WAF='waf3' - def b(x): - return x.encode() - -def err(m): - print(('\033[91mError: %s\033[0m' % m)) - sys.exit(1) - -def unpack_wafdir(dir, src): - f = open(src,'rb') - c = 'corrupt archive (%d)' - while 1: - line = f.readline() - if not line: err('run waf-light from a folder containing waflib') - if line == b('#==>\n'): - txt = f.readline() - if not txt: err(c % 1) - if f.readline() != b('#<==\n'): err(c % 2) - break - if not txt: err(c % 3) - txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) - - import shutil, tarfile - try: shutil.rmtree(dir) - except OSError: pass - try: - for x in ('Tools', 'extras'): - os.makedirs(join(dir, 'waflib', x)) - except OSError: - err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) - - os.chdir(dir) - tmp = 't.bz2' - t = open(tmp,'wb') - try: t.write(txt) - finally: t.close() - - try: - t = tarfile.open(tmp) - except: - try: - os.system('bunzip2 t.bz2') - t = tarfile.open('t') - tmp = 't' - except: - os.chdir(cwd) - try: shutil.rmtree(dir) - except OSError: pass - err("Waf cannot be unpacked, check that bzip2 support is present") - - try: - for x in t: t.extract(x) - finally: - t.close() - - for x in ('Tools', 'extras'): - os.chmod(join('waflib',x), 493) - - if sys.hexversion<0x300000f: - sys.path = [join(dir, 'waflib')] + sys.path - import fixpy2 - fixpy2.fixdir(dir) - - os.remove(tmp) - os.chdir(cwd) - - try: dir = unicode(dir, 'mbcs') - except: pass - try: - from ctypes import windll - windll.kernel32.SetFileAttributesW(dir, 2) - except: - pass - -def test(dir): - try: - os.stat(join(dir, 'waflib')) - return os.path.abspath(dir) - except OSError: - pass - -def find_lib(): - src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) - base, name = os.path.split(src) - - #devs use $WAFDIR - w=test(os.environ.get('WAFDIR', '')) - if w: return w - - #waf-light - if name.endswith('waf-light'): - w = test(base) - if w: return w - err('waf-light requires waflib -> export WAFDIR=/folder') - - dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) - for i in (INSTALL,'/usr','/usr/local','/opt'): - w = test(i + '/lib/' + dirname) - if w: return w - - #waf-local - dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) - w = test(dir) - if w: return w - - #unpack - unpack_wafdir(dir, src) - return dir - -wafdir = find_lib() -sys.path.insert(0, wafdir) - if __name__ == '__main__': - - from waflib import Scripting - Scripting.waf_entry_point(cwd, VERSION, wafdir) - -#==> -#BZh91AY&SYa}m 0#%(b1w{P#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%}55M̃vRM-;ssZʪ7iv:iWms[q3+ϬTs;إ5%#%W-7w{VtnׯXz:=kw<[.qlo}{ûlϾ{ڷs#%#%#%N#%>M1N8#&0흶Nz{q4#%#%]ݵ^M6 z#%ȯlA{;j%JH#%^TH#%4#+V:l|z}aw{m]jf9vk|{vm_}<={k^#&kL6^޾ܗ!}OYek\>ꨮz"*kaft=f{z6޺L2M"L@%]`<#%{Wmmwq(k}ystESKMTZ;:n6_3xJzݻa΃vuzxڽ׺αaϯ:x2$üY}Ұs:}Fuo"m;9{uox:u6}lAۯa[ln0K>||th>aټޣg*.{%\Gwnftu{#%ޞyv>(teݔqjkoOFoU$#%{չC>w:j{x#&}mu-w,5}>Dփ`fNg}d7Yjõ'hS֛lN7}^{r#%U[曲逎nv9[|ѹVV7brs:IAEuubS{S{yVYݘ^=>=#%_:_w>'޹f#&biF_\{.#& .o'm۬nv鬞_^wwn4wwWƾ;\4#%@4#% @L 4=5{Ti4m5< M zj=2M'#%#%#%#% #%Bdi?қC#&)<Ј4{T#%#% =R &3HħISGz5444 #%#%$#%#%M14zi4`Jzh2#% $D#% MB2j=Fj5=Ah#%#%Zv_\~֫^\(DtHѭRZ #@B?I_[Ǘ]vd8S0njISCW5t>+9zOu]^%5@u5lܯ&Wj6]ۛ/8.c"-p7Qf^6e|+ x@"0·}+"#P(A VVՙ[i6cl#+2"tT !5+[_ګVrXP#&EO6kjjbWڍkޫ[j!d3P)&K(Bi6532@&4QMPFKRѶ4[Fi,Ya6B61Rƥb& @3cI%j"JiDBHlLQemFIl"4SJFZF0"jiYZ ) &̓!( mM65%2&2Զٖ$#Dl#fdE1D&6H,6JED6)*aDAR6!PHDd"d", DD hҲD#+(Y+&4j!XK) bJLLFM#+!T4F4#+Th,E2LE3#%HfIҙL,Fԛ#%`Dch"ME&$F)L 01R)%"3ccXMԑ$"ҕ HE؀,(YQ6e"61lL& M1$#JX,TB"5+%6 *BhM$R"%M5 lhI!,l(1h#h ib"(҃If2%%$X&LJͥ#+LTHL`I$cA!LVcFM(#&HB*HI$$cQ&#S4X،L,a+"(&dQ--#fJd2)Y#+,)!H,UbI4Ѥi(ib1fL13HM&Qd,ȂSdE(&YBj͛X K$d5Eh&[#+D63 #(Ԗ-XJf0mJiLA$)1Y6De0He- I$h6тe 2QI)Z#&J[hFPYSf3hL1MQ,4mtBT" 1QlXE,#&ZBѰj6#*MFY1d)&" 3LMF&MRamLʍ H(SiE2dI66mؤhmdL*5aMITDƍ,ɦVDSk&Sl)6HHڋXL%5&Bd6%djJ5h6ňbƵhŀ0ȭQH&lTL2&%iAhbV5Ii [f*LՓD#)iY"6em*3K#&dEK"fj,fIJeHZ6d*4H`X3A"HhLc#&5LVI&,,R)4lԈ#&IE01*Z-2B#6m&(k RdLѓaBh%510ԄIC5(S"YXLb` (,0LBj-1Ff2J2XR%R4dY#ia"#AIEMIK2"J0hhF1ll֌#&)i5E$d# LR#&16$-&Pi#+J[%3Qe*lJcbM$dd["234#32RCfQɱHأD#&fd!1RBA[ QQc2i0 BLR#b5e%̢ M%Im"+$`4( RUL%T#&JRF)B,IْZ ,FRKMEd$SLfƔRɆISbQ5j"bj,0,dm&)+44֍h$C2$DR$ ՙA#&Fٕ1̍!M$PEl&lMcFыF(K-Q%mhQBhLdfDƚ&#S6IQQT6Tm%hM [b")f6-&c)D%řQM1(E)54#&F14F͉"VJزmYj4kj2cEmmk#+$1P K6)*ضŦj1eRɶ j4Չ(#FQ#&jMIeDPj#I"21-Z)fOdzzsE?qm%,pn&`ѤUnooJa2i*7ɗ#&vdN?1(0h(0\:8႒@I9>}GhP\de%Es͇[sұ6#&qΡVPj3bX Ԕ$ܜ16iⱯ^AfGiydM禺3ٮy94u; q#+nI\/4H]* Ś3)ۍ.e$P#kbt5RE@V&̤ ;M/^z/]ec#+Gvs_&][(#Z!zb.͈BBd㒱2E1x+)ȝxˊcGEgхh  [?kcB2>dJl,AZiY#+Mw6CQW6qcb}_)Ѣ,[wWпa^/[L[xr7PA\dj6{@D%~L]BDÖ7UV,'#&DSd5E qUB=W7Pq5++2Q]H2 .%YQ5JEH Cv˦N#-PX+}SzbC/+JCfNz`X#+*&AA}jT&b-ﯳ8恎C#&?hmiV3E\je8S9:4d&/z3,̬^zy5|g!lUQJ|5o;`fnԔ6)!FF*tM:fTѥ)NAWZe)ҠwQK~X\]VYUіF4I _c(WfкTfC-L% GAXbq(Y|(,C|ؕRQ4iїEUr"cƥ^V&V՘Қ`*2E^7,j[X=2B#l:fi[JOD1$OvwRtNPL rRER뚍@Uw,j+Ku~>ء7FZT-őH,e`*x*H=9KdYQƃ*;1&k[5gaQ%F*$ȡ֨#&١is$drs_urrZH h01QLUiHNZRVS^X1&t__-$_ hTF/Ke>+ح-a'y#+"<5:T©c~ttxMbtXM]vÎE=3-x:7:pΨIʻa!#&:B!eU%&aFeS~t];@v,4_N;wa4Hؾi};ypg3WMƻxjT'FW[5DUJe*0DDV}]nW^n3vPP0"*!P3ܵ2ꖨ_>WW_Դ=}E}>Զ(*OhX ꢙgxnoR4e?J1i}cҭ*?VhuWRj]Rw%3=-߶^sLa>f>,?sQENUfZ;D j_'' ~x! 63Y uHW~UL? !%"DW:*/5`")F]mM*3xQ #<$-:GBF^_f#&9S~Om8t̲'ʺmBL_kRH}L$~ΙB~*MIib"k^Y=O{}%/krSӳk{2XSյ[saBoP[oeU0M0Q;ŰE3)Eyt}'k2C<"Tm몃{=YwͰ!~vxzYC%/y:7 $r8N>{lOޱfZ!2KR7gFTaes^o#&gLa1M|{{쌠&_?"e!&yY򯭳LWtTR!28\1Duz!"+U#}A5*C_oTXߧ88358&g>qooQ|)N^Hid*!{,"zF,(Nf &X"btC"1*tB+^%ׇEP7. p#+b7rP+>{>z?Iׇb9Qb!obfl<>?.fŬ:9YA=3}*a+°_r94qfc τl\Kp4k]\+‰U2AlR/UTLHxD|e꫺zͷ*Q/"Qn5 EtꒌhӳSHٺŃTTңA"/sH>gW2 vM.@JLl^FW瞍QF-YlUV GTkLquMklEpZ,s~ pJSog`gYP1y> (Iz=i4iT*œ FxT;u:$m2E!;5c^D&#&:JAQ9du_x]P~MN*Ӷ(Ïea?s2>YOZc@޲ *R/}t|1libpPwzI^Dxg;ҹ Ie5=(Jor'=~қ7ݨAF1gWU}<2,ضI!P\2PʮbVس{srnXfxX*1b,~*',cgUIWKt|r9je3 QiSunO-hwFsX#+=A$22zl$T-2N/;)ZX[Š#5D/񑏅HL1lz@G[_fڃFZʋ#RU6[3RWb~tԛ]c Ҍ&eT5!s(6cc]F1|5 Ŷݧ;P?swsKzHHG-бyvK,#+,&tf#%EPˬv_Ӛ1y0y4}nV% e_xg7EAqT'#P"1bL`Jv-X.%3y95P&ӮlaZ,ުpac VB2%8ZL,@-x>z&z8Sw?Lp]Gmnj3}IY|x.Edؤeg.:eDmzi;v#&&d e^7jRZ뺄#+cQI?xJqq5ZkɂPj'5":Tg.˭P2*щ~{]ꔬnv물XUb'X)o}|nz i~X́+s$TKdsIaۃD76gqPk!Fca@MP4ÿ7#&|X2XBʢO|_ܣ<i>:V_{'4B3HkC5p-b+{#eJciovmw&E8PH;c#NMZbqR#&o>֐ Z/<\ kCђDRP⾦E`ҌCdCqK,YžW8b#+>Gxލ0/#+h~V7#+4>E+`Ʌ?;ju:N7f.Ljb):\G;p1y{]ﱑ4ZvB1U65L$Z>K;s㈺VTBmHϻ%t1A,HeN P@% y ftT$8sω*i"4xc.n5]##%҉:xB,ύ[ٱݮnO_}.ڿZ\Yκ/0hFO.:,h vN[h辢4t^O֝:tv5FyʞuD|e;?:ؽ51^AT-0|@LXB?քK}df\=qSYkDS> j`oJ=k/]MlS3dP~#%^b6͖柗fp>qdu|IAmpH~STS;lۅD .BT黛Ű=kסPchl8GbPS(^- d}{6vr<еސ\!;5|A'J@Lj4(Fx[>\oUPk n_#&= ?>d4xf)7#%:CH"~!.R#hΈ\'9}op_qL>^jN_j]4>'_z}PT*4m[V8`Tٮ6{za A"#+h-{x(r##%_H(Yv?~-#+!Jrg5 ]_c̀:"l]`1KT#\|fsaz؝E$oVI$m{ES4;0HUEInSѩM<(LOɟ)8[c _25 =lXF|:pp=mΈ{ jRth aagTvD#&弶`wXsngɄs^wr;/#&\3V?`dP<[lO:cT>#&a\s+<_ {>Oʧ9)/(#%@=.#%O#%5|Tsble-dޜӍeWԢ?˩/<>#&{&5L|q|~X3<gSk;"H 1ȣ#քFWߔT獮xSnVI'"\F&B'qt=,:p*#&wg. ! #+ȕ)CBS#+]#&؊bzTЃJ .W0d g1ƼUAov<#&^PEUu'%׭F8hR8cأ[7$C% ;ߣz<[`:TjzbmeOOnx#}eh#G3#+*l&D@"ʄqZ/xe6Q 9͛P:uarv)ݡI?G=5 `w,&ZVAlm%aF.mEDK&k2`J9r?uB䳑䆤2e01#+UPe4ȥcC_F0X7S#1 @6#%'Bop_Mpn.Z4HFzƕ"{J-<O#+0;͹j|ჭʲyKwlFZڃ5ɇl q= 8Rr`?Sڡ-s8TT)h7xɐ#+x!1Q`|Q7ۦС004dy׼^R2B!:BhW; '#+Fz….y#+>ekҷ3"|קKX9~ZF0q՗: MnDsKZmMvv#+rhEc j#K4.9+m۪wf@TTenTA c  -#XX6DcF ~M^ݭv1|67\i#&J`@GP. iRNAcLQ`2ѦQ4d "XTMPÄtn7R '.XU( ׍Mֵ=ڜ#+_[0*B%yy#&4SX.AeH; =SYAl%"Dő09 7 6Si5Ԝ7XOk:8`@n'y"2yxh?W'^fq4ǥޞ6Ȼh`❱+S̝;lY*'xyMtcF0k\N}a\bbpmVif-/ŷܕ9OXBG3A+ˢX}_9úǚt("sX 0wPLӆ*W7&O&Ikn968MLn>3)$utj?XNv#&r'Z#+*Dh.v58Vv`;]pV߼vɂ/rvZqnP|lZؖ FOMHdo?`kH,XD'\`#&'G\)#3np}ϲ.%4a&B"#gi2hҙESHmd2,ȉ::a#& um-d)cQGl0t.jD6"r\`P0.Q4iX:a4n &eIڴ6`7PS*PÔHLIvaWfk_;ޓ,EEM{sѝl#!a>JX/Ƨ #xU S}+7¬T^ ʑmk7_ JvUߎ"Bi2Yu!n]yvk83v[,Q,y #8SX#+],5.|ϗ_ :fiw6;a̧̨P++.^VdPN%5'jm(wIz"jB&;<ٶn#&lG,QiN_ːsp+!>|Nn΋^$Ɏ̒NmۉD?k|f1X1S0E \*T1ctTZ,sr:Ntw::k*S$ C\%~X>w#+ҥ:cF243tim˓*Dbbzջk.i2oCeQGo\O+T|T7r .S6ilvw/` `q'z_̟ KS, ٹWsk d:ޖHcq8N[4tIn/R#+H&at؍\%$$tc#+#}BE#&6J-}sRw]6fg<-AcZ2g8샜ju{‡|xOV?@ z2#&[Yw̟_7}O@}Ћ-_Tn //=i:=*]fXWU,3 T,?pjڂ #ĠZGBy",>{?w ݼ}OV@1+G+S%5o5K>W8#^,LAWfR#+eps3}"{廱n>+4-ӕ ,{`~ϋ_@:8)G#&n&,y[wW=#%R#&@7zmx+lwOnvOn跟>zi5+4qrB<$)cr‘nޗ%gx{>"1RBfU(f #%cGao׏pAN7e/0ʑC&o$mPS^#_$#+*(#%/ѷn}__#%Au/łUR/O`{ʏVJys/ovaP،;lX"%D@fʖ2MlUKvevkBP;~/Bi+bJ9eS%U1uip$0 XP(?+칔V)HEd#+T>m ؚ_/?t_bQE94Ht~Rc켩\5nH:7_IA6Ԉu߀%#+[WE-y&Y{VleZb: 1&WRއ([=s8g>4d~GPA6M=~؛=#:pq#&<`sa0\Tsg 0"#+}-D+8VW'| @ҡC`ӍTHeiLXK].AW3t͍'w%-GJ=8Q?6CQXHT?Rh!0VO&gnhC)::{ѽv=5ߡ~w}G,/O3=-oW@)G+Q53˫a)qD#&p[|xЏX~}rﱃtd{ 7}lYHs8̯;=(㳯ĵ i0˼ro/wmk+&˹+6i^4DUHIZlx$}J#%RB#+zC+~[Ec6#%?ԩ3'RO=|$3oX.s5Q'eEXv8i(O-K)#+b܈M苹qXGdtY@Sh$.PBb\7"#+}_?#9GJ_¾ș< ׇl);Ycl7ksQX"N3=;ik|ZJc~Q5iiU>uО7Ki)fj?mY/ Ma[=wߗ&>ޜN#/!xSgǎ{z!r$1UEW`a&~B"/#&oTMxIU?~zqA- pzc_GC_#%'IuޙU4A1BA4Ӑ6}R)?~U1Q},.9[8'K b+#mO2#zoVjy˴]+MO;[Şv#%Ɨ˺z/հ،?,;_Mew%B_xH8dl5Cmt1#%#+3"PP@?gGtiϧ8sZ^]xRծ{Y_{߶*lۯ~7˅L=8TKe^ߗ~R>u|:]S~fC_b)mq>-:5^g~S6 Z0F?Ӿq^n|ungs0v)>/~Tr $za[IO8$~o?v)j#+oѸ0},;}MQ$(_#lφc8[g}wvQ>ykONS;cijGœv0jXއ--qG:>䱻֘nl펱]-m#efΚv?{Mgj`^GrgN#Éw-Ƿ|c@|8g%>7eofӎ}V%د%fbf|Y>^5Mɱ|4}cA8 5ۦG7[9i|cYrovwW\}|;Tu%)fW-tv>L]NIϷVM|/hj_Y>CMe8~p;g}Qb(˿[aS[ճ^ã͜~Z8|a(<|>CCBu)G&pja:;׶E2~~?Ӫ#+>|~26M.3_ש~/Ȕ#+TPX(Xvyo/O%Ts-;]}YhYJq|H ~˔\#%R`Afs}c_BO~^vz:>俟ZO}' YgX/LGm8:ӧV _٪A B'7_>;;\px|<4#&oݏp;Gm2,5(kx̗=MH!%'q(;5 =մ#&: n`3~i#+Ef6G #%AU~mxsn#i* #&dW{y, sF(#&DBQGSEQQ$SА$Q߫P]zYek~>>0veQBǫI2f~%˃6;fHIvGɜ4d2qEa~Ẋ2feǎww1ܺW+˿oblll$#&(#mVIl@Fhs!2hJ҃-O"Ck[kr'A "V-T94aILAM#&#&Ѕ%je1Xcm5H+ltw0" `lRDtt]]7K.FlBzZ8du["/((>gy2tT3PrWQocN,;S!L 7{h(R1*+jc$ Ufm I8 bia*LedLcIը,MQ)LeU*AczWS)ߧ/͍;TWMv}K#n|Z5Ofc9n˛u]tWV%^_#ڧ?˫ox8gՇGz`DG^BˍhԲ|S]J^.cpB<*,)pƞ)TH=nK}~~~jAW<4}^㿠W/6ۜ:q^6D]\3ܮ:/ӄ?ϯZ^3m|uO6M[iK &zgXR>ف E78av&1[)V([uRr_7l#%bkJ,Bl7m#Hթe6MD||zzmvjMC1TQb" Үe~-8=+oZΚwex˺Z2AndnFaHƻr D``B#&70d[0 "`6qڳ7ЫʂhFAaIlB]'YҨ2YKk$-H(ւ#%#+4aXN  8ޖt3DId#Ձ¢67J^5EvuTc]dc<„ft~ P;l8šmZ2RBy,#+Ak"kS@z~Mv'stBp8Jq\緜(@Se_:fm{#Mjf pdO1X|oWg_=:®NO@ ױ̢"6:7t,!9α r6DDNe잺qa]v??ODw `q?(R|G?&~?7cӺNt砚iGq n"}E̻RI,ʪբ)O(A΀1 GR(H;zh~9oz$:u(cs)Qݔ;G&RHL8tvLw˜exeh`=D5`Gpiσʣ1u:LBDÿw^}@7*:8wӏ@"/ʡuQNWE]::a!FEj%LV'tm^ ʊ(%Q=^v?9/ϓufU״OדA`(bVLs( {(PA1#Iv"DV\ SU#+q6!la C}U`Q24W0k830F&QZ#%=qix#L+FcZӣ+F wlllol4F`q>ũۜ شBleAաM]8k,beM´r43M6A@ǶwFţv ҝ!"N]d;Su`6B`k&-YӨ碊m/4PXa JU#+6ܶ%TlIxYVjxoe;Bh\c3<EdߧOc#+!B#+w]r|xx|M[GҠXFcQICw^Fi֘Hy#C#UIud#+7tqLEE#Pm]F8z,oCg=3;EFfq02Sd „",S*@p Td,B82ޑmWd;sA~.l4p hCB:.mZ]7v.IQCաVlAU&1Wvḑ;V!>S N-c+P,Y#FS!(^x{E3- },>t#%qñS'uyf!BޘV^E`ϒ  Y[Hٝhز!Y,Lڧ2E;)P&@db(rM b**5FoyR#+~F96ь!Zf ~k(g: N(&fmBIr[[R.8pτ"5$(أv#+}/j)Vc}:^)Lέ>=ћְxp3-Zrq3HPCj<\3G4oܚkLͤxxbӶwyZK^AI5#&x.|4;ڨI$I$ hfs#x<:.N|ICF_!utPQJ-8Mk]몈$fC\#&-GABc9qs]]dbY+È-9Ž vEh+?#+#&À 7\Tltc޺jhD7m]3*gq y.6uE8Ea`0cZ673"P\hv:0ld ZL" 6f1tX1jqͶ0}KY_'tw#+Lyqk,ClV$w[S6('&^1!2UGMVi+n"N'"1H:4S|vOBkH".f哽uFrI5Q&㰇Fk&!&2Sn{|3"aڑ#G$&I7K?ۯWtJLL k9!Lx6xta_ }GD)&,qw _:NKsO04ܳBĤy514,~%ѷ_f)`ݾ#[]s׳~=>̨')k:X?RM{^Xamz' ᫲שҼf_?im+?}2n<'Xyv{nFBQ([40@T{X]"^Y:(Fy-5 ,Ň]3m3GQ+M%+<oj,j`qL88ApXbh#&/+#+֛"ӧ | Ǝl1Ga_FQU>5;7*mcryH{#˅(tA#AFz_i#&<1o=c9KY~z6 HW{,.1}?lᖮpm?y4[E)#&8N)>;z#%oό LPl{Jqq}ָ|v5esӿ1i%$qg,YR@{sUpGa nYo 0Ff.4gNu+^l@!EK1#+h$)L0gڶdwhpM"HX(#%Hڠll%E E%l[ ×lY\::zjAM_@1A#0\;c#+0u#+iNvH:k#+1Q(!hwM8'&jj%6Mـ!orFSsN [5#&@y`3O #dRd˗!B#+70J[aaMMBFwm'SU=>nZY szN䘉x3\6>&apV\;㼙Dr1^͵8Zn|3i>rz#ƍ9tROQaۏʥh Hj#&g{kS&"bV!U^#&US8}d qt=W>a{c( dNɨg;ɯPzdگTlX[;; ƽkur{Pud?]=HՋ/t-Տ"yvH>UѲSy5?WA 2: ǥvzׄ5ˤ?A4w+#&~Xܾ|!zRz %U!xz9\.dg*#+dstC|9#&[CЙv$= TQzE ޺9nG.tdޖ;o#+#+M"0PQQ4^ß< ԅ?=p^ȈO-[]V6[I)+UlgB`K°1y LR 2&BƂ>O3<[DRz-6y/hp6[9ld0m`wK'^{8G'#+T:!; j=|?Gǃ ɇMŞXpv꟢ G'oji{u`Ќ#-GcP$5!kRU.T2L9*#+@BHqn#zxp,-uR׏םj>9Ruw(:PE~Wȉs;#%e*dݷ)̟}@!m3*WN$N; ݻC= diO!]tg0!cYy#!sNsDO66h}uĜ֤7@x~o׳P?L.{NT0 Y.1]]ZRZv>Q@xά;K@/$Zj&ΰ=#&V&(\S 6\fu!R{ F"řq}~VƤ:"޺]siy9YHvȹˑ#%#&UCBj]YqV0knHAElp, -xI[}OzNQ#&b~"pmnEzyv.qf2{=i'0Dk1^Vrѱ ϒC^/yq1$ԞOJ=&1k}$L㋈ݶvd#&3o(ՎzkmÃ&{Ia4so#+WCTt-'r,oh4s'(Ϗz"<Io^ρFo%*aos|r^[u9:1j-$yxO#_͛﹅d#&NvGr 8Cո\|ܻOOk3;U6tysdSC_=XۡCz1aZn3iچwK v$v"W"̼TEgXbQ&p zŹkŦ壏w~N7܄K.֊B_#+Xh6ND߼F2f|qMU~MDĒp[%[ݾ7^Xև];_݂hl\O<[t`ȢxF5Ä-@t9Oix ̮#bpp"vv٦sBS 28ܙLmVLk^5nP2П}#%z<O<;x6P-Mvi|ht'Q,_>n&Yap8`O%?new gUη: dz]A (F7&89_+]gw{5$m#+{_:D8.jv*j:g FRtXt98_/ WObx[M*HXY=+3PRU%~nIeAi U4Y\Qʜ)-aUsDUU$(g:{-nXgtMK\im`fH"#%wCeFPcQ䈒G`-Gn/2ۇvմvNg2FG[LM0f)\_[zO}|KiF'|PR)ڦ3ϫ㇓jL1+e4WÙ-,!(w$#&C˅ 3je"5g#%/MnFJJ,nn2uҭԫjL Rs~i{ *uEo#+l?c<𬠛! w':޷B,`5XU /*ΌT5˓Po`JbEE)'|b׭"7L#&qyDD )JyvҴl9Rҏ鵦c>Agc]d-jiEv@~_ush#%*JX7‚*Ab:ݘλ #+\<( ~jM_}b* v:]?Ǩ;FJ_}N-ua}VB+ ;5#%s8o8h |U8ן'M3W+;=,,8>شFxjۚN.(sQ)ʰs4 .Z!'`M 42)cd`o3jex#+ztGך 3/$>Gko#J 3^%_sB+&æ7[A%`(A6{ՅdG|0{roLʾ~{8>%h&oWj 8K;:fNҎсr,, keFE~WYnxNuP V#+jV7<|JJX{ԓJrx,{L袱QknOqiʅURS<=?yuq mˋ9{NY$#u喎sX}rP0{%1P,e`|TD"#&RY`Ah#+z:][P^@^2].\{EX:ݕae \B{tum-I 0M?!D!BSqӘv^$sGnk1h^nX9iA* Tis>ACt=204q|MP:x+&̳#+ 梆'Lo-%钺,-xG*ɨ;9?bZPf 9ӊnHH|3~X}39\&#Qժܗ(,r:JEsxtٽĿ|f#&<~Y"չDkzA4BeGi}:ᜏ\sKnώ%3kVs=[D,#&($ì8@?7 /܃{_aE.n#+,8;uf_/8OaM=N^jT>M07H9`ЌՃ#%Mfڏ 4hיC״>czj7^L3.{ujVƝ7M@,u܃mriTB25̊Hiku5g˙{ƾ*&}l7m#EG[#+]U<ꝴmxi(?~9m֞:#&%V\Ð#a^^e<Yn!Ӌ1qC)?aB0ΫSk_ s6{ΔwY< D#^#+'nc6iWf?T\^@QdxmK|=IBa>)ZI?#O? E\kdd1JͩW*N>=!kģP6qɆA,ޖq3#uA 羿;}|ҖP#%O֠#&>X^ȡ ]Þ>3aZ8;Y8V#+r6D_*!FDe W<"?/λĚ}?ï6,JE-cVWDUO(ôal TaA֙_{3{gs?F\<&L7HRFE(1X>j8zul%RCmN#hA7芦NleD.vݷer}" "zc/NYD.@%MIďa"93s/#RE*?`xD/^CQE+}h49G&ٯd^"vN(#+]2~(:G-Ph|BB˗#&|D8˕ug#&Q[?GX)뱸R&ėJSbiK88ʠ =AzG !O܆}!pg&q!b(5.xbu@hDAܘluۢ}8 U-4i_Կn%\īB#&bXFՓ%,m#+;c;s=F&d/yG L.r )M ruwo~wGtzG3XQtPS"5`~O 2j:&8}?`j#%m*dabB2_+iPɁcÎg؟OOesm(bam͝ﯥ~h>{|`9ă\4w9;nak=LCwγPd+0Ի.H@M2r2_zl"{|jY#&XATjXDEq 8#s wV3̪}tM4'zPW_L_*^HEU[)gn-FO0=vWO1W̮Wu:#F"% 4^y3xyfXV~yx#bG5މi 7i2#&-ܑN)~rd#+a\Anz#%͉p]K~%W,5&YMIQKf/:/-7F8.9Z>\$!#&Ttv3^O6wFWme#+7&l#/@b-?cښe86N/+Sߍ.es(oLsX<Z|bwIܼfeݓL@k喵b̊MD`ʼk# c[`MnkǞ1B+b+C L Fw>ֿEn3{϶lUasVbw^vZ@1#T#%ї&s{TC`&(LDo{$~p3EUضߋ29ߣ2*,nJt.B Znx8/QG#CVʳӕC|ċeɧJKDHKrO'YEdz y%ϗ84tGؚex#&i ֗nm3Кt,q#&D1d(g;ybȋy"Nˬ=6Zvm\*VkQc%`ab\ZNg .91vo_X#~isyJS)Du#&Ov*/T08ǭqlAmXJ Si\Mn*IldP[W>-2VYxۤ7$N'IPHEQ";_ մBo @Amj}Y'I!HhP˯:qsmCn+|PvҟaKOӟa,ֹ4gٙ#%$"9_5ݭG'SI&#gdfը#&J 2fup!/jCؔƼ'>c]D<3[#+*ҨJ#&7A67c#&ڕnY0-\]Nk<)e2JUHM3(_y3]q~dG!Pba#+W3򠪧DY_~GsQ[ ~OR0z[u}jZ0UAP4G^c#n;j#&48sVO:uww"K\kܱ1QR'?FF/6R#+"\kc>s章aʾcuL?ُ{L4JHNNg8{콽NwAH,!5ﳊNvWчvn׳QM=qɺ% ܥяY/OD'~CA;Yp9׿/My& =8S9gN-2҅]XM_` @Of'Ϸ8we~?J #&AqnEK#+*&#&1 7fPђ0`̹[?F{zN!CS#+-0=,#&?QK?s䂡#Bb_ .yc%(‹Q#%rsY)Pcb4VD+h1պX#+b66R!cR!p3Kpa#(YPV64xX_#%P66MF.3+;$K(‘aJ2$̐&DAPC8Py⇤U?f@hT,8h=N&:] к,iƟҬ\RƦ"H6}L'0^<[/Nz6R-$-P'NK#8y<"i ]#+~.9Y%i|M#&[uigK>:$2.vB#+wn.]wQvl݌%l!ŴF{4 -h6z 4{#+Wq 8^Sm yvn,⣀Q3V#,+r[eqql{uPݓ3TjJŦ.)sݟ0<ꊮ^`V,#:z#$ =J= Zh}96&Ⱦ63a2͡||ڕ!! D=urn1,[4rljh55d,}>:NbU'뉮.3w4uRЛ]$ҝ#&\< #+##+#+.yNmD]Kz\],At.cgU@X |_/0]>nNr۞)62hQ2rsڗzǃ`w**!Jtm 3D"ȘΚRE'sBǓsov h9sèdj#+O(_,͋n&x6frځ|wpVmtP3G}pgi740OTX]:)eWdӻ׷vtTf1D ^ZFBe46ZRX/#%‚\'!) @}eDP S;x(_GDBU|Z51\LL*(NRv|Lul#+\,ƉJ>\};M;muU\(y|\8A !sٮh6g6e([{#36YmLD0,16#%= cU:sC/!CaIT#%&U.az&"샰xHąK,̺wWg-fۈwCY͘4nKfr:8 =*Zh~ݔ1!%,gRpaw_0{u6Ć\kUZ[q,+k:"#4CTjxG4q> *f#%.j͉\90_7ia5vaVO#%SM;6"Zqw aَ7^#&ɼ@ګg3 #&`kӬ-*23iNxgiHu_CqxNo{WCpQrT,쉾uĥEC:-klR&Іd]*0$Q4TƓM02JRɦ,M,NWQR0r81{DFl`_¼o0Tz0miQ}e'X(Ԅ,ӅK-<*x,ԝ=8>_'1Q,D]#+r9O{+C=dY:mQסP#%W%\Zw'Exo//!ޟopKx:,t#e?dt{gIo$n9|6pߍpB^*p! +S߳5b,?{a+"}LQ+Rz1{*Yy's2znIq{Pep{1& ,sK:jiF6Ņ.?s#%Ktcx+djE햭3>#Kd9nq%"%Ɵf)1raؽ4<}XCN~9(EdoWa=WL^vUԛ!!PHl]ã?=W|ppvNas:ʆ#+~IO\Vjܛk$QMo!W,cY@_aa[W|C0OJY-Vj-d|"?-f[R9cR9B"#+^%<&Z(ի[bczqxZ.!Qg):u9#~(lΓ砣ESZρ4SF8nwz{3.BFcw?5ͭ,Q[םy27 }cƿs??@D/7B#%ŔDbwsoBg0(6pש6r&StDĬ"9rCOo;ї[mn/GtJ_J^ϝ(Ÿd]уODQ(UQ!#ţ}GU)n1uFYP*,(ݯa{%2b/]uI#%:}U'=64[OU=9&qO6p6PB:aF^DH2-S#+ 98:^Bm%4Q4r9=@PDWognf=GWFV!D,sW1-"qi=Zcena2ON ^&ge+Ŷc R#%#%t 1IX? IQQ-aËh#%!MGb\Ǡhܞ2Q{F#o_ Du#ϼoY|S7'XD~^A?_#{rx{D=hn#ָ),-.fw-ǿsǼըfޖ9vx#% &')6UtTtOF;Z-j4(A|O qׯ<ޏ*T>(zG#&;P#%A#&arAu*1A۴-G)\^t(~ޮ""ܥહi}*mtė h>N#&#& { <<o'_+osrѡ |ߣuoIu^5R#&QQ?ZI#+ȨSByXD/s38HV14^`=m9YF6u&k.6U[!>jk7eϗg|ʐ#+#+"w1J8؊Js7蹟RHXilU&j"d,witiq}{*jQr{i4.Иkg#%}Xg0@ٴm[6N3\1$xP9 ~ilrx}G"%Z\[kR?IӀ 4g M.n\>BJ>j:sy}g^D#% @b#s/|DZ7q2"=#+f7v[vߩΎg9K.v#R"Bzxc3ݞ#%_EҿaX>#&GRG CM@|O`hJE%3kVHTaąebQ6شN,kc 8-f;C`PQ֣#\ri\ap!@\OUWc5ҭ)يo_BKi/tRHG[T^7ug/e_yhADÎٸټedz3ڽ3۝߂e|Mb+\!^;ݎRZ]*ֽod:|)qZ"l=Sv:kBU a <<7^Ye(σ$)BQ#%(ū+U0($߂cG⎴,xPL*3(#&9d4gxdO׋@Y=]ǃ6Ul>{"@87W.?ڡ`53 .ذ*mi2K+⥧tĎ*gjvG_w Pu22orѤa {Ulc'I4>$5cn9β]#+>8xjt'ѹtR!W\PcU#+SyyјN= \Eg'OHG&'=~Sqqw|k:sz~fj}Q^N1\ݨ^i~ a拰p`bP]=LLI&gl #&1sOox\=b~߹';*2!w#%}z]CWh Azqh9扙_O#&Þ|m߳D\͈>~eE>Gdc]~ֻpӞu;τ;S;#+c^:)]63N:ORSVux'#+ÒIX(-\%xDLT^KFetr32}1ؠ*2#&f)k.r11=wXi{p8ZںsSV|J 1A x5ӴL F2MĬ/{HƔ2 v6G#&?6k?yn. Egۻc0id%!xKJӧV(y8uU}x8DZ~I~W8{1#&=KGI3ƴzCsXsA<(`Wq۸A-ĨW#&)S?*"}Wh5]>;w@/4^:sc?C:[&̈I4پ+k8̢v#+({j MEչj'  wjc ȉr}Fhӕ{ز#8kO}?(G`INs#q| Kd>ז ljB_I&K.M6dN2 (oQRSGq=Y7l0}5cͧ2;Ӯ(7J"#W2Ywxpycn#%q=s- 0nd026G#&H?X.YI"cĤ >^ʸQXSXYjǤ2.:t4QQ9DSFB [u_D~O#+Ny?|l6/!r-P%20Sd>bXPfI/zj}=/SqtHi*1"/]ςj++q #%>bLEL /9R!j2,Yb^3X0uJh#[٥Cq;5*y@wrtCxN#+Pu1V t1mYWJUh Km0 .@#%-PPuR%#GM!b#&xB˶4! ԢT 9YRܫR|~-jfAaAr2"90xBI$bF'wkqtRK Ghf&i \џLWZ *]?9#%q7y_)Lz>:8;f (2_ 4q<,CK^ lR1&f2mvG;@>*)Ųpې=(5sφw0.F!-ȉdo3A즋/:m_ԿxM=U||zQ腦@'e9gC-+^{Shz.Ct#O=Z|=&I |)*/b졞tت:tjԩ"HP$Ī)Ä!FV=}4k^!We#+=D_#`;&VZM=i>GHwgb8rw- Vu̥#+h&#&YJ:C(E&8c #%on̓SGs%?Ķ[ 38%[?OX97%2ΊP+EPWSPGÙSZ0}Yek [#vrN}{j!,{[ConitrTX9KHP[҅h鹃:D<8=}zBb&F~7P4GI)3IߢiN0:cCjKjϳCR1F#+m+PS2WOf_0t#%s; P6(;t#&Rpj+z{7#&hhS[ElCscA]!pi{P,C0M[B-Oִ R3 ^ NCS2z,J+oF-f?$ygZJ;lAK9S(9{= d[WKޣdXAfؠ:4K@GAC1|lgZ]Վq#iX3IfeW5C&0UlP/"0g`/ݨ9}9؞b17RL&=G0SAh0"0;^%&g8U) Dv@Vi7쁖2V:d`KcC$ARiln=cog:wQ[=I0u}w ț79_B'ܼ{e~Mzd3;v#&~J#F"c$r cm",7Ђ{JEO6u{c5MTPqtΣ1%E6)!6{]SLbNVdzY!˳#&@Gk -k7/B%'fYN8kNXC.7F_Dk ʿ(L'y,ʩKťZ4lT 妮K d:>v-(":$ZjiMtB7I9ĊfjT`L: CFTnA$6=``kEnsZpDnDJtG#%-a巨!!Ȏ؍kd,5)n9C|k(BT5vQ%Y_^%C[g@)B\qbv;&6B*`V_'`Ghx` ?孩s;#%|XYڳi]ٳ~𻷳>?|Svyb2o?T-#&[],g `u`L#+29?s;9H8*ž]7[@#+iT#+B,υ~|p?/6?rC9U .*Oj?Y'󒔰*Mb<#FywrQdCGBhҕc-kcnXm9ɪ?P(a䙁gڌ/*jKx.nBwTm#%R ,%EHG^>>r95Р=(g[pm?cݱ#;K,~ѴEDc7qmX|jo;I;J#+Kp/r1a <#&C_.Გ*!P9Vr`Nx 67t-#+P5tvD$w`r0iE3i MyRȑ<9,uxMV6.IxxvyQ;#%x-A7eMMr6 7gPnK#7bd C!ρ[<>B wv#&vpY5g #AhNS !ê}}ߕ;ˀ`bSM鲒~?^?!1hUXM TEt,@ς#%#%j0$!VN[ax!iд`a;aLEC ХGFGE4wg.sbd^3̊"{S拉aUWݶ]s=q!k/qQBCڌ43[B!%U!?+S/b3'zZ`eB#&hddCs`8ȧ?bRŇٜU^2IpdbЦ: A)#š4S zs,ԌIv1o$aB5xY;|'p`cO9  [ ˩!@ԒDpP\ ~/vY`ߍ"^5׮7%&^{y lc`?.Y#s%ޣpL+Ѭ֙!>ӒRYR!ŮI$TiRb]jjKK[m<\Ֆf=2]CzxMoHՈhk&3ta1՜LFeA)4V3+!QV~)H#`N+4@oJ':g|)FM@"6xH뜂]*t``P,XݕqDC(%~Ϝ?BOg܇:yr 8CЖ`oM5d"o!%~ڃ-)_EtPrHډH }.3BՖk " -;6,?:rhY+w $l:e%5&Wf^!BءHi:v7ogFSvE$S߻WX&e`%d=!ŋ68}(]:%wyAfL'箜fJW(4S)hr#%3 ;ۼ0R1(w!cgN߸n@%8XAR }mD+ԉy|,RQE2Cv=sV[6\Fق"6% #%J֖tD_QN\ÃJho8q_tK0ixrI X-(hB1P4bZ2 #& $ #pM>!k洔/ ;ϥ/\C?qqg鷎#%v]#%#%Wg&1*v !?gII'ً-{#%υ TK7"z vE?OLON/w@s_udPaG`pӐߵ{Y. @{ۼT:|E;ȩA7GGx"LLҍ`A=:zC#%&C8xv-iY˰=ܡ!`H*d Ns).6s9>_C{Ð#^ :fi?` 矸'?>S>nTA zwS!}m lJS6Sߖ*`#%>S s*6,;c+S^%lz 'SWpZG|Pn;s"#%m.¹W{jJ5m2yb _Ǹ bPh`]fp)łе}C̊: Y4[0ܪdDFT|䣉#+C(3v%Ĝ*'-j2bB_o@UH%HYWs4h9HG- %xSoNndS0`RI9$Y"AmJܟ8u!bP.?o3vW* Fʥ`->gy7;Ìyaڸ3$ )SjEy?>}N5 {22 ~@2Q49'B?U%+#& o#&(((,:mbmJPU0??Gz/O}LH4Jr/X{R%rUj*#+/I޼ vg!(TCcES3#+y#+oOu[.]t&;g4ZJ=,.d+)mkxVUs2AaEiF6e#% $uT-#&A~Vw|5`O9#%j#`P6D#%G,2₅PFI=qʄ1Dr"QTx&?^H(utMCV;PQK#%Q Qx(H, XP')}mڞ!"SyahgT]((:gj4 GӂWz2![~P5GZ)덆QbS&woF7HPj[w^^eFƥ,*b|>WpNC O0]tq פ 9F@< vMЋ܅&*Da#+2 K8.q #%C#&ƈQ/j^OD;kǛy .zt9wOX[fݼlhU+8f;(z#%m9$8wz}7xD+x4:;}-iۊ9!щ.47amaP5zwu{}.%'"*)sE")DN.O{}Ԑǻr}#HVٷsGc3Lmԉ-#+Le;9(,H@>84 4jbA̩hy !E*p|QKf]Y$u(ydzF@n 8RS\ #+_#w-6 ĂcWfmQ#+ΐ'na#\h_ vǀ1+ `_)a1E~zT㡒E^~{f#&Џ?Po}}fGO}g0*|?Y!","RTycƒ!?#+r=!_Hv(3*bT"Rd֜VHqe8qDl" du}A^^˟Ԥ%R"Y.-Cs3"0=gX)o,w\6O =y{z!R(Y.,UL&z+9Xd7j=uXv#&'+I" 6#% *O X ES&^8H0Df7ƏRPA T%#+M8o{|1#&8)b#dѹ47y,%Sl((#%H p l&1Xyq8Cח4n ۸UgP=`*IM+|JtjXta%w#+Tsg[pzK1:"n*O2#%}v@<~4uP#&(~Tu#Є#ăW#+Xb0R9.WKr>P=Bօݓg Ȫsuh'"2'! @lʠـ{ui^ZWLx8zEH<$pVL%lE.^ /s6@` t>FYkZeIlz/ =>cp{p vFҜ <#%YԨ{^r`֋i5ɏGT'5\Dx6+,_βAKY@\ ;VHG*TP!DċiE#%Qti +)B#+47N~p:Bg%*JZ:̛K`Gv W~#&PX0Y @c| xniޙD2L!h+$U,^\#+ntC!#&ػJ::眢sc^w"nUL#+ѸC mbU7a#+8`o(%r1 ޙrhh~#+%cХU޽TmvP#M#+zf gMA?OMBЁHbBg#vCxrMLW{?d`R3X{5aWՔ 044P(e[>ιZdL1,)?ÞO>zvZO"|!,= h}Q5wRY]^;JGbٝ{BbA²nWf_x7~͑ @7!$݀F*8@#%o4 X?RH hm#&تm ʤc, @MI 2Os?Wr~r]^5 Mp!u=_#&*X\x¤G~NM[5-̆{cy}枙uubORK}WBnٜGp5o| ^ʱ~w&G_ڹБ#+2^s#!Y W ?_mHK5"|> : i02l?K#+Dڍ!ۭnxȫQ,v:H#+v^.ȑ9wq6aX~ kT$#+I' B a=#%7f_[ iA_2 8޲~]~L,p?]mBa˱e%I+@V8AJlm(V~r2*[!"E#+J)mPY̲q8)#,ŁN`H(ePR(\&ߓ:P݄0?$HW\%x"lD#&kKᕇeiab=-2-K6lq,%x@$Rօv#b,c.,$fE/xh3G#+Xh6\ E3#&pd4(yJ<==1)1V6D=ܪy=qvq-w +vpK@}#&OzxPn iÌ<[[ PL|.pĐ:pcA{ Lݒ<qR]f4ރ">\Attrf=O2"m cA];"ǣy2#%S۟붮aK0@%'qd#%ɔ=E0 >1I4I2޺>#u0`=ٌ?8$൐ @+"fzn8:Y?(sDi$H읰MvyM"*':3i8mG[uWx񇢘;.q G{5"q.#&.QTUvvAP!t!R#%ˬ!#&y_ WUTT$#&Yafd52g #`VFòMCِކp Yn8a0twP}+_΅XW(#Bt:}"gQk|ek;h'rzGw|5 Xٛ1Ջv*MTԎH$ #&@ cXb DRAZ,#&7Q4h݄}!B V/j-)q[~qtI&3[rĐ `F5(Y?1NpO((WV@B}h7.:9!N^#&d]?{?|#o-?TY;w0N%C @w{Gd#+KD-8Q mR2ИA@a+Q ^ 3>сDQ-R)&EO,fh3{ayXyyѨTKa>!JP}P`wmٶ@<Q>4Dp{5Ij#+^!{^ĪDx'h Y*Ihf4FnIXr8SԽzVڸ6 FC|fWo$=Y'>^ᚐni.Z)!iO@968ͯIEOWXFp44ƠIS~G(f11͈m=N7ή d`[rln`#ԙWA$\; ȆH5 /ۺ#%sycU#+B%#+o5dІid5\du^F#&y"@ԯm 'i}T«WKb.;{Xl8&-jʵQb_Z׆g pTpĜ;qǍI#ɧB@ᝬn5NJV3 >m'&׎ɵoPaD N6<^lĒI:]N{qQBQJ{1m[w/cqd%jyW jNSh|wߩwbs.,h~ !\MM[e\BUk, Ě0ttwxF{٥/wUfc-A*&$;1l 2CpFW@hXk҇A!Ĝڄ^!*i k8,r'_P"XGQ U[~#+&̰p+J-AQy뤄!Z%쫙{<Ě ;8&M^ۘ#&i0Y[[aHrqNDʼ<[> smjPYKwxwmtLkܐ4:bȻ$9dgRܷ\(qAU؜xqB3+CzlF#gDw"S7%(-Ȫ#"#&x5B'\Y6Vdv>I$c@7me=;Z& \/QGD:j;p9&L2~kjk5xu3) me7h#Z~ȱ #%h-z˗"u>N/paU:c}VRM&';U'܋c}̄@#{30]傋V\4%%B1õ5Y ;"_s`XNeRegY$kI84?,B̳!hQOL򓌛lV@#&[68f DWB|3ji.С4q}7ͬvgp&Q`bu3QnV Yq#z7f.׏sZ0s(q0qeHQBq)({:m4I#&qɁp#&fMQC䏘 g>#+LzhJ@eE#+tGC0M"bk{wQ&3)P"'1܂PPE.yyU {灍$6{cJlVz^uG@ HB+/-1IGʟ~H7jS"HBeU7PnR:v 6#&mU~P<#+dB%Ds`W;~hhrfH b6 #%@Dg`M?7ঃ8qc &R(!Sv#%'F BIHl@00m;L6äϏ]tqŊ i&H'FgJHܠ3"#&'5ҏnm;I KrǕT:j[={*[dBC%t$͕>'wP#g-zB;WVߥy۫=}R[1*yV( e*V6Z*bB(!G#%#%DPI$[ȸ7HV#+q2AOW4np"p=KDQnA>`0x bu X`ȉ@p@ذ8C2}"̷6"^rI"ޮU7/SxbhHLe!ejU4.IY]9/ZF#ZRgVoL͐hd_ww*0{O픶̲H"*V=|=_6N߼ݴ%deߜcN~vob(f,^0y, 1Kz4֣-0~l:Io$Y"iϪ?(6"AJ#+A#%%Ú5yBDHޛ>azo{FQU#ɕN1 iph8%jD4#&p!LyW8fC&n 1 C#+[CMM) d ?@"v@;&啪GnNU47ÊR7!7&v'q>!ahxB=IX`a#%<˥79c~? 28DLs+7Ap~c]_Na熣s%4o;_զe]2Z9XꨕS9{~XB!*Tÿ)z(w(SK/wT9 UHDw3Qd#%bDԏVRJJ{,TRDWPBNڄt+_eB"|r(tlCadaW>9#nuuIMqU;Z 'X/W{/i{SR@T#P@G0?#+ A*M{ZAl O20qTsQ-5Q@oB>)st@L+6#+Jt4ιmYYGX"cQ͐6d٢mӥ|aٸ#%0A,.#%LH-*;x-*vTWnJ#% E^Q:&f衒X$[hH H̠v}cKE5R0E#+Sz)`נN:$Q@Xll[\1%\ۚ3aJE0j*Jت9h߹ ^\y(o^PU!@rOP6 u_o'Ӽ[C8Z78KHhfԊA=Q^Ow8`:#&@O#%ډY>p|ʢ`#%!9PArBY%ޫ<@*2C #&IjkR# *1@4!g{yuXuj҅(EMQӍr*#%?Pg6=Ȗ8N(W5t^KPmk5{_DzyT "0C#&4#+s<;#%Y7cB(ba6%NoD>ӯ"wIavx陠CIV#&z[ۿtCA(gf|^ɗp|?3!޿slQݰxe\T헝f2%U 6$7?cdȢЉ!>u+KNUEݽ#+v8#&MT~Az1W0ǹ{{#%g3vkEt>#aFP3tBe))j.(M~+'諍ԹȜ\>4#&uƛR8zǧ4RN53{מ񽮃blVm<о1ZjkaH #%!")2*:;}`bző]^H^+"0F;4Y,nOucǡEJ=|73C "=*Ǹ2@ٓ %ׯh@ G~EXSg.ƕ>wsF{Q$nj"W X#$(BlwP!$(w󯍻̪>tޮ`@Q"c %0 YX:ɯguX{,98*͡Xp ;ih !@ \s]@M#+nڇ:@v#+XJYUc{^[Fm)1A+I6UU<ǰF0#%`W]Fy9&yηrvN[O#&ܭ(iPa%S@$imvJ^#&.Ck6#+Z&oh>HJ0?bpO#%T#+bM8dU{tZ^ST#&k"E֊"g15y\b!W稒B0jҵ`#&ӐKsm`#+WnN#gjt 'BvjHM3\i%#/0(,G``qجEOέm$2v7c):Iؾ@G [`u#&hRBB kR2]J@" кXX)tC 8Ifj2BB]2#+,2|h,$5bA+\̲`#+vu;K#+#+9(iP%Q !Dc#%50#+<\#&0dL4(@W<ȵ8Cq. wepªKŦ l"`A #M#djLic\VZHj!:\R,QcѻD0}۟ϱOW̑[bϓ$;tʐ,o\Y7}K{’Y'i!(1cw"kʔnIK%iŘ~,~ƶ:#%'+9KX6Uv)Ǹ4#& 46~ddaeikK{{:!)G܎Kv%~K|x(ӗSbT˥:@(Dh:PI$*I7{OH `&ЉR#[OkSľ-|Jc/үco=#`=|TRITq&H>#%h3K))`7qH#) #AHwQak}ci/lkg^4]qk.BeJ2$[Rԓ&]I *lv. 0MB$x=GG> ;b~,D[F[[#&%elށ3T HAH΄m1цL$ zTFX#+f00Yw9 _dD.Ɓme;1 oE#&6yNh1I94wrS[w%/$*p"NjU/O4$^yi'NNw$qJ\yt::AQq'{U&5G8^;/b-TcoP#&S#:cr7s;P jޭb%Kl-񸀆J#&_Jb+eMZ[0~~R(Zba1I#&rb &XH#&$hQ#&h\#&#,t/xk6#ٜ5ZN dhdB3IT<h2hő`,47j݇GHtQ畻p/8WRJ:[۔'<m_ͣ;xihg=Qyt#+&CI)v\*%GK#+A[Ѹ7sg8lҝR}<t$a.#&#+zBAtdm,`R;"wLJi@|. mAs|;8#t wMtSQ@Be!5ӪwT6#+ᾦJ7A+⪬EbD55p.[>}ї:@ܱIҴtz7,9û fmٜH\G[Ir(=v {&H6!C|!h #%vG'<,EF1 @LgJM%`;͹k70F4(1I#4!RIS˥E,Ӷh(23#%0 `_#+ֺ[ͫjz%2&78oS>āAxe-f[!6{%Q#ȝؾ-[+}={sɿmLbD(h~1Yo5VGwjˏiw5Y_QPv4һ4'ʶdxg)̑c?C=P@T[U='!xž- #Tmj-k[mlUZ@$QPvLRza=cB#&N37$H?Tf5:)s|d kd$" L)S,+)M1II]IB TM5(d%#+5{5ŒQ)B13LHB*14i}=mF1hUɢQaaF1e%%ASPe*3Ym"#FSPWINn0:IX&A~T>/B#B۽rJ7$X iQףvܒa,76(H LG#%LpQB>:8Ky೐'hMZWIBVv1X77Bq囍S%bs1{RN4P׈@m& e+x5[#xaq%Qͤ=Mƕ*VJŢM1"#+"$N>n4Qo*L(S)YwUMaY/B h)]|7feW/cz=1 =2k}#,&OOb|/!<2)z(zP9|"&ӯS ܱB c.}hH_76ik[hFxtLfa~[iZ矌!~˒"b9h~@ޱ/ִ 6"a4i3Px(̶v{c;5AȧlYj!!K ֬pXC΋I [D\ l8#ÏA&}٢tm*Q` ) #+<V֬ ;r߹(|Θ(p;xi[ˇ~#py^Ma6Ж'.cPܭ3phXzm`H6JOc{1-ӱDAJOx<[ @rvA6D슔qhSBb_=La2Ir>/܁O#%6k={y#vy#%m9}xY!r+ky!"ӖͪdFRp@oK(l]//un#&~וT]d#%y| W(&DBSiPa)<umvj+ڜ.tAx"Hpu#& 0ܱ7ςx6L?@"! 8R_؝]swwl=W<,;RdIZ#Qa\kR1-1dSKM87~30W>ن6n&>fC_Y$s΃[f*jQqq"E,.k2fFf54[|<8y:nO5 rq ]50lngXaÊF&0>0Ng{5YƟ/T4cmAK(Ûh]/ [EN Xځt}ɧ.XLai.ϓ lI;#L'K<(?ipH\\ݘRtyK 2s#&#&KN]#49G#&`ܻcs#X邜y^2%&8s5N{#IwWCnh\uO.9_Kuy9 9'Ol46 c'Dv-PRpKL:c!X;2fk!,}jH3 ѐ[hzi#+dF$=$#١uJCڠ2L-K.1TCH*:5 јX2pII:nU90Ĭ8+fCDžˎβUlc|c+$l=G<:d:EamL4@\ެNض2#w Z]a%&`cU i޴ًI8g'2]_ipCkĮMѥ䱄9)\d(m585-+鸂,賧CVBEfʧd]S5)tF+9!(̰Fa#O=dx;bYlҢEa[^L\-rv#+hM2!QzNd!\eɳC.s;8X'f兺g'z˜LSW̬+- P+C+;0^7i ˧> nLѭFnU}ad[9{CZc9ŮN`շYn*O{PdH9J0Ke8f14uc+\[smRnd8hhݛy%%O6;kCo:.92TRBU0Dx8跨W\\gJb_4[j&j&f^iTZB!H36,*i2\I"x\3J#M#%Hqeh̪BG᱌b6,U4۳r&!1]ĝӕkiv~!FlW<.6#%Qd7BIK֨ rHl#&SUO/ ؐ6l)ZVx H`)ҕhB!#&uxОȺS РH(1Bs 2;1~˧9LuHI}s`n'hL[$u#+E,9M00 -VCϕK#&& uwͅ3 ,2͙!lMG,-Y8Rh4ւ[%3z"Z&p$BsRm$FZC}kL%2X>-Q#&*nA:ԜٷS &.Y4@DiUJAꎛ FugRsB'#f3mB4W2TB927^<.S6pCd#+Xܥ1Y ڼW:/n:腫n#+(7;6kJ8IprNMFld`g.>*,qrja|7sl`#+A#&uKhCpBl yatzSզ,  -5iN?o795JfqYm -)ƣNFnNCIl4 ``dK~JGdIf1u#& 99!2m#&8aXv;8tͣ^ו$BiVD /e.fDNʗ~9C̝:T#&OLdҊe"KEQ:߆t&Ъ#&2#&A#+֩KD+])H"QH p96iRxXqMC`Cd`M$XXhBqX^]AYBU5",iĴ]#+O@-`x컢f#%#RK1#&ݟY6}0N#&614iqҮFnogml}&aV -.Rk8m>."T" 7e ;l@]TZjhqlEpCfPDRXf CjfHU Q*7La5pfrtXBA28f?W-xyY"unN(|UdQ$#+)ۗ+#+LkaFPpYv%׊.1#J WxkD뉤YYڸ4!#0L"6HX)8ݺXf )ey#&aL*Ƞ!@At(ʃC3#%.VMx,A $ (79@.:lfF3B#%@.Gzח^@5dϵ\R(= j?[ч(a_:zfcP``7E(GxcMl]p|ݻ+.tn4UkƿZڋY5km_jZ!"BC)E =o*ʌF>}WMN(#&+[Hl#+qY_f:M`:I+CdiY%mL",+ZR,Ni6I+|]K^Q*J148)`-"^&2-) m>-IS1d27GcKr|kB&V)"$I2Epa$;jQLk(KF%C+#y''OG(LgD'D8m7DcP^P&٦aVkeD6SU#&7+6&'\ :4&j+mpq]R0DqBXҹmɳ'Ɵ!fF5Sq}ʴ#+DdE)#&E`Ahܲk]57.kMd ,B0i#uFz7[PЦdVơg4P RDUW#I{(=H8#&.rWwmhs5I6IRc,2FK 퍰iB!KCUUmӻvMםk\ULc .$H7q-[k+zXCLt 5bw^qIfv^5A"@EZˎ7GVc|R HZ "90a-(vsm Qge#&h#D#&rNW$3ȗ+XІXāVsS%/#+;d-j#+8Rd7s@DEH@#%{~|Oìa"̣g#+ i#+H5ykV+EiTUK6"BRodYBZIlZ%Kc)m&4dwnS&j"2j#+Ze1%Ejkl=8iKJЗլk5{uS3kiD)V"-,ceWcWv,"XֶȒij֖&k{+޽w6&i0KeޝkTF xۢfuure6hk7^-uJ&BFaHHbgTצЯF3&<rqG^|s'PG긥&Cժ-Hd%gv{E!d] ݹbD`)&S^4#%Iúffim& #%BoaL#%6J٦mUmb[K5r~u)騷-fʮء&#+BbE!"&aS(jDS`0Z#%H0$lijKJMRmiiFiMMkr-Ee-FRB#&JYS21QX4RZ)I4бmJ),cTPTT&T3RʱE2Y4$)*Œ-J%h՛M*BRe&LL,՛c*ȑZ)bfԙ$YjY4iI5)+jKmjqZJZk%4JM+rDEBQ(G E{eREH*ZmUkgq?8Xۛ`dyʋ6[-f㙞QQ`0IÿhղXM(p+\#&K)6Ǻq=л$2)=*Lאe鿊̸ >a=P턆,wEgt׎ld`3/#BH6 \i0CBGs5Dc\QQ1zJAAoXKuPMGI69#+TJOfpM4OЩC+]?oğp(Lf ~-'l!5oMcGBaXNGW#GR?x5~2|c=rL |~k3AQmCT?uht~JWo۩qdpnѨ%Wovz(aL[X#HN bD /pD#+ $"H<#%b0mWur+rNr#+t(ݓ`U$"Ye4h/~;oд:4Y _Q)tۻ#%A#%h'7]Hmίsc»7xqYMzȐin~wh/<}8\l#+lq#+(5@O4^_7*6R5s]KZ˩WU+-1VRD#E&i&Fԓ[#&V !u'6ơcMsj rT3Q T D#+`X*2UHQˤKVEʦqP5#g``uQΫѬP$~h!gV!- PN $8o#&:qHѪJ0)`C<#+kc/aO* #&^Q˓Nލ6sggUŴl2#h culA;ߠ~m){5z w}B(EzX÷~X}U&>ߕAoks$L¼"ZyrnIbNо*Ce(@}biHRhg]  mCJʙP!+*ܜcC{C D+R}xN 'Dth4}6ڑPr!h+jVwHq#g|`'r#+\9'ݒ?cFvvԳrQ[Z41`8**II稊hnP#+91#%tdzӋp=׽ahX"=%Ap6TN9Ek9wu睅+ƹ`GBKyփ&XF@RH6FpְnCd5#c-GDF"/cf11`FeT,#&MRiTVF`t{Q#+1ZH8 U$,$-h2j`Jҕ~˜a<.!F4P|Xm"(߻Ogۈ*ȥͭ&,Q@EM{+qw xE~վtJ"D#&˒y<9G*V:s΂*LqW+̌hwJM0VY6?ʐ,'JLl#%-4lF2U@f٦M]t\%yĖFѪ+_1h|Fz^k^7*6OHAR%(w.5 be>82뵙ĆR%RTBHRjɆE֤$ 4Q0An apJRf7D5+?nfPr7,#y$ECTRr؁R'boR8 I$qSU*TPM^͆YmD6lp:yzߺQE"D6MmjtO#&΋..?Df^7#2zÒ5;\ЧɔBOdD A@ ĂL*m}hox h͊,q B=Y'wLi80t.ȶP^Ph#%#+:D ?`ql9[rlxTe zB11Yp,ֳdO1 Pm@A%A5m,W:${BNYwe֟HT $y#%6>;X0‹#+RBLU5O8DU(awW5rO=>A<]>齉G87zj4msiWhۖo5xd֒-%ҙRW6omye[%#&HmXUݨѢLcc2#+&"4BEh*"JI-RM*Kސ "*٦E%_=CỌw4SD?EBLgbIb)#&E7@%]#*$>ɠTaL GpiQE$}`%CG#+ ["*A.BYkdR8La~+]Ж:2'~ARwCѿ^gUB&tzf#%BjUJ#&Vj繡ɇ\ >]t;<- U$mqv rə`.yb}{`ECJ#%X>be%7rޫC҄<̇i^$ҥ9a#J5[DfuQ՚m+-@`#&w? & %Ѫ~H=[l9sGX0]tĹHѢ.|vI D?D7GqQyc kH-Z1{#f v Ãܘ 44X4rK٩%P 1x{=/g|`vI$ 4GTFNCq75>OP$*=WH/#" %54anaj-4I `e_:9I6tu9k gQUɷ:" HěG#%5#rD(YԦLI#&NFmv}Qt(&2!#0JPAb$%%ʙQR?㎩*oqؙ"&HqnLo #%8CS?w?۩GB\Kg=sgc:솬}cMtqdYA#QB"H&FƲ#&(٦bڍeM#M~Xm!66̪QRPԢUѵU4&T*blfhj5#-iޣS#%}t'Y9͢Gu_=R0*@Ts D #&AYMmZVn͙ 2H?H; =o-9#+t6jR Eda(!%#%l]^1EE̕ 20T{,0|2?HOGn7#+4PC4k4( zN`C1#^ %]w%mͭQb!]Ѫ,jzҖDJ'^wlgc{ÖuQI؉bܖ;ff02BAAl8#mHm.OP1MJB]̦G\WRкD+/jq"xCHͽO?b~#+s xzBQ;V!H7aXwuB<<"!#&XM5BkV#%pzzf#&h(eڅXhՄcj"Bhh'Xl kgW!UM7kgSg, 2iYƂ13j8'ϡt0 a4N8'QLI`^ ":?NzTX^s%Τ'ߑۿ'G3̪֠qb6"ɪBiVBe2$Z!l >oys|6$Dfe2 G#+?z _8m- \M,ќ@:kv#&S(B $c'##&di;A%+/1TP1Z G,-m&@71* l/h#&+5OmżO]!6d4]`,HBʆJO7fPy]MFPadU\fSU-TxUMeP<;0csd\ܦnL$80rt.b@8۱8bTHgP.t*g!hSi #%E2c.Pl6̗].WT^Z! SA`O$PCxڨ;@?'!oYzPX 5")4(mgֱP{S<s`J46n6a(- 4#+Lzn:D| wo;EN %;Š&jL$VMV`SQAFX ѐ!-UWl"2)`=oz\JB<NքE#[P@!Y1~(({DCyT)^l 7v`.fMP* Fƶ_a4P#lSNpȖkĨgw4Ĵ.EB~p)a"*Ў#f!jK(-/ZOݘDReU_Ҝo $ll#&)bS#+4=tEz6SwE&a4&>0֛Ab0G8%vsX_T}g="5uf-:& J "ĠRe'd#%0#&nAۭ2#+{{6D7qju]0C_27]GœiJ_vzLD296w{ #%YEh)#&"9t;fU‚JX#&[.#%9 0gydp=h~9@_[o,@ݵ=y`z`ut^W+LjYcMLIԛm-#kNyvhlI2Ă3</&U x@䢪 U1 QFN%dU-0Jf#+@Y#V}ܗ{o:d\-2qc+Dhc@ q-#+dfXi+#&Hi#&(+qF4A((1EI HgG&&LXa#+c866iɌXdmd H٩x0ՠF#&!oG]b0- ;4lb8#%#f_t@?S~Ue,GqT$G1৛ΰ*oOKKXM05^=2&mi1+s O u_[~k̬YQ2ѱi5ljֿ3WV!,#%lX[$$|R z~~#\ ;Tꂊk5d*?t)N}ޮ\,d*SϙϩP#e=O1 ?[n LS;YҲ{R3[Mh{Sb׸tOyhtɅdDEE/J #r#')1{m.8u9prDY!n_s,Q9^t&3W@%̶Dhe7 6¸$<Хr]pz|OAQB'/T5:@nC&Nbz(]=x10Ӷ~j<8M5#h噾y#eX3oa16<-#G_g䱾t# {`SPCD(O#+[mfxLwN/t^B5я#+S#%[[؆,bQ"Q{J]R;ߡF-~o B&'ZB@XZ1d(QbH$7Zl 'bR8)0#+P`LDoJ #+|+ B#b\ePʔq]G 'Y Yt;}i>ݚ gLŬZەj $tn#%e,o.ukF!0Ջ Ar!rIJ=\5JMAp\!%؋}MH#%!<\G;>h,_{"P$s46'#%M##+)k6UiVKF[#&qW\vuқZvWRlKkfu[+voFa"D #%TEjSȢz|()fn+u28p+ `$rBc|Rl<3i>AvSR|l|%PVt+FmEikQ#C8Id#F<`՝LHB3@{xDxp-vMٔdn6vq| '8|ݰ|F #p}{==,f]0ܖ앷zdd#Rqz5r5V"EfZBoi٭%Cgp*L)#%\(DE6kz 3"Oo_ O!Ŝƥ&/NmkHRO}%Bܣ{*ԡ$:)#%m k+V2=k=jW6h7ZJ*ABb|E#\]qTdke}bs@;8.bHIM4r2L܆pt#%z%|۴i#%2vSO#+֒Iz3h,x#%#&x %cak`LIY'~QzCS}7?hTX~mzvܦTJqAיp#+J*:fAѫ4vvk&80;qbp[ r9w颗̐P9\#+|C0o3F7|PX#+ZTխUk]04B̭#%%ݶՙ{)I*J=P>>zg;L(֚@xA~Z)hf#&إ z˄PQHR(QĠH7fp-!3"I p7$d2A4Uj@qٟ;gѓes^0P 8Hꊩl#+ňMX#%=nq%jfޓoAᯬV6& L\9FܙPꪋCkc#&~_&zf/X  #+91>= ysha#&/<}I~\LHw|h|u34z2.UEfQWW)!L0*Q0~,8˧F֝cҍBIH48x,MEE[;Lջґ(``*I#%ܕQ-TflŚ+ƛ)u꽧[ĶzukLC#-!RCZ2FDG$Q4֘dI#&c3RB-wO4#^ݐhm|S^"ondYm6Lg1+j1l T^ݚ.VZI#&6Y1,quLJRRC3$lIf٘YMKv\wrܐY{KyDѡR27-̱XV)eiSIyqE<#[#&\RDpjՠCH4T0qMXM1ȩơFi#+ 6}uVFl%|8m&bfK_dXdsxm(]zc3׍7kQ#&MF73&,pӛ2KUm eyntr=QW$̎!d) V#+ Mb`M0m6rZvl3VAVm&!#q &ceFV#+4DIVMI.[in웚R sʙՍSyPbY ՛[F8fc/XF A+5Ŷc{z%Sg%,F}F}& #\_t8o9FXͦ~ }2Te"k+ b=n>tz*#+]]NX4!fi`Ɂ F@\$Mk3N7rHhI\WlJPr؝(OMo63|"nz-ioHAq٨4B]l#&v$blLb{86[̪moI6{}7θa) ”E@3@.I-U)#+HF- FEL@E#c00ňc!E,HӒ](S?:#&y_k>ۥgS<?B Cy"~֚?8*4G0giC^{XF`r\](~ uWDԉ<)s(׫fXmK)^WFYr8%ǽ09yKVZ`*m"'hvxxiӥX2#+gGao;ĥ-]p}5H%!̹9oj-8XL!tw#/{NwACdA'BK-η$VB&x7Dݯ<~&H 節(4P^+h!y}8Khwɐw0LkD9(`~jPߓ0MT5EM]`Hq<#+ԧ\xi?踱(z--n1LU<ڏo=&=L>5 T,Uݫۓ.З@Y"#+jP*Bh"uJ9"j `1#+6%wEX\jۙ]h,-#iSnqݷwmԛd̒ZB؈FR(ⱍ[xޭ~g%|vjX7XǨ#"K9&,h P9KRחV~yB HVR $C%+]k^,Kezj B徙aT% PaֽEF)$"YvSfj*A3JV6ƨضf64TUlIl5"1643fjj]qkH}G cР?E$/B()$ $_m3Խk,_J<4~Buc컾L0ꂆTu;H$P$mi)~'7ӽ~O$FtMMmOܺj4޳"ӻwhtc֍HRmH-k%R@XQAb!U#(ܦ劙>"z#+AH 07FD@ sSb"MHa!Tx%%Q"'3˻`ĥLPn+4@6 G`^2&Ҟ#&O}ց -6B炴BC*vJWp\gҐ$Q D _ډ^&Hb ߋ3-JuURul#%C BM1&ET.+YCAp.`\صm&1Uy*)]dDdh!^܏(DHL'&s/ܴTPe0m-jJ piVi!Q 10@Q%TBBcjp~SEXFْP"H\P50m0{]G( #@ D#+y{%BMe% {aMm#+>!*[ՙ3p#&< ca-F|gDq oԛZڪw$Jvu„A7L!U{FNb,gDY( P~V]Q҉Z**#&,Xc#++f[ Yµ7fj YмVg+;:T8?M&x@bͷ8:>TMG .v:-Y因ا . hDLJTQ=#&fK㇊:5X#!XcBb[f5,#+R!,a:d& #%,T5J$0X5<x`rt+ӝv5K%Y#&lb'xWbF0S5eE=@(pk}:vjAT:K?p#+PG#3 r|'#%Cl'd~y,2|X,tw`-\4ؔ/7&e46eKQmmEJM7#&ܮ[swyq]\"x&,n]fXUM]m1a!)?#+(?OÒ~v\x#+#QuʭoftcLԵ#+` kkIQV+V-DOa'jD4S\۝^뜥DA,HZ#'iEܚEE`TiejYJ)@}fjTAG5X\63j6Vk$6 $w_<* j3Z3[feUM Hմ6^G=qޯ#+Hi-7\Qt=aCڪU[icwǕ:chDp#Lh@'zP%P $jmWGQ+m!+<3Uc2f3H|2l5P/#+½a <Z^Ӟt#&FxD!#%sPO;Q>Qn?\D#&VBoP@ALDX D#%m@cP0!5Y̹kfXeo0>pmtڇ:L?$уHX*f:8O(&sAS={},ԯttA_dtW碘 ef.$ g(F?m^12%Aża{Ѫ2V L1!\#+rP#+2aB#&Cb#+xG2 ŊM28j\J QUadƍ-!c##%Gss,x@[h7#+@C 8dF`_׌}:rGJ/Y>ϝV%51ŧ--FUT2/e<9AHG{õd|!ئ?I)[BmIYsW4t`4A"qaiiȬ][=2A.z,m^ס=,"ћciiDM}EAs\ɽvN30j`Lh1iݝi旷zy0 :̆|+ؓs6`F,w|x׷Nhw+"ߍ`Fw#&Q5c6#+q#&Eò]UYI2E5\<#+c0!ҡvT?dA?Q`+M6KIF:H09ӣ16 1['lmoݜV Pf%lMVDSB_{7Ap[y,l5s][2\N֮_̄udۭD15_m㉥68)?c9^[lɠ#%dAؽŜt6&Pdc!`#%O#PU"&h>-Q5-3X.%9s>HwLC`"hXѫiuްaՂ{y+z!"nWwL#&B܃&E3-AGCvu Dx}b0zR2x#%2J#% I/\F2!F, "EP xz(u҉!$t鯏W.>b({z Q겁꣜9Z}Gwc0} LeZ}p7痂"T !`Ceny9$ps 'ZIӴ"4;)>?2/?iLhU#+Z[-@'ˏh1aRAt"YCQQ#+o>4& ym`TЉ~2gDZYVk\Q&DQ=T$Blhj%,a$Mj]ggc/+o}pJgυ7g{PJvN.j@uNQXÍU#+|p1 nj9荼4#+HyG'gB@c"T"$dˬJc=wsq&'N 7C=ύ`Oqs.OAUUհw-dwT(1|jꠥP`0]h@אQHk$NȆ6tkfPup՗/ЊqJ<}ֵ"\b#+u#‹J#&mYijO6fc2´IA1RO% 8G үKF#+Gp`V]Qf#&%IƨȆ\4E]Q#+LҚ3CqF d̈Q01*}<mnnkF73#+JeJZ ɅdPdasa 0)$c ]AhLL#+Ȃ Piѽ}E\=W@f&XKl)`(JdCYR(.3DsuFEܩi iS %ن 0Qg&"i)#&\{Edzy[[: O9RW0Tbl|_[7n$-H>ꘐ-?m+3{F*'Q#&Zd>y5P"[p4P,nʒL,ҥ*ࢤar"  Q%0²yW(/Y,"#&#bbFVPH@(WTK#xqs>wLjWK~\OW#;+o~#&FbHŃ * (Q=Rl>, ֝#+s` T"$p9#%O/IQG ꢍdY>!jMU%cVfƠwPm^$O}J#+rs& ~V3#&&&YPY GY9$I]]\C#+41U)9=LtF?,fz)M%T Zق#&aa6Pc%p9[׳r֞Nc-@eGl{Ԏ1}#mr~hDJ>_DT'fD;{LKDL 'hNW꘍WɊ|*Ȕ_wMv};??#+cd?O<3ENt~ yi$n}X(o򁡑hU{w[AۯaZ> D'<aT*?rw)M!qWv)DPH e3vPDS{#%[6+-8Oa`{*dP-"n9ύbk _֯Z8#c\,Hs84$41&j K~ƳHLص$Y"Bh8;Ĉ i{~^VV-݉n]ݭ\mQ]-mm!lZmrk-͝r4jQPF`$ 4Cn(ba H叞VlKhKsԣԙ駰<@K!ċZG dB b*( Vz0"@*PILo#&j<GAU@Cu(h\0+#%6/Ic4DUVǏJaHJIBHD8I#% )iuH!y "V)Z[FŮDIZ[&ߢѯ[bKowQ#&bQ@4-ɭwV EO؀x]5c5Y_1H>D#&β*["/ߣ\)B+IxSE)MY(s1\!qv@ClE#;+d2uVӌ,5˻ϔ`t*b8Ύv:ׇn1C;3ܻphGt/e=՗Cj`Bh@M#&ZP +DHrB ӊ;dcV8'wr3:k # r6#z#&ئSuĻ׏R|PXqn#Lo.'O8g,ގ>8q'q^ N3!,oavӳb^XmgFc86rcφHf H&7 nA҅Tnh1 :}_Ϣ#&^r.lR H:ӖCfNL(Rܠ!@|zch\pC7=$ݨdv`ң<ޏ wP;9%J!Gy90(){5KTJ`dVTHa1{ yYQs e,R;CYf갭teG^nb=2mdP0z&.it2+GK30)7`ꞙ&QYMZΔ-#+.;#+3V3=,+.Ƽ1LQ\' GhWJ%|4kP#&<^jIBkus#F!+mǽxQB(J"ji瞘$"`r5IClvMJ-rܲk2xm<9&6$`Ul׃|jC|5~Ui49#:}o6:/rv.m؏db#UlX:t6d'}ʬZ9{ y#YD#a1n`C4slRȧWu.uG]q9/>]۠!۱뉾Pb$<-p|!x.|ZQQID"@eKJon|6}۹![xtƪ`oWs\ל\FrƖ)} }\(PuwS9c3u3n#':#&ފȥ=quoߊ(F)ϸ+ZM`{T> h X딦ojWkZ=^6!D<}^9\eoJ]W,Юb1ԃ0'#%lͺ>⴦1d*D"ȲDHJ`U|uh7eCʷ\̍ U-D3A0&C"4%Z0mEjr H#+[(bXSL a$-sddobBbZe`k #+#+QU,B-"/zMo^Gk[6bL2t9f`-q<@sMor965ZѫhsmIcQCL53kǎ[-Nbc4BQHrڍ,n֌t1h]2M*o&ة[qVb)xK #+A 8e*#Hz2Ƴ,"Fe#+bf6!Qm,jHlM4ƈa#%EGOy8܍<#m\;s5+Z3x#7TbC j<1#&ܸ1Lԭ&i{zjSLxk,f4 #&EZǦֵdˏ$a]^8[+|2`(.2!PfTXx)+"dZƵ9'fig)%}y 6 cZQj 8Ƙяv4#&R;[%\$aQvTc|fQf#&RBhAsA#%[&Bj呖!#/#++"`M,ʊoX5L7=9!Hkء#m8pp!ڮ;#hhZ9uwחu^1$I5RMm6 &J4% TʱBŲljIEQ%d#+3eFсBlJMYJ!%DhcKAQ)ђSHR-$l0لJPckh w7GY wM#%Wsu6~I q@=׮;D?J+hy2#%6mC`^G \epi =PbmQAh%`x҄~;#%A`˜@o+ FUL f'nH]CkuWjװw;Qj@QP)2f,f#+-~ZM#&bDmI[}VGuWPhƶ5n#R!rjX`00'}%B@D`MsSr\o3c`|+LG#&eѪPPQGJҚ#&;) ^ye]"ih#&O$ƂbL1ywn'g+ח;F2іsDAnCe9jr@. a#%Lf4@Zib!kAC#+6*#nJez3%C0aLld u1p+jV*mu=im|݅#:ɁնB/#&NlFxۺU"tqŇls8Ns K02a#&ts$!ePFT#+Id!w , #+[@Iq*UXX@N`DFYDذU_se=Oxdw 18#+ah Q<1yȦCfPa^,oe'@A7;։&.\.1$)%-%!g#%]{C\$C}S'#&Y53"w}hOo2GnhHHQ0PE*m^t2pӝ22̃] mI6O8-}%d/!4l6m(n ٙi66-B4bhG#%-˚$ys "}M}v<?'/sP^ʱUFEV yr_T$ҐeZt԰Ӗyvxɡ=dp#&'wN)#&#&$"#I:m09#&P$|C`Xi/B =@7Kf;ƽOibN¬y4p-#+W&!9UC2`t'C!oc *#+""#+2kR|6f_s|wA4,CV` 7N#&栜GHpk0#&b0!cA#%zs^.0,f/#%ϫȿLM0/ݐ*0K%t>ښwr."pu:~%B:teX7ۛz7#&K;p;Hv_K])O aɋ܍*k]5Mk"͘j8 P,A#+4D$#%#%h?U`ȅ~ TTZ'9aNTGbMf-'SaC#Gt2Rdq#%P%+3…5$tagng5#3c7@Ɛ!ĚC#%n2i%TA082&k9'&y%kʠDT6R"d0( P7إ422hap$B7!*=YAb#+H#+o='U0Ɠ49מܜP@#&#&$69,j1B:50K#% Cy{^ :筘,g뫇i2`)J. " M@MNY*&P'$^?/KDS2ce39sÂLLrOqЖ=1#%܉PplJVQ ``8+B-D*)bV!$>43PR2YjU8ܵ ]8^.dM"zNJ=gR-0!^`{ݓp2i]9ޤ !*Tqd-9նs ̕f|*CZXRZ:]^5Z (QrHܦlCv^LL;tҥoԃAYw2`X@vuc, c#&wHFϽeG@9#+M1NI7)3+f(gM5 6`+aBh9#%zC- ر u%niDBoyvEy+p\1tWk<%5,46jcbbs-4d:P)s:]ݘ~?ms`FBg˦xxhPb@P|h <;iAMAϽUڇfEI)F171Zݓ1i/#&#&'DX+1Aq<^%Y)x !0MkAoվ07eF Z#&ǐM С0'56ԚFxs< r[{P$N PeSHew?*l~ZdADr!"#+3 j#%2]0w2̠Wki+Vca6˙rӛe3- L[G2'H>!@M*Xa!;j.I\BkK5t]쫒lP Wҡ$PD%((a'Nʝtzih[ŗ_u\Kʑ8r2ŜD*S4tْR"i'~Nl}G5iǣ~7\F%`HeNź%y׌6揩sk9b(.n7Ve)ψ$Ou2E:"eYWٺ'x6F~GuߓNBPd6fIKDHN !0;ūxkw#%JуIFbB$P#2JeMN[Fj#&n1WH0P$w#+ #+iAlX!T#LaLQhpҲIИdvI#&td~;kVPř4j%X4$8`2!z{;gs|]iӨ rO!EBK㵶#P#&{L&\YSeLɷHɻX($70M@#%BѶ;#%S^kx a\uRM3+"˖Ay Z|dI2JF+=p95iFL]HOWnG6Qa~-J+jҘɫ&4"^(J\\1F`hFҢ%`En\1`M/H#%@IՕ*Bp#%M#&9VVZ\m$H"Ȭ!>5@(o3#% # #%pjNzwQcWQ@M16#%{G;R5:|#+W1kŜ1u!(0\EFh #%6V #+5Zweó,ܚkr`cj *`HR H a~"i#%db/,-#%qf>TK I#+VS |aTa*퐾X7S'xwQ b@1$bmP%KeEE`'PYuR"k}tX]k]3\"CČO׷wbHtK1ƊghQ$#+XmoCuffEHurr?Frq[~"]!#&2̮:}>A8tPH @3~ AHsO/?JA.^w/!mK*1%(ej5E+1m*tJ#"H X>80MҞWL#%ڍr;zTt@tDA8h<t("s+athtIljЃ7}GuQA˂#wG^B{';w]%FslFjC  }%5?ʆs_H\BhSn ;bJN.F<$@PXLfclDhR##Lz Vkwm "1BЕf2#%H##&kViUJH53B Mk]4֢HHڒa"8UdDHdU)m/],Cb #B<7k L?ۡ(ZY.Pz5&TWm;wexכT,ޚ*-2nڊچ["Wv46m&ʒDƷռ^urF%"CmDJ7."SKdԙe^W^yֵ)2K]l]ܷktYc+e]%rn{?W.dFxB6 ^5UJ @`na|(["A2H#%@ S咡զ1p͋m4«FxB黍Zv[#]#%.IvGת{0((\P+f0)8I7r`j8p!t6z7< s!nx~dA.d*wdhh!v0w!HL)vS2Eq\K^r#%DM0\AW/ml{߬W-E EB5ud'֋bNA =y#+aKTh\Ty|ZmVoS8A-Jmv>&(Crp[!dv.|! 4%_к6N%2r1J'`O8) .Z V%TR&{Hs#&-lLrw 4uaݻc0Q1BnNP5%m)Mae~bhܪ1uKu@s#&W0&2@^^3le( `sA{kD7W}oVLR1fJ b"+3P'dT򫺪Z#Pi6쪯#%`"-qPҥձuJE' |~tP6L8w H4,6Z hYe9bXt] "l>ܖzzLc';} ) 9\Ei QR}$'߈#%QO?xV@aT6@e#%#,R@(#p^јA8gխ /@4lsb5K#+?u>O?wϫ_?_7߆e??Os?gv_T}J&!b~L 0!fU@B"Qp`#% Mj@40wJ:7I IU΁S#%%:$=gТ)DmG#+ 'h!qAsXp#&(̢1/G\ݼ:fFm}-1̧@=@y Д+PI]gt9DBxi?L|nnW+P!va*-$+?O/~;H0pWB; PUՊPܻԞ\ `D̡# 7;kEZX :vl(bH$`w9<3ZBLb }-+&|pBV輅>\ᣆ\Z4[ƼZ- VsQ|]-ŶѫjަjM֯|ֹ#&0)eu6#&e7BgJ2O4q#%')"(ӹѫ<RRctֱ/IG#% !|ET$ 3pB([|G^Zu E(z "Ej9 ؍2P%E"F1(ҁLb!B@I EhWd?Md!'_zգ:if_-?q 4X'',A|B\?zRa ,?JJ12l-vm, r_6:?4Мq:G =x_/1eI/ΗO/Q"C-(wGY5.Pnhxp"":R(⨊gMW+50>>Ν@΃++ǦX8 ^[ c^qQ-yxckP;fu^;Wzvd!( /ڡN^#&Jz(,6>jA\7QM GAO"H#+#%? -#<== + main() diff --git a/waflib b/waflib new file mode 160000 index 0000000..378ba69 --- /dev/null +++ b/waflib @@ -0,0 +1 @@ +Subproject commit 378ba69978967a4c2eb8b39905a05c965969c82d diff --git a/wscript b/wscript index acf8b46..ee590d1 100644 --- a/wscript +++ b/wscript @@ -22,37 +22,31 @@ out = 'build' # Build directory def options(ctx): ctx.load('compiler_c') - autowaf.set_options(ctx, test=True) opt = ctx.get_option_group('Configuration options') - autowaf.add_flags(opt, {'bench': 'build benchmarks', - 'static': 'build static library'}) + ctx.add_flags(opt, {'bench': 'build benchmarks', + 'static': 'build static library'}) opt.add_option('--page-size', type='int', default=4096, dest='page_size', help='Page size for B-tree') def configure(conf): - autowaf.display_header('Zix Configuration') - conf.load('compiler_c') - autowaf.configure(conf) + conf.load('compiler_c', cache=True) + conf.load('autowaf', cache=True) autowaf.set_c_lang(conf, 'c99') - conf.env.BUILD_BENCH = Options.options.bench - conf.env.BUILD_STATIC = Options.options.static + conf.env.update({ + 'BUILD_BENCH': Options.options.bench, + 'BUILD_STATIC': Options.options.static}) # Check for mlock - autowaf.check_function(conf, 'c', 'mlock', - header_name='sys/mman.h', - define_name='HAVE_MLOCK', - mandatory=False) - - # Check for gcov library (for test coverage) - if conf.env.BUILD_TESTS: - conf.check_cc(lib='gcov', - define_name='HAVE_GCOV', - mandatory=False) + conf.check_function('c', 'mlock', + header_name='sys/mman.h', + define_name='HAVE_MLOCK', + mandatory=False) if Options.options.bench: - autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', - atleast_version='2.0.0', mandatory=False) + conf.check_pkg('glib-2.0 >= 2.0.0', + uselib_store='GLIB', + mandatory=False) if not conf.is_defined('HAVE_GLIB'): conf.fatal('Glib is required to build benchmarks') @@ -223,11 +217,10 @@ def upload_docs(ctx): os.system('rsync -avz --delete -e ssh build/doc/html/*' ' drobilla@drobilla.net:~/drobilla.net/docs/zix') -def test(ctx): - autowaf.pre_test(ctx, APPNAME) - os.environ['PATH'] = 'test' + os.pathsep + os.getenv('PATH') - autowaf.run_tests(ctx, APPNAME, tests, dirs=['.', './test']) - autowaf.post_test(ctx, APPNAME, dirs=['.', './test']) +def test(tst): + with tst.group('unit') as check: + for test in tests: + check([os.path.join('test', test)]) def bench(ctx): os.chdir('build') -- cgit v1.2.1