From 7bb7028a9aafcfd5c6570f4ad5ca472f19691bfc Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Wed, 11 Dec 2019 23:40:24 +0100 Subject: [PATCH] web site update + updated automation for the generated LDDL web site + minor improvements --- helm/www/lambdadelta/Makefile | 57 ++++++++-- helm/www/lambdadelta/bin/index/index.ml | 117 ++++++++++++++++---- helm/www/lambdadelta/images/bronze-03B4.png | Bin 0 -> 45625 bytes helm/www/lambdadelta/web/home/home.ldw.xml | 9 +- helm/www/lambdadelta/xslt/ld_web_root.xsl | 9 ++ helm/www/lambdadelta/xslt/lddl_root.xsl | 2 +- 6 files changed, 157 insertions(+), 37 deletions(-) create mode 100644 helm/www/lambdadelta/images/bronze-03B4.png diff --git a/helm/www/lambdadelta/Makefile b/helm/www/lambdadelta/Makefile index 51ecbd1a5..df4a4b519 100644 --- a/helm/www/lambdadelta/Makefile +++ b/helm/www/lambdadelta/Makefile @@ -1,3 +1,4 @@ +SHELL := $(shell which bash) H=@ TAGS = www up-html up-css up-images up-download \ @@ -17,6 +18,7 @@ XMLDIR = xml SRCDIR = web/home LDDLDIR = web/lddl XHTBLDIR = bin/xhtbl +INDEXDIR = bin/index HTMLDIR = html/lddl JEDDIR = $(HOME)/mps/jed BIBDIR = $(HOME)/texmf/bibtex/bib @@ -32,6 +34,9 @@ RXMLDIR = $(RHOMEDIR)/xml RDOWNDIR = $(RHOMEDIR)/download RSTATICDIR = /projects/helm/public_html/lambda-delta/static +DLHTMLSTAMP = $(ETCDIR)/lddl_html.stamp +DLHTMLIXSTAMP = $(ETCDIR)/lddl_html_ix.stamp + SLS = helena.sl automath.sl BIB = lambdadelta.bib CONTRIB = lambdadelta_2.tar.gz @@ -52,6 +57,7 @@ MATITA = matita/root matita/grundlagen_2.ma XMLLINT = xmllint --noout XSLT = xsltproc XHTBL = $(XHTBLDIR)/xhtbl.native +INDEX = $(INDEXDIR)/index.native XHTBLOPTS = @@ -94,7 +100,6 @@ ifeq ($(MAKECMDGOALS), www) endif all: - @echo $(HTMLS) www: $(HTMLS) $(TBLS) $(XHTBL) @@ -121,13 +126,45 @@ test-html: html: $(ETCDIR)/make_html.sh @echo " MAKE */*.ld" - $(H). $< +# $(H). $< + $(H)$(INDEX) -i $(LDDLDIR) -o $(HTMLDIR) . + +test: $(DLHTMLIXSTAMP) + +$(DLHTMLSTAMP): + $(H)for LDW in `find $(LDDLDIR) -name *.ldw.xml`; do \ + TMP=$${LDW/web/html};HTML=$${TMP/ldw.xml/html}; \ + echo " XSLT $$LDW"; \ + mkdir -p $${HTML%/*}; \ + $(XSLT) $(XSLT_OUT) $$HTML $(XSLT_XSL) $(XSLTDIR)/ld_web.xsl $(XSLT_IN) $$LDW; \ + done + $(H)touch $@ + $(H)touch $(DLHTMLIXSTAMP) + +$(DLHTMLIXSTAMP): + $(H)for LDW in `find $(LDDLDIR) -name index.ldw.xml`; do \ + TMP=$${LDW/web/html};HTML=$${TMP/ldw.xml/html}; \ + echo " XSLT $$LDW"; \ + mkdir -p $${HTML%/*}; \ + $(XSLT) $(XSLT_OUT) $$HTML $(XSLT_XSL) $(XSLTDIR)/ld_web.xsl $(XSLT_IN) $$LDW; \ + done + $(H)touch $@ + +install-html: $(ETCDIR)/html_lddl.tar.bz2 + +$(ETCDIR)/html_lddl.tar.bz2: + @echo " INSTALL html" + $(H)tar -cjf $@ $(HTMLDIR) + $(H)scp $@ $(RHOMEDIR)/$(ETCDIR) + $(H)ssh $(REMOTE) "cd $(RDIR) && tar -xjf $@" + +install-html-ix: $(ETCDIR)/html_lddl_ix.tar.bz2 -install-html $(DOWNDIR)/static_lddl.tar.bz2: $(ETCDIR)/exclude.txt $(ETCDIR)/make_html.sh +$(ETCDIR)/html_lddl_ix.tar.bz2: @echo " INSTALL html" - $(H)tar -cjf $(DOWNDIR)/static_lddl.tar.bz2 -C static -X $< lddl - $(H)scp $(DOWNDIR)/static_lddl.tar.bz2 $(RDOWNDIR) - $(H)ssh $(REMOTE) "cd $(RSTATICDIR) && tar -xjf ../../lambdadelta/download/static_lddl.tar.bz2 +# $(H)tar -cjf $@ `find $(HTMLDIR) -name index.html` + $(H)scp $@ $(RHOMEDIR)/$(ETCDIR) + $(H)ssh $(REMOTE) "cd $(RDIR) && tar -xjf $@" install-jed: $(SLS:%=$(JEDDIR)/%) @echo " INSTALL $(SLS)" @@ -180,9 +217,9 @@ up-download: %.ld: @echo " XSLT $@" - $(H)mkdir -p $(LDDLDIR)/$(@D) - $(H)$(XSLT) --novalid $(XSLT_OUT) $(LDDLDIR)/$@.ldw.xml $(XSLT_XSL) $(XSLTDIR)/lddl.xsl $(XSLT_IN) $(XMLDIR)/$@.xml - $(H)mkdir -p $(HTMLDIR)/$(@D) - $(H)$(XSLT) $(XSLT_OUT) $(HTMLDIR)/$@.html $(XSLT_XSL) $(XSLTDIR)/ld_web.xsl $(XSLT_IN) $(LDDLDIR)/$@.ldw.xml +# $(H)mkdir -p $(LDDLDIR)/$(@D) +# $(H)$(XSLT) --novalid $(XSLT_OUT) $(LDDLDIR)/$@.ldw.xml $(XSLT_XSL) $(XSLTDIR)/lddl.xsl $(XSLT_IN) $(XMLDIR)/$@.xml +# $(H)mkdir -p $(HTMLDIR)/$(@D) +# $(H)$(XSLT) $(XSLT_OUT) $(HTMLDIR)/$@.html $(XSLT_XSL) $(XSLTDIR)/ld_web.xsl $(XSLT_IN) $(LDDLDIR)/$@.ldw.xml .PHONY: $(TAGS) diff --git a/helm/www/lambdadelta/bin/index/index.ml b/helm/www/lambdadelta/bin/index/index.ml index c7fd48d90..c22e290ac 100644 --- a/helm/www/lambdadelta/bin/index/index.ml +++ b/helm/www/lambdadelta/bin/index/index.ml @@ -2,48 +2,119 @@ module KF = Filename module KP = Printf module KU = Unix -let out_entry dname och dirs name = - let fname = KF.concat dname name in - let stats = KU.lstat fname in +type status = { +(* base directory *) + bd: string; +(* input prefix *) + ip: string; +(* output prefix *) + op: string; +(* current path *) + cp: string list +} + +let initial_status = { + bd = ""; ip = ""; op = ""; + cp = []; +} + +let imp_st = ref initial_status + +let i_ext = ".ld.ldw.xml" +let o_ext = ".ld.html" + +let concats l = + List.fold_left KF.concat "" l + +let concat st dname = {st with + ip = KF.concat st.ip dname; op = KF.concat st.op dname; +} + +let normalize dname = + if dname = KF.current_dir_name then "" else dname + +let mk_rlink s_to s_body = + KP.sprintf "%s" s_to s_body + +let out_entry st dname och dirs name = + let iname = concats [st.bd; st.ip; dname; name] in + let stats = KU.lstat iname in match stats.KU.st_kind with - | KU.S_REG -> - KP.fprintf och " %s\n" fname name; + | KU.S_REG when KF.check_suffix name i_ext -> + let base = KF.chop_suffix name i_ext in + let oname = concats [st.bd; st.op; dname; base^o_ext] in + KP.fprintf och " 🗏 %s.ld\n" oname base; dirs - | KU.S_DIR -> name :: dirs - | _ -> dirs + | KU.S_DIR -> + let oname = concats [st.bd; st.op; dname; name] in + KP.fprintf och " 🗁 %s/\n" oname name; + name :: dirs + | _ -> + dirs + +let mk_path st och = + let path = String.concat "/" (List.rev st.cp) in + KP.fprintf och " Contents of %s/\n" path -let list_dir dname och = - let dir = Sys.readdir dname in +let list_dir st dname och = + let iname = concats [st.bd; st.ip; dname] in + let dir = Sys.readdir iname in Array.sort String.compare dir; - Array.fold_left (out_entry dname och) [] dir + Array.fold_left (out_entry st dname och) [] dir -let out_index dname och = +let out_index st dname och = KP.fprintf och "\n\n"; - KP.fprintf och "\n"; KP.fprintf och " \n"; KP.fprintf och " Index\n"; - KP.fprintf och " \n"; - + KP.fprintf och " \n"; + mk_path st och; KP.fprintf och " \n"; KP.fprintf och " \n"; - let dirs = list_dir dname och in + let dirs = list_dir st dname och in KP.fprintf och " \n"; - KP.fprintf och "
\n"; + KP.fprintf och "
\n"; KP.fprintf och "
\n"; dirs -let rec out_dir dname = - let och = open_out (KF.concat dname "index.ldw.xml") in - let dirs = out_index dname och in +let rec out_dir st dname = + let s_to, s_body = + if dname = "" + then concats [st.bd; st.op], "ld:" + else concats [st.bd; st.op; dname], dname + in + let st = {st with cp = mk_rlink s_to s_body :: st.cp} in + let oname = concats [st.bd; st.ip; dname; "index.ldw.xml"] in + let och = open_out oname in + let dirs = out_index st dname och in close_out och; - let map name = out_dir (KF.concat dname name) in - List.iter map dirs + let map st = out_dir (concat st dname) in + List.iter (map st) dirs + +let help_b = " Set this base directory" +let help_i = " Set this input prefix" +let help_o = " Set this output prefix" +let help = "Usage: index [ -bio | ]*" + +let set_b bd = + imp_st := {!imp_st with bd = normalize bd} + +let set_i ip = + imp_st := {!imp_st with ip = normalize ip} + +let set_o op = + imp_st := {!imp_st with op = normalize op} -let help = "Usage: index [ ]*" +let process dname = + out_dir !imp_st (normalize dname) let main = Arg.parse [ - ] out_dir help + "-b", Arg.String set_b, help_b; + "-i", Arg.String set_i, help_i; + "-o", Arg.String set_o, help_o; + ] process help diff --git a/helm/www/lambdadelta/images/bronze-03B4.png b/helm/www/lambdadelta/images/bronze-03B4.png new file mode 100644 index 0000000000000000000000000000000000000000..d65392f095c4f0cd434dfb640805ee6d0db1cf78 GIT binary patch literal 45625 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 z z8MDBx90QXl{_Q&&)`Kc-MUrs;u$O2oBAK%~U+aPwGa5pR#!Er7ES4*N^vEs(Et%up za!_#a!h$9T0%yiNbjH-clwuF1&SnKa?Gm5+7jWsO7AFMk5Z{~pIwSl~dpP?WmoBb? zYy&i26WmCema9OU7&JvWb&lR;(d{wwY=%o5sJ z8Y2654nUJyK!o(;+7FUe`+EI3V0Zi=>s8W`3kYjiXiEwI2uMwhN}#HA1;n1U!>wFy zDf{(JaxU-o)5SGV4DFYa;~4f5IEz_4huLHADoDkaegN@n}QUt?&>5MgKzf^b$Tf;}V>@xE>Exse&{R}wbmHc`wadTWD8)6}~= z^?gE(0zn9LF|>4av{KUGvhuBQ z0q#|HTKKW8XF$tnAJ!*{I{kkNFobIO}zHq&y4p z#>qRGg(YJN2Hat(sTUV_A<(L-NSwXB?v?*0MJ=dcaCCHhd?Z=EacWQ~T150rP$NL!YjF?B>-MKG_<`oHA#qFX%RLcumNOUVd^5ok%Ojga?x4>7MltCM21f@7!=Aqf23@NWR592AI=Kd3DGU zx{j)<@!aw^l{JsYLg{5V+@%G6d_4K}3y&b>* zUR3n``*)d3=DL-v(b3TxB$Morkj2>olj-Wab&k+`X&vC$Sw3;Jw<4*-xUoG^RFumIZEM@# z_p3b|UX1>#Qg&w6vp0GcsA^7y$#~P|W>|n1?eF%|X5%ZHjSVOxqe7v0@?0={U;vmL zgO)wkVr0z=pK&?ZBRXG>(%OVP%o8tiO8mMEHq550O@W}5e@+5T-%4VzLfcO8v$oYW z%RoMk-!e(Go>;SY)zmOG``g zGU|UOCjR_^zxwIt{^6j_f8LJmQH-L<<5-v{lmx3=FDZWHPmwiuocPPgMxKUJ62uBH zG{^FvLjV3fJRArx^pP$n_F0Q}no+sNX3g{U__|$}hdNFacV!0zW$Pn!=rF%=lc0Rw z_Vz>qQE^g9v%kf!wWk3`or$4A2k)TXd#QXp0$Vc<9}aeDX<1sfa)BX|VsLo}oD=Hu z+E?+RY-(j?C#PUBm)i#~fdkr#SZs3d#DGd8+IGt*crK3-?Y?LB#&i>nFw~YjVzv`G z=j==a@)kWkuP`+>HZ~i}Q)}pOD(V!dMZ|`%N}IJ+3x#WjwoQ8XxNGYJCxet;Pxn~d zD8r|33(vnA`n=KgJnmIXbxUe-w33kp7A#3@C~jSyr-zVm;|DU0kB=X>`Y_0k*{(ts z=pGfe1;J}$@u6K^SEuD=$yk%Z<1*LVY64Hrk;0vo6F+Ez6&2mxU8-(nObp1ip*wM` z7lc&ovKc$Pw7MGMwKo<#pVEd!>TeMDy#i(-8QWJ|z6XwuEFP`0jIg|t%J^y4!1HO; z&D_73H*eV4BNU+&Jd}Lgd>icT2Xn;q_AZ-S_cySmkef_Vknf^D>YU0Hpy?~Ogxu(2|S%g%1M9-UZmRB0*hOY9=G|Nc!*j;KT91Z*>Ofc>+osyuFceK0@2<~h`< z%Ba4q_G<|g`u!tCt0iJ%F%X7qx65M#PHzm-fOyQz(#qZ6c`8IZHTm-$FgvqG?Xw** zax^2md{1D@=^MgVtLb+KZyHvj#1mVUgwaNs0Tv^)5AkESH|yX_Bk|( zgP2jqU+7v!0z$=a(&%z^vQ1OK>xUMBPN4E+It8MmC&J)>aRF`bx1+nb)HcvGPaNvO5-y~_Bz@DtLH1M!?+kgJ-c!NT~u11YrH|B3}$05Jv&}i4GV3%1-ZCC6Q zz8$BnOYIl5p`o}%+7TmEoEOA3p}pndgH;^H4PkrwdVl_qQ#y)J0@_z@so zzQKROQ|rx8g_}+B(EFRl#nlL8QI>uMC)Wz*(dC*eEcjMp;wzhaUGvqZnt*BT$0gUn zuVrQPCYt2TN(yaNvzqDDHV8iI&wODz0t9ZY!5zo$cgT~C(@hFW(n^!T7|;I}bjB2z zYr0T)npwa->N)_LhjKpM48HNZLA2~;IKofj^;b!Up6Zk-~dz!Cl3G1`Bb zte4)}4kg(gro%xTQo5@97Z#x*ay;4odzH@RA}-iC(VtAJwok-jluUjse^t}3VBXy> zDR**yMoVq)by2S^gg;6oDQWisJqqIVLN3VV&5d>~ArC9d-$(GJx|X+PU-1gAJ?cTf-YwUX zJ-?Wf5heb*sQ-5Q58yytG3yW@De4dfHi zK`Qh4=DPfFV3|lr0Q>_Ao^%zC>qE55Pb@Hlbx&|+3L#k2%NoY>q`ZkT|E%|i zg#`U7zIamZuU~RGAXpMo^&n7X~eG(H?GRJJo6v40;7K51X>xdfM*YiwjXnjdF7!ed< zDi;%pfJy*1dL&!>iEDIiCCVm88*wXFh)z(s|d`oaj%EpGj|GWtD zuW@`l3MEsrmLMH+6iH>iz7@PmW?oTrTR-PNtrM zmP-JN-s(6VbE-CNesdM*vJ|rZQWb||_Ixjmmy3Us9hA;uv-D)ioRC(jRSvbobi3>t zx~9l^c{A{Yl8;6J@+~h0rChqyE3K1cI=*35T8{QvIHQkxhi7{BAOAbFD(4^YvjrBEI{sz!teqfGaX?Ueh z$)&`u{=eZbR8_GDoD6=LOJL%lrL`*h;l1bR#KV1wa_^Wfn<^|K4c-)Hy8hiuMdl#V zX~C=jY%77f2lE+=xtb}W>nJO`RE_qDBpka#3HUAc5FOXk z#x6$fnf9F+Dt-{TUhS9xD@#REry2ftdM4_6Z+ojEy=^EcuC8ckKv!2jt!7$!#=}t3 z^8m`WYxY_nYC zPELJjc$rjjxuBSQd1n=>AQ(4WopLQaPC?Vkw6(RhX=_dLV7iOZO<++~7}dEwrIwRAh6%HM3=pD;KGWC1PLj>UDw#f@pe(d1WnYU*}6chaEk z)E;7l)Ub$RvY{ z07Jnc-1)3)rgVmh)=K9c;3uLGu8Zm-a%1XFRAvJrB_OJv*ogAFy2{GNG=d?4kmI5( z{-!Wof>d+AaJ-W)rPc-eXYXKl5d>vrm)^U(v~;a4F`uF{1n}jUA?ac+);)GWR^Uv7 z9@wEBqufbBVPiMv3@X>>Gchz#2Sl#2vKb=;?hHg-6A`4wBn~e8YF0cUq5G!Fb+Vyz0Se2Ri@72*MBRci5nZqL`BZd zJ|~xjhC_@^p5v9dx)5jw)?v*mzE#w z6Em^_KMM;R(>OUeSi7wtFnKs8$Kq1THIwnUa&m4i#Io*~Q}0+t{dYjX?w(fmGL4fU z5oBLdI0;LmdEo`ncuO9weU2H}vF1l>U$mZdl!OHDsEIH7twg1nc$|)^rBPC}ANMic zH@#PV5!wHUMHi1xOb;VT;pZ#)qhAM&)#mq&uo`laasy&w z(Q7~YdO@^(4*u2J%v8BuMiTq%+uQ%P|Mcnl`cpKxtPGH$Jh~U9F&Nm|Qf9!NH+%-V zCF;b1`fcT0UoV?|w>P$1OtFdp(H%H(1yw&YS#9b&%31?;OXp#q+DD*B4 zVV21_weha?|G@*Rlf-?*UG4Uaq1`V`117B=NY896rUe%2_IraR;L4`qv&D4T)hPkK z1O%-X{J10Z6<+I|G=g4c_TTHDHp7eUe0S1aI^1uV!E&C~s)v(qdzEDOh7Z zCT4Rqt0hc&@vh{o!)8f&gfZI6oy^tne<-NZoL3ec}>OtiDFLl7~C|pgaN333)hjXD7bpi5| znrW#?2i#O!Yp5to8AYyPvikWsxeyS@@K5qmCcP?u9Id=cIa>SnrxE&a>Ss_+}Z4w6x)cBIA%ob+(-mP?p1PMK_!vBS3E&zyhW;Ountk zB%lAHB*A;xW)6)(qM!_ZOskaa^0$09i?ufc3EhF6U7PopiCUq6z5oNxz5M-Y!(5D` zKck1}BV*dU3pv0QL@`DZbiA@@>z?D0Ly28DGMOF`pe=8K!o%FL~ zf6LFWo7#DHJ$@f_GKgGUD;g+N%fN1OHGlEKfGUx;eGiaN=CvR55MH&*F+d(>mkV#t zvfmi`N*W!xeSdR**p7_liP5jL>Zk>d#)WA_^viPNQ3NZ-$@QVTJp}zLDDE7N!?gTb zkIsn6H&85sRDtS}Wia|GiqR*~$H$gkhm#!Fuf5_P2jjLiA)(gfJJjJAh(20fHim9* z0Rfd_aDfQjVS7uK6?>ZdOTloPgvI@-L_y`j_JkpAS~oDDbH`>}!3=)R&R$+#$(40@ zQB4Yz;m_JUAG3u=FNLD^(#+-D!m_p(L-R5;6|B|LQj>qUxvt;6$N1&^ch6{6oIr}2 zuG<46_00}2p0q*(kftofNmpamA30eTPdLKtxye11V}&HWLg#`2`e8PsVSn7wf>d!JonKN@GieWou_0KIA@{S?#`cUfSa>YLv_@XsYEV<-zof_eoPb~12VrRCCCjc#j%`)UG@eeO}!~} z9Lol+MMzCUQN2_%e~!*ovcwTfON(RG1n3-9u*@CL7{sd`2_x!;eYw?;qA&ztA5fWS>nQ%2ot>s|u(-SFa%X(8geC{u!Owfv6isTos$(eot{@%-HIRXw z{T&*bl`X}?Z}^~hnZWy83>G&gS(pTJY(v%5cC$nwgno=ZxZQo8O-ro-Nx)i`BTe%Z-N3Bb z*~ozlp?cIFd^4vdQ{&Bp@MW?1dV7bIzrS*-g2)$>J_m30s#)uon=zHHutre`oOYiH z9^XbpT%Gdp7-1)}s-`=*2W1a44CKeg{(G0(eViX{7+aQ*5JdnxE9_^y*)#9On%Ejv z+CCMdll{8?Nl7km>3%iNIR}Us@l~y!vV@(}aVjz*)cw7Z`N%ai9%G|I8X`iamL8KJ zetkWl!r{jZZ$hKeyzEktu$@h&Rkf!UTE&ihdFtd_ z``kF5Z}Icfnh5QpR@XN8O|MUkqM&f_o!?R*bSrM@t;uCvh}WgyR8Lj&W*5QMsO};0 zC4(Zvw%zY#`SVhzs?tiffW68BRcYyF8??O%7Z~bfIE^n!en!1Ng;a2H)YeuB^9heB z6{52K{CEC!fQmh&sQ0HxWH?2IO_Z3C$l0$jeJ5Z|1?G;|&P>NezdWM^8X!vc>9K|~ zzZV1EE~+z9DyQ??jGbNM&;6y){dA9h9a6nIia(xw+k1O+b2vEuqy{4CMbCjagHt=u&lR*(jPjocSSrO%E@isW8{f32;HiyXwvwj^4~eZ6g0hRv9Vc)1=!ii+`(hM| zK&na%Ypf<%p5-x8Q_~y=JPO|!7I(Q_M2fjG(#x2~?6*CCs#Je>H6D6*8h8k=jfyI_ zwe$5A7ZDLxB}>yE77|ZR;WLe0Z-FpO{D(6^fj#B0IY-(*{h%*ieBr0<=*XPpT=>Oq zd8==pM5pIM@ZD+Se68(cCTeEt5$or5!Mml6i&9=O+YNJK&N0t+-8%R z_!?EC3mPTIew2kqO{klMD@~7u*!MY}kcVn4+Qd`dB^Ns~&6@Vt2P8{zvrBHW?l3>uW7ljP z-PK_M`E$MRT0z~Ph(rArq+Du#ovXd36sW4OrZv(f6X#OWRCIYxX6@sn7{1_A?*i}Y zIuz*ebN;+Q{3>$%EsOLPo;qP16A%;L-m$4=16g%$uKgC5_M2KicYn$3;t7V<(w!b~ zEN)aiUnCR?Wv1Cb$Q%-3ydGv^v;O6LPmbzS>p`0n( zD1;tld_{s7GwmYgt4kk~PA=rQkWz zSc3c4eEFN+BWFN$Q*n}XFY*;Eg0icnAGx$0*AA!h$B%W!2;Kpj5_SFv$BzVJze_ou z#8#T%YqBN*#GCYtn2A%2u=fYQ&Y#LNN56YVL?2U8gw|{$Xvixo3nEgrv<$iX z%2wTRol@=m?`(i|#^f|9&l&Eq6ucz`$*E%pJ%7nceRhMoNMs4hS$ab8+#C-guPg{rUR3rKLfPrF_~&JPZ6d9((Tr2Q%;?d&wV=dv9sQ!| zPu(kS8XC|Uwf|VR)F)jo9799g{A0tcz=ey8H#s`8fRR?D!8&Ck!+|CR5U+p>b3Oy6 zrMtOVIJA#L6A>^ZmqRvZxpr(rw{MoEa4|ZM(+38>fqsGIw2Y0_)O^LY`r4i0Ln)%7 zC*VhdLS29JeSF2me0){!&2(z4dfWW7FTJDyB<`{}lr&Pt?Y3FTdW$|hyy^d-&gDHT zCP8Vs4UHb_)}0;RX(DJuGIrJHSyEX|8MBX*R|9_NkMRq4%gfl_5tL>X#=@x zfA2CrrM-CnLf=>Cx6&^t)Z5k7(^E@pmG;lNHIOB>+7QH){P^+xnRsK}6o7u7-Xt=G zUOPm;M_n(pl7&VzcYbJ;%$aL6_sgGl6r&>~p!9mctj;MY!Y|*v0U*hIjjYvnMv@p5hT329@>1$;2;w^4cT}aO8XB$gr2@WAc6M#;>gqPp`guY^i%AfSS~j$ zt`%r{qEn=zqr-1;NiU)n{(#krFKV+F8D1~!^#AceENTE4PQ{vn7yr!f-`m?M21B?+ zAD8}oJjj*pPZWO4C!Y4i*!}s`Jd3DUdv0)}f`#+QR+1CZ@!!ZbnARviu>}U!=&om8 z>y<5wO;WD?8>-+APTtrO#pJ!_`#WGYJ9m@|u|Ci*D^J_Tq}txLcZ%Cz>g_EogrqVL zaKS>I_j~X*Yr{&#=xx`&SH^4f@Nn1G2{c=;^~LdD=iNWgG7s3fbU&n%Hu#&EBb*`8 z6Fb2BcH*Fsb@=ANrCGmzQkgo9;Nmj+SyIN`@?F;XuR#0Rh%f@C<+TbjH3b|eBO`x* zeM*CAWqT3l-caaAHd_-C(SpHODy8YYsh!E4Jo000iC{;eo2 zb9DZXxcp`D+n$}BoujWUMG}Ot-S6s(cK-k}*-ob&_U${Ir3@;kkTs4k_ga*RU z&1r6`tY9ShXRWx$E!)M$4f_jo^Xg~O^3DtI%*VmQz-kRFXYbynzq%Te7HD;zfNl>h z&6sr8qNM35)z&}0Zc8MbDzuNI*IIRd@nVDn_F=BPno&aG&qOCL0klm~nq=f5`IgGb z{)K^FRI?hm;}y_umX{TXI!{U2*$Mx3I?g0B3%}~bSzAj28iaq)LA#vqW4VM+mV^`G}y11>FMd;zbBsL=<#o4Iq-3swsBiX^c|GuFr&O|L>Pc}DCfIgulh)T0_ zgHCdMfzYkN8Qxf37*+h~dVb5L$#R;TB`1LoMvfKZysYTP{5p{3UK|y!~g!R;@5W*oYccIPadWqB17%lncw`oLHPPE`LV|A{z9*8_;K_* z|La$qVf`v~>y1BG=xtPO9FW<+6fShe2)5md1iHcgOkB~)`{Dz zk)L;WH_=4(4JSgf10r>f6lx#XNK+-M$byO3nn~~ri;4=LczcVAdV4?F@#4jAsr_2G zPO8!R!_9(4POL9Nk9p~V7V7IWgi~e3W1U;un)v{n4g1vk`sS!>`}7|Xppg?kY&4u+ z4Mk9?yax1A!ZOd6g|OZjV56yJv0AA zG^J~3B2uF8^lC|$PyDxA%Hbm_Jg8&%Pmuzh;x#<#+3QhORsN=B9&`Uyyma!&&N}af zS)=lBF#C)Dz^4wBPsu7{;uOu*)B1ORAp`_lC>xQj^*6dF+iW#Qm6cDUU}DG7 z>6k%PB_L2$CFc4DNTqkJB6Q2ygtCN%0M1MaB17ZxeO!;8xc0d8r@Z`nHD?Y)apZa*<}6d?EGTik_@KGgqmCOL9jbIJG(MbTToPZdKmUP+h$lC z=+h#EG~%5CYVyo&GpWMy5ztr9YlTF*}NPVi+le&wT9lMC3qEIMIM@)v7{|`|C%OK!T&e&Qh6b16RGFqw_tG z0*19)YfJi|+b)JyJUcny@_I}HyfUKg6mI9~Dee-q4gtVpx;ps$;nc#oo;p^?@bQ|M zvCRg7fJxxN?G<)6B1Bx|4?sZG**}@uEH69Ci3V;M4i0$!@S)Eek1BG%D) z+13%lW?iH=#ZBfPrv`^oEwTYJLkE(g>~)W7T<{rWo5+0Jw8f5^HOk$NWkhr9RS?|nb7ID)2r5cWvQs`e7hnO*=hBh zmIe}^aI$w3#B11Va#mvc@{-K zFrkD?DE_;?7N#eFc#Aan7IKJ5sw3XEzE`_F|t(4 zBsA*C`<6d9+PYXU*n)wuiq$7bVV=pgwfCa?dpK4P^Y!9lQBe{Hn20H4ud+Q5tfC5U zVPGb~jlu}OzP9-7IK3y(vb|HR_8K^FXFBOkEyKb0$ouPSe1g{2V}@hX;~aPTYxHZZ zYj6{ZtW>Pd-_W%s0a)|nGxinwVoB&d zG`Y@w97-}o-kl_53Xeq@T%8H1kCLHpRooFO+P>|NS18_Q1i7Mc1Fg4mo%I>h5EC$+kU z#w)yNRTT{MJcRKQfR~h&(Yai1tG-QIZpI6mX_1O9Xt_3kar4qsmy{Dkr4R1b4vS=J z+gm9WgqKbn_(%Z+p^(tYNo}1!Z1uduFqA@+>P&aP-#vyUHC`=FxjK<8HP7Gn=AuQ4 zrCOXEKe`#QpJ8X1BV3uPY_RAt{I4D$1Fn52D3q0ri~wYxmn^nKvX_TxRo1MSAQ~W@ z5{Ncihlk2a1_qyU^YU`Wqy&5DEgd9glQ7aZbT8A*wkXJgVh#0?Fk(=&}f zfkKCekTI|wgj@_fsHZad)g7Q5HZVD56un;R`larRE*>a78;N{A zf0&=YVhL?&VUQ+bv{vMYaD`aV@(P$YdrUwd)7>56w1;dA8JI~fpkDTtVs%|s!$KBi z+U5TJp~n4D`}ENxb=Dv67>LSKkmBUjQDB`x4mtq{*l#<(IQL(D94Gk+P>%!!ppJ%$ ziq9oA?v4y~Kx)+5(2|*Tp=h$|_d0oC^+WM=W=002b0hh46WUKzph)FBz&66GwK?eQ z%1~1)E549^cw}VEM}oh39iqAzax+`Abe~&4h>)Msh_#Eyt0^h@At;W_4WxFrv6Ie` zl?@J_z`7>HPOTfa8U#qYbpN3=&{N@sLASk1AoVr;r4f#XO{h*qL1APBd8GVt|H|Uu zmyMrErqNlr8O-P{Erw^yHSgydnWTDRo(r{j+S>=sBSM$a(~~W%GF!!~R-MD_9YOM) zh;7wvgKaxBsF5-m)V}2fj1n0~(*L9nZtN;5c7Y_5z1dG-=uaejOsu8BE+Z%?M(O1K z$yw0@%6{D(0hF=9olW>vI-&<(rRqYAHEZk4gU>zlj2jQ@@?;-|N(DB%qZt?1Ljl`b zVzkoQT6h>7copwnsV`{;MuYewj`h5|;8Bo;BR&28zO}HNSOLW08H*b|w5n&VdGP%% zA~<*iblJ^xcU~>+Lt^T;(iPR)YeL2&Fh17s4(#Y;M5H2-Rl_VPo+fEp4)AyHZO}44 zB#1$pm<4}#&H;cVFg-is?f^$po-JwsL5z*MyS{dt1uTQ=R+rOFD73sPV7GK?!BsCC z9%kEM(YbDI0C1$Al+3DUT3t*ZNXZ#Ho92bcNEdN)Gs`*~8%cT@F88y5iqbWM!Aa)3 z1bfqT?7RTSt+7p8z&hBBRQb6IBz#71-gH$9i;2m}Jy$&IB0#{Fe*YT6uWuxi%yEVj z@v^e?_<%i>+0CtSqktMccPIcNeHzn*0)~qWd2GWons~7+_(;%KNL8xBuf4~ZhHlZ* zudVBCftp4EGZSN{deZhQ_P=pCrR=@JslUF}E(RicsSNaiB@w9oE1otBI$pL=Rn;Qi zTh^WN1%l;+5%LwcqlA^yn*F2dwv*e_R$os#51{srNILhb#hO9o8K#jc8P(lt8xv|9 zV4=4(b3dQ;(HT_diYLA-XN#3#WbXnHNM0^JHmQJQW!;YJ-8&S(2~(Ns>FOE|Xhena zo<>ieersoO&ktJ#lePLX$&EN~LkONd3LhL)uozAS^6>>37>r`XEuf`PI ztLQO(!nU;w+pjCTot)hTWu}mAg3<(8;RPX!PTgW&JJ>_8B|QrC@Zo?eOdvJ!nhLXerG|M ztMwa%xG3Nn2}(%P5NT<4eJ>$R$AoU$)Mo-NFw@;KGBG|r9$+|-7b-;`U%#@90nkJyI?~CSJqbW`NlXKFPBthgKo5YUjU5?)254I}@+_G2%;l9`xyf-;H#?|SuU*_qkj1;Gz#)v0d-~EX?s23uU~(P z#IuXmH;7RaVj8|#%FoY#Y9{t6ZO3wrE)$n|`1?~<5(WBb3D^6(h6aG1MTFjG*vVZ2 zWp{S$qW}YP*z)fk6mZpmi0IOaQSba=BsKm#f>}C1>eW&sUW+OAEv>DM=;5s@^?fVj z*2jJ&BfuBWHt5qD{Ygdj3Zac_;V6auul@HfOQT>VLwZa^WB>DcxI_KJGJ%98 z!c*8I>({TO!!rfIcmQNNkmG(0H}hSnY^*W^2yO^>hhd(5k-Y;AJw4qT zd<7y|&?Lb#Y`fMIwUo$&*r%tBWeihc4a}tAd95Za3?Fe|H>ysF8Q$^)uvK8jEwmbm z{MB3CMKIBw`Z4+~H*et+RJZId25K4MXuF$Xpa@Y!HxmMT56XU7anW@mv3LIa@%86k zcL8bF8=q7-wt^vQBMq34dOhRaLR4te44`L@t7)j5yu7qDh@#gpAHdjeq>-6=j;hMl zy5yXAGm9(7c=#-~?e0!a3Iuho;YG2tuX5o9I=c6fq?h<-i~^Mselw=O+xq%5bSY@l z^s`cnrakDIW9&OeV+i-2*%Cn96a;N-h@v}x?Ri+{{7vgP+b(czQ#_mZl=c-9b)UOF z+34-v*_puPHKT&{YnklJ+}+lI%S#;)i`UoNyeKJCfc?1Dx(A?wHh=N?qa2_B9Y;H# z1!LQHJ9;)TBsPSHl;*mbkeUjtsRs}_Cuu1>YOm>u*O73L>eeRei)63zPN$N1rk zQzFVhy7SeKH>j!`|C9(x8_fuzP#i9`*Cq4h9M!e!QQHP0f(~EpN8<= z0n=R=5mynY^Yc@n-c(RP;5zaH{A9ll(XQ%sd9>KBq2Ziwt%41Kk2rVNCXgMhS@l2N zCHjSG`rywE0rzih{&NnHoro7Vb5nHS(orK&dm9;k^v`KT^%Ezkb-^OWnW>7SwR)Cc z^E>D9*qa4rX+NjEmF~xnc@0@TEIl0^16l^ZlcvQAlMO&aJF%opAN(YVeI!n#_|oU& zFf)BbMUT0O z4adQ}mw?&K;9Fs;mJGPZwAwzwaKvov0r?z{994w$Vkl4zpUAlJ94#eRYpol?UIxAX$eeX-5&TlMf7!zNZ$LUW`m&rw=4BcJ|+ zM>v|f&$zj34Xs9huYTaTXXuc(uCW!aPEAGK?CqvIFrT1GdJ0#aF|K#okwwK1Zt3&q zLaXO;$C%fm*Z#`A4=jaB;v;txo{ST>HvQqQ%g~b~tzgG)Y`KsJqRfIkhN8b6*WRVF zasj}R=HIX;i9>Bv8$uhxOuU=1u~|0w*MD^D7}^WEX?%{^zC6A;lwLrs{Con;M_dAc>vFWDvnA9 z*%QI1LFeU-ivbhL6AU-CK#kwXc%m1^_!#Dp^w}Rmtae}=0Sr^m^xU3D^8&HV4;wX? z!%vU7-Ag4}(OBkw4sHY-_d=mF zAzjkl{Tx2u-!p%@mTT$UnKS3S_uj8Pj0&@c8~8Im%PEciDlF{u%$ob=OtjoXK)zsp zl#6Y^;5iRW_@-K;RISE+lD6H~(9q$xp@9%vG;%^ling$`iKcurCL;?A4-d!L5JO<6 zNXOCm*d;jD8(HXTm?O`Zp=oN;(A?Zikh885P^ZkDUtC-@Yo|4=Oa)b-b`o{`|73%i zE|oEH;`aHc?-nPol&$8Mm;Vmot6iQ$mSzqx02P7UQx<(p(ViLRf$)L&ZsLdy12X&- ztva+SR)JXLxEnYmF8{7}L#`IiK(ylYCEfoScUK+OdkHj|`+Df6PX-YOL<9Y4ySq)_dd%#$M!)Snb2o{i(904h}hEGbvR3 zL*JZ}uaLsL+Flt7V7bAOf64yYAZyU;#4xV(rXdz;ON65pP6|ENmQ=k3lSc_|qpY zE<8Npd&&TQd3C2Xi^&cQ^2dp2p_3PNiWASj$ekwps4wR}Ijy+4?g$b(1&N2u@Z$rW zd}WH7dXkr5h(o_D;|vANsI&mNL0ySjLcFo@vFz&;UG=wN(wsz8SD($cPS#`G*_4&f zJ#zm2yE|HL`q}z0t)+0`s+PT`3it5(f$WZrxrhB-^+m2o%jzZA6cH1Z`oAvFkcSrw z+%tH3Y-;)tfIHj(P2RaxRU*sDm>o;EZFRo3b9%+OQ9jrcpm59s!-wAZFv8)w)abA& z$CDnQK!RH^ip>2?1>ig%e=41+ksbs94?ANl1by~7D}0&S4v?W}YpaPXEIXL3Dratk zdl+H}4?jDNkDDHfT^PdWha=F_*3C$l17ABNaS&jL_PyV)A@}Nt3$XbM9JIP*6WfI| z@7Y9a%@jQEj#*hum;;q7VstcOmYQjtS)CqoUKL%Ya~G=Mby-v8G(Wfc zBZbH}9NorSgsBk~#zC{QL~*5TIk@{CW`c6ZI? zO!IN)WLVOLh3P`J*TQ9_r^`2Kn=8CFeIL#C)O^ymIi#j?wy6n@k_rXjA$-B{Dk83~ zM!6uMr&edBDS;@wWL!PZgl~!y`G$AE;(08T0zEx_iR$Rc(w=5vn98HYScxDfTbcLC zFtxAQl{E7VbyG=~k3jfBBOPT_E|*_|V<$1#)PA|4y~G2YQ#Mn~Uy#WY^QsJ_Buo7WB+ zMDlXvS!!@F(Ii@?C0Rpb`@I!noKB3c zuGv?4U|-1_v~!5XyALjUld>!u6y}IdNJq#s8*Sf<+9Kb+#HmX^=-)_{=4OAseYl8@ zzRH?Zf{ek*B|(nd$T;+6z}_zf2k4cmo3a8X2>2B{ifDg3kPi>ZUPqwS939!(Mr%iN zO-4~!+DVg&TsB9Dm=Ncbl2-3gzbz=Nq8hSeZcBNIxAm^aKF~hMo>t7__3&l5gUF5> zTd8+BW#)BWP1eQpdYZmd<;yVPG{-_b6gjzdy;$oV1X=|=(=Q^@34 zq=J8Ec)0POAR0(>?!!qH+M2p!xwuKpI#pEF87U}%{+}udDo`7R{>1ZMDTO+g`wKpt zr@Ml{c0cL0mMR~RWa8c?{tGG_O-w(q!(!5Q>qI>JXTb?2!=c<0Sv!&z>AzXJ%5XOw zC(Fssj=|1kc_d2SxBYSXu-<*2x$|q2_;ti5|L@3O3Kg>r|5a*?nEt~Je^o;08uN!V ze=;wgkzN}2-}H1{U8iV93cQwmXAN5D5CP2hPnvVTf8gN>n2Wn)BrC!}t)&-gEz0FW zKhm+r7)VSS(Dz8IOSOLp^gp{O3cSu1(H<~>MxCDygKUmz1JpS^#rPJBGI)@>k(QN} z6#xVTE|ZB%?fLzACsS=r=b!Es>Uv`jU6)dP?&{m+1Z}&6Cm$eN3|XND+6KaXqs2O2m)M$jT*D0a^$p0kpRW#?lWa#lJF&+jp|Fm%M1#7tl#JilpK z`ctB!LNpm7)~TO|iJUL4iR}N+s6JITX2LBraU+rGHGY*FNM6p3%-BNTX2k=phmJ+N zn~-uHl(f9qvNud3yzPRCOZHI}j{AYdC&oI7MPbZY)NlEbd!9=1=E&DfOZ5eGWHZZ< z+0UMf|L?-WG)TV@x)O%a#w})i;55i_pyS{W1X%G>?r3bc<+WW1a!`_!A=fF zx=~KjKRi~kRU{1@nVA?qbB+x0TBa;DN!bP*ttQ&^e*wAzm;+f#qak&o0tiL!#E6he ze_9F_Hn%M+VI&ezh}PGAgxMt^e|>&_ZWT%lc#+_-H8!I=-=1kcUpJ%s-iiM4j=>qY z9PK^(NeOf{bmh-emlqtzK^Qdiy2m7mNdwDUcY)<|Y}30_Tc^U%7p7fMZC3+sGtXNq7@fSz0DeScDPxAhW57|9^)dunmfC?0D$>sTfEI;(O9Bua&1Db%uM@280N z3C^_abX@Q69xxRH2OCmqkE=!Nd17J>jKR7(jRTI9^ILOw3_i?8pvWybP3A~Uy8kf^ z;iG0{vmz^!f|&m-btt|zXkB`?SGk*vr!d1rxb`V4E33xGbXvEC<~u3v{;IwlnC^FW zIzLCl1m11Ov!AN09UAam$zQs{2!NJ}z^AhV!Q=4f9qYM}7s-Ld7UsXQwJe;&Df;bR zz2&!nPdVfcvSHkW_>9R6dK$k`WFz=rS!WHvF~K2F`m7We2cd?CbA1PN5T}I%-+FS_H$%L}S>2_FyJ#G>=T4 z*5tkRqAq>x3qMK6If|G{D5GWvZ+AmCZ%@N3?26Z+u3{x$=j8Je#+uK6mpsEZwqs?c z%Tjrw3$wDCzT+*VdkAW>hR|=Bv{f2Q(2S*EqP4L^1`8H$-vyw5x->iq2n)k!q-R!p zgc+32W}nnH3MHfao71~L4*cA8-6#FRIK7{_3aI$}f~h$sI_aFR7OhB1I4uNbLMj+E z^F_>|C}g5{sw4P>u0qQL(EhWPK*A)B7vGbIr(9X*MmbUB^XGmPfas9vyUdDxR1)&& zO;nlbv+I|sw?rp+g~BG z+)8V3SyehNMDt=QGWaVTso{)iTXe?j80${?DL%15Qsmy73Ed%~OI|fqZ0sE4MZvOB z;)j9AmBMrRJ$b$X%TJI0QVCf8wFN5D6Grsbv#U_>Lx;IoSp{C-^^VZWoLj{dmT6qN zZd@e)>&@|DWsT@NcdBvUn{F&#|3QVr9*LslH;B}=6<5ZV{#K~DhWz=}6mZ5NDFC8r zEVe3aZM~}t1}5&qe7oSyM!AkxxFrEadHs^5)&3Ek1HY7{;l~g+IcT*@SJI!w#o5`p z!9+ZWS}l_CILnZCDQfrf;LtC&FSx)m2FzyTuDsmVVP5|G;x#zSPYqT2VhBsVzVmgr z9{l9`!U86_uCgQopvb zv9a7enlV>oy{;YxE0v{=IPHwY4OyeSwPC=IWcHMtTIOS=DyDRLlhp~z4E z&J;`5vwGFM$gFN(HDS(96geTUkTUv;<$5igrL{Icn2F;2rh!9=JMM#1_VL|OrT|e2 z!nKre)7e-!OO!4>dd}|d?g1$=6~9|$LI1%&;#sS`qm`Bu`wAX*bMcD$&ykYOtusab z%JCFX)J_5rl~|}V%O@s++Lq^#jqB;Z_PHnl7>!2fFBB^-cU~mi`U_#5xEx$_2JNG! ztlLhI+}sgWP4$`IIB&`SXVsGK7Q}Hd|dE zAz_TKruFKo8yjHPFioEUHX zaFoJyUomt~RV3GaiZQrz0sG5SR?*U&3{R zy~7@1n;#nGpk-zAAy46%jTQDuD>NL6)f}tyQE%B=7q?x`NMD=~JqJ%|yVpM99${o; z3w%QSD?AfZ946g;yJT4bbt0&B-8W}wR8$68f#WbfRfy50s}eRjRw=BU43ZKx2xP;v zQErR(?!fh#=w>Y1u%FQXhTy)THyDg98V-i=sj9|j+SbtcEY1yS(m;v$@{v#Hkl|4N z9edCL!x(NR&d9CO%GdYqr`IR{{^d|jxD)J&8vRfd<2GUo!l97SEsB58ynlXqz>8(; zwGQ-{(v@PKv>%ESZ1A_c>Y3gy%R=QvgWtAqu~Lp?bSl00{SXIFf(HW!Oi7%w*R1@l zw1@iGzM21C3}<0}TQvt2I!gfyeJwNvuecP8W|;IbGco)cR%FDAX=yrYL-esq2~^}f zw%)PI2a1Au%50_R$Fb21kE#i!3RlAb^6-NP7*i1;r(nmJSXZ z`Q4Dc<71*1;lD$@$cvBmoZy9iK;!}qPxY=xRMW!s+gQ16*rJROzr0b#R1|n*@pV6H z1&SV%Rut*p!6qc=0V?FwEG5<7=Qib}qa!2Z+um{zs+RA{`+IT@2M!5B9d^p4+epTu z&=a1AolGc{Ne{w_t-#|2MgxGqQu^i{eKJo)7R96TlC+k&>a+E3u+aSb_K3{RJs_YA z??onDY4#Q&=b&Sf$?gk4n8KVpr_hMDUiR33FZ}WG1@Ghkz$7fH!M!NYmeN{$*;@Yz zr7~_8gO%$IvZ!u%3@K4jHT;PLbzNU?Yo>}7v^T^fRHr>w9FA{Bzd~6*0@u0OM4-wH zY+j!E&q+Q$bfoZJ$Mya{LBnQn`pS^qf)vvNsVO{84&J9#M-}@z*!3w(IhpV`QO3w0 zjg6n(RcQlIwF+jIt<&9snDzem{2C43#$#P^bnp3*kf6*>K=-cpoM}! z8|RuV68N@ncbgY7!NBI7!y>%Ox;5+kzVszD|!tV;yyI-{KL%$3Q#e*M`z!8(|=UlGYO4JN|K!6jfG z8DdY}Bv*b>rCcgI+GGnx>2&f~MK>7Z+Hb-KV3arl2OY}0Pd~juC9Kc>Hco(2nYTGv zpcW>FRlWYLOJ3F*IX;Pi05Eap4zj;3j|YzETW;ic6gfzLv>Cee1jF57i77zHIdTaB z6O*%lo0}G#)rAg3kPH}8VtHXBIPqC(+Xk?0KgJ|tY5LFh28|;9VzqxjBQ{nh!#vku zKS6a9E*F0SGHX|db=>6!uo_nv2ex{yi#ZZ$+xbF!vdgijvgU?VfZN;DWa@*ASAank zBbtjtK-`aNZi>=Rz*UoC+OEzvlgw}9Ugu1q6o6&li}&Y`rluDIRV;MH;YG;Y^5kGi zilx|5d%L5VBgdndq7<*TlG3wy94N4H6{*ca@X+R0)WR-Q?zA|mfkn}%NF|?)5aWR; zR53lhYEY51J??9YaP{=y3)mhjFmx>&KW%MP&G8E04QIWpm1VOPX*fB!n(ya=Rk+3! zehT;-c0P>_4Gk#Lmhbo@j&k%{&{YNm?Ct`8c{nrJP@g)GMHYUA)ChOKfijNeNHfEI zO|r5xW8tYPUOh8=j}`BKT{=hmM`9|6IMJ6jFldt6oU+Qi8$`P=cFOM%!)HyBbex|t zTkh_fnxP2uqj)&nlw)-WwTu^G;8;w`u;tof0u#^f3n^ZUd3R%74~*g#JNv_wJ*n=H z-bNI2>FrLt`aq~Di6o{9%}}$*x{6$c8N-^KXb`(XIKf$y-U&o}T$SuCjm(VYj;4hKJZW;&5p>s^I4Cqb39SnT_ro^vJfck(nVU&PdIAukw~?5_WQu9G-l zmCYp-HEzIgU@PYR1WmA~OZf`h6)^rdt;Nzn!OpW^)Yp7uGe7;yubq=Pk=p)nqYlSZ zPXB88>9rY5V%Si; zWHV{wUs&05qt2^xcpMTrr|`u1(?Lam(EJY`7-D|QY>k_lsNVau`MH4N2aF@;B*lvryJVTzPu4OYcYe#5Wf-Uth30nz zEVwixAq$dGrCQ&PNIFLHq2>~#2dtrrzpw=Q&b*CT3Xh^cUxwA0^jt>5ZkUKKp;9JmjcZXrixT0dTwJUn!FSG{B(bR>|^bkbhH zY)nu1q#O&tD^bpi8mGc@A1tw?sAS1(Sp!RLuXkucUP<`rlCo%{r92;byIqG*DU?5!MCnS^mT#xdQ0LDvX{YZEi2Q1b` z=xu{v=2M!r!l&OlY?J-6C%r7yWyPWCOnwV~En@$&ety{+9UcS5L#_L$_1?lg$gpVW zvjFo=d|80R_~(vy$xyoK5_qtA9Yoaik$bF}|ft@nib!!{zh9P2AY&oc@8 z*3H(K&6NK${lCLqacODs(BO*@8R>WL92`tjl`a4A9w5-dvCz*El3m{P^@lPyTdj88 zd)*)h?_lX7OwAOPjgBzVE4D>PG(aeb%&Pa+3!w-Bl%~c0B4_-IdnJleR{6vmbRahV z&YuQ#;sO&_PYrjx=k9d4q{Pvop%;Z26GFFUYrNlaGT5g*xH(5 zGid(5kuWr#NUpO1kkrZ;438$DH|G-oh-fE{PyhgvD~L-a#0~nOeSb4IKVezG!jff3 zi-qWt<5#gK%fNXPB3yYO%f$vZvM;Rau=>juOjx~XZr!R3#I2c7nT_U+#i!->c>s8@ zCZ#a12UyNFduYP>d+ty|z+NjNVh^%1#^2<}E4K<%DvuR^04l5W`%v;{ zr}p!WHx3PRV-f3Rgk(hi{VFB_^SK*ylX-bt|4q7jKXN0&IhDY!~70jy#5N_ zN0YDL3I%Y-;|6(tJcKTp)hWh44T^OoC7K{}6PBu_mgNSvLuV62a>?Vp&Dn+|?gf`H z>8a7?j-Zz}cgxXa2Yb{Wk2itH&CNHD5XwCmX{GRs3uKI`KYyl1&c%zNJytImQxaBU zL+31mYevH=#JJ^ibK?p!vxYZPV$%ZeyYL-~e>$5F?9n&?TJWsWL=81Jo3wUa!lz`U z&stiaJv=^tK6a&lg%Q#{aftha@mvHPF?`zR4_tV-dOce{$lhHZ%sHMKJH^W=DSiBC zny+mV8Fd@_z++p`zkY`Ou!4NlGPy8fJxKL!7{i~QdA3sZ&E_JWcC zvuVnnkXYPS$pLHD6pD_JNKaXW$Zm!zBu`|#_X9$&Y2LHUmVLNuNW_BmHF#49C5Zrb zCZyYdU80U!DH7`rOe=uMo0HqKUN+A=^MTkuGNM6S*H$ZaaV&r)o>k@3r_0XuRx&6m zDeRa6n+Ci=$+%#>qZtq*cmDt}$Bq&_)16p1UK~6xDpNihd#BqGqG~+twVOUkjG5WN za&V*_7K+nkEzQb$8@w|GRJrQmmAx0h1UQ!$fV+vz`8HmzsB~nkPQz`AGWK@us`;qA zjEV6Lh!8%De1EuLeo#~!Q|jvJd3dO)dE8ze>{kpRqHuIaypYX(wupQ2r;q(#1`pZ) zJ#NpxY z*OsnVvl{deRW;&S8ADBxJftCCwLhoRh5*mMp*I!v=$!}zs#sVP zMJyd?XdPqG(OPdp0$`I96WA{AL%&$o8u0GhY**~NHh9eQqn72Rt0!-oKvI&i27_*E(t3vcLi!eq}{=b*UH=&Aw ze5!@KXA~q!)%F4^eo&vsvw0h>wzTa;t>;YE+S{CO`mlD5UTr%YgshXYgx_Yq4b#Sr z;(tkrlN}4c^1j^(4$jUtSI2dGGjT~1NwpHO-a~^rykU?ycz?_eWx+yC$qoo_#F8N4 zP+v{4%rGC5y15Ip_Sk*~Xj`}5T2kfoh6`WoA1?oDgwB1R9s4sSV`k~JnSvQ1Q!{57 zIpx=5pT>9t({a`2BS>9)F#rC&Alczxk#zB7oS6!}>bxwGa*+|d_}I%F!OoQpW8T+9 z`8>mSw0EM)D(Fb*Hha@g=wl*WkzipdsKwNW97~!U)KshK7Zrx1$ zA=8)^fEiIw$JP})sQK*h@o3ae9ORih3q2;QUNw}&R=bkoeX6a=Ryg^)+isd^B|8EB9*_+o zN2!dUK!T6?^F70+-gfpl(iY3v8SmA7`_s&fy2k8cdg+mq&x*Dl3ztejkZCcMuGczA zW224^BBCU9%;FfAM}(HH>DR%ZZgHN&)m_mMtmM41f$r`|;?iNji9Hfh;Y3a|kb}w6 z0H8Uir`ziZL)FmLGZ?qP6fE2)p^q~iAae`iz*OD_;Is=<&CgyVkwb2kkML%RWvLp` z&=YH#h3fy?T;iUB$B;){TBlNo7eiL!Q;>=%_$tHPC`m%9?NQ%Y@>$xF6P?_J0s@y= z=3;$xDpLDNWRhNa#nwdV#DPAdfA1Y!PK$D^>&cLKm5|2yk;>-dZ1M~V3Iuo7D(0N^ z#n(x#G7F33m`ZaIJB2jbt1>F?Ln@cv9Zv7+zls<#ZBh1dy+R6*audi;!A zgdZ#nw>k*}!SfilBISvL=)j+`GYmf_p#OT;si=q;oxH#=wwF%V{S44Ymlmh{yblXy zQ1l3VLhdcVtl72MJ-ss8+v-p8z$+CFu1{+%MM^8HcJlJ_QGbYiUlt91%+H2H#y~^A zd60^(Zub(JgZl?z`+_cu<_QQ~0IhShG@9Dk!LFAav6KCdV=c_5ianBL=G9S6TU*cl_s>~`5M`Tt?gkhKmZ4z3xtt)V3 z=_m<$F71$cYL1Uz#i*&fyEAX6WZNfi(6I)iV>0cct;upj{0b<90u4M(mpSB>elOzRYha4j@iqOyi>`+@(N}W;uH*As(UN;e! zN7?SJC;KO3VXQQV?rxj<<#y}TL1R$JkdUwtKcG5lp1^S#eg#ZQ-a>unMMVx~`4J+< zGja+udn(EeLl}Ra3AG!s0|FQgQ6DsXo;qN{V{7Mr|IRr|GRKkeIzF-g*CL@PrKTn- zs=Gwc)-g0(Ld0*1G}Rd(nLtmO&97~JP-M*`n-cn61iL3^`sw>y*292jbJ*58``>y& z=azmM3SP2_K!Dfb#z#B7&@~KuAFsscU~E3HMg6%tulOBL(ih7$=k=i3B}H?uG{hu{ zCcAu345cUqomq4;tnpOq<38a-;c#04ru=-gmc8m+}zb;fA|ngR~H=8 z_kFu=gSss!b4P2)y6tU+12$X5H)HAE-af)gW(C7sLh`jnQaU=eEE50=^~^K$qI3dH z2!m5N%aip|l6E<7|A01?$o&Q@7!$J+)U-JN<|EU2h+G&&3nbLI4#vK(nHin$weWei z%KVrkGNBov>nux@Ok0~}u|SN80l}3x#w)z47sm(ndUm3D!HD6QT^k1M3(fVdi#ul<%229JC*p@9AFoIX23@$%Yr>Er%Ai+89sw#i*hCQZF}P9L7_FQg3A z2Ql>N)zu9PT@9+S>L){_M0T%BqzN^%VyzAMzaGi9*tR4W6)C+nNo)|Z zDG%U*8NHZUc3n=e)Z})u)XGYe z4+J|&{PM3uJ0OJIN9@8%NsNXct}A@SFywkz3L7$H$51I8O`{0uOsD6}60VY;gK6 zYV#IZsXl?82tXp`&71`!N)xfI>G)#X_Qzu9xwXy08pKJ)fBWEfde>`1VCwd(M<8Q$ zbwVlU{5&mf---%Ef4GSOmNrCqWbnidNK6&Jt>t5eN{+N+7!^O-p=mB3D{K<@%V2McI%5QUC;AdQj>%5`xP(~HD~p@YIb~h z7-Q)`K+eTaEH)CHD}p;j&cv^KXHP@2#@hu1^ElB&f2kebhBp*ESPv0d=(1l=-oMDfXgeC{6>9)db<-v77zP4I<*s&MNDr769tu509uw4hlKR zk4>%o`d_jj=g8Z3GJn^y%?53c?VAiN zMQjX+AW25a)y)QG&>wg7KQSFtFM0F9MSNzqt!w zU$E~7n-*Jg*WJiy&sHDb+AP4!`KQ71vax}=&29AikaSL1SatOP(Z`%`-ijl&-;B^W z-t6}`vCWoOJ*|_sA9n%B9bm{^><*+E|0W=>x3$@|mp6OHnquzigF1r!5OUors#oB| z-*_JkOnwI)yqyi5yj=}&kjO7}jff^4-j5f0EX}3Wu?opCMCLQ)xO7xZEHzC1RB#Te zAIrO(=%4*-BAldST>m0EdR~W)An~)q;o(jQt~J3H7D~TsLL0p87+?z~!sh?I`{(SR zi3zs%!I!<6q$DZYcH{5K%ATg5m(h;kS6hGqPh&$&5)hc&j5i+d{w##PQ-#0-uPee` zt8UWp=GywpWi*O zj?(Dbb+F{csIAT1@7WLMLkx0q-Q8BLpNy~h>{f&D@GzvDeg)%9ypgV?P@QwH;duT> z9bZ{_>pi(0&goL!$q%F%HOua8PY|!b)x5ZR4Bm+2&cQeVH!+u%2E8JA zg2&)9)v3z(0G6C?8#5{6HTUda*VjD=F_UwX-2s{!ZY48&E}jA;JjJvUc<&kpv7T?> z^Xt~AX7(Nye-o9n7^t{is4~*m_W#4<$)A%yo%E5&$q5u4S>+bN&Oyi>P9LrSR@cTf zF?A;gLxK+t>Y!!HpT@8}Bb?z_&dexDV<;>e>g^3=pNmlN%p{`n%>mDf5f#CK$;3?hX3pb~I@R%!8n` zje`p}s=zLo0Uad_QF-wwbPNnMG)yTe(jnQ9!QU-@d|CsHVk5t*jDT#qy^YGU;1J$z zP_yV5J+tTFF2E@9F%K8JPJQ%56GOzlat;D`I$eOL1C1|^ zJsWSdc*E`CpgnjMy%1VDpX+X&W`6#Ldr?-6FMG$V!}deduD~@^{0RtrUgr7(9c(JY zk;-t;p`qg9v^2Yhf`VpGV+de`3=9GH$vCdJF0e6IT5Gx1_n&R&Rv*QbMv$~NEoAt5@WCMLbTF7F?w%}vD-PD)D@`F(~H z`TmWP} z3rspslbO)lTd2klGw@z;b7uTPoOwb~S7BW*h zI5M^8%-_5S_6R&SvT`OISOERYP8EU( zq#<{*va(Nl zc~UIH=J>3M${Kjs3LZjZUj_MU?O1LSeB#6;JzwvSAEl)&c1kKP&-3z6(cXfUcJ#WJ zMXeMCiQJPB<}nv*Xg-DN<`H2kt1+ z#9FUfNoU7&q(>`+P5}cQWItQ)4hQ49yCE*kYN@ee&wh`c3x~#_OGCKmb({oOXaJpM^ z)VOt)si1pKX*U$WYfQx7cKMU^J^%YmFC5aYb$foD^6fJ@+SE})rD?ykv1f|N{rmo91p>`U8XG<>vVA(xaI;x67W4r&M+>{05Uk7!I6lH;Nk3chtfM0(>9o!wd^ zPM#)yJ!#pQKi8e6-Zzbo%E>)E5X-5kfM^&+%m?FY)+-2y@o{0s#Ds|7xCP+84#wVl zk^On2yLCEzcFKqkz)ukoALeU*dqbc-1SzMq?9IOafygkm>-DAGasFH zl-r-;G6i%VM1sOnU>@)v2=6AwpJPU>%n*7+g~7hnrB-WeYHG;x?eugR6BF@h6e*oN z8rncb^j?SR^-5rp?q?-Yr-zHp&679AP@V<^zlA^n0hiLMs(N*w3~+eRD4W<+0={-L ziUO0p)_?rFial?sSv6IuzJ0d@n2z=vxsC9+pc$$BZ#crxL1T6aNv7a#4{vE{-csXc zq_s%H9(O!EfN39(^gcLPT&%)@TlE?l5V~ItLanJu;1U4eL!XdH;a4w_=xCwO6g_kE z6?g$IJW^)|2Zz&8I#ntadv3ogm1z)4ov4@?uPR4f7kP^!{?)4G`GnI+5lsxv3cI^$ zuZ1!|!NMtGzAOlsh~6ZoKuE$?^5tl+D)r*S4e!>_lcbIpr*dR#y_Ax&O$k^w0ohy2P1mP>otBO{exx(0}z?`LH(r zC$+9&Tzbe}Hz(9MEjfE|4EG4PVn+<^RMFD*c_jYPxD0^EdALE3rL0_jDNafl2N9LM zf$;OQcFTtX_d$)l=x7jTMI@}U zHE^J>|KU*)`d{}Kwbb*?Hx&N zd`1>u_D}G5M{yY$pwJi3JA>X8o4KNPX;0N?EEh|H;$7AM?{_<~R|^SeqX>*~sxlft*RgqQ0pN@Q|HIdM4aM`SO(pvohoCe8sb zU(TW_M0mtvCo+C!XD?RHH4v)Q|K>aeV&4%F_xJl&haCE@O*jAcfXwn6FwS(ne-_Zu zAO?N>RG6$q!E5Be4h$haC#d@bp~GN&XY}!>W_$*r4x#Nio8P)|yOH)4_$uMzwlGsX zj*S?brSq;jfu=Ltwz&lXPRMgyD`T{;POT)(E=z}3D<~x zEyGjtzx+4|Q@wjfHN&F8NJQlF9=C^@y2^}sm31Opygy2!+)l5yu!)}~dd|lP&pcef zw`r*4B*-c?x1-Ue><*vkKL(KYw! z*30HRD`GJ^Gp55sVL!>x9qH1A7wkmmG< zqGp>Yg=4{Bp+rWKd)e(15)g{;jvx#HLtH0f_Af2lBF&>uZ{Yuj4Y?+Lz2uC{)+31{cu)}B&PL12LA}#6;XXQ~AS?8$jh!mo%(Q3%g6ugp)Bf}rLk$rZ z*U^djz7DEtUcIzl`2W<$@b6!gdS(550)4*v1T9Y-{lav&LsIyeH*swLQYIV<3FL`K zLC5kQLHVvxl~Xui8ZPf#5DyWU*nI_~Ec$;DH&g;OwZ50r9bfSsl)uuen-#mKzncW# zY;S!kV<9%A^ux_05@IAIfs9C!@bEIVkZ%1CAly?{Cif9MFvO<2)f(4f_Nq?*qa!q; z&+7l$`}sMtPoFi#iT_60L!>r{ffN(kK5xY+TUTZ8HhV+|s^4z9_}>d==zjxDCQQ=Z z9ZG($hFl}JWObLv*?vpQ>T0O6%AB+}OdG>K!4Vw>mOx0XHF+DnHi1z0>gwSkK*j<9 zgtKA5fXz4v3PO^tY|5WI-hYDm_0O4qTOr-W6|%kOezr2;4^>p2P6^JbBbE;j|3gIm z{hwug%OK##WEInG)%IDK8K3lq`bmDY|k7jD$qv*2KzW`HZY03mcY_T7O(u}E5vg|`<**fDQYKy~Qjbw9P#?OkY{jfsh5 zSeVAC9v0kT$O#t1#p{g^#-2SVEOiPNaE$X6=U!_MjENCw;X&Xh9Sn`&hTt5xwZ+jj zH(fgelhpH$xnYkv9{PX-p(FuQ z{7X+I4$#0tcyyk419pgQ+ZU&~1xA=?dwV@v)ntr+R$oG|L_K>R{CMrv z0`?mvrI3-mg>sDgL3T(oGCux8PD14T|2ShpoybT?f9IQH3o0+ml@^W#}00Q8a?ZQCUiSW}6I?4WJRh8?q_j;tie{JnRgCd?8$I2v#&G@05v{*!Ia5agxX#maYkYj9Rs#U&0R1ZDBOAK_$nK{oDvYeJ z7U}=$WW+CJFlyuAl`xtsrk*c?U{y!G&7i|c`Jnx)LFke#(dZ-)lm9)SFxoVifdg{f zz=7%9bDeyv=ll1euQ9j-dtq>o2#)-)=kWwESQ^~fjv(2<1vCe-46S+D_P?+ z^PV@GKYpl{bZ1WnbrZ{3GsQ@9uyx8o{U*$7Qbr-nGb<~{c24D-;l1V&oY+0pI#PAE zO++(J9HMhDq(t`3@cwq!uI=v~@+uT^VeKgyXLhE{l~qDLJTweiK9x8)mQ8P8n2>P4 zdNpe`L5o?XQ~f|?&w$Q4VId$iHeH2|QB9OFzU2@Z!8$s!s?T9nPMMTc@MGt~!UBB3 z{-|&L3l;;=(Ik2K%ge*L+}p7+#*U*Vw) z#jVw6Ub^2S91fL2gSR~pxT5}HfDuf@esiX7qSV^kYzHoo}SyaTI-VdUEvfEB0 z3O{CqFQ%C489$#dc|x+kNvddS{tqml8Uu0RO!}g)Z}$yYYOAW6Q@3QrL$HxiycAnr zi=RtB4Xjgldm5!|^rR%YJ%W?*xw)?}Xemrdk)+1%a`3&Zc^-%X+Td)&&#J0+Vda+G zZ)EtA!-p(&@GIkkfd*8|;rm`EuJ`Ek&wxdDU>$-=|F2CNP7a|Y>+W)12%NgFK)ENV zS8;a69|ozz!$-F^7~;fdGtx7!618~6;IN|y!b8!(=eBVAycXxxdwA(N*-y@T@@@X@`oro(1t4+Yx)J8k%PQ$X1xG}CP1UA|=H`^lSZ#wPvtwLU)zr$6S9 zP~l7@Om)$TCUY+d9AKG~4uY@81k46|t&1*c7rL*N_jgB<;AG^6d ze`E6m=)z=ffx;6Rg=NPxucnHMsynkYPNXj8?W-ywT_cAB(kmXCo{icE<4}?aU^xli zk3Xf^yDs3?aCL3G$pvg1-&JM*3}Q!kFfju0OyP?aL3w;u;ua&zq-F>Mn(~ehZ^-#V zV^`O=HOgFCwh!OI(yK8nukpt5S-@^<3l$AR?E@=oRC`Rn|2zHcywQjbJfnvQCVAS8 zpL^>a9lzW$U0q@L?fIh6^gqWhJkh_g?voRG2F_J$4z>S&>?j3ymPI9Rv)Y0jc>C?w zqK8A#(Sa%z&=oss>s`cDXDGC&$4~3)_XtIJI)C%4`8j<=BtQmE8O4e6uK6ey_V-&q zR39QEvWVf}@lgPqIN1}U4vYB%GqMneH0s;*IJ|-9;P?iZZ1mhp3rpKRjLgi93J(9y zC&kT~m?HbZ9PVu|9k=A4K1w}3eUT|Z!d9GH8WZpBI?xC6;0A3IL%U{nD)_BiHRA-B zmog?KaDGO#1(zWoj7+dogsf@!06dlfxr3CsUqe+@Ma%@7j<#Q%3>^n!i4*kT-Q(q9 z%o6Ac>E(NQh4&t9*LOk`0|Ko}ExQV+gEJS(3Erup80!JgGzm!WK42si`cVxr;=FSGP5p|3(NZ+URNF; zo#1=kjCPfm7|kyz7)P|d&&+iZpnO_h&cMtxo`27Vhud)hz{KcJ4y&7D8}QimI^&L#g#4U$$bP(XfP&(4y5Y%? z;GeCsvdeICMnN&1_!DO5*9F54`D~d*`B6qX`F4c(SsX54`sL*iK5=m#d>Npx|NMEd ziqU_-y=zbPb&4Gyga=aYZ%UD-do2=4xuc=Nrti69~bMD}(v*3X3)1F|2K z&;9`47E{7%^brx<+z%cg`oXs-W5TdT;?-@pw}(7F|9u68p&G1q=n+2?^a)-=0%~RX zBLsq(ihV=64z=l0Qsuq#w1U#t0QOD8r|V-dJN7Iov2l&Q$8BO*h7F@ve)Vt3$kcj! zTZu>R+V0h*Um8IiL^pzn4xMzCxpIg5DLHqH7-B8&+MRO32Nl9bh>F>uQcjK+-wl9y z#s%Q(zZu>(kB>^j3w(G*uPH2?BD$u5&cSh4Hf@VN&~aVsyzqHaKYzF7`N8GI&!2&I zrQ^U82k160r)sQSn_XMi8$cJftZYA5m`q380-_Ni{A$J~H?;54E@dl;iJY2%sjKDc zSk?r|;*cmBZNsx7n;2}1a28)Fh&&)JD_Pjx+TkpKhzwvJ6n<%Bz zkN@hBTV3LdXM=ww0-qexUIr~*`pI7R>|R(!V#CqPMan;a_V+8bi~iWdxBd6`$Lzqs zdcy!_UdKFY?PpZIznf};Z|8O8?46U-puome9UB`*$6%FIP;F86wuijZ2ty9B#YlHA zFE7vg9!w0oicWW0EWNXtLRK;?a9vwjO9BVRpPw)QW>8(i2e2al049rgCNAzuJRR2s zYB!piPoeRj*x6HkQO^Per(5plqN$<6`|^uaW|77^ti+^A0f$Ck1g!pR5{caJ$cQ2g zIa^w4Yi-%v08C2n?a|SU2qWwTgj#H6)p7EAfB`NbRG5p3grITsi`s`TU#>jm2Qs+B zXIVEQqjp7BCP62Pk8NkyS$MKkr;!(%eaifh5YF@`*w}K+@rj?=O-#W+n=EbI_8goqee@>^;!T?iT3Yu(Jn}NMo+d zNE<_z(Rk+c{%$(IKvr@52Lw(XZw2(&M5n`<DaNO|8!B{UG7}{=lzV_Q=mI{YhY4~k-ZyapYu!V^`ep20Y30IwfPDRN8qJl| zrx6ozwoqdpLm0Azdb)Hko%}x)kOM&er(Y;5j3R<}o>V~1wLCz~iEOg)Q{CECKK9kk zXvpB>r2Q7tK*yy#%CZ;72xV_`=Vsgc^Lh(^3qhw>38M+~6G_8)BfqY{$;;2r`+N2$ zRz1x#xBM!D5N0&GGlCm9_^Q)R$k8&rI4i4!*xWx2eE86+?fgI$#7|aB^Ibl5xl~#O zo<}`SaaGmz`Z4Sz)7YymTCku0_}#9`=^zQnjiRH)#HmS|7r~6+Xjrr;Eo~tF)hqVY z+4+N9>Xgg@*sb<_V)gTlDE*E6IM};b?hxVfgyHQlyCOf_LgQs{;uovcPaUmgLS7{e z>{arHYFLzVu69I|v^-B_?4ARi02!Tw)JhoF?twjbyaa;xq(A)o$OxJ|i!rU03_JK+ z)g!DW6+!QI`TWoxWZ&aGbIC~f=bl@qb z2hR{enTQCI4ce9WxTw=iP&n#(d0DJm?E7=dA)PrBfxIK(^_oC`6O#}D)2hMY<@e&d zK1IDf7_NZ}{~-DCKEd+)GIY$=rY&~rW@d*+R~Po#-yA1p7<>~1%RB}_7v1M$N!*2n zUO0y4k>Wat=t!SseHi|J9@9GKSwAn>@n7#N)tT}HBG0-4Rn_}4jdpmL^73~9+dnor zNXTM$lMPDZ2{m?xn>I>`$4$e$4n--&N!HE?!qD6AWj?Hn_p1#(4Z7F{=lB^WIq3HH2PodtevIwd0(v{^XzQP-ds_8QR}GS}YzFCuv^ z!^r36#d-6~RxV<6L)s|)#f~z1y(-^F;2Tc1M2S zZ(rrqYWcTa+`@&St9Y=qr?_V4&~^25o*Yp$hw6uq5QR88LVmD3!$K^#FOVKu#Qr?*i5y_AWNEQ1V5fL#o zN5=p_dqPNC(%;(7tLTFxvaKL`S=NZ!{$>Xu=nL%`=PB#5Khutm^CJ#NX^UI})IV;x z1^@6QIZ2y>0*H^7jz+~FKQ1lp#K5e08G~%c{p{V&w{1B&0RMGYfT25~wRUOCxJa(7M)sD@26CbG}$Zn{4Mq}u}hq7hB7!jrRR4;A>&d29KGMNlMBONNk8Q} zXp=>seQnkj-MV-8g4~LN`fJ|$lL4oy^mNqYAi>l|+wxDV6HeL|Z+#jO+$cP{%nX^{ zPapf7`u-Q7V4K&V)AsT;V6m$Fr3>u!zx*dY-fup0=miDY7BA@`VGv%1w3qq_m)84| zQ=QMhe<#sIE|Suz1gLnfJBu<=HRb-C`O3uV^PBkN&V~4Vl*42M@uyTu8-eZ^6s0J) zNE_pP^0*`G8#N_`n?>jTsbAx*8Vez@yYV403tz|nUWe@h=f~dqicR8|pY4|2y##+x zR7pWTxOb$~~-rfm(g!uZ_jir?M z#RgfCtU3ih^X65%{=Lz*3zdk7$zfvi9#li-%VlO*fSv@$#3oW#*UapS+o{wUDqshL z*s{l>kT1JcKfXz_Pbn-ca+hmHwmChOr*f{dNRhVTkMC5uyM-lbu$ZR|w`Fp{d9z9( z3~q9u+a7O!V`E=GN=f-ch>glH`~F>+@!&--k`0{ABl{U9*{GEEYyQR; z4h8u~EU*<_X{0!G4p-`I&H52~}ctn~KhOz!| zOiy2MI(i~d8Xy5aIBi^i=Jx0SAWSja_4UHSe^Kzn4G_; zA)0dgYnjvD^Jb>KCAOH=;UB0G zF}{Q4!ks^*di&F?!%W@MWDk^h;3Sl>w{vu{0O0VWEHUBmKYl75OY+A1o3`0hUzNh} zn}wPThrj0M#1;?36A@fw3vxHxTdAq(!R!`U34%ilKDCU@Ee{KcDMB;39=-;ok*PJJ zu~~o=0=?B#SCl`NMH(t^S42;4RQ}xiS%a7KhfOtWkB?72nVMpWSRUD$W%k?4M1m9i zgp=GO*lwqZ?dsB)tXhtIDzX(r5T(5#AZ%&u`0Ht0vK_x{$?)0wtp=?yZIrr1lVlPj zS_dtP?}>S7>S88*N=mXoM8QZw_pwO%-8&xIsUAG>o5q$SX^8j*5K?v0MdBB;6b(7p zW5LSauZRt)cP%dkAv)LbsDu9e9!G#ArgM2c_K^DemIYJT2@#II*!Fre^`NV>v+v0; zS^XF>FtM<%Kz~_X&AKevf&9ZgB;2)1DaV6~0LVyL&3U^)1!Yjk#cfk79a+;$j3w3iiG}-h<8FV|g3Yv>m5X z|3B@0j#JsRCocRtIn-;JmVlM$`+mbWZ93LKUKv@ixf+y_!A6zJu_lnrrLw$qck|#o zAd*W^KHuEk&*RHPJjayuugcJmh?5xnQ_lGgyS(JQxOiABc~@BS7pdn(_rLZ4-vGsW zpN9WpZ*3T)FI>#-Z$z@&_m4X}!+rIB|6*vHH-tqjb3(k2W~_tjyG8>aE-ogJNxu%& zLm@Lq?60NJC)Mma{*&0A0@>;s_rIDKINS^>|c zia^FQIM}(;*!cIabfEp&aZ-{&5XDdxmYMVGxW<=U2e%e}5lCAwRUSFLlLpXFJ7#BQ zVfr6`g2QJPZkyikK;F@#?yj41Y0aB}&(5+wXmO!8dbmN#%caP|{n^4eE&oyTK5@Im zOqeE%S(ZzV`=Oeaz9yz>eRjX>P+cC1>7T39GcdRd#{QHs4_n0{x>9o&NnGq4anFLE zEEpQvHF^}k@KeHYrq-}crNV2tdyao^bxDR6?*_L!((1EPTeZZw}E`C6%$i4a;^lGxPK`XEDIf%)Ql$CxwUWQ;-_Q zr+@rdCuwH>Dekv_P*>v(33%6$Iaju*r_f5od-sB7`$JtiXVLvyUQSL;ZQ5>Crr&4n zD0Nbl`%3q}Z$?ECG-{-ERc|)a%I;dSXWwR|n#{m6nVTUbVeE!sn`}S@bj#6r8$G^DQ(FpEVFQIsMrv3Md-rk^{ zvIJmZ+V4xkB&`$_A4qjE7c>6Uw2)uvMinwQZ9j~6#K)PpNl7Z~1XcH#X@sagB8}x% z)4kEyZTHrVnX(P9cV<@ar?U)s+zI^|cPs-VC;f-vOksv5iDL_AAs!Ja0kyXuCbjhL zDbd*P4X^PNY%oSj+R$!vbbuPO&|M6g(hJ{Cle>5q$3mADK9GrNPV9%KqV`&lNf zYwEDJcFy(MD%Z&(0i6Xr^p3XwJ1}ggn<(z~Kl;5TamyJ=I^@r1)L>TvlLe9&n%~Ru zIj#pjL&AbvUkep_Jc~p{akF%MIew$X3)>(0{2C0I!%dhnn!fgq^W+f{QR102ybjju zq=7|E8EH%SxhqM3iaEOd>*>^ z2u$`XKOd(H?hgbT5ZsB4UA1?hM-%rPXg~?*(FFP^+E{W965a0j6i1I9Z@79=)H3dA zOFLALBD7r8ZP4L?*y35{V<56nhM_zkpe%V!SNy>d3>iXrWBsD9MU(=$xfwx{@D&@N z@rJ>=qABgMx{U6{?Lgkp+qZE?8Nu1~e6$L24^~JU?k_@U)wrA?xX~+@&nRxgqQ*MO zllB(gn-oz`^KHIL3ks3F5pb2_C2sL~ zo!NgpQ8>K7c~}+5*^b45Ka~y;X3FeG2~l;HHg%pSA5-*@|57><4Wg z_Q72c^*F4l#ccOoeRU8(t*J?4~Qe+yPZ(j=8@NQ1=-8$w8x&j z$RBk#|zKv znh`F~4Id|OOMVyooEQ6o=*Dmab(UR9rT`gppxIDf(5%Yyi`$-;_avGD>BITVxB1JW5q7BcDqbE5U_&NIa zc~QbqKf{TE&c(Pd*|t>|=*rd?m+5Q5b_LIpASPBVt_oe3f|{KtF<;2i6=C9Z8GgL% z*Ep$A4iOr!ou2yp*EA^-68`*ISO|KtJn|mD1&#Q6ST^2Ts}#?l)jqlQlmrxtM9u)m1WKqE_b(-UY|-hIzkBa{do;|{=~#UZ+eo?AuQ$I7)&|&XDYer*vYxMySdr2 zp%+W^_NfieG?C?Vu9dohcuQ`vB71`EF}~A>?V9HgT-n2FRMD}*@;9u5e_UJzQQ&s3 zL~Ml|H0lWUkrUV(9i^1A=**#KkM}B!Yildj+1|GNl5p&U+4r2|Y=6AH^GpG3GTNTw z)_S|T3KcyAF-B1-H|1?-JIiqe*DJiLLz^T|^U0N-|6%dTm>R~`ES~T6KbmJ@Rz9n- zsRsjcSy?CO-K`e8UZLz7i(ZzwL5fLkZf-UJdmu(f4j->N;Xw@X5UTYY2sp= zCKqXC4vpU3o$S5bD+af@*$C7zQbQtd?{xoU1wd!@BtU0FjSoB!V*1y@a-;iSMan9h z669ZV(nZSiFk`$sJS<*)ZXxfYF2g7KDkG+yoOFCN5Eo}c5GXIx*fS$)wMq~h2{lm{ z5Rfa|9@vggZ?%eK@Km{gjg`~bE#e_e`BWm;BYJ}OBJN5jn*F^nwJ&Fk$XyXxIk~k2 zTGJh$1q66#Y5UZ=&D@d~x@*j{K6hapu0Xz+QnIjhdvmp>vaO!5a$z2KUMe@(3qzbb zJ6JX&ttR)3&dC#GlXG*N=2yI5@sM4`Ciwa1jy{caR}UFbuh)9@Zl`H|{rDI_V9-Xd z9N+(~sli~*1I=&7#twrc5jW=s6rOd7rgb@|jumFHbi!AYqT48yESOCH@Ou+slDwI# z;n14@@BJsvivZM`y!(%Y!hQ{u2qH^XR_0w}0*(L0OosZ_mc-ESV&j1U z)AqTa80Q#7d$=n*r%G$N7)9+;KA-KXp}Wg_qN&Q%-Ch}nzA&Ft1*td|)8sV}2R@uI zq{Q8bc}0b|qXL~|?R>J;AYZ$luV?Kcn%q(a6>ioQq+($c^lC2rsq4N%8UdTBuj;C6 z&ga^xq784CzWK_tBQ0gqQu#V(mOhSoaI9Vx1`YtF>_IB+igSJUJxj)jL|FU@WM#Lu zQuFLF^NA;2y5Ue8jkM4ANXm|fFOyjL>Cur@k#M~>G{Xt1o^#h*<_0(%^?lNEV5pZC zkdQE`tiJ!IsXThvX>0^NZYhRoJ~-V6E@cG;fG_;E29hw4j0f*Dp6!MlOk`yhpA(%i zQirJ8K4pF{Ys!e@QqO|19X-!LBwQsfN=ltUZwDM?UcLlQVi5Pa!N#(a6RE+rgQFug zt*`INag(=(Fk`BXs;sUU7|BD}K-IRo8o-|{s?Fp|k^Syo#--~7f)FvOk3>*NUob1> zQCWpmt#G=Mh@A`@m3H1BJXTnr{=THNDcf_dI?8FzL-rO;RQKyd*2ed&tCKUtE$5f} zD94j@tw+CI5Qn8zyXqq__C@{1ah;kIi9E=_*+|!`+Y&f$tYla5^mi{UlKOAYzyQSU zhtnJ3irFU7v8JZ7yJMrV)zwm+9wTYrJn>&!UtDNv!vFgcUcN{VMI6wu@%-5Bm+DI-Ojt_hj)Q+g3NAPKF`8n z^78sL=KkH)%{Ws|`*wU(sB}xFCnVeT{(0am+)r3TsKF#5m!7?32db$ZoyOqgCLvl` zS0u$DMaKqs3VxO`VPS1@6(+w3>90|!ozAQwhX{;M#WMJywfN0Pg+gKt&VUgBAs?+K z!Y=*tD<(_{nuM=5qZ|O1_~dBd2We#&-L5zG*a2g1(-rs!qcz2T8~*rNLVBl=0}()s*}X~#xigfedEX5WIC$5l?C)%EZtBdp_^xP`qQjohMi}TsnY^d*B?}@LF zGBVb15@A8CBSMGsbb?xyUpWqQvvo3xZOzPV>T2xYSQ8TJi%d7@7w~a#J5s(^w_s%C zn80E;l11D&HYZEn?mI(F2^9PJ1R&?iCMFwY*(^*J62)iMx}&FlqF4$~2KuXrZgH{T z!xg8!sX23LacOCJ`I9aHKz{o4d4f2GOenn&LC9D->7?to@8+R~$xDuf_n$k?=hu={ z!b|uhQd5vqA-E>W{Qx2Vf8*of1g|pb&5h{Ce(~g{8%3w4uB?RN>swqcs=kzdd-B&QopeWz%~d_2Iw-kVSmAo?J!t=~Zu#Jnd%mhFw7FUr{lUv?bd-W3 zC-l0wiF*YoX+2l6HsR#j`Nqb9iz0C5guj@I>^%8+Wx2Q&esF1EjXqqcsfT`a0 zPPnd}GkIEV?!a9ak_gaYZgQ!|@PC0zOJ?c>pxMA1e*^C1iuz+=JMQqs(h^IeP1i|TT3DK(*nW~OFJ0{qR$HlN3yjh}-z68Bz|y*$0J zslS@{PP0=fanzL9U7nBX@?SOEo6?#X)KCHfK|v7_QylpWxFbLYkIb&wp3F$eSb5l) zCj%3UDQ%Du066a9$;pYt;!3=$&D>`hpyT!8#hcuiRs#gM?Wj&|zU;Mwc=FCAf$#p( zQt8eViN3yIvuTC5FBldqli;$@o#gBfdp9v$l3AeU`(=Z7-VMmZUzd|~TS?I9_$yE@ zNsHl*CUCOM_;e^K*0HYLXFk5PRC_N6(0Mb+6ylKB`5}J+`pS%&40VD~={tvi(DqyW z8Q~JRp!a^{6hF0plmWBb@;IW%`jbn`q671_&HNsnrB>e%dswTENx zrLK>RBfBySxU!;F-3@qpNAPfjgF`_o#mV$*3v6Qr^y2<><@!P;C{h?No}&j|YG^2u zK9!1Jef>>zOn|?(&YNUiI0jB!8Cm8aXGp%IG=uz0={kcWgo$L zIq|}q??a&zPFa?M;_2?nt2i%6T4~Wk2wfhl7L1scSHmUfVDt0tL)1 z1tn{x6fxA%EiHwLLtx&hR#N6z7fTWH3cQ^{B~f{JECx+=o8|@nJ|kx!siDs-unL$E$WQ93r>uaQJ1Rr6y_Z{t-& z*^xxvYds%QRznUe(~>D-vnx-7%=(OPJO%IKaDQB~aimH^8^sUDM4-LAAZ!IWqT=z{ z-;km8`mYind}Hhq$(IxtS6052M&Y=h`U#bIX3fSo7{QP6SLIXk*DUbB6<5STfz@W(u`9;-cD@_Y1 zz-w?Bd^Qe*8L*ptD&d4qyPp+i;W=#kqU!pH(A$PR2-)juLSoEM@iTi&3s{E9uC5BW zVD>k@JuMvL$xuMS$4kEu)?^dyPOKom5r)9D&)8F}gdrym$^aFTw=0KNL}FtN+4)!& zy&bWok+}?vB@7vH&G=$rRr2C5;2xn2Q)ol}E-1AwToBZY@G?tG3#bjr5d*gp{m}Yw z4A!@rUYZ_lh`uxMCKBosT5Xt0HLh=$oE#tEq#IjNaRD}Jm%!_z;)qHZ;wYG%Y4jHn z#!(c^Vy2b1g)c+aW9BY0PRN__@bLKkO)Z|8JaKyFYwzWVhv)a{DPqJx*KBWG4`D#9 dtB0r}!jmo_o~fg%(gUx?yQ8HKuhXy#|3B@d8z}$) literal 0 HcmV?d00001 diff --git a/helm/www/lambdadelta/web/home/home.ldw.xml b/helm/www/lambdadelta/web/home/home.ldw.xml index 5625cdb8c..cd7c4121b 100644 --- a/helm/www/lambdadelta/web/home/home.ldw.xml +++ b/helm/www/lambdadelta/web/home/home.ldw.xml @@ -22,7 +22,7 @@ as a set of machine-checked digital specifications. - + λδ-2B for for Matita 0.99.4 (released: ). Documentation (J2a). @@ -33,11 +33,14 @@ - to view this site correctly, please select a font - with Unicode support. + to view this site correctly, please install fonts + supporting Unicode 7.0 (June 2014). + For instance + or . + diff --git a/helm/www/lambdadelta/xslt/ld_web_root.xsl b/helm/www/lambdadelta/xslt/ld_web_root.xsl index f5cdfbed0..d1faf246e 100644 --- a/helm/www/lambdadelta/xslt/ld_web_root.xsl +++ b/helm/www/lambdadelta/xslt/ld_web_root.xsl @@ -154,6 +154,15 @@
  • + +
    + + + + +
    +
    + diff --git a/helm/www/lambdadelta/xslt/lddl_root.xsl b/helm/www/lambdadelta/xslt/lddl_root.xsl index 5645dc7e8..43aa1656e 100644 --- a/helm/www/lambdadelta/xslt/lddl_root.xsl +++ b/helm/www/lambdadelta/xslt/lddl_root.xsl @@ -23,7 +23,7 @@ > -
    +
    -- 2.39.2