From 4ec099942c6c67b40d6cbe703e95d80f42b713a3 Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Mon, 24 Jun 2024 18:09:48 +0200 Subject: [PATCH] initialisation --- .~lock.notes.odt# | 1 + git_update.sh | 105 ++++++++++++++++++++++++++++++ notes.odt | Bin 0 -> 40598 bytes test_git_update.sh | 100 ++++++++++++++++++++++++++++ tests-manuels/pourTesterGitUpdate | 1 + 5 files changed, 207 insertions(+) create mode 100644 .~lock.notes.odt# create mode 100755 git_update.sh create mode 100644 notes.odt create mode 100755 test_git_update.sh create mode 160000 tests-manuels/pourTesterGitUpdate diff --git a/.~lock.notes.odt# b/.~lock.notes.odt# new file mode 100644 index 0000000..9f5f00a --- /dev/null +++ b/.~lock.notes.odt# @@ -0,0 +1 @@ +,eleonore1,eleonore,24.06.2024 18:03,file:///home/eleonore1/.config/libreoffice/4; \ No newline at end of file diff --git a/git_update.sh b/git_update.sh new file mode 100755 index 0000000..8b6da8a --- /dev/null +++ b/git_update.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# Clone un dépôt git au bon endroit +# Stocker un minimum de données (et donc nettoyer) +# Télécharger un minimum de données +# En cas de conflit donner raison au remote (on écrase les versions locales) + +declare -A usage +declare -A varia + +summary="$0 [options] " + +usage[b]="Branch of git repo" +varia[b]=branch +branch=main + +usage[t]="Tag of git repo" +varia[t]=tag +tag= + +usage[d]="Destination of clone" +varia[d]=dst +dst='.' + +usage[i]="privkey used to ssh pull" +varia[i]=privkey +privkey='' + +usage[N]="Clone to a Non-empty target. Existing files will be overwritten" +varia[N]=nonempty_target +nonempty_target=false + +usage[K]="Remote host key file (known_hosts) for ssh connections" +varia[K]=hostkeyfile +hostkeyfile='' + +usage[H]="Use real home dir" +varia[H]=use_home +use_home=false + + +. driglibash-args + + +# Some SSH options +ssh_opt='ssh' +if [ -n "$privkey" ] ; then + ssh_opt="$ssh_opt -i $privkey" +fi + +if [ -n "$hostkeyfile" ] ; then + ssh_opt="$ssh_opt -o 'UserKnownHostsFile $hostkeyfile'" +fi + +repo="$1" +if [ -z "$repo" ] ; then + die "$0: Empty repo given\n$summary" +fi + +if [ ! $use_home ] ; then + set -a + export HOME=/dev/null + set +a +fi + +run mkdir -p "$dst" +run cd "$dst" + + +if [ -d .git ] ; then + + # Compute git branch and tag + tagref= + if [ -n "$tag" ] ; then + tagref="tags/$tag" + fi + + run git fetch origin "$branch" --tags + run git checkout --force $tagref -B "$branch" + run git reset --hard # TODO we can keep some files? + # Preserve existing files in some cases + if ! "$nonempty_target" ; then + git clean -qffdx + fi + run git submodule update --init --recursive --force --recommend-shallow + run git submodule foreach git fetch + run git submodule foreach git checkout --force HEAD + run git submodule foreach git reset --hard + run git submodule foreach git clean -fdx +else + clone_dst='.' + + # To override an existing dir, we need to clone elsewhere first + if "$nonempty_target" ; then + clone_dst="$(mktemp -d)" + fi + + run git clone -b "$branch" --single-branch --recurse-submodules --shallow-submodules --depth 1 --config core.sshCommand="$ssh_opt" "$repo" "$clone_dst" + + # To override an existing dir, we then move everything to that dir + if "$nonempty_target" ; then + run mv "$clone_dst/"{*,.*} . + run rmdir "$clone_dst" + fi +fi + diff --git a/notes.odt b/notes.odt new file mode 100644 index 0000000000000000000000000000000000000000..da2bfabc6ffd6fc7410788afaa0f230bd0a4874f GIT binary patch literal 40598 zcmb4p1yCJNvoG%M1a~;NI|P@5TX1&`?j*RoySoKe2n~Y+0f7Jk;qrY|+i-*fg$@D&;-CKa7KDS1gN2*-R|}J` zU+rzoOx$do99caa%~_mGTy0!goW5E(nmd`fJ6JfnvA9`yxvBhLi~Ys_S0nyAl5ldg zw6St``Hy8>Iap21%q;9J{!X1-SpR1v*}p*AIG9*jxU!1dxH*`7b^SNsPyYh!=Hz7m z)x^=l{@>sT{s)|?$-jHmf3=&dn~9sd>%YhSE8%=~ak6r;aQ%NE|J9CPoxZw%{rgGW z|3CS&w0AObv-o%X{VS>bv(f+I4gmq-KlJFY`2MS*{2e)%INDfRxVo{pm|IRKPdf&) zVT4=@g<8z4erAP*b)lc=u+8t|4%3EZz01Pd>Wxd*QZ1=E%U|5DljhuxYtFtjAs&lv ztmxO^GGm~bkhN|(WfbUQ=_vgru)f;LNR~x%Ya3je59suC1n?WBg);M^*v~c<(R*dx z3n_O~_Al`{%c6`l#~~n+#){iK9{7FYpV>pS{G#f1UXbAZOfDR~DNtF^h-A{L))U@J zo*4K!7Exg$#4VV(QwccCnRc(r-(PsSH)`Co5L_f=e8U(wySf#DQg&##)AQp>KX}_O z)!OIE%*TCU_;#Br#W;uKO8Kly&>MXG!7>Xb+^cW)khK3iQ*8B;aNK-HrYTde0)$6s zezpd|LP9_ULqkCPZ~gyQ;`Zhz(lvoNktaB&N>lr=$^wJfEBZOA^K7&q2b z zkgsFOi)($OyDE~nP-uRev;$TQ`AtjrM82%?*kE$GWt3KYm!j5W`G-13E~>4jxmvin**IFc{-X#z zdU~Fp_)!A3jS>faEzH8<{D`Np-cFG@p4l25ycCSKEeEcX7nbPL!@R1enQNM zHlIxDRc_=53ji0lsI=)~d+A961n4gV;}n=4e;2v&T3_X-^%{P-J4#a#igEL(rhR{U zMe81w*&yw$GvMa%p}q~BI;+A|>a4;;Y_E#1qJ{18t9`jUwN*(o%4Db{W0A+cUa;*D z%2g6oj29&oWFgDT%}pKLJS-l`D2JEx5NW)*neXqH;|IS#xcz>d4`j9^glql%F~Bui zI$27Rw(wKPXo?2Bnof$=PSnGTJ>>03k&y8$q3}hF0xON2RPI` zD&cL3g}2?uXLjS(qbzwdj;|if%KTzIl-?Gs@#BB*?%7b>z58=x@7th+hI=8R8>F4~ z8!gF~2pV?q=Ak*^qVsl(`keXwaA$JOW8fQMGK$J#)udv~V`!tA-jw1Ik+emmVeCcd z15^iBx*_k8iB;kII*THvw;6BDyE*VzvpyM)BqC6KoZ@|j-$sp z78%gdX!=P%OUBP&7beS^jt9NU#=#F^mfO3RK=zO{#JeWC>3gIqd(F|yroy0?0+u2o z;D}v4L0KgO;kB=DPeAVd&6c3-#$aTpb0BK7YcbUgXEt{}!nD{fr^KD^sOy#Cv8k{P z;aZW~6R1!fY9s_qX>FJ~EvFnfeV{w>Mz3S2y?66|POB-c%vzv~t(B$YJ;75n!`_8I z;sJ&kd)vP--;>%;|14YSN)YK2cZ1a7udLY*4bMXMPU&sr`@q=y*w{s_W5U5fKtXWJ;MTJ1M#NsM!awlh-Y>!j`SrebbkOK*G{>TK}S)V>m*%q3M5K(tL; zOOlxN#2Dkl%TR#_l!V+niP3i z+YmsQ(gbY3M{#l3Iak)hlo9MESWrjK-DVvTD0!V%K_hNUh-6N~PN(@d=n|_xX)`_c zg`BlRMiqyk_EhU0O{egXUX|u=kcV2z8=m7^`X_h4iN(VL0~LR%((_-_I-YbY|Fxv} z?_nj$XNgcT#1dN|>Wr$}vW(5%EBb&97Dmgm+1_z`jn9;7K{?zem7%5mMRT2Pzv(e6 zcch3h=3PYl&iXvMGNr|_bPQ4GY8m!x?fMmCU63z~6~b_MC%dy;zd8Naq2AxTrJ6O))AQ7TWS z1jDN%i52}o>tiRJ_ZB{J3G<}dN3^v3CDz?bDbEz>%{#vbaYR=B zfGjPm->i~(ZOJ6dXGD+Q+ZC;z zI~QhM#Yk5qmzJRgN=(mZ#ogD0aZ;vRBj8#@RS!85VLty5;L>#tQP8dkleJk0iUX2! zwa3xc@931~8~4P7m>Sj!3J)$t?%-<&b3X|lx)*8z^-y*rlkOmLgYq XxS4ksAf! zQquyau3kQ0{oGU-63lvmOw`=$=p#)uvOGE+Q?ZLU$A9>5Ub@GzB4)!2>CLbZy{;eB z`g=EL-<;q`HdRKPC0}E2k_85s#at>ZwviH`rs;~NGy3)M*>+k+7d0z?%vqPJAj7Pd zfFh3x=7JzW;~-J|-dkDgKTAJlC$c|`T>p^$b4vS(=Iz+SLqHUA{->+>{d zB?QDj{U85W!`j`!)X~Jo-j&tuKZh(|9jzi&lw?qmJ|X=jL6wu0RD*zkjDdiFf|DCBqr??R^2pCgG^q-On$Q*5$k+OyFyvlGBuA1P2Xz$fLi0g zdb8jkmZ1$cQO%CgEnnl?-4i=J)4Kh^VJP4bEO0mhIEok?Lj{gw0w>adlbOJ29N=_e za0VARM+lrN0WOpTm&k+5G{9v#;7Uz!wLZAc1YBguMZrmn88;NZUK=%K{Kk>up@?Chz6f|-(%`ReM$A3v6x zo7cL!HgfyJ@&_Uc2cyeJlPX4&E5}mnCbJu+^P6UiTIWjILFHYG)!?6jgR3ng>+NG3 z-QfOU@L&{pBndp00-nkS&lG;lmw=aQz$-t%Yfa#duED{<$;rw7{_Ux)zJ-N_U%!40 z4ed@&9?Z=hEi9b;`gO5*FtK_xyLL3UdAhWHz6##z+q?J$-W~cloCF`wflol-%U|G| z?fw1zot^8W>z(uS^Mixi^Ye$}o4wQ9gUkEVo9k=v_0G-XCHVFL{BVAMfB*3C=i&Dq z`1$7J&*R6($6rkVgTbq1SK<&5=J9fpVj5oSm+#SSh8^x?2()okQO|;-@F#gTqXqyi zXO63yndW4JtX#beRCfM58E1P z-YBZI#?Q3_V7{NR_nY|MX}uZ#_L+dt-YO zXftRtWFi700=?C~zt;fV2;2xB4;v3#>yN;OP}CUI80NoZ|1;q~WdDwkkF(k1p)x+c zme{aje=m|ikI#sWBj5cR9*=AgAH~3Vft09UdnH-dZ08E4sUN#5r7pS9{OwBHJg7~xTIQS&xqooJnQ99Js3G$!o1J>Un zteX+2G58Q+_!SplDyn{MD+$tAJ?s7v_Z}`@_@M^RD(1ba|N?nMxvv@XZQS%)rZ{dj3A2GiAtcSN&S9JTKOLi#k{FOcSV+ z&0;Ym8&ExuKfoE_{H?lH8TIs+Wi&p_i1N1w{7cr4J-Y2b!@bEdV9{5!C2;sN`cJ1_ z*uYyma3}bs9{ljL6abz#A~t-BMGZ{nP{rTrRzMerZJ=@3mx3}DHH$DUw->7`u=eZUjO!1|B?Rfp&mT{^Uss$3p#j*?0un@#YlVhxBo+o(c2f%Kkr7b z!QdnG4=3>1_Q%V&x7YV?;8*bOO2Do1$F%65{12m_x4A~I^YN{neyXk`U_#ds(Kn-j zOTlk9^*`^4z|Yrj``=zf!LL780v?_}_Q<}yu7Ic8z`LUF;i9ijAD7C1fq|gKZ*S4y z?f8JOwO4%6Gw`d?&ctlMZL!hYUir_D`j_~dM=S8I)nC5c@@~JqU$+Xp!6fxEccZW= zsa+;v1uTe zhC4S|l8Q>yx0)|&Vw8vJfS^-XCRdx5xV_VPjVOaGJ`t_j^Y`ff88nf z+ALATRQsfJ+IC_{N9U~yyq?fhuVDlc7#Tqm=)6)Zp3hg5M9+xHEGASWGHhx(^N2x`!0!Fkdiw_&) zWvxZ?Y1j;3^<;#FFDovmHBU7TFy$ z)Y3`4^SfGInIhq`4Zet(7au{HJJ(Npr5tm4FMFII0ZcWr1>1^{2CauALO|Xbst{ZF zq-n(E-;Y$PTn6Usajc5jkk$&;15dlOIoiZtX_)=xR4=JgXD@OBA;o+hq%x4We?Ib# z(ieB%5R`RVZZ>LoqHd$H8PZ1z47u0gH7^aje6rmD{i@qjT`bmvpi-Wi$2I27=AZ3V z3t@O(QzF2#Di6`M*RaMz4r6pAbjPZvc~Q}(?rSs{)AwvDk0}dNmG{E4NpR0+W(&A2 z;7XNO=3dh0c&}q#RGZsdFw6#&rs)#0bLd)5yY(QzkB9B4QAUKotB+Tvi=Q5XOzmvM z1Um3F+$STxXL#|M(M&%px~ z#_3dYP2p{%>`rGlI6B9i-o*kVD>)aK7-{I?wY@4HQs0E?c0rl2vUSt$K9$CNr=J(A zFpV`ukclpcCyZTiaage#?%{E}XKAs-vKOekvW8CpdSq|NIG8B201bsKF+%qi06zs& zyi$~(?1Dm~7Y|Xkj%)vE5@r*x-5z8fia;PFErlN~B;o@F+~sFf2R`~vOUk0C8+ISs zWrQqM7HWn=<3HHkUb>Nl%I6(&>X(pOJ#iS)8Zg_R5WmWVbCPGBMX+R#3-8bi22p zqKJ&(2poPwK;@OzXimSoWKGt|w_RlBG{!y@it&E#Rf*go@Sw5R)IoSnFcm}M<^)<8 z4<)G8p149a`iHSi1^)oB2xBNpa7{uP3W*ykEt8YLAtG_9afT%+wBo`eC1#R;3OCfY zHMJD5)#fr63a_Gm0?-i%{?uT(B5^Kkz zO-dsx`?E1-iaH8bZSf|^+Rhbr`mqZiRr+3JYH>7{p-Zh>@)zW_>Cn~&Me>3)CPOs2 zt(H!D#Emls&m5nHPWfTE_blY0d0(ZCgXv1ARxU#}&X7Uy!~+VKgQP?$<4=vB(Rf2n zMau==)05ieAPoo&cL^HoNV>Qag5RMhOo0*d8;m6W2}FjUX5;Q>Y!YFLI1p_c*bGz3 z%b+T2*{qU?X^gG$Wv$t{L3(mOKT{sdLW*kCY^5>fjxF92YFh>D3R9(vztu3Z%X>rW zuTGhq>9cA@b7bVGOcjjW5nE1|N^|B?V)8_pXRMi&ZF9p1!Li_l4)$H@q*Kxw%Lr3( zFgB+movJk>HQ$^Ni{VdRbnOLVJ>%wQH@S#G&T$wR2lIMd>6E6F3(#Pwief7&>_j4> zf2GF|@dV(ODoe!enS;!RHzIZ+*(fc9zo>BgL9!Bs#8NKFx9L)TEFH@C$1x*iPCG@5CssHMQ@%PV{IO5xiw|2B;UQTCHSkk88vFH_sfA1W=Y}(1%GVr9IqME6jQZ@{cN1lKw_h*O zRbF)pD?$vMoDu>zP=)tf0{&sH zH6=SCDq?uE$LOY3=HG{7IWf(>i8?S+)iesJ<)wi!V&c;nVkPT<`{C~<%`O~)Yl@+P zh>E#l1MmbS`d1$S?W(`74~+B<6jN0Y#u9%+y9O0xl%BlVCr(~w(CsD68gh0YduUtl zhtaoX1hBI&iYdAtFTrz5+1TsL!U zAV3<_d66sCSJ-ixx6n%L_#pI*SAr0#gFSq4)E#&`U!2_Hcr53ny<%{gnAtc)#b!E6 zx9*W^(~|!L#*%$Cm$J|}4)vDHYC{ebYm&AQ*d-#$-XSp_n#zeYjr_&-7$RwQ0cS#- z#1Rf%7P^;L^NIa<{=kM&kRo3yKXMwr34*bdrBbpXL@r(`*ZiUF-fA;W>*4| zS$T@i^efjHV$oJE?lK*ciA80$z9p@#JnXC3gC&Wi_V|_fJ&*d=lqX7^O&RNKhn{jA zhvJ4)LJsDUu-;HtvmHGz8{-2Ug>PT|oY2vK@3?-P)NN`h~2F&jOn3 zTUHAvJ3#~PMG*O%50ER-==WNiv-l{7xtWS=a$JU~%+fl*37PdNon_>P6)CvlsYMh9 z6Hq{b%OTWwjdIPz&%j%lg)8lEjbh_DviXj6g880#gdp{db$!{#=I2VHveK`uI%lHM z`Jnc^VN22r{$!Ewg|L0(iVKE#4U0;~ZiRmNzcyrp7lNjTSD={V$+du8%@>bTtv7x? zaD2b!Q1weVCR}GHP>Rx0=%x2wI9!#FH3fafRzJ+R3xlF%M)pXT`AYcvB}408^JWa z;q^rrGbWG;KVhPm6kDlyq>r+pkfqQ&ZedG|v+KywM{HmWdc+CkLTBAd3r|;8_(k_a zwE6ivz{7h=Yy~5a>xd3BhBo9x;rT6#So0F!utr74jUQ0QE-(Uhs(IWP-)LT{0}xga zX%PCIXC{;o9B6Kqz>SlD$Eg13hElx#sR=^ymSLeXW9Ky4oucMvPy_cOsejyqq-$ih zzP~!af`$s&c0w$IL?w0E2AB$q%(0}9FaBS5{Ok; zmM{BWQUSV~K1B52U04=Nok@8yNCEW6q-}1Eg5F1H7 zAD9<{)hJ6x`URy-)2Jv8^g374#<6rT(khcM?$u%8G9_5v4^IZ){ivOckv|YRs3JXf3pw z5$!h@U3edHI>xax*b(7GnmLdh5wo>5&PjO={C}#;HtbXYKe+pEKrG-d>|O^-g)qD9|6ai44y6=0ZB=WuS-Z zaHy&Nk9nAMpRd19PRTm}0_`W_vm^KqnPvVw6uQS0WfWK{4VcQSb8dI*7P#&lGvpMK zQ*PF{^bgia_q4VLhYHR8pKr7v{pZ)pvL1(3(lTfg9G7Ud<@vKuLw8Rxb1lvMPoTDc5iI|Wsef|?J3q;<2hbJF#SN??iK3b5QI*BZ8Y3%1hCLQ< z*>N>%hp&&u$N94t`u@7xb72Ku2N?LBB?&S~ah#eq z1c(`HTc&qYAyX!!o5q&Wu!=XX#-0wWPNbYgm712U*}knE#|)l&PEB;QX#>&Sc3P79 z+gr2BqJ^(D5h)!HHn8t|VExb>^nuxGyOY=s)2-QVhQ>nDIvy9h!nPux>vf!#=tM>N zYmEHd-mI7NXYmR6m#&~ns(z3TRW~FmhjMV0j$}@dit(^1a9_m}!rJ&)YRNWL!l|(m z>P@FUh+`98+M5Ttz6q!5Tny}Ta8Uoscqmrzr~eci>KYJ}I5t~l-Bromb4%)+yRT+Wo}SynE;C69+)OucYi>k2~NX+;g^@{!liX{^L=zft?K z7;>V|qDa3*XZYf`zLG{)u9L$BygNolsVA??o68Q;*Yi~3veEIpkaem8q@q8T0eCa| z%&1mGbKN$~Cyc&N!46PH-RfjiO`{ZMWUtj8Y!=$$o(|(u$g(LlUguELeU|tV=Lbg7 zK^5o5YO|DQB*<^dOYF$+%CpP=QVw6j+XAz)z!<ds!4LnC=bxe})$_QfOmm@j zA4WqV;|7_QG-#UsgOO<_@KU%dHpR9LL{J!dE%yMM6L9PH)J++BNdJk3n09--9JeW- zm2EE1dl~Mrcyd=?X_8{|D%|!fY)CM%b- zB{}q3uU;QD+k|Ugx3*e>&pGY!AZH38w-buF>SY9j7uB+j`N&B#C#OMKF*JvHe>O^> zL#yU2e9YJ|QdrPpy#k#P^{{gBX)bmL zT|;vx=BPZJO<01zl9S$ME}l)YK^14St6uRZr8OV>%$cQKtX!feVUYr^y^A?!ik}W8 zdTMS2oiyV)y4(zSkqzA+IR_=QNoi5v6fIqHGTn<5)~(=Uy4xdj&X#O8XTQQ1vbdyM z2{`L4(>(AcH}!*_R0a5(^;Yi5wI6vhQwYw=L7i=AVSg+S6{I}}n7-8Kn8AK!!m*X> zq|tqlyF|LL;@n&}-ygRYQ}kxazfPZfo{TvRa&Rzq}Db7JudZ(h!|HANeW`JgJae zm}Go?99+|M-APXMiFF~)*s^f_9NozQa9CN-k!apv4fqn0o5a`irPq<=b`=uZVgUC# ztJHF;QkdS->WA{0K&AA#JS-5H(gM2MJZPth0uWYhHI_QzMkXEMjr#@_7&oGRHr8#CoN5os+e8WQfNTE~^ z#REJCvFrMl7NN_)Ldv)mLX4MTROX*~9-UyDl)7~M-9C1LUFiT)=CSylR9^W>G^sh5<-!VSyhWAaT+0`63c!$?@g5L zTWi*DztT$PZXCAteb{+F!1~#N?N9TE6Ai7@P|%Dva)501ZVk!|02FE060nYjCBi^( z=*6%%$2`8f()ua-L6VJ)HgSSHveBHprq09h6fg0~xr@YrwCS7KH0vS#Ve5L!N?pEM zetYh|IlKS(Wz#yDMUxQ97CTR+voth|eA`-{-dg4Q=6Qqs~m$VqcWuS(s4OOtk^k;Ht zAz==TQNp<@K}iSv+=qE*kVa+l3rf(gCblu6glGrDijG6LL^PdVQnMsLolIAV0y(p` zY=V!?)x0N$`^%ko=&yAg%*Pad=F*?7M%M-l@-uBV6v}@~Q1$tj$l_HEDU^!^2*J*M#&V5y7%HQ5rc@*)(3>yVq9&z_Egtv>_I{JA! zaV)itaFyO!d}9A`qE++0Xp3kGlgq(jt*}=7f!KVTut0D)nZqSJgYXN;3L?fs2p3PS zqrytcd(8Y#<)5ZpXN;tW4bpW61`j8S_mD%(eNt^9LKl{oHG!!X8P-}AyzqH|bc;Xc zsNRM8pXR`ZHWH9^N`KC|rz5>1wUaGdrqTckEZP*Huyt~GfJEBb1Mc(j7^BtOr0`ygj8jHunoO&_q=dgvEm~+Yaug+!D63L6fEGpsTJq5kBL|3W{fQr8)nTU8`3I+=-gHDx}o%XBjLE*UGGb@}4T z^7hH$4N|4?<)SdXFKxv&LC%DFMrC8o^J%Z9z>w#h|eBj3m|>h@lXd5X$_v`ae>E*SZTQ7sKHKm z&lbm=SQj9Sk98%7YHnS5`G_*Qd_H$c&ZTzA(AH}dQ(uYKsrjt8OOxpFIv=u~ARgDS z15Zfu<;#$Ivo}$^j^r>Cu9>abH_uHs-m01jD#YQ!)Uo};Q7oB>MKx)_W3t=bC3bU& zVScuCvS{h(Lw@{a0z6|;z)Vj~J}bdt^JPL$X0ZuuNV6mw`bYs-FSIaF8?y2{j2by3 z-Qzl&r9D7k7Eao`&jZ0G0%01UW19V3COihsioZ2&td&vGqFpq^EVm^YE1DBjI%{A3 zXrS)X3b-1_jT`;7l`V_cyc_~C~&!zVMLLi#*XEW(su9|GpvHHO(hm-UNiTF8+MUHr6 z#_}NBWrI;N^9)bpOM`U3g^)YwOlEziPlS;`DS)`+{@&_wpL3M+-=zM?2$ig5Ymes1 zuv>(G4?#zwNS!1jww5!EQ#masPq@d=#Ra&Oo<221JI@%OnBlfeh4tzRZk&Eo@l~w< zl&7?G7$`YVmGGIzM`?W`5w9)J%RjL^o}~=?U6!*m&!Mr6ep2M4i!8icwL3tZ&9+83 zHO-8IjHYsq)PB6BHoQ~LLOG>1ucb~nI-L7z5DNJBOv=%m+wb;bSr6j$G!L6Dgv$rYH(e1jyrr5P1X*SyaY>F zqse(QKX1q{C5xAnkf`bvN02P&7D=ERp;1N+GIJiffy-X1V#xx;j6oZ&yLBqgG7JO~ z!wLa~CZns=Sa(PM4Fusew2EC50)|SHHP8k-guFEi){3t9;+BSAVC96c3AYm6d2#oH z&=yWT<2mB#I=|f6c%nbN6A(+!na;3Dv?Q7a~3 zT5Koc7=Ya@|BQ&kJl1Nr64SRYSL|xD)n14Glt(OLWbq#5e7CjAB|nA1wbUck zH;d_oD$4(f@k!U=r%9H8qvTg3sFhByaVH9x&PrS(asp-Ou>+(q6TWlv%S)lAEXrzf zky=cjC=cd{eCkT&FQ_#gbK|kD)`X)M^C+F5PdY(N{xMKJ7booQq**I{8}ww6hJ2@B z&Q$jaV2?SRtrEh6-s>yj9#d58(d|b8(#SS^YY3lEu4Es=FHe_}KAB+HPtB*#QziQ* zey*RePV`}aoHFrmB-ed4eu(WNcFl(Iw^-OjrzgERB^^N=q3Y^wI-wNe^fg9|ui;U(qIqPJ%%F zT)HOOJEWE4%+ExJ?I5|KWRaClXW|i0zeKeS?)a{Xjj$@8&Bjhc`PID}%`3@{eJK^R z`z$t%GMHh&pdC+WAKgxAsJ-Wk9&CVz? z6qrH2I06zuby`nOyxInF4iyB|d>JG?>X7MDg%#3c)MiW!c#wah{5)v);w5=WwpfG< zJ?=(fsT9KSf8s!PR+9WC1Wrx+s|et|!y-`G4LWu$cjRHu1_v>GZRxu!VLx7hp5se= z(m-#+Irs!b##a9!cRW0$D$m9TZz{cED}JvVg5xchyk`TiOLMP;STEb_=IYCxbkDIj z@p|+d05~OQmS#Q_ZwovPP|JTKKf%xz?ZOmC|5zS>%KqeDGcgXyQnio1fHz|$)BK^p_}$4 z@XN-7MX4KS1uT6oy^OK>rIeOr{|zd2oB~-vLsK)dOR0}!z8BMmHi*zY$*%;%U=I&< zE{oby***?0i^C~ljcCv)%m@1CLRtkOjBkRdE+j{|RlK!ORJ{!;+uZbUg$~`sBslkv z3c|0zctrN+U?uy}3~FR$%Kh*NqO}@n(1XV(MIAI9G=r}JiZ0@oYa!uv0^{qAAQf2&fMBW&Pf(O_~jW{f5WpyU`VT` zwU%Ty*Kg_@4Hocpb6;8MHI5m2F7ZZkv>>Mzui+4qz%}nbZjZl0KcH}95|Hx{D_W!# z;Hs|SuGw^xa83k9C$WwN6lnyPDFx@VY>bu`a(t)#L1_Qw2{16wy{u?SV3uJ(t>t;*tOW_Q9`brTh~X1;p!1h=m(cJXM~8hGvmrxXHThBNRT zTw4$&L5)Ey>&6L&Mc!Xjr2$n;r=!)9&0q2Cr|#9cCdJ`jo{(Y!E!DDU7K5O411T`D zW#S7=Mw20@() zn(O*Q$cenFq6j*v4i*_|oT?7kPmlo*oVNTgT&=8D#yCGQt+g76 zhW@HMg^8`~%yo4AL$$vBLGYQ~+-%pYD>;d&JS=NbXidvnN2@Zbp1pT_B{wbMWbs{Zvf6pJOZ_L$7oEvj|q?OYcvWy@%HOb*k zgINmrX`{8`Z^G`tRKRwnrcNibUG__?4X3x;SfYY>Fx=;dkOP7y4|6R0<+b)1X=br8 zu^^HGEJ8B~XwR%k7zP?LY6kOr0saBRZ~g7$f$}A08f-f9H%`K7M~c#K$e2UY684+} zNt2m%C11PO7g3%A61{1Uv1K_Dt7GX6uL#@dprM-`$1#?<1pG4v?p@6a5SzIH*1pX* z z#%~AyXb;q07+9r!T=>oImH2Jn5#1&Vm5sGkb@!>Qt+OU`taSI`+jg@EmxDCMkR(-^ zxsDsjiC1%}j!sh3o2{TQ-u7tc=0au9=}1tZ*^qv(&7iQS`!1(zXV9Y^3^IuM=JpdL zuz&A|9^<%O)UH)+4*DF^pee?_x1hazX5kd5h=w`-asPG5 z8Xu7ZD41P_Q<6}V;ad7QA;}Qf(;$8h;2=lcdkM;LGkh_XFEuMHc=|SQL*Zak{%wFzrn2F(xem1REni^aH;ct~ON(U%N<> z#-X^#N|mAP2cPO6x&SDvYTb#1V!J8AJ9Q<9h?>HMT7B2lc{bf0=FHwwXBSaiwZY1L zD4Qqaw~A`!gdAUqB;%dx!K^ep`&hifutQ28D9^A%y+*L=9AbjmG%Rm|xDG1&;)ZRZ zsX0dw*F>U}iKX>vi6opPmavum#-S!Uow{zux4o26D5hG11vTb?(T?Uk(Ocsf;ozs8 z2Wh~FU>5yZ z@{UW)?6p!yW4{=T5_~$m<;B&~FLYX;k{-%&fkjE^B&izlDxP2cp!cc71se7|RD3e1 zPJ2O5Ha!^C(VKVz$A|v%bwB|^8PbB{hIYwwX}X7mrsruHp|H{F=izWm=CzmE*c1uq z>wY|+=8pD2XDzQwCz8idx6gv313nhGu05CXsOlDhaZc=|p-EcJr7W2`q#0yKE%%Yr z56#hPoPuAZUj5^U{GK@XU@gPr4MES*zv(o$`uG?#%pPl@*d}TW*z}W)5=sR{@iA>^ zvf>y<%%4Yb*!e1FDwPxDr9TmEzb>ST%$Mbq&+fPFWW_ahu0u2EvxvbM;57x_ss?74 z)$HpMg4XQ2MlO=lWj~Pvso@uOpDN>kOos|9K3T<$cwzjA-a##tO|;NO9E zy!UJ>v4IRqL2as2X?P7TV}%j zrtR1}3yIR8(--~NGL5^VZ2R~+Q1P4NsX6dfdc3^ebgs zL0qy}l;N5y%s!&$OIo{R+9)C#VTJ+TsD6vvv?~x-Z7=6YL3L$X^zfyqiFpPZ3%iFw zS1&oWp_QMcWk#;aP_ePnD!u1U}MV<@}(TLlNMgQ|cP31lY=jI?VR5~jqI z0F9kaVFfJ4xuk|1lhc%8638P~+F+H&`&@CA77LW^Ph3pZ7 zC2`|zuWV$~)h)*8Vyf`kuTAVvG$Bpp%B;Baz%O;GBDan;G;bf<1*KWXHAqWZUtkQ zkb9MECeDwHoYdR4yygeQvk)eTEMlmNl}S^nYntQ>M}61Y&$Xg42wgM(hS38y^_|OZ z9#NzqxPl@EJ*nd&jNyG#cuC!2e?6_lUcyl*X2ONUFoj+fq05%*B!#C>0-R$KxZinj z*Nzt@)c|*8Y&+wo=C!)ER4ta6W<|?#&C;cX^FX-iTC4_yMz^JbXvlqbL4Pl)BThn} zA+991Ljrb6Q>kQj{lp%QbEL57#_c!8)}yG?^0~6S_|5Vx&KIvjBbFUQiiKF3vhO*5 zvV}M$(p}+&l0H@&o1z-}EQrb)00iM2wX115HL2Z*5HQVwiVtD~EJ_Tn1l8WIh>lI4 zkz^qwv(Ftzo(~H5QidAAGKacd-GRz2`ZdPbq*oEZ=$XT&t6e4?=_>K{nAQ-3Ab#r< z`*hK7^;kLVSpGR?_{XW)@$Es<>pi)@RTq<&@t!>EWTl0m)$J3%{M;fqTb`?>msk1LY<>3nm z)Biae{^6}ZE$Ol@TX6|qM*9=iJ{qAEK8g4Y3=)l58@V4v zjCN00U)%puyRV7a^%Raciwq0B7m5NTUx8f;qUWPXO5RFF(SY;RR{6Oug-5PPJB&E3IN9emFj+&1X^-m z3?MnhnZhl|VSFU1MgtB}pL}h2jaE+WY(rK~2{xh~e4ob8<()7-cuA@uW-e zVjWBe0JwZu#Btps`0u={{LbpWy7EK#sLn=1EhrVp#W_*}lsJ*J$a@SGm9jF3(kuy7 zC&k4;U7}Ip%j z_%EtG5>A#crFaQU@3)C(mFM%lwa$*ccyRzZyd3T)VT#*x{L*zs_w*vfLNyFx&0Gf) zx2dX_3xP39D|^M-h?=tFqj=f~4Yc`LW(^~F2H24@x(9M-D|R>RIM5J5e_TOO;I z9-ScyFV$w86X=p=DMU>m_q2=>LdFI#RRMq+%4G90$s5I|R=g$>$Ujl65h$!BsFIJ- zL;9E!!u&7F-Z8q8sNEJ$r(<{0v2Cm4j&0kvopfy5wmRmHZCf4NPImT}_l$AAaqbxB z{L+Rc-EohFiBvN;89axyf2>Di;GzyIe(+>+p zGhtV}m4+MQF~b7T$m3M0r4~q2qHXvtq5lj&SbdN2mJE3LS31yYfr;P{?>Co!Vwf~~ z3}NT8`E0$%J$Rx&5Ak^dE1I(k#}9RLo0RQufP-O9&(42J^>$J;f#p%?6Umme-{N1ifc`CiA@KSIjpk~MXP5<1$=OEHhX7XRhNDAb@0 zq!gP?lbjSfzOnDdxZZ(1CwF1S`!_FPW}V=b%H!@|N~4j$E>UgFX-CS4@s=J2mT^i? z3}Vc3W>HR{gg%`0xfwM7B_}BnXKDGeE!_Hqz&bHjCz$J2;jhiD{H*vTs(MFTi#AK| zwjsd@j02kF?W`qWN&m8V90%`arpcDQMD+%Vgp;fzz9UZE`^T`}5Wy~c-~MGBAQk<9 zgO^WdJ32TPPWO3(?)-3B4-PAKS%6sH%Q(p~zzr@M%=FLS?wyN2CUMupp;y7O(~$oZ zy|9V?3bT~xM*Y@C{?ki4215 zSSE`qnQ{(|Wp9!k`vxiMI6k|^Jl@S^(U>%7*)t*p0W|kpK`SmymMrlny=KdGyaD-T z0+GP_XZ~HJDI>vX0(~a-ef1SAf-`TQw6Ex2mpbJ=t#JWf%j%Q;%^`a^*)#9 z!1B3S7!mFff6@Xwt_z39cO1-gIl+bH@0Tbr8)G3&x2Xo$wEz-%UJYau5!Ku$Bpb4o z`DxgtrEsxGOS}e0wZd50p9hOUHraT&s`=1{J8RRl=YcYn;%X%fRLZ-#9Bsd+%H#6C z0WuX{0T(~9CDlVx`}^)K;(|91#SRij9o&)O()v^`L%JAdoQtEIP;KLH3Bw&t`bivT5eq<5a6zP6!`t8fi3a&x%2W#WS9jYn*Dr7OYgvHaesCP+h_l8eveBw>;l{ElfyABwhUVkYLTpu?`B#_huo_E9-@Fp`2 zPqh77a6X9Z<%7wYq=g!a+wP^VXhW-Xy1I-fa-2*0MUi)COWjpMZ7g!m2DaF>1a%+l zkfYuubMmc;CAodPwz5Pu1%YXmObD4W8!KJ>F&+l^-y6)h;wc45W^(G*BaML(q9sOT( zfd5xG;g{1V{{xGh;0(skWwY@qe`MO%$H3c%-E%R@{wl!t5DioA>UE?mKrk~v5+SCh zqv|~6%|hiM2#${4T{!L)+Nbaw;M!EdhRQ7(-t2TS=Wi7=QeVPQZ0>Lqzd&H=dQ)PWCuFV({0DDe`QsS6f!nRAToBPT&Go? zr@&P7@8&hKx7eZysm#1}W@AuEA>~3#^^-^ctkhpXYNG5H;$E6KJ7@7cOXn>ly14|4 zt!ioNRnALi;7B`X+;5hOX|+E(!-+YSd5MuUdL;g#ZilU~&6v{ZG{pM5H?OJ1jf|Gl zq%N1P#Pil?RPAB`tadJ|F3z1ZS1I2$p^?@|n)Qal!k`xEkziSEfna%LagVa7z7yei zL}`uNPu<9#8>16}iz;6K@{C>Z63w80EXbH2Q1UDdU9hm0GZ^w_#7nb+?QS~65j3QW z-v9PPpG(lmXFz3wfgGO9cDF_9Z&WK2y4+#xo>tWUW^>&2(k>Gs>k>HHhKP{p(O=bF zW~fy-tW{Afxh)Cngi$emT+)=RO-c&Qwct8$V*4OL5ri@jt&2VWQnPX^VN;Tc4Tx@j$KW#+-jT{z(J*-My?(cf~ z3tZp3#r4~EcD%1oSQERP&kM=~@>Q;PHU;jti@4|cbG$i`_qW=C2DO~>=m(#`G^F8X z_tVF#JdYBd>lhr+F3xUSTX!#Dr6SV~(C)Xc-1uy_+4gjmL#uAT)!}#wa=u?T1-~9X z2TnIztE0TGdt+X215=QZNcUem%UHYL%cZ(}UQVB6e|y~uQoT(nmU2GDoQyxlNgO{m z$JT9j0gr+dw|}XIX1VKeV{vYGI335FtM7C<9*%EyuGnw2uh;oI><2y9>UKK=xBVTD z#}8@U>$W?+uA{E?gb#gg&%A+qK-?9($8+_%2kYneoG5j>Em2q9o)5F0PX^T`+~A}0 zq6mGFgU+HaNTuiX+f-IhAcpVxaE>)+0-6Gl(Qc|yw3NQaKj%M?mB%hm#1hsciPy1idN zYpjFky;rWbyPRI-I{jYZ8oC|#KZmN+6%YI_kG7&?iu`aS+}9WQ`$b%8dQ=d0#( zLY;0Wbos5)XU_RitIY=#^USaX@IX#+c?7iD?YtX_H!(ips$cD#KEoiW?Bpy9c-->` zI39ndWUbT{G;DXxUvGB;j{wpubz2=Cpetz1YoB`kuE#!rblUr6)N}XCapPj8=kHh77{_EQAx$B20_gbA!|NFg1Y2Y5n?b55~@eMld%E#gQi2Pv( z*WSfX$(Qj5?9Mzq%+Z_nSeLJ<0_I23t zbU6ok{Sf#03J}uT=Jhy*%&`5rH^sOOxSc7(kIZ*3`NuL zL!i4i!1L!s=X1BmF-Il(%C=AAPB%Ey_L=>*Cvdm~*-o$fZd;qP_9=?$yg3W=>+zn~ zRH@Hl*Xi}F+IM*$PCriQcfI$;aMtR#f4i~Q_dTD!oLFJl27IG>J9Mwp|Igy&QD@lt z+>HW0y6g9NUGJ%~)qY~U-Na0!UFmnca_0i>?2Q8LI?Q_Uejnemc4ye>h_t@m_G$&5m1J3b_CylzuRro|ZnwF; zA5B%U32gcT`D>MMJ6%rKw?3f|@mfEx4tZJ`3Yv>3!9%~+$7V5%{dTw4yAvtw-gr(_ zYwcElw(}|AoobXE$EJ4E6Tay4YsmpbUka(aypLr}lr)jSZ@w(oZV`w>Vq*`lrMjXO0h03~J&;gKq`**eoVEApbY|iKNm+ux< z*SY}U5s>p*&+mGh%OyIF$Gm9*E4#Ma_3{qW|M2dS7PC$l;PbeiV!h&bI1l=Ft=Hjo zh-#UDsC=dVE*fg7Zo9q-FSJgs*70{lDO zK!WXe4BvKVZ^EnHJ1@c>`<*tAS2*ANsuBMmCjmU}SJCqOnm)f(bvgn3k@l_Pa{FlH zQvTOEz@>!o8f|y6Gnd*}3hfcE>r)7;6%<^J9RNHJLP zi^XkaaJiFFzv)t50B&;B))A$KR;+!F#7{XUE^%=k;~N-}CJa zV;VCW8T3l%cU}cNCUg@zi2FQx7s#LS|0oF%1=0Hy{rYnZy)O^CIVQAY_x2lDwEx_F z?|I$723;ZVyl&b1UFQMETD#vl{qH*cKZ6*HCVYT7&pjXJJHGEZdH#>u`oMp!-Os=} zzx#9l`zOwx7S#)`z*|PY=SuTNYKOblXKBsywv0cWwVWRRm@I_oC;XH=uyudk%8XU66g({gk~g$o=z!R^S7(=l+SqJbNEvTj0Y1 z6VF%MA4K+{N~!N2 zCr2E{tyJ;P@yg}23tO`qQNHq2AaNqDb!na8^P##{Baf=bP0k=5Gflj6@BMGucW#jD z3G;h&x?$O!gy|r{>7;u(&kwJa8cvQR>i|~Thk(GC13mBR^Dd&B4~6-ouvZMFz7}L6 zyWF1zap72lr#&-25GGVDqQuAn4gP5+!6%yG7-Q;J-9D%S(x!5wyDJyppzx_o2bDo78EC8@f?ukVq_EXVEyDTV11zczE275s>CM)7_q$8ChysE z%B#-Z5X7{?FBi+9tIcYE*-sx499%nFwxWURD9Lt#9d6c+V<8GX1pQ zx*iWv>DdKK%_00HrRmZ&OVz#%o6>!+XDQq=AH~8e1$#p2q`!+XwVv31FEo|l1J=m0 zQBhA71JmC==8Qv_)=zfT3NNAQ(E#W!#$WFxiB1eXCEvB$>)vzZeoSgpP!``%gg+K~ z>b*qL++a##_ah#!Zd2#w7hu}kOgZx`C}Iek!ef8@2g!Xfy2+TvP%4sJu0YveU_N>E z%M8=`%+;`&*7w&h6f8V?Prc-mgWQ&2lp75q=g$X(x0TVj?COe~qxRX`(xbA+UoeT* zf3%+_mjrdSzfqcFR^MotpD~#_Nja2_egAGueBZ)W8-{6i*TzPw9crGO0nk!-m)1V{ z`IDB!`lm$2pJAfn>TI1qyVN{BQZErj_KuQ262g~Q@--7iM3PJlr=00e@(uU!hh~wG zol8^v{S1CSAjA+80-e>D8N{bBY#Blb^a}o^|GY-zV$hU{qsGS@+4QEhdx(Dl_dvnOI^;W-*Tv>t3>4iiJUPvsC zf^T56f!&IMn$v@aF34}dErO@B+z7ZtJ>oY%rC=jRNO!JH?pN|4!9;#-R-sHzFc*sf zmw$cK?0eheY3#cBt72MmeI-P`bC|H1L|c;)8ENogC0cng_rsj`z|0~{HdIUpnEDQ#RpF7dy%3@sq*y4^hZB?i?6w*HC z9z33XxQLa~;V$nuA-nJ@iu<7>@g1#cA-W#o2APp;skwMG#haa_Nj$+r_kxA(tRlLk9YKSGA_i}& z>F;jQ%qP4)h0io$5M5|jHeV}-`%!O0wkrHu@v(9`B?M_*(6+g}BNMNY8U52_i_J{r zXEFn-KFs%>ey$)vzk`+6m+(J3gm&{t)Hh!HHtVnXNh5A&!aPBw0w<22illbiJOaEO zd1n>oCr^?qS8*<59%sW|i5-go^6-7~kf&S8N6$Y2n$+HY4OpVwwwc@dZ-=ax>lZuy z^>OXNv(L()ApT`=ZzAq7!>d6iyQP694gS*z;K1g*18Ukau}mJ7A5Y5C#P=dSiEfbq zBhi(Q8~^XH7`DSL5he-(OW+w)+|kW{hBP;-;8R9bTRi@1G-xE-PPZh;+v&I!v@P;6 z?7@a>u8AeOpZXe8fDFI=OiO}*+P+Azeq^_vtco#V`574Mif#0?7I(oW1^J4rxGyod zWFcGijqInpuUkF$-uIO3;1MIO(Yb{Q2yuJJ+p*b!_gjJt6(cEFr|@m$-Z1S9+TsW9V{-Zo>;ec<`@<+*lGVE0h;}Y0CW^to zL-d~N&8Aqo^9)3(d*qXb#NQd|0vM9!$m)E+FS@DNQ`I%oc!{urNrhi1H7jbrgP( ze7Dc0{gKNRLR90HoW4BmR3fU=FO6U7hpodReXh``7+d%!Wk}c5_LMeD_jj@=g3Fz~ z!)7~A!^C`yae#ZNnQD!&2+`Q>Fi|;lA3E{eRqB{Xkc$O&5d$0Vnxfr~ppVXVGQ?KmRj}-L`mZN%vWyE!&zV9#5f$m0w(~JWT@HF^h zPw^i-XKA7=sLHEE*TWdw@iU)GUh&E0?26i9Way?ZPTpc^98R>PIPa*sWR1$Z^Bxn_ zj~&v^#kuv#nHIt1ICO=7O**ZQ%@x!eUvzgubdl>GlaEF0+gDRrTw!ZPY?BC!P-&zj zObWOf`{yCKTurM{L)Bz0bVDz&EvZ%O^9_{MQj;hLatNGbuw&9OVCYT^e#;-Gj{22s zM-Jx(OiC02GEYr4Ml&o~%mc52!o+8&l+)GEnW@ws!F?1o@rzs3yd^c)UQqj(29&u= z!wo9s2M~1cYE`1U0=i5#Sj@nbgM?MvFO&y*@rPG0nW>P=+~(fYRLj;NduBaI&C=Pz z=4(igR4#9>pev>h{~Qdop@ge1m>kU0d}`mVS?LZI?>Qsz8!StVhyNo_(!oS(CyWbA z_i0wKUkbMIb%G4CXe1SA_!V@=eZUPT_nn47kM$wl*rvf1rQ-lcmX_)VRA)SR11fdT zpy64&Bi$p>Kg4@+`a#|VGU`NM#nRhp#wtt%G0$?*rH7aCY55lPS-tGJ(fbK2sh=Gq zBlMZAn9aqdaNG+mS(8^B&`mM<+F%~mb(Up5a#h~aFJ8I((riBI za-Yn<1o;?J85FNv+_W&8yBj7O(#>=q3FsT}7H_X{+g2cvuP_xYS#OlN^{x5>M!B9l zZrqAzxr~sO4m5x9aH}Y3aag`3S16T$t7v`y?zQcF_lWY2ms(q$^YJ%swW_#g?ptW_ zW`#Hx@%S-(bjv+-=@~p$5%SZUf2QWHQCYONvqI@L_sUftb?#4Y)?DlG2){pCoV?}# ze2QPd5Gd}d`#fbk9cB+MW}8bT(D_X}SKH-!8|6+NN-M{YgKn%Gh35!nAT{~jokO4d zO-k6Iel+I^g`KC%Syj=*Pj_BV@w%7=927C-o)14ou6i)kX}$0J^|mGmiFAzN`ZN|h z$_J$k7z+;wR3>FjPls}-07snjge|4Uxt{5LghaHt=a=4K3m*2v%x8gCxLA4nRM@|HnC1kl`MK_FX{eP=$Aj)1uZGTA+R7m~WX z9FSH$o143y_uwkTYetMQg&}+KbI!a?62(HKG~$!AD+h z+ReG=Os+7)dnZW`yNjkRwhj9>I|K;0DNI-;6rD@wT!D(gZn^AE5p8}(6k7Xqp0Ft- zdx7)Q7L50M3vC@C_h_~wA6*QlE5vLyXdc>>H;>D65Zz-cjN#@s|Ii@Cwg|T>%OZBE zg{dEZ*wpj=aIZFhm_Uqf3@j#<=6>XE6z1V6qe-0BiSahxOB3(E{l+Zns!`R)uN1{W zIQnSt=%@f)h6w>QWXTpe_joz=h+HrxuHkKpUY*{I7$>x~E(w;$!#Y@aLO<;+b1$SP z^$tiiIMwiS=}3}Z=H}|$wjOrrS^aCbf^<(HhKBHiBwYq@nSRc`P(M|vi#Y5qY`(JJ z5h7aF8+a}Wt#YybofnR&lx)KY2N=d7kz6n>6_)aZ*W}8b81Oz8XV+z3nuA13x8Kg4 zPVEU!kn=^0L|$b#$Rl%Tq4@1t$>QpR=Vas(`(L0m-}Ohw)B!{AdfDH$yGR#Zr`nAw zJH~4Uth@O}3frrKE~y?}On6%_ zVib{P!O#M0{~OiW^vpo^L@*gM#GgwJlNAS^s5a@m=v>9qU~3W{D;_I+m%^w}lFBxp zSta}yIS64y-4m_ob7*!3LvV9_=*@4#Dm;y-uA-EH&;qJqk1DI!Zw6!n=VAm~-WkRD z=~6Q})jARE0)GVU)>s+okmRqV1%(L=Zoqw3_}j?@jZ?EKoV?R5TnqygJAB8Kiy14X zLg!o?@|9tueTc~)kVlV`Z@_}4b#KSV;h+Y((gZXIRD|Cv_Y4Z3f?G9@X4#DoErxBA zMD9oUCNZU@(D1JcOV<|UDBYOE4`X7@`gix;#H|FHMdmzl%x|HwnxN&FlM);G@k*m{ zj;%a35)(pWku9Ss#yviU%YLm=ASy?5{1lW5IiR58&aNVtUJN`sV9J(+>gMh)!qimy zk+^8Rkxj0|?1o?ZGRvgIn{WT?kI{waxg{U^O!>&V%p>vGeLU>dQm&lNNU>%df2+7; zwIeq*)JCvnEKkW7y!d2ETh9|i*R_{{c&yK(^ zf=Yltc;BxT1x!b9GV$T4MW^i|*O@$sq0l&cz`e$_s5a~)SqRV8Jg#Q2%;hYcxp#3} zm#q{ZBo?yvwa%q0KM5UMF9L1$!deUOjNO%=A}&@OVrtc|3p)bMYnuTZiiq;uu`6^d ze!}ylf{F=7gLT~+2Zs0KC$(Rq&P0M-B6+5;GXkVwd!Gf!XiN{qq%3SRlhg8P4d7`tIug3e@d|*)#oj$+EmHC*eUZIAK z!7JR)!j^d6^#EuWlkr}ZYj=30h{sm)$j9q(xjZfX*uvpK4?i>`zH0p^12j8zG(uf- z5TnIsFuv>&nc0oGaNQ%oVXbgS($4)(gK{p2EI2yWJ0&u6XiS@}OKUosKk}mHzN9|C zYP-mK#v$W-kX?`gTUPCEGz~MLM|p&R(zc3TzD|uha~6y~{n&08vVg}}U;db7E|GSH zsJ&!3w*m3Fn!oAXQr`sID32`W$3Qb|8+5EZ+{?+tFO^Bssa=0vBQVt1EYKye)Su-& z3sJU#1G)zbO6KO{0iG5p4o5AhDHC#wFqPGG=fTe?5Z~IVN-exenw#JB#M8LA2^EX! zbjS}&W4cs-)f>ceo8hzIJJo!prh?p5|3qu(2Cg+#<)R`iQ!q-_G2L+Qqp>bz&oj&$ zg(b>ymEet)&}k=7w8BhfKQ!w8L7^-P>|Y)S&ZqstENwrE+JdSng9v&aqOJ<{qVzRt z9;7a%exS>Cp|Hv&2~eEXb}L~xVcnD~Q5ox%P>Z_SWXR#!hVT%l&eP|;G7JqOr8G7=z5j!XpCHoxrEY+8X% zMK%(jKqGlF{9#IZQ_=@IPJJb8I_Uot~1m z>$Bf`*tP$&HK89cM*ukfMaud1zVkL5b`84e1c2r^dq7)tpD(yO9w6@?;8g1lXkGum z;&$>o?|{0`)33hRWPmr)poz~_C|1;1)p3iI8*Ws$K zP$Qw=eh%RW$JuA=yFCE7IZ&5U2|tTq-(I%E2>sf69DeS*gD$i|17C)Zu=1yl zz5%a&ukBmL`Q+!-B_euqyHL$Rid3g)%T}Xa@jUz$o-O#eoGFOWBcXXi^EmkH@XDJ5 z2?JpVj-k9GX?p%b$7V)ee{m0a#Ru_@0AA)at`+xQQl)3=vC|ntU?x)b?4%fAv4-FG z=M2@LOB>tW@6Wc66G5ik)uB2VT&C<1?X*r9ZZrouel;Sc9(k*UZ`M(lPW{eCnksJh zpDMo(=#U#dUcogN|8<*Bf6?HQ3T1YzzMpD8(Sy<|n3FE!fBkD+_I>^bN&f8j*7Yh0 zqP6Z!^`)_?uWP1Wvebb85x%A-ZR4#Ce+uu1x2~ha_tcH4U;p(ng*4WrKOowqWK!b! z`XdT6K>u^dW@&inQOdLtzk*Z7Dm&6CRh&xXeUlV}T1JxZftrT*8crVH409aOgSgk8 z@lerNoF;q9w6Yyp`9?Nr0zXfvfm1quvryLFgp8yNH?UY}vf~*2+p0{RX|&%!tqxza z6TX1pWJN8C2W!;m&8K76LrK6_G95$70uVd^>w~~TjU;c{JeQv$M~K)dA2#hkY3!uW zE6Z+D-hNq9j$`zTIP*{i`LOE7^HJzI*x)3DZ$r|syZzPMk9R+WaNX{UHbO`Ia({Wb z9@h~kcAXjCr|n9B`!EbYcgZ}YE+^rFRM}^h#NIc-;8$}h!-ec}L_Pt}*fMlYMg727 zrb&Zqq5amWG7(ml?#_D{yXApbi-Kw@G=l~ineQ6rsmG_k0_sg1?@jg?(Kri5jqr8z zc{8i{Ws%7_%l7U=l)~-T2DiY?73HkUg!^DCr4hkx?p}V@}WDIB0Ym@g-4aZ56 zJdI;SigKP6JC?daQAk%429tUTMzBzV+oJY+u+;}Wl|!7VhF3Vfx(Ic1YJydfkWxQN z6{`m&>d~B%DP>1!c?txI*UYw2)xjgF5JB{oHL5Iz6y|H1((w6kVny4zb~Z8=SA2mV zrBXKgc>wuk417MO^xv^~R)iY1FZgbu150>%npb?Vx#_%&${lR}ZD}Z`Sn3=*rWkH2 za-#aW6G5>csm^6L)`ryjW*(MS^?M&?6a6!6cw*h$!^ zX^v%W>SS}IlmZ3FFS z!9v4BJa0I0q>iSWz++OAPMyx*|l#ER4OvS`X+X?9D zx>qM0ys-%m(I(rn7VEh(+k2kysd{PMY=Zn7l!o-!cjA!?SaeMj^I87^?%iLdBy&l! zcofdH!Ei4(jxBdai7DD7tyDM&p(vQ2 zi|m5gAA$$AlvdYG-0Yd$=H{$0EiGEKmQ1GZ2*akZzJ!&IzFB|%>Bag9n2CX3D^)5D zSBvgvbQEmO8_6!XM9ui;T53j!o#ED}%;5B60}Fy#Mo~Zf;3Nd6enf(0X=(BJ%_rl0 z6N6=D0n1TNtIr9XE|IQwKDc~>uj~0 z+B!OG845oo4Kabu%Rb(OY+~Pv$xwIY09_v90cDLU4M)O40ZR)vv6Uu?5SE5HeyZ?S z3QGfBfAj=VkFjYZSAwG|j!56ZA52G_R$a6r4?sjQY3ngtfPf}+=5!))VFfS=Rpo}! zZf+ti4K9?6)*A%dkhic0&z8J8Z3!;m%~Qu02=40vVwSgsTFn)nX#?Gq@O@v5`%>kJ zQ+%+!R{+`=AZ!aiRHJA{JyPyE5{U+Vdty>`niUVGQq%ITIsNtItNwdI4P0VbrHU@Y zcIlJO0OcC?z~8q8aCKocq>J%{fWkt0AVXRs!^58OZ~5OZ4v~3Dc~g|$j$@(wmcVzJ zLVD=yh?E#~8U;dXe<(Y|*XAVuUr=IZ;rN2Z&`YZ$44Y?tjIr2DyF!RRTD|-+n8Kg` z`qFq-|_^`V+^kuL#T{3{_tRpl!WAzYtv6Hd<@#CV#9i-k_ldf7f}X7hsGN3?D1 z;<~tOE*k|$WH<;WN(xsDuE_Y8G(nUP{k{8PS8UhSu-YXM{+0jBf-VoSEWbA!O`IOp z_j~aDvKgw(7TE@027^uill>&xT|eGh^_c{m+|3#5nGE3`7$&$C%BRiDcF>FC$qgWpMjn+~lS1QDwOf2`|zJ*UPI|`m( zr3uC}t0}3&e%P1GTh0Sl&fiv&OkOfL{wZvW`QO%Quk)P?Otll^lwQd&td8lqTpTcg zr3pegf88DV33FEyyH4^4~)yM0G~e%Fd#3ldVw7|przVqenIy2#HZ zPfSDlJ9#_WfgR354D>1|-MouVE9iGa&!HM+FTRqjv}nppleH!vA-^5(y5PF*z&Sq( zal?lGR(dxN-!9A|!<90xU=;Z+WB!C-V)b`&MYNYktbxpQqPww{X3K}UG-~S8xW?uZ z*cp+z{JU2EA3IBBW6d@Zh8aMzndA7zmq7^op_`G?=Reb&m!a5ZCuCF{?Igt4xMHIY zV05%4hVgBbBnKW6A2dwO{cya)zau!s@VI?*XU3{Xz#KI*71hpFpqM{N6pN^gx7f4W z(a6YaTs%17W0-cVje4$+vyI*(_Ar;Nsu7&6OI&ge)XXl1 zAz{0tm^lT2U&1Vxm=_PB+7b~AO7fIE++SdyxDO{1{xLWnUg}UE7QE)olpj7{ur{OY zeFqEGa_>QCRQtJaS)(s$zjua|sk5=4kdbNHOB+DLz{NzF7~TYewnGgN&7TUhp++R@ zibuZXUMXQPX01hRy*_8i-`|$kGgQzd(>Oxl(oQV8K5DjTj7w5(dJI7-i^Fa$dut+?IsO{X;n9=0S z{hg;Q2sIb(ijClQphpwM)Y3zQ7{7IuKVcMIU9l*Iw63VuWEL&$ zOJi}F@N_1tIgOHb|#YCfVqZ9P36wGzXp`hi+U~KQSIN+Sq zJEvm%Tdmx;N%k&?VT_gAlX-5}Uxc8It;syq)P-XHh|qS}Q`o=-0eu-tSldF>LO7Xu z0S4`-q6lwc@`}w|#x9N0Db4IU_aIaW&gl(>u(xegc1$(5#@%OFZTtv>!AQBpmN=(v zlnfS_r7;RDb&Z5bxP;1taET2$O9x@esbZ%-J`WPu+ zVyP}bQBP6vyQoJiUn#uGl7)M?T?&9;HLBr)cFq0i(4?P2Jbqvx9v! zhOUX@Vl-ej5UE!8JS2&~X+XTXqr-f2euBYArGJjE&Q|z2`*Pdn#$2_iejh(meOuacT*25Z`wI)w|F0qZ(+H191YloQ4c4{tU zw2kf6c5}Qj0{;&lcocYN!uR(UFPUJd0hzNoBRzzwbd3>Rqe1jS=;GY|%5$`cSZxn4 zrae3iQ@T%Ya-viSsCqj$=>wd_?+7q9u^U!`VBcBcT&jiO#4%Bd(WObzfv$A(3!@1JbsngF z(Nx4g@1AvEW&X`r5`kWuE1uT~+Vc*+Z3)#($uOHWZXCPaz+^q(H6dxRLpn-t9ILdL ztkt2G!NcbinwapXZfm8#71NPI$8(MLb(mb{J%4-PY2Wg;&C^&JN)lqgyDm=E@3D1M zi|%j^gAU2?%&01k0N$hS*G*q9rv4G*HQ z_&^C`h2D4`tLOYP<4Fqy$V-R8FK;$RP0lE@Jo}*&AmUPaD(! zQm?zz-iq63`{94BZ+PP1TS>RJ&DiOPbkaP8AHRwI#c_b#B(m0}Q21NPn#bQatXM*^ zfy|n7gVE(4WiXr2JoJ8uc&O|BDtTcI?I`fC5iZ@4Bh!Frzmn2LYae6YCk{Wv4gj>p zlWI!Vmz7Me8VipN=UJ*TY2ZZ65rIP6j)_V6q*Cln#i0%!G* zTSk2;%((A?ep&QW@+bcfpO4|`U-%~5JjV5Ub)>S*v&o0wt1*8N34K7U!$)DjQj%Nf z-5L$V6B#Mz<3+{Da8wV5=w1$s+c(8bN(_7OySDVdIXjaff4BAu=Lc5=J>CWl;UdeV zsJ%}ljbJ(NEkXqSU2cz~i4M0p?|BC!8#T$Fm@E8nUgK; znGtICg+5yCPwo<$aeZhf_b$F4vnLS3yr@ABw~Zp%1#&s18tFY`kdjhn^9$E261qAl zf4Gnd`NU-TB=oXm6=#9VDa1D7J>u9_Itd8-@#Ws*7x7s&ha;k?-a~{oIKqV#1jbuX zRh>C5gld^8Wfw#)PgNZ1N^d!<5J;eE*Z_Ixh=-WdATl*eD&n(!hZP2>gRJhS&W^4y zwjfxWLBC=17ZtD4&gs5YncFx+s1ehaFhD`VFI{^@{>o3r7oNpP#mH?DV=QY}aDa%2tlQ?i!!`m4Z7c@OA)a;%w>HRKW}K`yWq zVi5_!WFX&@(C#*MmsNT}QJqhYw*9R%iSTpo?oTyX%}A^erlpERl@2{PM`~LfM4!=-hc#{`EJ{u$!zgAxV`|Bw@lW)3xJyGAOfRB< z8cnC!!!&Vo3pzs(ynrxpQH-V1-6ZrcdQo9#0y`G@iV?=`M~lmL1C7R6T2RSiherRi zfUcA(J;qQOtrPxubtmbHB62b9T7usPwMAgQs%~jA9wvLA#Y@mDb{GufAcsa~pb(MW zX5BzL@2*fMdofiABK>0InU=7m+~zt(se&eYL^Xo2YE>_U!B2;~N4&=NAEgkHvIW6| z_gRm3EfrvwY;=8#vTr?dwOvEN9^xzD=s=5z+d#rTUV@PQ76%2RaZB}J0X(zbqaw-# zEKNw#VpRU@QkeMg!jE*4*1@f(0)w&vJ#b&q)GXGTR!@bCur@A@%iq*6G%09*ErtFl zYgCQ5)uH1#xn017CCGWcMmu6lwT#^5Pb*Xk>7ZS}vq?U|yylYRLItT#i=lbIev~@_ z#y+I|1PqeB*v;ed5!&EK{_3X)rJxhuz(V=y4)*PkakzQICw@L=(4`*=N721QsB?z zkT(0|qUMaYX8f<#iFZS<9O+i)?}v*j3;2`Yl7QdtZ0g&9ZXFr?zs>IxALADBDmCOr z@6@6h^7c2b6ZrkQ3wM4?$L4BM*)o4r3RN%`Pr2stmqu`idM|H74G#=C=YMB2wt{LJ zaablFb4bx}s|>E!lEu&5-0<;Szz3KytqlqEk3Bv_B2i@Sln3dLq1U1Q^WWF-6%?M$ zE~A-J>3CFUCgi#|tTSK(R@|~zt|hB@C>k3uDAaL4)w%eu%Qkux)3*L=+Ng!-CFaJoMde zEYCpBIN)-x_*zVf%=OH64an?)dWsC z{I`2@0xRjvJ#Pr(5x>k+=`q-%B$sXWH`A1t5q z96*UTMb{Uu3>9L*9ptS|nG$E(4deAYM>(Z*Q5_E1`CU^ej$P36->2Eh`3Sizc4c0Fj2q$@73*8q)Sz*CQId8}w-E;>8~eU*iCznq z)V*J0E{%gFBzDoz{jct4IuremU>;XMEv3b*6>#>uP==StLKJovve2o0N<4*;3|@vK z61F~VbC)Zo%%`pjp0{hU0L4WhGFC+z)|>c&b{}q+$)d=$Y1?uz9_+|~WEC`e*^{fv z@qJ)jBj%CbvdgMC5JY?q6!`WZ;X)jU)_ikVFtAzn{}wL%-!!J-zqV(__I57+(Q*G$ z7rxZpirp7;>z+|YS+6!^%uJL3wzhijK6-(e#3-;$(G2RDq)a3Wvy2=yL|t3!d{UrC z!C{?RM@1VhM~KK5pE3M4UF}~Pm4?&B`jh6VY6n5S0_{n(n^q`!?~nDpE>b%jXX1}@ zwe!!9Be#!qkex-9^0jc$N17@ZA9PFLu^^w+nr<* zDw9SrX35kJ*bgEb=uxs~PmqA@HS7!O-n1Y2=SFUYKDBPbZAO z{rkwine6WabYtgdiKwm`f=bqkV@{jm5hF@NKxn`KMwS!1ld%H>PAN2 zr_QmVKKCE@ZW%d3HV#^r(LMCG_Rbl<&OzrvA#Ib?`doM!hc<1tdAP8iYaz)A&@Vq^ z`)JtIOqQ<6BIL3rvBQ>sw#CF~IVorbX|D9wqmV2FuM3V$e|n6_3E;l$!Q=qce*0pC zH>C*-N|OgYpC&USFi++R^?t81`~0?YJfUf}#b6GtGm)7@)R=m>E6YxbR`$@0jaK}` zvVp!<=q?C3_Qn(|D{$Vx%1gJbY!&*Dtk;%4OVs#HFm}_iu|imvCrg*fx34t@JTJC1 zDo-W_GH3X*5-Pj_$(|guQ~~}(*+_A#GANxnD&T`>SLTuJ>-D&GVT)|VWNBl!? zy4nCn?7PRpOYlpye=ZK1u7w4z@}7pT7@q;m9*O@!AOlC}OYC2wGiQ4-t;l_P7I3DkV%&r9GHNRIC z@oi%!3d_91?xh!#^-xQ*%?c5r&4?Hb;2YE}G$Y=j9onAbqF|k$ zPk1}vqneOBRef@T!7b2ZOC~Z<-IM(7;vc5JlBB0MlE2Nq-5yurI()10e2pRyKv$4K z7J;$yH*V>{7S6V+#*n0#^@YJ>LqR%RPZqqyn#7aGob0h|!bdrHTMvc}V0Y-WjDF*z z{L!!}$QvHt#_bioX)hBoQBtf;og2$!kvp*KUH)NoXqfZ%E`F zfp84G#;`@J|MoAU+hVe|P&Nop#1d$H=)fPlZbF1EKdKLr}0z zA@kbn8Kw~``454Y@NmvBG;T{;6oHTQ@Vu6=oC@&UqQHn9V?5=gCqzipm?!wzUqmfZ zR;<%f+n93}Zj-g5Di&RIAOZwmVB_fZgQY){0&!2ij5o!r$?AE<0e(?>b`E1q8u`dY zLA7nI2V12^2L%GG2)Y}w-Jvv&J4_c%#$yJYr`eN6kiv`~yD2dGI4M;>_cnsL zi4J`je*CeBX5yd$d~e?{8+AfS^4yHSWF(4pn^UZ*NQosA()P(v{O%T}#Qe#IoO85H zrjlqsO;sbTrtc*@c>Y>8xfh-_FY)S&OjZsm6z;|_SCx{aE0*a!crEU*|KjEExra*L zNO{$u(M+Q1$Vr?SK6>FacGo6`L}730B~%TkA%=Go!-pxM5lM-MQtcGk z-;xvkA+okmD`ofpb#@g{QFZNlXrx41T5<#lNu^V|OFD;g7-|rZkWT6D?grsQq*Gd2 z8fIt&9ZE{P!@rjISMT?Kcip>ZoxRT9XTQ(h`#JA0nTu4dyw~W`jtjI5F}0ONy&UU zdsX0%YX5je_BFC4<$Or|whMDOPc^l{ZY_lz64o*pI=PUv`rz>&o^L7J0iinYebz173JRoOTi z%relKvF&CpWWQ8}b6Vj$Swsx4IxJ(r%%{j+bqtf>kXsa;Cx^+%;-UxqaI+0f)~cm~ ztomDLP+MNr#)xs_^UPOKmO?a5iw9^m&Q|K`vx1^9-s9bexIU4VOFF~oTo2-Rn0&(- zG=`E1&3YlHu&HM>-tFCHG3^x}9!}eV1uQU}IR%#LtNZQV<9$ zB6K-;H$TSgloe%(5=Q2|tT$VF|8}l&A&Bl9rwT>ZVJ&U~u(C9nTeEHm=?Rb05&k0U zC@7TP2Cc9p?IiHhZ@t&Y%F^4CfpOm6+RiYR3j4th`?~o&Yy6IH_%l-?!5~tdH*M}O zqZ>FD8A45Tyg^bz!uwGY@>-Wugz*Nn%I~RY?gy@`Nz2=p2{RX((1FW-+#VQGyJI)m z0K5o)K3Sv_;eu6Iqg!Ow2;H#|fthZ3iwf2s{1<1UU7$IPb3vYsX{iYNZkje&4G6 zw(IU?OEwMlRL`{T5j32u@gHTi-I(Q+REg#FV<5JDYW4Zo*XsI7_Z2UBhO~9R@qpY+ zO(pnd?FUP1c3#=B?Hd=@uk7Q7hgcBs4vm_BA10Z79gL#EA9|m8yS59&M%CJ0Ys4H+XrPrd(_-|@F^IYHuS89izz+g>Bu9&(De#_@`KF98g8a?>&Lt~kCI!m zFz6q@@GHcWx4+HAOp;~*3Q37NXiPI&`uMTh%I5qMnvegeR0SmgurH?u!V6edWcN8;wc_JQ%ROHf8m+ zZ^jHx4T-6@r?ug;koBJ!3pe(RdqbeO`PR!q$&k9_SsM6E6^w>!#Y^B1a$XRxd(9R< zrFoww^OGCNpzS*`ArXyw@_{mamW%>o5X2vx{JG%SmA21wrW()M^5>pz`?J%`r*6yX z<(b`kv)X;yx_=dy7go0L>xd@JRFy?Mtc0lOD1+Qylq(LE8)_jZd)st~Z6bXSNdSKA z^lj$d%2t6A&-SnaQ@*^Uo|3*SwHwKj#UGVODU{fg{}+dtHT#>^uG8X|0XxB5g5*Jx zB+XI2f z10Sj03?(VhQdKj6CZ8f0oNkB)E%mf2WiXfPkw8s(@@dcv>ykw-J(dgYtv*GN8NpGR z8i~@X`7&|=5vcVIlf9(2MesTDM7MPz=X;2+s|Ip&thK;llh5NlSNlTxfkf`99Jg1C&OTPpuQ#fszb9_p#!m}a!NV>AR zc=9F6w>oVco`ug;Oo;e3PMbF3D4%*NY{)Dx4vjhR`_^NLYkX^}cQuU4`wXE-bj{Fz z1*w=w6t#^g|0}I%yNOa`KCraZ%W(c(Rlm*|jBW2GS?lFupRNH|$nDW96{#+Xt!UC^ zzcLsVv9&l$#~S>e`-2i88?C%6E6ii8#3e*V2)0y9faR0#gqn9Zz*@tbSDepy=LxAU4 zxd|9GS-*PUem(|XN;f{Zn+LbEUi{o2b0wF(BLI1gh1rXWmHde^Cb{wI!=g&q*gdGT z)r~6rOsOe0y2;xYC$mf%4L^BuNe$a$V*A+2c{H+`aFo@^%a>?ejgoaeeoWr1XWa2E zzh~9K=^Q!1)RBqATfcXde~I5LcD(S#jZTJbLWRFKYK?p;i?Gf4Gj(tUsxV{n4fH8 z8YAB@Xr-xMb&MjTP_1=24t`kbOofAmj;#bELNOlNX(JOB^UUbV?-UVWIbYT@y}mq$ zwY`MTu0G%VWLsO>iICYsc>dxcgAJbWThQLm&dCM5A`-CuvYIl*^bz@c4oHt z@)|~edANCg_HZ;%=R2d-`NKG#FxyuNWL<;kGl7$s*@Y;xk_K!raNlCqP%b^^>;gIn z!a7*6i%k)Zhs%S@hVR=e5!8;K!lF*1m|${|oocyalRnVP25*k3<#W%a@DqyZrR{im z#@>vVaL;Z;<=~st0=M(iDHc9`_FN%c>t5;O{JZpYZ^^v_YG}8e`ik@x0wgh{orl-V zS|Y7S$GGGVa4!g56#e8%qaNu?`5&_!;=E_E+5PmO_6CT{wnhkSn>?feHh^(9)m-l9 zFt>jZ@}L`*Ta#C0$fpRPiRYk`>3?dIEFDB`HHGE*zN{^wQtDbkfe9g=;;(6*6ikf% z=;Jvf)*=cU>sLZ_lf5oTboUnxdQ@a6g|TFwEq}u>22Ru)mdv7NADfeShXIrv0Uhs_ z(54&sw;!_RKx|pv&nGhYcN&S&q3eY1j4d4R`nS>DXX~A0h2J+Pzn)VgZ?^n%Ik z?`C+Ij&Bgpo0Ap|^l?`FCld#qg}N;TkI-g}VAF@lF-}M zo_=)gZI3`OD|aayen$STVyV(axzzIQj?!N5|aXT=)SAuAvu zGK@P7^$g)uAH6C~1TNul*KNm6xRSn}TT*^ZbkX*BGHsJcGm2W_0B-U^2V9~U@${jQ zE6elnDp}LrxmsG}QVdpr$*s)CWu$EDhcMk@n%9Lblwf}%85dADtNYj}T3RD>|GNJr zwt|CVoqA$eGGle_87`mr27>fj1+qbdn3s*yuA>kRu6~UneB`JP#Fn~~7wA^*gnEr{ z$U26ax2nU4*;-xJ#!OV4kl_m+kmxt^q<<*cA>lGEl9}w9II>*Bx0lp25%6?n-32I@ z&9DYA3Ji)}RziNshsIo$B|g@un%iCeUXJ%NBgMnOChLxXA)<f_#be_5e*PV^L(4sB6HF825 z$%BplxCJJ`g-BN7&*w?;Olmj%XN}%`eM~EvWa}?IrX3XUdk3Pds7d=F#1BXlxztlwj zMVf2kbz_Qp@uc?awA$Be!Dihd(eg~GmqH6nJfH-qL;l5QeMDHW z(`{D&&E%ME!!AS*mb{VV5+AubjdX}}9lk#r4DU-7Z2~LXS8AGd5xndivrMB!3s(w` zyYD-#;uB%Pfj(k%%$m`(QjXhZodIU&g_>eO$U{o`U9xo#7#Sj8{|(22nV@FtLcBb_ zwbP|beu+dV^Q7p9pvdHJvbJi{hZ@PIntwoh- zlwretzfMNJYht6!1)GX?7M>To-OuPW-G97bX0oO(HkIt5jpN&3OYfw`@S(EIM}hxS zRPL(FR>)4$%5lO8e~RrCkapf9*(>CbE(bBQf>K2%wPic_j)G5{d|5c(;yz6rY~lDW zwudaSXPjxtpjbVtaAv-V@fQ`}Ng%<~)M>jk-mgS0Qp zKPjnS%?)OQ``XE(b1V5xaJe*v$&QQ1)&u!SEfr`Rv27EMFH$tF)`~~aF^7G7u8Hg$ z^isMMtNFfu{!n4Dr(>@G!E3L(kXu(TK}k0ftdeV*KKg>@vpM?O>=Yf-Y-?VxKLsup zG%dR%oxSZWg19CT`9Z&`@B?wx0iG`DqhhD6KPQyJ1o|?6cH&lp-yA0d=WxZ!MKXxl z1CFB9!iwJUDF8bmVj2*JagP z1T6K}5t8UYkJz*Ka3&i2j;8|FZSH+cC5zsE6y`<2@L?_86M4h)p?OSfgrETSo4nBO zN9G)6+THtWom70mm&Bj)mvhOCwF=nR-Xg`Im7Z&r0W z+q5As$9TRXlVCl_)1yCyCR9aLLnz4g(%7moj9!`u`Ivh6qobX@66piT(R^Hi-#f&d z!&1AuI$b=>NsCL5GP`Ty^EPWvz^tFZxx?m!h)m{HU~hplDiQh^5pq#_gPY=t30?#4@mFG@L#)^>W{w)~;3py#x$~D;6RJ9VZ6Xgt zEZBCpJTynolT)w7G^oEKj%}=pNmG_wMGfv=Uq7(VB$6XW!A%)gBTV5KVMWPk9)E4< z7Z^Yci|kftPM{lzEdVLMEu&wXY7!{vH5s@%pOQdmXs6>~9o4##h@$Qu<$bQ{6NfN| zoC_;j87pJd-%Ejd6%ouLEh={L`lHOiQ#t#H45&yi?!-MkJoed458ip>_uMTTmB|g% z(z}d?*41Bh|6&{n8}{aGC;+<&Id}C>XnK?1m937J%{_M(PuZc9Tf<$@-8q~(+G_;7 zY0N`I5jbu3K805xgpA?Hn+hH!XpTdBjilG_FTduU`*zy-GP`5$D?7IOy83l9z>5Fj z!FgD!JmrP}oSKog=>xC4;OTnjspEtohF-_~2#&KxFD=Hk&()7x|CR05`E@8I0N|&J z0{GA2MWjgom5QvkB!`0PGcE^nh@Caa^s)Q~`4?SMU7oUi*eUhD~;h^+0ZacM) zq5vi32pK$7Eq+IFB7T+PGEK(Qkh+VT)#P~^&Mb~G!hGlFb$aa}46_5uK!?8e7}HHG z;m?BaRr4kY6;wkRI(j^C*^^NfOY*~sbg(ouIkK?8Mp;4<@vrwcOQDfum@D(74m3tA z5Zg`kNlx)8tg&pgQ7~PK?dbU05{u#VBb=J0NIcc?d80m>TI&fM41Jwy2cax zBZZFUmpqFhuNQk0u}>^}2JU|a?Pu2Gv&?#&LrYaMy2GLzVUh=_vD>qrJgp`~v*Bv) zB7B!9>qe*XvU>J_vaUUv8}7$-l$8F!FAm;9=N^j7ciAipa(6$7Ho40vmlzOA`)2v< zafqyXub@*leSLhWdVRHbWqQkZqEaX>2MPedjDG7cL_sA1kN^PK0Dz0%r{^a9Jb0`~ zrf)Z7)gQ^h&H)7VbOQY;^=mWgUkd;gWJ%f)Vr^&R=3)-DbA-6^aG6_Lg1{hT(b0wL zpOEN&Lkj&HBs&Ll8;~oPlpWN;+{yJH!I1j(OX~d_FsP#=*vT9M0{Sdf5Z8mZ2P~#adL6AaRIshuSma-sPONQ9G%>p96%7a z{{ufue}iKUb~J~A{+XZOStdgLpZweo0;c=j3?3joOD{j= JsM2ps{{" +foldername="leRepo" #folder de test +filenames=("texte" "main.c") #quand main.c n'est pas compilé +lienClonage=ssh://git@git.jean-cloud.net:22529/eleonore/pourTesterGitUpdate.git + +#CAS 0 : git cloné dans un dossier vide sans tag +#if it exists, delete the folder +if [ -d $foldername ]; then + rm -rf $foldername + echo "le dossier de test préexistant $foldername a été supprimé" +fi +cas0="true" +mkdir $foldername +cd $foldername +../git_update.sh $lienClonage +cd .. + +#vérification que leRepo a été cloné et qu'il contient bien les fichiers +if [ -d "./$foldername" ]; then + echo "le dossier $foldername a été créé" + for file in ${filenames[@]} + do + if [ -f "./$foldername/$file" ]; then + echo "le fichier $file a bien été importé" + else + echo "le fichier $file n'a pas pu être importé" + cas0="false" + echo $cas0 + exit #or die ? + fi + done +else + echo "le dossier $foldername n'a pas pu être créé" + cas0="false" + echo $cas0 + exit #ou die ? +fi + +#vérification que l'historique n'a pas été importé +cd $foldername +if [ $(git log | grep "commit" | wc -l) -gt 1 ]; then + echo "Plus d'un commit a été sauvegardé" + cas0="false" +elif [ $(git log | grep "commit" | wc -l) = 1 ]; then + echo "Seul le dernier commit a été sauvegardé" +else + echo "Erreur dans le clonage, git log non cohérent" + exit +fi + +if [ "$cas0" = "true" ]; then + echo "Cas de test 0, dans un dossier vide préexistant, sans historique, sans tag : OK" +else + echo "Cas de test 0, dans un dossier vide préexistant, sans historique, sans tag : ECHEC" +fi +cd .. +#CAS 1 : git cloné dans un dossier vide avec tag +#if it exists, delete the folder +nomBranche=main +nomTag=debut +if [ -d $foldername ]; then + rm -rf $foldername + echo "le dossier de test préexistant $foldername a été supprimé" +fi + +cas1="true" +mkdir $foldername +cd $foldername +echo "$(pwd)" +../git_update.sh -b $nomBranche -t $nomTag $lienClonage #avec l'option t qui redirige vers un tag +cd .. + + +if [ -d "./$foldername" ]; then + echo "le dossier $filename a bien été créé" + for file in ${filenames[@]} + do + if [ -f "./$foldername/$file" ]; then + echo "le fichier $file a bien été importé" + else + echo "le fichier $file n'a pas pu être importé" + cas1=false + fi + done +else + echo "le dossier $filename n'a pas pu être cloné" + cas1=false +fi + +if [ $(git tag | wc -l) -lt 1 ]; then + echo "le tag $tagname n'a pas été importé" +elif [ $(cat texte | grep "0.1" | wc -l) -lt 1]; then + echo "le tag $tagname a été importé mais le git checkout n'a pas fonctionné" +else + echo "le tag a été importé et le git checkout $tagname a fonctionné" +fi + + diff --git a/tests-manuels/pourTesterGitUpdate b/tests-manuels/pourTesterGitUpdate new file mode 160000 index 0000000..0767da6 --- /dev/null +++ b/tests-manuels/pourTesterGitUpdate @@ -0,0 +1 @@ +Subproject commit 0767da6236479ef7a3e43ec6d5d74f0663901205