From f529417387231d52ed83eccf4cc74f9376e4863d Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Sun, 30 Oct 2016 12:36:15 +1100 Subject: waf: Add top build support. --- common/waf.py | 60 +++++++++++++++------ waf | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ wscript | 34 ++++++++++++ 3 files changed, 248 insertions(+), 16 deletions(-) create mode 100755 waf create mode 100644 wscript diff --git a/common/waf.py b/common/waf.py index 0e31c1f..4fb2fa6 100644 --- a/common/waf.py +++ b/common/waf.py @@ -61,6 +61,8 @@ def check_sphinx_version(ctx, minver): return ver +def sphinx_verbose(ctx): + return ctx.options.sphinx_verbose def cmd_configure(ctx): ctx.load('tex') @@ -81,20 +83,23 @@ def doc_pdf(ctx, source_dir, conf_dir): if not ctx.env.PDFLATEX or not ctx.env.MAKEINDEX: ctx.fatal('The programs pdflatex and makeindex are required') + build_dir = ctx.path.get_bld().relpath() + output_dir = os.path.join(ctx.path.get_bld().abspath(), 'latex') + ctx( - rule = "${BIN_SPHINX_BUILD} -b latex -c %s -j %d -d build/doctrees %s build/latex" % (conf_dir, ctx.options.jobs, source_dir), - cwd = ctx.path, - source = ctx.path.ant_glob('**/*.rst'), - target = "latex/%s.tex" % ctx.path.name + rule = "${BIN_SPHINX_BUILD} %s -b latex -c %s -d build/%s/doctrees %s %s" % (sphinx_verbose(ctx), conf_dir, build_dir, source_dir, output_dir), + cwd = ctx.path, + source = ctx.path.ant_glob('**/*.rst'), + target = ctx.path.find_or_declare("latex/%s.tex" % (ctx.path.name)) ) ctx.add_group() ctx( features = 'tex', - cwd = "%s/latex/" % ctx.path.get_bld().abspath(), + cwd = output_dir, type = 'pdflatex', - source = ctx.bldnode.find_or_declare("latex/%s.tex" % ctx.path.name), + source = "latex/%s.tex" % ctx.path.name, prompt = 0 ) @@ -117,17 +122,38 @@ def doc_singlehtml(ctx, source_dir, conf_dir): target = "singlehtml/%s.html" % ctx.path.name ) +def is_top_build(ctx): + from_top = False + if ctx.env['BUILD_FROM_TOP'] and ctx.env['BUILD_FROM_TOP'] == 'yes': + from_top = True + return from_top + +def build_type(ctx): + build_type = 'html' + if ctx.options.pdf: + build_type = 'pdf' + return build_type + +def build_dir_setup(ctx): + btype = build_type(ctx) + where = btype + if is_top_build(ctx): + where = os.path.join(ctx.path.name, where) + bnode = ctx.bldnode.find_node(where) + if bnode is None: + ctx.bldnode.make_node(where).mkdir() + return where def html_resources(ctx): for dir_name in ["_static", "_templates"]: files = ctx.path.parent.find_node("common").ant_glob("%s/*" % dir_name) - ctx.path.get_bld().make_node(dir_name).mkdir() # dirs - + fnode = ctx.path.get_bld().make_node(os.path.join('html', dir_name)) + fnode.mkdir() # dirs ctx( - features = "subst", - is_copy = True, - source = files, - target = [ctx.bldnode.find_node(dir_name).get_bld().make_node(x.name) for x in files] + features = "subst", + is_copy = True, + source = files, + target = [fnode.make_node(x.name) for x in files] ) # copy images @@ -140,10 +166,9 @@ def html_resources(ctx): # target = [x.srcpath().replace("../", "") for x in files] # ) +def cmd_build(ctx, conf_dir = ".", source_dir = "."): + build_dir_setup(ctx) - - -def cmd_build(ctx, conf_dir=".", source_dir="."): srcnode = ctx.srcnode.abspath() if ctx.options.pdf: @@ -153,14 +178,17 @@ def cmd_build(ctx, conf_dir=".", source_dir="."): doc_singlehtml(ctx, source_dir, conf_dir) else: html_resources(ctx) + build_dir = ctx.path.get_bld().relpath() + output_dir = os.path.join(ctx.path.get_bld().abspath(), 'html') ctx( - rule = "${BIN_SPHINX_BUILD} -b html -c %s -j %d -d build/doctrees %s build/html" % (conf_dir, ctx.options.jobs, source_dir), + rule = "${BIN_SPHINX_BUILD} %s -b html -c %s -d build/%s/doctrees %s %s" % (sphinx_verbose(ctx), conf_dir, build_dir, source_dir, output_dir), cwd = ctx.path, source = ctx.path.ant_glob('**/*.rst'),# + ctx.path.ant_glob('conf.py'), target = ctx.path.find_or_declare('html/index.html') ) def cmd_options(ctx): + ctx.add_option('--sphinx-verbose', action='store', default="-Q", help="Sphinx verbose.") ctx.add_option('--pdf', action='store_true', default=False, help="Build PDF.") ctx.add_option('--singlehtml', action='store_true', default=False, help="Build Single HTML file, requires Node Inliner") diff --git a/waf b/waf new file mode 100755 index 0000000..b004a3a --- /dev/null +++ b/waf @@ -0,0 +1,170 @@ +#!/usr/bin/env python +# encoding: ISO8859-1 +# Thomas Nagy, 2005-2016 +# +""" +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. + +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. + +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +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. +""" + +import os, sys, inspect + +VERSION="1.9.5" +REVISION="e9e36ebc81cc860d8a25c4c34f0b27ec" +GIT="443985720f09c8e97c05cc0db2d70e2e84934e47" +INSTALL='' +C1='#*' +C2='#(' +C3='#&' +cwd = os.getcwd() +join = os.path.join + + +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&SYHi0#&$#( #&E(a|{#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&}^ghFtsc}`l֚>;Ҏe-R]Yfo}\Zݧ]sC}7݌zV=Onvg@^f٤txgfϏwrP}4Ϯv]N#(z>#&#&#&#&>΀>:#&` #&=f#&SJf#&m֚iM#&M;#& ΁Рl+#*UD%!/wk%%#&$#&T+M#({x9PCξGdxWH! {uwݽ;{>^lQ]i{wT^}_Y紗l|7v[>I&=[ fo{ۚX#&{/{ɽͻHMNTv#*znn7w{77N4:oH#*m&PJp:W 7yyp#(9}˝wyOw8=c΁#*o8gnR#(;lV ;u:ܻi{sN{{^Om}+"av}[g|e9E=}=lrͯw͛m_]w_s^=g}'۷i8yM]qk#&;wor}==+@*%5B+]\s{nWbw3vy5]J{P]A ;#&gwP#&载yK뻹vKefoH(]i ˠ뜥tBL4q}#(Ⱦ%ksGw7@{{e[F>ۑ7ɶlsǤ:zy=7u}d̂ah>mxu/z0LG7D>#&@uUaUG=sN#(}_^n/{i{=e}!}˟AO4Pz+NT;px=4wp(@#&m͵@gA}:#&*vv'@#&Ս=k;s9ݜpvʈ(ݶvVˉicujjK2yxW>24x{0Q,;-}ތk^]ϻMvm]}}[opD#&M#&&i2#&#&L%O2mPdA#&=L~!#A0IhD##*i2##FCHdba2#&ш B M4I&ja =a56I#&hzOP#&#&#&#&$JH"i)iT=OQ@Pa#&z @#&#(#& @#&#&@4dҞhMSҘ4 @#&#&#&$Dh&L)=J~&SCzQ5O4mFA#&#&ZrR?۵#:~zwSK0'ƫ]&(dV+ "QQN{w"−WnXX)S@OR\8z|gi!jҶm[T &oRyw0۷{Y)O3WsWobÈxXWvN$ IV6Ik[FH(pT!Ǖ-")6+P b#*#(#&,")!THȩTDA@2d0͍34 dCM3Q&Ke(Ҋmbd FMSQ4Fi,#Dٌ#(d(#Qc@bʛF)6KEhJYiJmDi (͌kF h)@5#%#(ҤE#()l&!L ؓFbde4 RRjdmldԵ2Y12J64J()F*$6SXF,)#(3DAMh`DdZBB)b VJ!2b`hb)ԕ(5 *EB,EJSBi21,LLTiѤAI4,Y)6+%lBDK ʒaƲhea`dbbhDFJE,PHL% d,Y5Q&Q$MI$J1efьMl,IJ3a(Ie"X#,c!dM2HآT̂1Qf@%ҤRe5L*(df"j&YK#RdM)Q0YHD20LcA4$3% #&&T֘MHR R#*$$dٲ6XAI#%,ilFfJ2iL1)*Q%jY)2Bɉ2)Y4Y#H(EI1$MFɱCCH!Вk4mHK&Q(,IdE(KHMSfŢ&A))"BmLE# la 2*,QX#( 2S)cdD4%FR&KZѱ$eS#E2 փd%,Ѧ)22,ZalXRR044]#($%J#-mTbdɖTCd(ih6lQZd2lT&fJk%!hJ,J#hX,)iL3d,YV4B+eHU+0͌Rō4ȕ%R#(ȍћKZJe6ƵTm&5%Tm6MM!TPT*űaFlQRR !DjV#lTXŤ,ILBBe2fā4)"ڦ1Lm5Sjb1jT,IjED-%&I#(e ,ԲLDD2I b F!j-BP)*0UiɤH"h*AYddCDIFf)hԘ m3MH`"&0 -BIPhF$, S+0e %$%F!ʠř‰#*CfL61Eh,4!FKE#(!Qȍ4hRЙ+AeI,C)jњ#(CEK,1mF#!@,XJ4 -ScPmli,f40ҌLڳiHFTJ`cF١4Y)bb%%$$mFMFQIJ,-آAYed bѐR%ѰlZM&Yj#*DZJ` B)CZ-,F""-"mV+0ML2J%%ZmJ,))+Z%)CY,Z%2 ʋ LRQ#a#(FIA0b%)6&"EQY5)4QA2-EERejPQiMRMF*S["Ƥ")Tٛ3Z"RhIim F(kE3Y-ړ#)DY6ҥ62Ʀ%$(6($[bԘ%Rm64J(eK"eL&$bѢʒmHbIV+E-3Vэk6fkb,!mFheTDl*(I$I2ɭfc?Wv5O}/i_wwCT9l™U4K/0?L1U-1mqewȢ0h'`ƒãr%K*MM~,Hg?sE2 k&o^a"zΠ6a!؛nģ,<(H5d"Kμ^;q\.飮T*3iYiˆI("*wu7v&{+z7*4kf;rK^{v^͑sIAbLnzvw{JH[0YB u@R(,_O.T\mبФRvodcJVImgh#{c^l}V A0z!F,Ӷ$ PKP-E#*i)#*(H,H)'h"Ҩ{x#*H4 RSM𰇶\M& ^Tˢ[PE(ō]b5FFosdz3U,AU&O˒c$Qd-Xˣ#K bpQR"Q#*hJhe#*C΍;1O<#*J)$-`⡄0Ab0[uA&#(zk2LYFQݥ^tŋlae{l 1ȣG9 l$xxTtk!蔃ª,sߋʻ >IٵmŽM#*ڂ)r:&S4E&i]j:AHZ<2]V?:hwYK7KbbRhm0U@hjdm#(]~:]a{wy׳}ncN(F9=0åيR7aSΠ]'eiy%wмwظ󮦋!bk47ͱZkw>#(Da2x{tA`e#(w}^Y )c܄hՀ=vFwg{.X`r5Qyߓzte(MrouʕHSIS5ح",xAdvv5_P[F(A#&l#*<Db+mfy!0 ZnRsgki%mE[@V adȢZPBNڀq֔ J<|S)R]UuXo<]HYv REFڛ0 LE2ZyFZq9e*m~P-#*jO41(ܠ©[E %VSm˾/vÎ G|gvz*Hq~0N޸#(#(Vwb))#J_L$LCPqgWt<Ѿч_epfu)#*H@&M9~q#~Y-Ŧ>m{$FG_E1zԆ~nƗ칑4#Obd[*UrRr$ 孫V`6M0ϲZW2#ybN#(#N코!3=PrAaJ[{T|vy#v/C(^jLsz3^;CYޣ3鶜X55Ie?-}Sw wv`ץA5~3Uuwz`h5OZ#(3ug]J2YT Fu>MN| \=!UBGA_iXRyk٠AɒDS\"bdaI®ş=+&^;$0 v 1dmw1{()})?o㣟=tg >6-2tOk3"oi㔝gGJbI]*&KG5Sݵ|(dX#*$#3TYL(P[oeU!3a-厈g6ޗ3[6_LEmٯTfH{=YΑ!맇~.6NqI)L"(wv:Ώ+?٭]AM ;H,)rQXEdt/;lq"ܒ+⇍4/FY]LrtȏDYڽȠUJ(->#(Q;(a&'3F=ަpdiKl;]Nws1bzV>u;=긖Īs c#(0M0y~C}P*#(2,W~^F*w_ϫMBSTLJ#*ڼȢ3{U t9"ACSpx3oO&fQWLTX.p<lպ-_WtS$.J^Ҫ^;L6yӷVc?=>ȾH1U8lljcs.a껧Y:ձpwW+H-c^h_b2$ӏF[2Pb,{0ei?O|j^goQLmܶ:qxvWx!.tގ=|Pҫ[ˮ k/3r b<6:NDJe]Jzюu!CT'!">SN1rcMS,sEWĘX/Nq:#(.uOWɶ)֥;b#*36Dyْ4#(̴6jaNj7xm#(Id2[K!Ô~\qfkk84M}m~澷9{>qMi0qMszX;8׃FEVn%k*J+iGk2EF,VmJKlqvr5/Ly5"TCbrg!~H"18]V|"?WBtVڭ5/#&?1Z#* #(yL &4¤C ekyB0}u}#C@uݘ˓5zb'kF3#913#Y1㬒 WTEg=zsO(`Ft`y~ϔK=CҌ)>/EA›c0'LZo@lXo3)wOO)8*/AA23}_m&ɺbF`L!@Ŋ v^i"-P0(5v| Ɖ_G_hכ#*46&xbi[~hq1Cg?kJ&!ctGU& TF~e2Y:ŢKT FfJPDo+@ɘP!rSN"Wru^},Q kLFoxY~_kFRï'$uyNk}3l\1!Q~4.m;± ((UW)#*r%;f=yxWXA<9g^* ;큤2*HouDvR6o|kABC5 J> dX(˅C8T_;P#5@3x-JhF U#&S|Smhc6U(c3hsxAW7;j訿%%*lb# Q5#(T:*]+ٵQu¼:!Lw=丹T{uϞگUq3s;J=|iΤ>/l3Ȗl1`yHp~nڻ Nwx?-9zE#KbFJYz7^.o#*P7򛻼.8mSZC| &" #&Ta蚊~'1x/ 9VYo:#k. G$D< jj=#*\emؙD@JOmvg -'mϹrmvt1i0q#ssKިYګk^XYC-뭠NPi.$#a|sLshqmr0kpk0Nj54'3>әkcu%   .:?WJj4AX8g:+g2Cm|yZΧ:V&8KBBR,P#(""0= 啀z#ABV*AÃ"CwvGĹ&0jb|dž{-bSzwWd+ Mp=%6 AԉaJiQG\Z%6u.VEɀRoQO#^DsrU#(BZ[x m9ponZF$L!v?&݄di@8%)\yh !FϷf=b")uǕQTפT6kgϻgj_.:Gw $13~B8nS`{:uI7i"]0`4Ggʙv[y~:-J ?Q#(|JK`=gW]:FMDF s~` f!"@V;_';8W>3Am=ͦP }7aE(Q1Vj䝈51sLA*隲yqWG@wrƤ²jͯjGBSc8%^dGskg.[`PE (yF;4ϵ~8Jk47Ԕ4&67{2K#&JՈW C}вx=2p@;N" P?.B-~ȃ m+m{Ty~GrzgEw9#&dd{##pϖi?el#(#-Mw쿇}33,5R\Ȝsa?KX#*Ppk6y=ӦAYϣǩV'G! gjkmy{bl=i) shGo-BRmWS^J/N_Lb.`ϳ2{a m2Ifbx^?7)tUK%I$gw#(ӕuC=-|H_{$L1ןz%m/faBӏ{G07Ĭuު?3ltXjIWy6#o.rТܧ&i~.?%mL+32/#*Dt߹s <+;Ɂ00MÇ+mhaLg1alEF0P<(MèBbb/ ϵډt^O479#(z8p0EQr\?jӻY8#ߙ7G׋᧧fy>=&9 Jhvz#&ܾ{˃YT<nh?E|s&nFXi7 ͯR#&bM;k?yM۴-n)@\3*Qc E2@!kwiB%?_"0L~m)(c_ֲժ`weI5}{j6hkJi]#u-Qt҈g ~5A!3o5!wFl]TT&5b-#UIwkD1:yQbD@7;M߶<$߂SؓԎpatp?`͎%zȝ!Ӿ>UFtv_BWpm&a3/Xn6c,vrD4l;|.=uC{;;=9ތ@gR&8XJ??4d#*{f8r[cWSUG2(#Kb-:M(c\?5s<}0J`}_yfn̲4n_+(Ц;5L1#( 0 :/P,~=+#Qo+iVc aүc6W(Fl>\m?-WKoJ*x<(#(m4D~L"ֵh馼2ARt8Fu#&yJ\&f7|ƯM#*8ji!o´ϽX[_Y#Q#*ͅ&ݮ<]5>}MF~z}352YT61.`"2hL`âF@!RtC! j#(/発Uifq~#(14;! ѡƂhgN ucM1MtW&u3#D#&m了h]hvь+`0hc3#&ZJ!3E Xd10aBǗwo?M] Hlpʼn1{9>*+Y$"_c_Ҿsm ^,6hɂv yOzg˥5j#(X@ghنavt@'WbS J|jjwXO-jDBѬ)'zy KIm[#*#cJKA ֵ0ky8#(r&FduTcEN#(`/"ѵHGp>ZϨ:A"AOUcY1}RU@Zbҩ{SNyN6G;u#ZC$#(Ioo+wr9˳[67eG~>&Rp;M%+EӅ'駺[#(!Wvk4 KsF?rcOmAxHďoi*`ԁ(=#@~s7];٩u1BZ)Ip#*YF%i1Hݓ[T^_ # (,D0 95Edvr*iM#Pȳ I٥)#( um6-dQ(#&c0#*~ud+jn1H,Ph`wOX=v{h׼/wP j55aCO& C]ovs *_-QJx^'7[~ޜqƼLJG#(<POnѝᜡmW9oXԤJ&n8i™g/'x51zOUBnK-MegȨz0yco9Q܁`ڜNt Nṯq8b4v0J*f7 %&D*SPMܳo#*" jm}#*6^S,lE5ck:VN.,q[Ӎ˩$hg0ڤ1TiyL O2HLٕۉ"m-3#&kI6aHNȺޱ*Rm/]f69rtƖ8Tݮc}#&cKdۭF043.rʴԈA_n[8>Ol4',`>C *Q"~x6A"BLl:w̏@슬b*v:+ 8zbyKvn>"! cs$z,@QVREmQ͵ҴD>pbDc%D"H(dC o m{?wM ?#&v?zBe#&rPtn5T7*JsB\|&R׋T8fNJ4g4|-#z~y9fة,"RzsmA.k~[[7?r?c6_SYv|ZzdL)qh167˥n۔5ʙXPHNl}pZ#wo7Jsa/Ia3#&$po4$698'NNG/^,(k>Jx[uk?WݫUZ#(o4XDaFաsƢ$yN q7W$Vw|A*n'.z#(&#*JEKFu)$OzXG(qقSJH$p7T4J@]S92eA/Sn![䪼zޮ2~>O0:ݵT%ZLa#&A@f|s#&]A_VJIh}̯M #Gjŋ?K b<5x*3Tc58:-oa,zPCۑл6kG1̫Z&|qG?X|ƪ^K]>^]#&#*n.ȃdZEgj4,'K^#*8ZV(_~+쏭d2M{)ɆlFwDg*O]*/{`mzCq*ޣMmS#*+gj yH[zDsfw,96p.Qt-'tuH@UT"e.DJ|~V'>q-Ucb]v=z~6G7vT'PGiן0e Je0\`nDZcKjC}>]^푣qݧ,$}2 8)\c0(kqXnY^\2A$tQ^*y QHXrf"4 R:=}-l9Om-iK\",H#(BǑ?G|D2뼒uA@%.}<.WT󫕼iYEQ{| vv]1$O{B#*k^ p%(de"C$Yt  s#*9Ȑ(&vñ>=]NQzi!ׇ2Ey)t禚7߶|,˛0X.] ,Ž2,|:kѶd:Q]<Ë6<enCLy] G#&s|n ӝܼ唧Uo=6xSTQbrxƷrϣl=k(YrtQJVWp~P_S^prGߟFhSGKej:CTSIvy2E-mD믒FT#(]/aMKNgWUYHٔFzg2Cw\ڒÏ8ON+#A7*1ɞ7.7?X룙]jBd<~^51v =tD=F:WW~fmM՘S?WuK#a>zz?%¿_` 1x_I׮Zo<9p_SK#*OM-uBU #(˾/XEnӿsHWyetWrګQ:}Nw78#(^(P#* owkDrgn _ 9\WIN WQ /J#*;nC׀F+O˯6#*=7*t{R>N A(A(JQ#*XR).EDY\ /~Od>*DQQZoe_@_wy:W?ns<\syfs/zaOX*'gGǕ>I 7K҃KoOp8;#*CG PܒH./G%s#W_c0˹(kNc{~Bw|zy^w!bl:?^&,+=]C[v5E^~v#&qfLz]EGoTEwsJߕ9lls$3faHWR( q5@#*1T'PBMСR> #Viq )&A6k #&i]H]#&$NG9XZ;Ʊ#( 9亝֍d: Tnzͻ$#(8ӱv:, 9 b!M_vܵxym>[Ӟ1S#*4S)iK"#(l8CmN$9g#&8T(D2Ø^QuQS89~g~&_Fl~)鋞IQz׃VXtoLlY#("._W^_{8IU45w^fAm݂t c}KE\3x/`Gl^$PBJ!!VGxEiqW>f iga p{ +<= w7atz(OFg9U nt#&Sg' !QD ]t"|cehηn_Ң8t~#(ˢtDLXlf;zMm仯imK\ǰg?Kiawk\hy_gTWg㲃R~?rbF6$#Dz |;;4GGJffޠAaR4! m7&d?pNo_'=g(g0ol(Azw R=y6do$#& 燳Ɗ#/-k,F""~y|J>)ypQ<8T;HW_:X {P!Sp$9Q5"[&CFЃ2zs(*YUZT:%9*HRr~%! Dw(n[(pDGN0CTNlxPZQ*Wk}P];я.sd?#&܌]/%z7^+w$S?w}t4E{zm6C-5:;8lj@lQeb`lfm@ާzUh]wb'Pbu:#(!⛫r;`3*6G aPXc26H672#(P( m#&L\a&8$<0E#&C_G9/h6w h&1}29~)rAF;&W0MZtaLX(2FLƠ sF<]20mFު*(٤q6 L6ӈ89p)xUQe8ּo3Í#ffq.1,5*2LS*4#(c#( ֌njPcրwCHʹ0UCy4HؼRdA8[0J3#&8gPcUwh.AH^-j}z5#<9N-"`j0t[;#(+`*d1!3+Xq~눬 n#sl),F] ƹݙY"Jwl #*1G.qAQy>qʼnUd[ap̅0.'`)T=zD^Jؚ!DDT9"(#-/'ҽf/1quib5[+2$^ N?C*o]1ƪ3/.&vIOgPR:Dn#*䠛yőb e]Y7/+8,p<;$W($x/LG~n,9]|Tdd^Je?hu" ;#*qh#%K[^[ߪ94OB`=K9}H>ې;Ҕ3%iIΕ)$Ӽ~zw]y4oE*Æ2CS#*1pe3鯧טkp-ynݙzcӷCnJjm Ɏ@E^Fr5/ إi{.iF|v3/huh Q~Ac`I`OvgPeR˂#* `8#&@ueZ %L[hj)+1ZP0g#(ж%}U_h_'QW9uWCW@h}%3Px`3Oȥ%[YpF^(AF1M1dvEj@%ӏ8>},y},nb%Gm9O+kxCUB$*dQ+ SۭD:n3^Dp]}E>2_wT;QhzGv0kս4ۖr}Hqt>#K>BQ72I8xLjoL3Z˲(q=ν咒zjPYG`qa! =8f4#(̟ЗRv,{[O:"G:LA痏 }-\ h1'Ꮌnths2xܲ#?#l+`z$ 3`קk}̤!+`<M[rrWo rTx~lQGW}]R7120Gz偁ݿ#(zFV9ֵ@/4;^4mG.hwnGi5w|?Mck+@sqn x㞠B\T9,Q\rgѐ'$R \d,!D+Noj#@Dy }g1/59$ef#VЛi~y<.,y|v.]f"EMͺ;a:35QU+1G%p/omL2 }٧mzH|G=j^6jpDIaM%gR}#(9׮ Zr 3 n l!M`x{.+ATwKdQ|.y#*2WN#(j,YrCo.޽"c;{LgF;獅yPٿcFg6v>nѿQǃѹ#(m}CcɅcbP#(i Pɮ/g{GE~!/Kcjь-cmlmM9Ļi))\TTSGO $/}u#;LγהawD" y"YǟMJƧ9,$OJiZ?`Ujoۤ䴍"GNvY C›zǾ@{3L#& ]Huс8nS5?∙łxS0գRHľ~[J{du"T)_>Y5"SU#*;@4*$9tcRi#&H#(Nxƛ\5_LZ^cֲJ JFR^\hw7uT#(*L6Eeq+?m3WmE2xfpEjd2t6)P7;ǹw>V#(>GY#MOKϒod~r3[6l#ʪ5/]LDՔKf.GK8GxNv׬M̪ܛx5Ʈ]ƺ=Ը`)Bj}٫Ia< "T"3kW#*78gsn~΢BYʰpyf5h}]m%I v3dM!}S\*xr DCTzheZE iOXbmvd#(dqṂRm-u^oN;k3qyP#Oz-uKW>YӞ17ؼ9K-#*6{ѧ{A7[y6#*:g͚HĖ9M3J]U-dD' Q~6M*97M+l?][޲՚h|3#P#fTBoԭV}DBŠhOŢzHPJ)!3Ԋѡ^HRßeJ6ta}KQj.P5Eu:` x %V:tk^x]zg$~j^0_RK#(iX} xR bpC=9w}{phvYI tɵCh/V 4~WTE[_#&vVBpfXVA~ qvn[S#(2'pggiZ]EMtPltmV3pW1:J.o7B tk@1yo"6f sNp,h#*3՞ Ƅ'Mrtq@g }1IOlOE_DUup/ \/G/j9*[[s|'|TSE'^HD#*On}7 mX^9 G찊KF;ܩwjW\zX迺l`ߩ#(zTK@l{XӡkzxKр兵-sUK>|C6{1?h^NSWX@}o|auƪ?^TYokDJh[>[kiΏ1m5m_)#*(i#*(!U11DX2RX. Ź|9RLqXՄji{eż)]==,{o';v$;rztv6{W+a^lU'S:q\quxqestң~d_X:(R=rz]2Ap;m`K&چ6kZGG69a5'kxZ#*'55,$Ųo&R%ZB hj ku#a Eu>]:LH|xck%>'+ʕtG;|h~k)1Q pDHSub PaȮJ)j#*%:ZweO 8@ @./OGI6FRq-<MhfX:!zy2#&*IE#X]QR{)=%jZr|y(eY=#)q#(C .[d-="s;u:>mNl<Z3IݾIoJ<Zu/M䶈U3D {6Z"Ť)DvEbf.uNeQ3U_\`-#(=rbhs8սluMd#*t\nzB)r*g&#(P_Fo!1GE C8ftvO} 1aGI.Q񯧋Zue8sK]5W@y鶷L%WvKmiY*&G3Q3Fab]He%JCUT<}EN ˂<(PUÃw0iY+sG0d_ΣYڠ0J#&j#(-RWHH(r9GH*%/^ˋtu5&zX{V]]]G9HB4,>L#EcTE!ؔcnD:*Sv\7M\Rג猶=*{J C Ȟβ+z-Nxq)=6Ў\S˵Zj5Y ";Drrwź|}9liT5p]_Er4-]&BĐ_ =]/9#(iH!:fDS=,j0&u?׋%|ppMH0(7MS*;Y1;*,#*_CzQR#(1{֜8kBJVSP-yqk:c+W K<{DD7/Q:Fqh= 6#(|*^3#*ȨR(CٶQ cl=UG5jRR3wttp?cɹu#Ź@/)?W[O yj?͢62l:-\aBYБp8sLOmig{oaXYOr`FpBNć`𦔴vtn^;t9s];I_1v: ;._qcEp)ixc5^HodؖqO䂭V#*fMK4{Cq^90Bh]:7Ya~݋n8oƊNSu.vҧƼQ>4Rj #&1kP.J: J2#(Ut`_~ ʪ*p"qslude|0ќ<MWT~y#&'l)*[=|vDg̞:c^ .B#*O>}=^uڴT:)͡(Õlס;Y)8"{k_-BG#*en'4/[iQÞ+JC3W?c&foKL3R' 3$#*7(1@2r_H#(͘8|.zbͅVj#(@ /?/cۘJxUOܝ>J[WvҀ#*|d'? ~`{yGR`QOnL)z=Vw0>tK%&DTBHMui_Q)&ڐP3טx08-#* | H͎)me\ 5c!lm#*ZJW葬}:?J'L1iگgVlfwI[ ;/HbF>P>#(!XQ1Z{cŅ"_=mCu;-6 **FP-c&Hm(PiV#*v?ͮcZꃲmt|[c{,r1#*#*b86Ѥ tVG6=wGa_`mTv #(PaxR]\F!â)ba{HjAGqzPM0;H/C댘I?jQ P~r&\0QsBcJ#*|` kB@ *2( `u>Uz~U\J %Dh,@#*߄8A~mA4P#(Q[mj[G2T>H3ըC>8٥9 aZ"{iQ{b=p*!#v趨: yDTkvD12^dS,Ұ隂hp/ep &A ?A%#&oEuk(~fm7ݰŶ;OT:XXӓ!0Y|su-څ+_J N8߹Ӻ=5f]"L+*,"J̀RvfVcI4ǖDxf@HN@r;Ƭtp>-M2p<:E  5v\lp<$%ADh d;G.ѦGd{7öռv6>I=#*PfTؿ[sWx25( 'V@vB@j` :\vE>pqVfN'g~>ŚiS`뮳O'[x'0&tS(cf#*qQ?La|sqɅ#&Cv0HcQ硺bk4@n! `(Pٮ5L#&og+ Jj**;@$y$XSDIMȯ AcLMQ$&@7d1G+\wAARV>)9* ĂEF/kqK ]#*#* 3W$ŵ,4)[L'5 {u8xb:⚇Ay͖ 09N%n)|=7NG~qaq/8!ՒrNn+^hOXJm-/EwrO&W?Hs\xvѕv2&/pe0T:(pK`[d#!C;D y"γFuS e,R]]s}L4KF8sXBo ~g#&ژA CQKzcѶ(E(y(*nׂ@Q1BBJ2<AQ@#(-Fpl76cV9P]tNag #&B,دDŽȻcv!%/pIǯH۲|uGA5e#*b\U#Ih)/1pJ. C.4 ӸCAHi{;6E#(HW4dV:M!V땄-0pW̡3bnM8!:5}i491A{-gUאz#&E6 ,LݼO 빞_˒p|"ңDxƑ5#(#*{?=tk~N:Mmrj@In6_4ɗP#&܁habtfXvrBƿ^'7Fa&wahqb{H58]JMZQi"c#*m9k9XnٞW2NS,1ϥ$̍i@`I9Ԭ@#*\>Cı){!\IKB1׿kʗoߞU\gXR>OwMtzA:!SkR]\b G<zR"/#\`{m:2h* QBgX9P,dwh?? =M=bA8@??@q}ɺ,''#*)nx)2AKPiayFM|vGiINq})Nv:`[jBSb,7\wzX|/˙6ȏ4{s/CaI %NE0ulC"34Ϳe_߱?;z%PC~aw1KͯH3 y{0d_Գ:&xè11÷s/D Q}]ߔgȨABPi)onIȖvC'=$ǽ>|HGw&a6u5ӆr#&I6(?rY5d1snwyվ׍"o4UɪAI0vjw5r-%U:W,C0e^OMJu\F\#(2' $xD2X5bCef4U\ Q;M#qNIca8#DU(FTk+X֖[IVZ @`a=ɘOM-5(/"rPöt<#&ihHa:~x$ߧ͢ʕw C'Nη&D}ɹ>Pi>^>YY65b(Mi. y%3W c"k"bw#(=h9%,$*RZT)(nhSZO'L%m#(; #&:5"hQP#(cnVm/qbZġU@"Cs'1qwNTE*nF(Y6!ђ|Wbʙ㞺6ᅣbEB"l :plٺ粻!zs@E+vΫ~,YDzO! (!%-w㳆bN$4z7ĢN0@ÚS RÍEz4`::U=HkTB06bn׫ua!E;Qx[3#&:uSQDEM^$0QHP4bƀ*R Jɹ5](\m(Nr#&9r(ݽ-#(9 `r^4{1{X)qƒg6О_*D@  pXd]#*gu!*QZu\Ad-s|'O) 0 25qafǜPoF`$#&pPK\ef4P^4nXhRn_wΌP#*_* Gwo(D488y `P!^ L EwHK>;Ӫ'Z[xxo/ĶŔH+N#(<((Ɍ!P\4=#3 rl̍ơ~7e)&4h[d f/f0Z P)$ \4ethbӥf粻/d,{5h\}ic]Pkxn>CO &ψL" 7342<.LSki}6N:wb4ۤ^X6v-p|\rI}^2XKg}g% f(ՑH`CҖn&IWm=5R,X\'lI3z.H6@58ÁP(!#(߷I0WxϕRZсCL>w@ڇ&NUF?5=rlINu18u+xXz#*U#-8?N ́:֒|͛z-<kIk"*; ZF}]#(@#*)qk!;zv##ȃc\M#(Zhq;u33 h:lk<\뾆-#14ZOMuRi2bfm|-zjP$IJhrBCɹRT։HhXO.dՆ5u{^NttҎłj0OIPao*<N\|:IPMoŵ~ ~ u}ɖl$3#&O\o0csY$$B#$P ijZX:TL "*ʎG1V Y,!.)W0EH~3ѹ{bb& !q_Y?Wg tָ\U""7,NUKAbըr2swDVW59-cG_*϶f#&m -::s/N6fVql-$bZyA~?~}JPAN;7|0#(!E`8YsyNj[G:k9Û#*BO"#&PKb7(ZJ_WqO3&p( B}lc o7V֧aˮX=wh&y ]HWK#&c i#*JP\Tnݟ-賅ޟ_RmBӯ;vQz"vԓ"Ҥ@s'&@-:=h@Ն4nd.#*#(}еo$Xf`vʿr#&PBCHۛc=3UHZ^0xn)km6팬t[PjŐ$'b\4Lzg-x?c OMn1"PA1t+F86rwo;\6o8]mځ#(f$媸='n:iNV1I=۰Y>JW!M"5HNl^z5bI~d9 =d`?FO&#&xu R#*YuPpL9ꅊ*8Yqd#(?Lg|ʽn;qx2;)G.(~8c#&b3ك _z#& cz;!sEymO[Շ'#&wmDw:xzx(t2!ݜ.Э2hgflR7dG9tNJxkF͡ܡdxpEP$ Hs@Õ>ɰ0gP`@o_On< Ҟ2%P'p͙\)W=O:IU%@T2!;XH/S3ɯ m(m:;*X{οd?lS["-_4*(ڮggƳpt}:^{XY#Lrl=ogŮ^G?k=$.k'pNT?(hQ|Vӟg͘.cJ%$zl)#8^(w>]Vq-,X>aӳ0^jqm)cnVq1UTmǪxzۯR.?QZL5gɻ!@ ,jO0b-`Ha|q\2K%0%jŻFTi84B8%኱ާ3Gv-o:od&9h}j0AƠ+M_PWM:t?~>1_#*'UOMNJ~Ic3+h';w9YxNǼ3N%1?SÆOa9gF#*^7W=MUUvz7<ڱ{qEYoxJtz~h곈b#&!qqg#ҝr9šd6;A8i&/KcG[6> '']{~x,8Pi:Q$.]xI]+V$ZaX=W<#1NTfX|AcG4`nTs_SGD ‡?Uӊ]qxe,giR~fw,98mV"Aj!AH"%G=*3e#5ko)Eus7b+2 rVݜwj [.~]'xEI6n?d?z%BxN"Ds6.X3L7,ߗ>n #(`^,w۱Ph#*g(.Q,1tӅX#(Xz K[~y# L<#*u<_Le~i]سᮆ4A IDt Y1#(q-9r=ӕGZ8`?sa>C(utV\(ęjO8=;Q)ѕ#HruGK-iӬ]E ,ozZve#&48"ލ6X"70,)^3~u_Z(AKHq98 mgݚ19oUi(õ%s^ D| 9-)j>:o:C>'+<݁½5jqz#(VKdq2 ZT4`[}>(|QQqaƎvx@2W#&ޡa;Y9?o|.ȷ%s$-#(0~JOsڥ'QŜPPF>N &Dx(0#(Em)#*Mݹv_)>MnO$B-SVK`\0(^Umr$BQ:`#(xJ—r?|*(a0'D#&Ԉ{=rY:UD*N@vtP/YPAaM(=悱g~oK~qvyg!юӸwO6_F0VB =͎_<+ЮԗkBV3 1elqCqCWW6M?dKoȲ,7 tK@‡Rk-a#(tU6qtя;ޭ:.A4oglQZ(ԗI#&cR_r#*k!;ڵ}Z% 'zf=yrZ#(5~\!|}Uvn^"GpKQ\<Ü@[ߖC(iKQSJ(R-DAKQT `S70$*GCK~Ai^#&]Q֎@s̸@ FPnXRXLk lg}K`疫4TqDn= B1DXH&r"H#(5SxfF+mtX}#&&1A?#*2#ڮweqN8jPT3Y(9A TexJJr!JuRH>/]~;_IG8ǔ@` #&X{rؕ⚀4R~v3 (n*/=6n'9;NWM7RS\b#*`(S]6;B8koeΡ)Z)#*4&=#*SmLz>:Q8=T>KngT+J*#p}Z#&tuڔM5oB@ΊJ%EeMd#*d܈YA}9PpM3lahpYUJ|x}M(zߙݔx@M"x^w25Vr$CAmP'@}QޚYw:]#*%(͔l4>8@?"HJ"U/yٸ9;Z#(O~i41PRI-R4ymgQEοUJ& WyS3T>N7(:TU`l,!x {M^h cakX 7#º&SW*~k1mcwM#*{^VܬEPLutм3W˥cQ!g>o;|:LG&wΑs㙎뾪~saᆮDt;~>XQngع1+&Eryo:iS>[ZV2ro\ z,4!R&m$0x5)gloೆmN4.9 +\x#?5~Nns<#0<≙>}ǺdNTˢ2OvN/WsКhvlcX)1mnK ?wH6*  N4#&W&AU=6V^s je/2!]|yE"R.ژғZ=:&՛#* ~_|H$,8it"z{wN;Bbz?%O˻9B:I Z2Yl鍈l]#(^]\7WniZ^ Bl+H)~uUހA:A;KU.E$X]y1((֖9A撇=Qb7!k- |eX%*JmAə!#('ˁS*S}v@it;LB#(6s8JoҟX nohдBxٴ=|Eք9QzJD#WTsu@8&#&ۮ7DE#(ljw[j`WHZS<=4d&@i">վ7l/u#= K Ö΃¢#; ;פbahkV.ƣ3ꮼNP#*Cx\:J_ԣLuL.pR@px @1 YG5V~G0Nr֦o*xfͺ&:Lww];e8\E/+if4 ҫ}ϭi)#(q)= UF:v,65k{.i{E"/1ˤ)ؒDh#(ᓷ,ZEզǸ5ytA@y󥯹O6Ům k8c"?`ukw:][y#(~+Ȗ/1]/Ծk~@S炞,hE;QTਡqg(#(_5q%N$}@&!IeMF|-h£͘i!Uzgsm8.ju[ G#(W$N,A6S:#(.6x^"j!g *B'v)fR6n[)U.H(ILΆD$Uj>V!j#(R#&{fʡnQ?'V>xֳumۖXQ7 ՑЃG__|,=Ԯ>"]2w!^#(Y!E2##jZzEF<jqWB|@xzY#(4K +yAQcGH(*yeEb*>LG3[ #*2vv#qqza#&Bn=r#(8(N2ǁLpMxj R@)b#(G6YsO;]&p8z#&I(Ǻ!y,J92q#&Y:K -8U::XTWTҝO:Cb (#(n7 6#*lD3=(JjU4>iV_;cTB02]fC#&`WEbEo$5kt6q0}W3X_}uBJXa Դg(m+M!VVxi |WtQT\ByWt|fO~@(OdX 1HA,~@(O+:#(EfH #&?5Als?Og]nvfXmɢ?P(8_OW[ bPxn`vJg9$IUWT#*.\>Q7TV^}0peɁ0bxk\ڨf Y9a 57#aX2JuA1hRQv eAP7ʐ{V2~h 0s9/#VDqwkx#(; 0핦:`DY#&^ׅᮒ}X^^<C(#*;ʆ5*!5d;l b+O?wObvVD~h֎wwﶇ#&I HE Of_MB6ȐCNneVŐ!Ԓ=\L-kEiRjE* !) 4^)ir#&$#*#$~'%+ @|%W8,)R(OjE|O"B*X4nW9F:"G#(oKm6fs[f};Yg22@b;CմJ3|@q[R2|Ɠor@g7x!Jc;J*]xߦu:݆x34vo6Թr;,zc VK-!!)^]*l6يhDܝtcQ{0ATṬQ]%d5AJTgyLIa#ARA *" 2,r)BLi3v XrOl¤y5f}axǠ Ǚc ])ĺ1j3#"c]?r`<`#߻Ít묗FJLi661K#(_:[MB2FdODq]swGf3&W M!'̒HI3umRbkY 5j˫-{޵YɸiaGo5F_߆q&o{VXѣVC[m2ˇ#(AeA$T#&>܄P`#&&** @JG7ߏ#Õ~;~[UCZ"#*$o^yw)/_v׉}p~t KC!˺ЖbBBAwMDՕW}&8p'<̵.Qruv[[٬$ rQI}d:ۍc94;jp*ǀЈU+FRSYۢe{eQ>\4sғV{);c)"~Ʈ}rab&<',t>#&N( {kDH7箝#(ڔird #ToX|}6:a4RO+*0VJˁ_}r?߬6i~߉ӳU*JRDS5hSF[5][d#*fkt)@%(1?nϡAv:}H!}pWX! c,O%QKFA;@dnl;, #&8n6M|#&@]`) ?-{TbEr#&>!{Y[ͻG>n)(/\B--zRϝ#*K X}x1~<>f_)=9#(×0rE,Xs}-1;zNT[?(^#(ǐw+N*Q8##(ZL&KF y8;Z0FǑ3%hGxޏkO`{ɵ PQHCuЧõT=% 4@-KJHĀ8{#*nП*8Op 9]- ĬcCv_}- BjC֦J$qTm UG6"z8"}gR)#(am#(;9/Q<&Ιܫk,F\sEݘ"zw#\k=U%`Cm:?/M" 2_c<+¿5Cj7E= :Nn$87#z C$%DZRvJ!fDD|r$O!3#;vbN _犉gcZ*bR{=db'dEQ*B:yvhsx-1_Bi{"#ӹ9$Y"#* ;3ơ#*(1Av6UIVnJAs=r0R{a=ï[Ȗ+UJ/sx?c=!i#(`{F#(/ՅT(SVPژd6aTcgemR£&9RM#j:;y֦#*q@)i4a6JUl8®`Q]Əy*{c;lkA!+T( HBJ~p4Ce:N'o99ۥ?,N ׋Wlhn:?HS0JP(PZ8}Ug(x^~kLbl#dš+51.?:1+3I@0% !wI#!,1|  ME6H DB^$@$ "STu(&GD7sM@CF5ٗ261;dRdH6*}kԞaSq%2$`D#K7/= nڼmkz٪ϧl 7)FjMkxm[T a%Qw#(Sl-B,P;C}Y_?wMTTQAX)0?%UHuu|(#*I˳즓y2Kda0Ra Xy#(l 90V#(۫ZAMR<eLS7p>(>Ll#G,R:G,qqBt~9*֤oM0E>`P:>?HM׻b<γ Paѳ% ~( !kG!'Wj%Ɣl+}Xhs`A,PRQܞA*`٥0$͢?OW#(A},VdW,B{OVF7f"%A)Uh=g?3UrRΆ?L}ڎ _lR>#( T&I}([ʅ5Ĝ=BDIsHb bK :{(|{3?@<%ZE)`\\v~fDqsW$#&3Boap;#&v'R Y.L-t1Sbvh=#*sa$H (d5S8|v5x`fuWKSrvY8(#&|c}^ۋ8(7QĤQyD*#*WI&p~@ 1$R~'dYm>(mFDؼZyw4r#(%Zn~mM{@0LA"#(?YN"{lQ^N{wIICp#s0r lo;UϾ).‰~g~Dͳ>#*Q&5@ZIr ,}[OT#& ^R6Ȁ#&x>(ψ;Թ>$h01=}KU٨)Cm B XQ߲bRiOC ɍ<s^b\5+Hi%Iuu2F8#&Q7#]zt&xh:өɝ{F<]Z3JcI)E>K&\'֛0K$mk#(#(EG6giXܩllY..#w/W#(yێ1I`Nbк;l=yw!t!/C'Ӄ[jj @Ab3FRlԕ8N:rhkdS#*KƒS#*-yw#(`a\0(G`{}C~^R*љ^[Ue9]-WD}U aI,dGz&ol~qY2FQ?p_=t>=7[qLʅQ\oQF&%)!&ۓ"P Df#&ȈȶY@6G}dS!rͤ#(辗krߥ4)H~:j-QO;ƃ?n;}~l`ѺT<\~]46D9* O)LGj58x2 *#&z Ìcd$DiX4ui;*' D3/!wec鹍nj[;u+FQ~r S0$4z/l̘)ˁznP92_&1:GrmҢPKzn#&\p+96-{D>vۯitl+&ԁ!M6qʉIeQ3#*4>)NWԱj$Mr"8Ir0]Im+`F7GEBC/~#c#*8(ĊH(37>f!^_Ko<gyQ( ގ~#&<>+[8"dOͯ{nN-#(xUUáu007fo?=gAǓ`q aNܟ]Qi )0#OиMIRa$VL$#&x*<(,rYﰺ#(,_w*$وT]-v?7j#wcخ#((I Ddb'Q#( fYpx "JjTjl,&mSc`0#(:saݐ'~hSY 2qNQV!2j\tОeP !pz.I߈i%j8VNWjƧH;?G'&0f0j`,Mb j3Fj @E(q݄}C73#*fXWy^<wK漆 `3љуj#&dxv\5n |rѰ'iT#*>=~'ӛ$)ћK֟#&Y3R*5]ZvJ$w)$#*FJ(1 (܅0:#*C.3S&P韰`D%#i+Wq#=)YK]f|U#($8$HvTA*۳؋xOʀn - Gr?SKßӡV"#ˁ;{K>A[!ir,f?Y#(N&a/H"d$p{1[j__wD/g;?LWjpNv9xZS۳n 9՚Y$==p68vfqpeA:CA wlЛQ yɌKNCzvcC3ˊjx1Z73`= I58İ]PUSFWC.(@ޅҀNDŽ{6w1$Cf,B{;naw16R* N1L:11#o#(:AŭMM K]CH\] Ȟg#&#(9۱&C<=b;ą#&g#&9 J6"feڐ& >aDIP{=7ǥ:x94#(nl1:<r׻t=BY72.(Cd J#*5ofV]s@8iQ]j7 TzMIޚݥ›bnIjxnJj!$8>DkK^"96oF::({9đrScG9_яd#*QCJ0G@oqx3UVܦZ]n<=k&?z5'!$5Gd6:!pT(j4D5{/e;]x}QLd$'/R4-'23=;aEs_Y[yqfL6Ȫə$= y[lׯ[Cb՗9bj $v(\:aԽzwxSg n9/a14{%3ND)#*#h ߎ3[%>3#(`&əT2DȘB9[̭n>yvj88 z:#(2v선@Lݻ-癌l[ywwvL-y}wAX˸-"MR5(#Pb,%/4kfcXwX"#(gl#*2fp&!ae" !D9ΓGy`T@g m̺~P#(#*7F2U9br @3'^ۧU#&=m#9#(kCG$$;49cT}Tj͓th6m) mIM MmhM1 & 4vcc.\XuJ($2fdqD{QpM$#( .Pg?;;q8cM8x߁#*SXk Lpl=Fe 11hfBAGcћ@U>ۅ֙0T6a^tU4ԨVI]0".Z5'oy)`E(b/=W7 tEY1#(?Z614,H*ifҍ痎{H&)aW#(rX4QRB7p1򋝴m$6%8g0kd5]lu.2["%5X&2#(s|>I5ޙkr"a#p*™qpAeGp;v#&cDxE$K%iTI"@wdl/#( zIp~=sP}wv.^EЂxao\<#2+ Tc=o⽏f#(r|1ZZ_A7#(}yA- IC߰15^z.$14,f HL@UPvުgMā*%%N#&|%`!`ʃ@ |y)/!Ib`)V?=nSQ*9D#&}EH MS3E H?#*:GyҒ27"`4ud2H)"zR-DUTTK(%/(IȁsyW}l.T#&4=P'kl!{^5y"i$4nNt@UCP~`#&c% ch" ! Pth1RmSps1#&EM!b H pPP2#*IeC=k$6^&/<6FQ3i20qɬLbl7CWWa1}15ESQf :xI"q:malQU\[E"Dh0#&!,Qu2<@&fet2wZNUUz q ?E:d8 |bmT{Քm+W-KIfH$Q*P#&悀ȁUQfj-XNj #&<$q%ܦQz$CLuJ? ++mrIlNXk#*i4`vH#&uQMFa0EwoܯSoR]ݤ}xG:;J'uEh *ω`Ԉl_LHkWK#&`$T=.Tа`{_)Ȟ/?˓W&I#*4y`=1c-`㐛PxF%#&Ӊv ^3%R*Ic +#Fae|6}<ELX"qxWd##&`H3?8p=` %+#*GkVk+*Kz0r0;r%sRSU0I!]`\=I2EBH"Q*KMԐ62SK#*K`~V*1!L#(c\DK_X&J=#(R #(0Gl~qa?Wg8#&ڵX;׶It u<{,u9(=ێ`8UHRwO0Z! ;N.րQSdNk*/ RQIjs;QЂjO:L| YKх_1N#&3hX6tc!a+OUpH>.]f乭Hz{NlTa#TS$.hwtQO7 dX"",h2JIlV-615+b5XiQLZ澽[>r#({$DH"22"H#*A h;P?#(V0"LXÝU2`<42Q$̌hX2 @tU US,snVHDC8$Iqa xQhCZV `%IdŘd)J*WM(#&tvVT kH[*G`Ɉ2`z_s#*S`.6BP`wGӎ22 !sTi)͹W-vieQQECP "/J2DﳎJ@XAdQBo|>nM4l_BzDCxu v) 烰B#(z'׮ 9HDFHY_/`J`1U a4DS*#*)Q(:f/}YϟHRBk} _`@?LPB[nj^1pʏZu?)'sH!C/kJ]U;ӭq#*s Cd)CU8/G5=$RrR`a @8Mt " 4i4K0M>'.:Ȏ#!l/<v _)R`vaizOfuٷ7u<#*CO·=>#* 0~`JFW|{O:xLm#6jj5c4@ ߋA? #&SN>^ k'#p>! 0_y Qa~ԡ_yͮoXsɭN@[}Gpv>" ͺg=#*T1"; r묔_@2߅&J͠/_vozG̢gәo} 0#|sFFo0qzGt]Ou7یU u=$Lh8Ę>SW"=1>'ؕ?k#&B7RR꼶la2lUPb7R7'ۯv#&JGnV>FK՞$!]xg͐}#s#3i}>5NZh}<6r/@_";|5r=r|=5}F~p|sb9ȉ`=ϣ%ՙvpF]mzPto9rײ-{t=Aݜ(NU(,b1d;;׭p:bc^=ĶB˳B?BLK"d9^fwP/m7ʼnɄ2PC$>Tԍ^}z$tnIu#&3cdF 5 }:(@dSO}];WU 0$b֭Sv ")HTd"lvNYhICEF!VFh+" i*hd!u7q"8.#efٯ.PTHּUkhj[QR0$DIcNw\J60r@,Y2Zs[m}#*fA~R,6&I|@0 ЉTA#&x!훧0;h7L2M`~d N[/&)FyS’LYXf%sJL5<vZ`#&\8dI@E}D#&m хZ~L}7\˻*?lD,:.Kdxcy,._QodhKLv[}AB${u%tseKUaնITUPjB]R|G ĺ[ɲxf5HAsB#*^'_0ƵL2©>aϡ~0@1#(xUG٣:a J'qImbPH(DY9SuW_+UL曗+}8D#(q.L.jJx_ha#(Z Rqܜ=+n'!nRA#*>smP>g.c? l/50NI(\9bd7kar҂ªӷfd#&#t [iw#(^|I3@Cau1 @b~F0HbPI*gD:pf{F>aDO+vp4憲lh`v:NGUS! Xj/Zڥu5CO}8pM;8%fIvhlN1W"JŘ #_CCf=mz"?֒x{O}3#(,uֲ6;#;rlSI6b10eE"P@} TkMʪ!8-5ֈ@ƫK.yK5ck*6J!czƵ,A ɔ`V֩PXS`#(H^_hT9&x[Ɩpg,,9#*f^ /lДV|-m 3~@$/ou8ƄĚ0!="96koL"[}R󵼷f sSk.L`\ڊFeVQTQJ 2#*%ut*8Ed90; 92o[A !&7CWq)#&XMX4! }xe$3fXNl4JTTA %#*a,VMP{Ԑ"'rGOo;T3G87shI5|lm{j *s(#BdM:QH^`O80<’EZ-Qc)f!F%XfC\@3>>`CaHF$I Md9bIPSK#*Y*\#&7\#(ʅH("!98"uqn8E%ɬ%@ot,o!ڊ́#8= כ=j٦T wy89Db~ˁEiTO}M&MLf\VV-k>N=ő!$Td간4O#*zOY )Rѵn$6jZQZصZZ*QE$ #*Y2Ca9tD}g;#&ږQ#&>ey9VxG!HBH%2e,ڙILblZL?C35i ҥ ؔ)5#_GnPɭ&,L#*dfĤ)LQȡH)&K(#(Q0Z*ThE03ɃZbbLh2f`A ]O kc#*0vfM]`vVk0Pnx05`pԖFG# 3Y!s.:ٔl6ӻT?ׄ`Hdq5V.h#(}OAnmFvUr0YE6/UyUJ~kָ70_;I֒S_0ۗ#(6 T0рk0s1"WuAI$I!V,bi`"HgIE*C #(-3ןbYa+b%}1i 1h_/cQx"E#뇴m#,'jONҟ/CCxB)w`w d8>!l7.2z[D鋳R=Y>?_>nh#&~(FVƠO-4\]fJfQ(}FpDLF#n[~wrCq:J8  \e4O]y#s{B*k#(34OU#* AweKlȵIbeQ,FġCN;1. `o)~>41A[p#(VׁWf:d.IG7VK9hxG[DlMvNWN` 0F,oWNrݰvWuBHD{j}">t&|##x֤pfa!Z2:H35z}#xfwÙ!sp#(Y!ѣSL /*fTCJXf6al32v3#*mjfٻj­~W!-SqZ]o}a 3?W[NH6]Ykff5f:mcXjf|nwXuirY8fqz;F1^Ѷ l:H-4$].i9Ck,nO4Y9#*{R[&*_5Ќ]NRW>G]*-Ήl$jILc'v`#HV:!_iM\y'[2ui&>x@clAu3zXY?9C1$WɾƟvOTGF1`6FS¢+&I!O}Aj!v79ӊI\l{"yFgWWN $=4(t;mVfQ8o Ď,t"vF9ckDB^&8:.UEP[aQή&GmNa#(6s1wl؍>؊guDJU,!lShE#(;34#i0&er)d+z|AnX9}LZl9$2BBeYUǁEn4W2GyeSj7`4$cdfq0V^d*qutS%Q+qr#~#(f6Cڨ#(V -/qWSS@MvOX 5Asq#& d*mT싇Z3bBgE9#Q`#("u62v\ig:0;N@Xlhyz壜g).ZL :JM 0u5ژMWv0撎nf#(#*mwLj͑v$7W1ý.`WNk't8LENAtފepxܧ9V)$8#(V1 [~[j龸 h X٫ Nuhqf]`V2[Ȉy-2D=uknd«LnݑŽMI[֒%'yRD" u{uQueqPK0LʘzkgfXH=A_xtSኌ+4'Tʼnm)mMتV ۍ}%]N 驺|8-WW6|*8/Y s9YN>^XlYp咳Q0;3ZɒxD#[0}f'D^eKGB)1A&jr46i.8Tq2Φ-V,aΔxǕ7Ll&1qK!gbCۜ[s+UiXrb#&uBNV'4Z 7]F8%^A췉tΗ'KO(PSBCd0L fʢHFqHCt0(`Nx5⢇2gdlY =L; E"Rc)48/68j`#{)ԮŒˌB?mr~16az10' LrU~$#(#(*24ejIiw e AҚݛcHAINz;Q#XM)3\ˍ=ud$YQ#(CGiSP}L+S>~(x $!lQFkcM24mbWFx^'7{ O+EOKu)޸!.*톮Oi:DMDK"6a$ PIH:pAy:xLZ\A҃9*e tZPS#D~`hH{K-0bL>QLLǝ qPV[Ƶvr֮UҗLX36i1fR@l@#&0.!1e"khs|a:vfi]pJLmչ3+wsFiC{͚pÉXO(Q#(iAaV8+h#\}!x}9Q Aӳ^gyG붛׷k#(hi7joEb(e7&6 jbfbz&v0cn#*Zse:1]q t+ۦǷE=xW`jA S1c'GiT6q0fg %;9| hZ9Yr&Osvz<+A srج{"ju,v4!~PHKTC U *M4ʼn.#&js,4n)S F"b\LȣT $ (7fN2jhb+@A#*" p״,zCΟBA&}4E`+tPzZ?*񣭰KGXN*yTДFjy"dFH׊1UmdZj@!zrCՌw|SܹXX#|'(z,j']SuZ7̦0XȡogM8k;fLRdu$+.f<1ȻgFӺll8<9zU/dآ0_?"-$"1a9DzٺREZ`0#(@)Z6G_%i)Ĵ##*4,h`E,4$Y.#*Rёe7RXau?U; "2#(bTT ct^sn]]u—Mnd6Wi5rRhteiue![V4 !#&e?ߞ*D]vWEle5k$ț+bԊf]+K)iZS*2F;UhٛZЕM}~kḋ8[B- CpLK$:4N#&0S%)U@ꂪH+;c`85P'ʯSIJ]H^ \$ bRI(wަ'zDfy9S~P#(ZD*V9Sdd'Mj 'B) $tջ]|rsu#5pe}5z.z4uڛ fx^ qxPFiY@1#` ؉%ٝlK`p}5#(C f$#FFeiq;OΪ6bR94/_ #&*#&#&^G̅r="mVQ#& FW1/İeAT B#*"DDQmfRzDI$5j%dɦhf*LiJV3Z_6Cf$QSE븣im'[vn݊*b0Lʭ2KSJԕb#(MnBƣI6AV6KkmHe׺KF$Ե< KM3*jjeogkmho:%-S+՚ uFLKm xD"\0441ݷ|r#(/q+N[M7Bva#(5(|8Ke}OZKE\9.f5oeZ#*{LԴ4ԥ5R~]~_j{+e*Ͳ#&Yt)i*BUtܱjնXt*&tM#*&*DSDն,ill,fd}JQIjSmZmY6Қ)R| 1ZfؖbiJ!Fl43E4[[("ild)U&RmŒ6&՛M*BRJL&&(1$"FR0-ZVLi4MJ[e%mWUVZm%IdV͚)V[jWW5EŭK`W5$ @"(bI(4,vnj&%#( ol#(`=3PTጢhxdn*l""wm <1'#(/oˮ$>x8y_Ef;#&G#&CtuǦɸ#(~|cnͭpų@j RTߙJ7iCRbu=S^Aocх\7Q$"*1FIY֚,Y|/ `Rsq'KX'PXX j5G;ְ-qP:E->ݸ̧!Yei_?lXّ`(BCߒU#(ؘxX^[}PsC|w3%hon>"Rf_UC`0~hIV?~g#(HFtM*C{dR>cpnh5i!]C:92ľ̂4d~wLI3PiUE"@#&#&5T`w]W!puoQ#*CHPkt#(V\^U C;%<в+ H%(1[(*q8vgI;&)MVեh|Lt-{=Y]#(>n5#( PhȢs[kUĜ#*PPR)؏o-Jeb4i^tUGLʣBQnY0*nF1UX$xt흽57YAI9h呐`۶B3 l LY^d28mV\M۞v0Xa>W!)VU&F#(t#&67[tt8\z4wP3mޚZ3=#&`!=nTht=#F)0)#҂ yMn^#*]>v#*LZRp^ܢjSYR#*# H#&!c#&S}mn Y=.z#(7q鱽0çP-I!?i@0a/WL¼p5ƚo^shWڏxBb!bk}!¸*ݠWIrB,⼟sχ߇̞ tmֲm@C)՟$4ž,bA`[ǜBI)/'؅: #M)L7#*Phi!bEd47 9F @tǫhu36Xv3H$#*Pe^z#ffVӃ&zj#_Zh#*'ʊ Нѫ{<$l~Q#*"v!E6d9%ÈpeU=syb'D}#&C&$!ND{LBx̱=  q1!X5m;jm-, TT2Gr6, dE8D[om3%t`Q`fD( :LNÚs>l:R&)y$S=iF@N)ԏ8rH#*H!"4$gilq>䖩[#*EpҼǼv|I*GM=~{B`X%rXz#*']ĶPe{;J:Fp͝fPJh#&!kq0vP:a9G+0Ӵz ħHoR)4oo q4m6 ky"4IK#&Ic!Ekf Ŧ%0/ 6wXu`1V,s|pad#(Ix(@m{uCD)[ pBB<*icYb4g^IzՋyzFi-A Y4l IRۍ#( c LMj$kQZ mfJ!"lpFFp-&GFZZlQe\ir#(*°&P޲, XZpY,E,Vͨfعj+$ƼOFGo=DFq&u Z7IK2.i4%#MeGi tE'к-Rc*UBIi9$6t`S$dWh?v t"2#*8#]E-R`M,}||Zڦf$ZɬƼvUC41%щdxVNH4#* D,B)" ?+ZwVɩ5mm&Kc#(.j۩X[nniM{Yvk_*UH:ϥ?#*p,:30",:"OoWOBjh(fxA"AVaAhZS ܹ#&a:f \ohKo/3@MP>sk( T@UM#xI#*rFmGS6Y湶kVj65IkXl+H`cAefAD6%IKhEbaI5#&`Ε-bHhPtH,8jV?W.Hu4CI#(4CʎZI6$OHrC#&aP3 bL,0-#&/}EArf#&Ȁ.|Gh?jpѱalR@#(A%ǟiN{> YX9J5;ͩ҅#*w-=x9xe\D(|4P#&E}\bnp%Pãh:Bì)iR)(JTƶPmMv5YOi]FF&hm^w#&` dm7(PXV{_CT(R tfCĥ4d;.Tjt_Xq"spyE^Xv F1Vy/I&&42 ZV60#&G{1T#(Ȓl#ܻ :I$I&br(x[x牏PSPKa.@0H!!J`ݰ6fl9n#3:Mlp(̓>5ծBHgXF:f3\]I#Qv|cJQLh%PF$R\g{)Jeӏd~w i!(8!ǦX5F`reL?IԻ؇LKM383QO:zAښf~yRW aAqlE#(RRRlkR֚֌fM*-,fU6chc4I*ͩbUSk)MY6,EZQͩZ$V*IZ ڋ3?GL"46!5qU: bQPD UQEV#(£ԵZ_l;ޠ(J"-@X@"')' P(̓ʁY4*ƪaP6}Lp'stAp(]R!YUO."@j#*⽡=I ?z$ H@(OȂ^ԷHW g^W1leN{۳U ()NκdzIJxj™1ە\HiRD^F |tÔLk.A]GH;;HVB$Ɍ չ'2X@0cY' Z`!6&yZ#(!LaH~qY}бC)G-+>Sk#(4Gj)r}:.j6J㌢u1%z$`cnGF+F@5%"᠑ahiH,xcը|(d($EQ 'VW-q I?X/&p#&heSVYrbiK)-|:ysȸPQLb}R6a8aXf8#(W e`$&7,&! 2a)s$6.o.XDGVEK9slD1d:01@tg .3Mh#&#&u;!Gw랥Ib\r5pmɕM#(F\е"N<DIPgP.4߅͵QLVã  9(XQ#*J4#(K!) N#(#*zQ<(.^7Ԩ:>%}<;zTHȲ8!MjZi=iS. hj٨.*dX6'{#& \צh'U:<=#UҤVJ&2 59y Eh#*˞:M̒)V w֫^E dKiyۈ-P$D6B mT璎m]F2@gBѱʀyMItmQUQ!?p1Ձ[0 >VXb֡CwhSnm봬c.p@A1K(ɶ5EMoM19Z6AN4VFcAsPG,ǥ SfFl9qi%SyF֠($8 p!~ՠF#(!oX"UA %{Ųـ` C(}7!"B:׀aH`ާnGG԰y#/96Oov=lq4ObIҪ(CI<"LQF+fZ6KIcT+mi2ws-@D>#((7~=prQso60<>!h뵚l"NF^q#*SyGK91:2 w`C^Q8^yZmjpYYya91Fz+70;$HPpA-t&L}/:hZ$f+.zsm#$/͸ڎ=v:ES=?9|aOzp6;}+s;;gpb*qװ}x'c#*RH`hī2iW\iG'1v׼ N4֯nHuYa) y~#(#(YM]a;II3uq9g' ˁ]~P5dj؎lHBEA$tCCk4d˶`s_('-qsNJ`,,f%)df*E_(GKٚ#&!nX g|Kw\(iٺ,,PM ,h `mv)R90#&$`#xQE@L#&4#*FN-I==;z8:fYV_dPJ-j֭#(zfO|x3|o.r=U6n蘁Qe@FO΅ZNղ'L8t(2Q@8F.lÉ}4ǎ"#J7hl Y;#(#(b@țL%QTT(3j6#&m b]ei[EIK3VVjcFL\Ku|hf`#&", na!A92"uL̎#*H[&dR5ix|n9`t#(Fm CEli @c0K"~>*gdkA#&I"U4k<ݠym#&#\7S4F٠Ÿ#(_qAN d8g}1zh{+qQ@a-bʤ2$=ٻȥ>6ݥ{m.4CL2׽=@fU#&+ZZ`hEg^bjb#(Yޥ$ՆZ%@5D l/#AAH #* j#*F엷 ]m@"v6Fs#( ȡhv~c)sus^F4'H"Q& X!'zٜSZD?qzMIkuL䭥~ĉz#*4KMY8tjıh/d5/ #*!zA@ti]4#(/}ix70{F׬'CKm"3 hDF$#h`:$IKIS#Ҩ"#*PmdTjPN#*#(4 A42ҙFƣ]wQ^O<6*E0%9%4 JihswdiăCc2b#*DFILkMƐi ~p!d~lJ R)$6]*%tYjUΒ^wgn&5+݉b]`dٙ#*bĨPTL 3B#b)%zI^6ʙLhRR,3LZf$إ2L5rimQMW*;u^5&EJ+&j2+#*م.JK̗s7#*"!Zx9YVAnGcuۤ&RTEZ8L4j+,+4=m|ba-`i@Sr0\3 Pɸ.R1iK0K#* $SW]"m\#Nl̲Z[o8FMĤ\-"1Z̑(k@JJlVR+EflM`[K"LIiZDSE$["0D4]Qoչ#*-c'8ͪq5Uds٘k$2E2=346#E=N%CЩ\5p#*tPAͭ%~Y[u©XS2jw6&̶vᤴ1 -b6ު*x3#k] 6ib@Čŀ#~yYi#( o^bIsU+F#*"21FrŒ]fZy,a3lRujbbdhCSSYp-/Ѿ3|"nh*#(Ab RI,xi+pVo)$NX$!DPZQ!A#(-T6ҤT 0#&`1A)#*"ИƒE!iBIq(`:O0鏭5#&X~K2ΥUԈnv#T9>iaYaq1W4Ɖ^[p֒}.\XbjDzs4<5ݶo=)doowIٜ+=:՜E]k513QK*5qfJp/oiCmc5uf#/!TF^mlޔW\mL#eGh,C#8ZX XAqm$^O $ܬp?4nۙ߿z6nd߳6Qђp'ҞνSqB`Vٵ]sV;8)LvTU2 m$CcO߫2WK@(.7ö!2\wkh J#*LCa<.>`p0>KoM+a**QYQ Kq 6@#"hI*hؗ/jexT(1Leo2HЃyf#(eԂ'3˿^4M$Px^2Йݩ.56ao߾8 &,i$w n.?8kXѤLf7?)$2&43iftpIgde8#(XGg9\Lh&!Ɏ:mʷOf8U;!@[!̟]%f^ђDŽЦ>*+"O, q< g9)Zg핍yJYMB##(1.gUX,>Xt ܬ7^WSj'-OC+YN[*Hos's.a')Y*-6*_y]*DH@?Q &PA y@B,(!$,(^@k_N_N0G@P#&3#&^;.c):?rf#&L#*(B"I5g-t^5䶭BF3[6[VbaC!-\PvHEkfIQUͱ|}bv']H\מ];1I&B`L]Y±cvL)P+bmJTHAXk166#*DXPkbiy I#*ODYB C?Ҡ)#(1#*"0% o_)P=>;[AϸCxϫ2iŗrLØ$ьctrӦr:eU:1BB#& (@Cu=c{scVHT1?#(x!OBIst~#&r`iHL=T%!xrj"#!oƃ8>R̠v2s44@np\d1QWZά#Қd[ohD%Xi}GpqAUv lEn#Z<ػ")X " T"\Z Q/+Uȯ-\g\W$;?IױT79lĊ9pOP#*/?ܰ#&ǿ:U(T*A1#&P{!Qj =|υx!7*B-P%He0I 6~Mi" wydeʮؔ幗"RMBiMQUڛdTwz_Yk3F<mmzfä!dQ*Hc$#*Liq i $킣g:=,#*&!Ml)he^^p* &Ԕ$M@uԲcwZWky%~%>!Y* Q Kݫr)m$ctɒ#YbQILL-힔i(zkm$J)R,#&P- F DnܹPD,R#&`Rqhzk#&؁hWtAdYj6TVҭ ^#&c_A5f#mZdQP!#&w#(j#&H>:bA V-֨.\0ڂ85ZT]hz"$(#*fHԒMyR:ރilqB!f~//Pr c<`p$[hjȊUJ:^NzOoTi:`vOh40cD4x@!nD#("cp!79x殒UʽL#ò9USKNBG[K1L~",lS:~F/M BѦ@`F P`nbg.9ץ˗$jK阴aVxm-1*}IarOd}xGN$uy`Lthڎ4? y1>vkA+?c'nEۿւ\ht7WRQ%&qϧΚ, d dv]qLG[f(`VS46 ޵L^Md;ţcpC\"hx)*QtD}CDaXA$N#*m] ˓GC&#* DP)#* >YU(#*Ʉ"g78YDC\C:J-RPm1ǒ'@Q AX;ؽǝ> ":RZBٛ!ٹP6[[F(W]@LƵUEUY h~B>ظaQ$G1iz䑜[3Wjtި^_[۔("/=ko -#*h@o~8^6w.{z/D#* &ׇ8 mPki"$FJHEe mfuw-35Y.%(ω7M-3фrF|CzoN&z7lH;X/ YLv6iA2c}I-kkm)Nhe(҄ F$yN_~L°U>@C`m1 #*Z*")ԧZCޏ #&wH$R;6#_A׉☌6:wF<:}X}:_mh#*G\x#::,{N@;-Va+.h24bϚM"+ȠQCbx N"Xr^uQʏ&\m֔}Z)I攚eJu?""J%IU\w?vJ5mSAbŐd @#&:^4}r\V&|>gQ KU N${b_F?O^y&əDTiR($A66&!&DXH~2t3&̝, d3}>g^\8N3lq]fΌg)5,k7yAPTUJxΟ$(Bͱ(!<)EV`ĻZy1ދdqdٜ)!mcz\/NAAz `U޽ǵCFFvu-CGMTV^0M-l6huiy/@`H~L\8$55[_ dSJRi#&I ak-9:[ե[hlC,B3PL# 6(1@)(@i%#(*%+l h@#Xl0H f(`!Q}H7#(_zm`֣h]2U2 NAF$ Dg#(|@>Mʌ"{ID#*#&=9fZ0eV%!fA;+z!G^+kj-O+4 l108RmKH'p#TqV4ò23N XդT`hdC\ fPj!BEf0GWf15I@0MqAy5гS!Cj أ#(d!ȨzC#(g7$#*aH j˻Kӷʝtmq= LA13"^ AUCd5$K#*"!hiakR=AuFBp<f٪Ep?; Xz3`F4>Jbb!-[=큫TJ#(.XXP#*g0ԥ6mrr2&:&[YDp*.&1`ѰEQ$@Dv0$i-#b#* Ĺ 6(P#*,IQAdT01A+u4b`&)_qU!QPuF2TA61f=^#N-_:KIAbi,T]H!)C`$ngT#*#(@;BDՂnX#*S#((TQ%wZ#(jJMmM3LT5@"O\=u))׸M O`aX#*CHRѲ촐nkRivEKxYjEEuutomu҇wG֥wQj5 J3s0lG](77bYJY@:#*tx9w:P##(;fC?FаYj b]䱮ٯYœB,I㺹IY$C*U:AKܧfx_8p m'(MAҠe"$Iea.Z2.IY{N]hF?F#/edPb<ʲ~qO{jh'NuLUqI;{׋F1dľ}V߯BБ`q0<(0PDDN1rw`pNCmbb5XtX%Akeic@ Tȶ["3&!B l#&QtToU_wHʪ4\:$@4a8kM#uV˛Ԛg02L6WAXY(L2Jj-'5zsmMhؚFk76Q!j5xY5mgwr4k&ҸQmӻzUnx aA6-k+=u6OPx{#F4e$B+DAw"-^?Ĉi#w^͵\>҃{R/!Od~#*9}ȇ"he$SCl @ $^1Q416F)(;;KwPiuH$`܃`14P "B(U`~m׭ꠡI7mx*ؑT^DP AT8|/jA#&` xu[ T+#&|x tRO+҃xDR3cvҰzG,Jԉʇ1{"P RH61idi4hVE)II3%mZ-ڱSieSQX")B(${  fd#*F'&0Q'م.CmG2pp1DN:Lb(U@1ěCeldE d(UF LaۚUTL$C$k+`25d!q("b#*ąLHDlaVC#( M%sI /z.yhE+P$ ;;_ffqvc™:6XX㤴щIoe"P/J!$P91gR[VcH!PJzأiUQ,zzu!)d%w<]^YvTٙB2Vk #&H]JKL?8W(PBLa&Ҥݥ#&hQ'rТkLoM+stNbqOMT#(zcY4HدszwMW~=WRGtͺ]rv%oQ8إνOY+'\B4trPtbq銦NdA0|S!"!n `;5.Ociz_2̢DGh&Pܩoy0%n0t[Ox>K7Vۦ6)0{zl(#&6٣ҽ fbE[Cf!#xE29⦫y ;HvQIC-K(Fj԰qĥ+-?tSPĠ^ۄl5sq:fU)X:2GS4t{&tخ͸凯La~~7f2C6M`#({Wupox˞ou,y۞e]j=q^e2Q2dTS9﷌>ˤ/6p P|ڵBeFz09`K/[KV%-S*T!Rz"Yウ]+ER^##*˸<pTM` #CE.'s'2[:zhT:>F?&|9ipŢ.XHSE8-7K \6$ R SH>FE.)[# ]u"#&oΜyiuS^p˺佘j:ӫpӔ ^z`qC#ږ !FyzDˡ4Dt\z";Ɲ؍_0&J&&5v=KqQ^ӕwҽ\:]^o^6ޕPlkw[Ӯ,jzmxmtƫxܵF\֥t"{tyrm&aAPdTDE#*y&XHR#(e!dQb8|ԎeWdDbv HyJbfo@%qA5MҭI*lLc!(rYfO$iG;o[5+hBM 6.j<1,bXj&cc8cZh;Yf#54QHj*=5k s)reoLA$1A]fE@#(i:ˆ&ڃVpDV$eѽ\$c)C7ZpHhD wͅ#&#(DifL"2#&#&cu)HsaMW4)ZKlx˩E\17 7@+\ФI&䰍l.m͠,FD0x/(V4=↉hc89C%c!nJB2#(n%48LLa|jѷŷ%Wonv,M˧Ƃ Ek:C[5F#*c*5R0$˷e>V6#~FzTnn[* gIS`t *,8ێ]7BRi;#hhZZ~Ε<~^ rsfo.1b=/(6Z\\gÌn7m7tɄFqݻ4eU9lE:'h{@N(Rhx%?>awƎO/ABءN-U{U+mٶKuS)kE]7ח ER #([T;yͯ{{*Ʃ"6QSI(,"el&Ս%bM͕4fT,I((CH4LѲl4hZF#(DLj#[keyLt_\Kplt]~AL$&#(4'G}6)'][AN.5(E5!E#(#(jrVe,`H5cl&NΞv1o^kW L7rp.+Rcc#*8ddVKԺ={OS>NP9 a7\J.B-zIJd#k"Gs7܌RdX{h[Ѐ4#L @0H#(SkՐm#*h a&B#Uf@#&|ws\4#JU#*I䰐UG[a<߻ Hu{~?d{w@3%D6gzȐ/~IR X6驪QZiOY#:H=a?5#IT48ڶ c[q0&k#*8~dH|SDifj6&T64)!D p⺫^6C-Ii7bC]})8OHȵ]4yOP0"w,4}wWXDA%.aAU07H$ȧ0:Ѓۄ|qB I=N&;*vPk`P)n*Qə`>) #(zOwEAI"" ~eC,W?pG/d !&g޾[1\~C6O]+qviр 1 uq8'Ssk?< Ea쪇an; 0S~6;#(MaU=sknddp<:$g,!`zRb%%zBH4fw/*A"g%):{qk9S<* 4Pč QZ0)@Ș8$MO7UbX2$JIr7{:C9 eB 9'1Yr#&G 0ݦ+u)c:"#& &fX".5J2jV }n 2#(zery06CŰN,%D#(hr(icAÞH؃f+GXoFm$%1:^-QЗDHbˑs]AR$[#*d㶶ȐVNX@lk3Zci.6#&NQO?8lK97qPI*sK!2)hiqѹD Pg+m񓅮9'{鉄4+pIzo*3X|pLztPnlRC`Y7YPa`㜌ҀlsLJ%RWy^-@1PdJiilh8v&I#&B*HG&O*|\SqG|B#9.ABi3w(Zdob5dlbA?E /Ē,oQs)*µ2FpF^Fa4*Z #*ׂ8yHjr*w]iD9<7x|/d}clkK"|][\"0&!=pAӑAYRm"K"H@nBrU[kS%RA.5$[!"#*m^#*UվؚaUXeSQxnѼ0ɑؖ#r;iiƄa xW5Mxwمjns7 +ɠwMŠVn8ɀB٭U82fPIΆz8.%tzTٳtsHk`S$= yy,l#&jjR9NLpN#&u~:NQX70~!6q;&4w0^4(qC w9v;n#(|)U T IHv"lM6 *`N#*>dx#(!Ha#AFH"P5SOv热S89ijC"۵:嘁s1EF#kSfWX"1`l"⸺ÂEEca02J/e4Q3,TTD XAm(#(D#dCZUq FQeAE; ڇa3bh) ]& @ѯsPHF!AɠMȻ0]gcB#v](94#*ܨT`nc[#&S(5xȦ)ǑPA'v;$0xJBxo1SD`TZz9wmyQ$jcucc%#‰4iTA#(EF!FgI;cIg}K_f}Ҏ)Flwb?oŴ?0_XoD禽$NY$`wYz~Z5L&\}YS2m2nN(!#(PAOly*%j޼BU䚍f=X#(#*=̊R1X려~&l3|#((ɝ+!gxQ|\5ZmE%iFjK앒ڍ5F^J"ZTR *I,H ucEP$.#&H#&2#(9gsk# bB$Ȓ^ݽS5V ?B0`")"jg<,{Fsh3ww/Ҙي1_#&( ]B#(L &Gd %šגOX>Xb%J$uÀ0.:K?#(|aGbb<Ǿ 0MeeTQ1C(+kf P6kJ6%QZWBڡ7D<`b+7雠ni%dٛ_"7OFBv:)D:;>ۈ&PSB{9j$sX1,|ݭq4\*`o=#T F0㎑Hq֒a$,%`e,DL\hhnewWӳ.vj%.)n ":h+m; =>HI6`ڬKPچfeͩ7d5ٙ͑pTtlſMb V]i2`ȯDZ;lPih@4&$C/i];z#&*gA.B-#(7㐥@9>p|@zBF: #&#&Gk8&ymI :$K@9MH^C^XI˝bab>}wQhN"K3B&GGfKV@0E#*v#&Jut7?ѧۦlٲWV($0.ܼm?CGCk[*#(ƅ>16PrQ@E|5F1<먨E$Xiwد9/]ӆE6Bъ1+ɺlmEa b7-ԛbL"e)TzґMaCa>[v}QAGjY$4} Sҩ]A"Ȭ1F#*K1:Y*LXe-6}zIQQ4JSMRB0/"TD섥A1!HsHNt"N`j&7u͑MTM-EM1lѧ<ړV BQ:@D"*4z;I|0ubI<&A}Ӯ"!d]b|:E#&ށ*e$a$4横,,@$9BA=(3$1Pm`BY?#(OM`SR0?6J>"b(sO`#&A$بh7#*$HB)Qjj4-S_#(`U.kmi0#&#&p1u(V583 ,=tڌz#(5@{|FypbܵF#l%#`9P$rԇHq(sR93ہ1/]c夎hG`!,A~}ͭu~]4jiFF)(*#mSh߶VDQm%2m4-@GæM",aF&,(&|:V!`٨Tw.rvR#&UjZ-h-JFڛ,EXթG9ݽ%$#(91jjЀ38_F3PZ1fR fu_x+AX-<bDcRHFw09HaYDX#(W vE*kl5Z7mwvWyuMɭW%Ef̪뛶:Ȳ݌6ZM%LMo;y*pR$0J5lHE5&YW+][˫EsOϿ/G}# ok#&pW"Aa+a@?b!TCdO>#*f%_Ow;Hfg[-%>9 zZ.6k31#&p쳻WK 'Pv퉎{#* Cno#&n#&?L^ؿZAgExI$ Wc1g`@#&2ﰳWұcUӋ—X&,z`iNf$&L`I<UxrP8.= vMjqvk#(%'"0#(J!#^ݭ1h$qƆH$ ah!&"ԫM"e;Bd44S)`Xfi憛vSfZM3Z2i5$AvHf^$l,rF kޱi⑳Ή%C0!N솃/D̈́@l\TYD̬Ů^v#&]#( ۉ&QZHuo RdZ#(֩˓XWPJ#(SڐYrxByIV`Lm6&>4ĈzC>xKRNE<)YpG 1#*-%J)tĮ˱*1Xfj* :'#1Ł 5!&Hcn!C8)K;EF wEX@ʤ#&Pc$A4#P;'AkP0b[AQKC0M.Vwb1#&#&NZAߑgEhQ!#&RF\JCPU2ũ-Ji,0HBE#*P\@">! MVPd]y@a.ԤQg?xu5 B$P'kmUd' #M<Y=**I#&Yk y$wmKe#(C3+EНM+*K|k#&0aۈ/%*g.d‡9C2heM*<7щ&Ǹ'ʋ#*vago~.BHEk-}oofˆY[$&'T`}zZ@si6mSJo1H,HU$D$!f`^jRP.Ê0Hl!T/FS|d#&bDu;)UQ /yֽᏴdgAD}vꈹI"=OYv ?#*!?#(JȂ ؎ӯBseZVW#(nn4M^_m"z_Jքwy@wc-h{nh#( ρIB:; #&#&D>2P_Z'I6O! '_-m65* b?vl5_]O.qʎh=jw{#&XYxIߑϼc-?d/bKчpjG92,ZNkb,_ ۊ#*^yu{*¥Đ>#& xQY]N*pAp9SCttYXrbKks sמYI[$\0\0z;Mr/ cݧJ)Ŋ}=%#&j[~DS)„CLW +#<== +#-----BEGIN PGP SIGNATURE-----\n\niQIcBAABCgAGBQJX+p6MAAoJEEm0xnwFJ3qqfPEP/AlS1gEGD5E+ICQY59HmgObQ\n7ow1FhLcxSTufrm1AIbHSzzSUXTDXKhpmU+Em4tRQUQOvLjb/5GMRQiFfMZzscgD\ngANKCTU+ziONmJVCpcrkfPCfuXwsSo/feD83sltxQzZeINqBMuty53j0UuDvEzFe\nGG3n23m15P8mDT+aW2/AdwL36M70ikabQp33TteNzfZA1dbjqTeqIMiFpRgqy85t\nQ/K1ZnfI8m9DTwFxPO+UQXzY5mo3kW5unCipP7uzbQcEEP9xnJOIFDnumLJocsWt\n+PyXNn5qf4QfvxiAyc1pkMCKv/Ln2xr9Jn0n1xKO1kQRw+o+Ia2+yoNMXpwOLKe1\nbyGB/KM9G0O2xF5Ouk6yf3y7SGGy5i4HH5Yx8cDTpMYl8o5OFL1azgZl8RFf5nnY\nd0tGvCc7LHdYSTuRk+K79MW6HK+Ysu9v95MyiBH385/bbKDpLtbnVPPFyAUtvTEE\nUs5nGkTv3RtqU/R9HUe+i88P7HQDlEL8miE9FCD3BCs397h9gSlyW+lmH3lv6dCb\nSEMz+UxxoUKOGtdTqXCgQRMvrnkS6iOd9p6adc4a5BkNbkTtlIi+0tIRhr9AdyYb\njQF7YXgx72B3OLGtuECMPBoE/LoJHgxDcJ224Wt5sZVfg9rnY3taYBZDhxR0sc9U\neSaImCJESAGBu3Ym9vvB\n=LPS3\n-----END PGP SIGNATURE-----\n diff --git a/wscript b/wscript new file mode 100644 index 0000000..e1f8a98 --- /dev/null +++ b/wscript @@ -0,0 +1,34 @@ +# +# RTEMS Project Documentation +# + +from sys import path +from os.path import abspath +path.append(abspath('common')) + +import waf as docs_waf + +build_all = ['c_user', + 'posix_users', + 'shell', + 'user', + 'eclipse', + 'bsp_howto', + 'cpu_supplement', + 'filesystem', + 'develenv'] + +building = build_all + +def options(opt): + docs_waf.cmd_options(opt) + +def configure(conf): + for b in building: + conf.recurse(b) + + conf.env['BUILD_FROM_TOP'] = 'yes' + +def build(ctx): + for b in building: + ctx.recurse(b) -- cgit v1.2.3