From ffa02004b21f24b14281c30045139be61075b73f Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Mon, 10 Jan 2011 21:28:46 -0800 Subject: [PATCH] Test cases for libdwfl vs prelink. --- tests/ChangeLog | 10 ++++ tests/Makefile.am | 7 ++- tests/run-prelink-addr-test.sh | 87 ++++++++++++++++++++++++++++++++ tests/testfile52.prelink.so.bz2 | Bin 0 -> 1826 bytes tests/testfile52.so.bz2 | Bin 0 -> 1444 bytes tests/testfile52.so.debug.bz2 | Bin 0 -> 1672 bytes tests/testfile53.bz2 | Bin 0 -> 1687 bytes tests/testfile53.debug.bz2 | Bin 0 -> 1897 bytes tests/testfile53.prelink.bz2 | Bin 0 -> 2192 bytes 9 files changed, 102 insertions(+), 2 deletions(-) create mode 100755 tests/run-prelink-addr-test.sh create mode 100755 tests/testfile52.prelink.so.bz2 create mode 100755 tests/testfile52.so.bz2 create mode 100755 tests/testfile52.so.debug.bz2 create mode 100755 tests/testfile53.bz2 create mode 100755 tests/testfile53.debug.bz2 create mode 100755 tests/testfile53.prelink.bz2 diff --git a/tests/ChangeLog b/tests/ChangeLog index 0176fb495..f6aee50b0 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2011-01-10 Josh Stone + + * run-prelink-addr-test.sh: New test for prelinked addrs. + * Makefile.am (TESTS, EXTRA_DIST): Add it. + * testfile52.so.bz2, testfile52.so.debug.bz2: New data files. + * testfile52.prelink.so.bz2: New data file, shows REL->RELA. + * testfile53.bz2, testfile53.debug.bz2: New data files. + * testfile53.prelink.bz2: New data file, shows ET_EXEC remap. + * Makefile.am (EXTRA_DIST): Add them. + 2010-06-04 Roland McGrath * run-unstrip-test.sh: Also test modifying the file in place. diff --git a/tests/Makefile.am b/tests/Makefile.am index 008008acc..4650a59e7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -83,7 +83,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \ run-disasm-x86.sh run-disasm-x86-64.sh \ run-early-offscn.sh run-dwarf-getmacros.sh \ - run-test-flag-nobits.sh + run-test-flag-nobits.sh run-prelink-addr-test.sh # run-show-ciefde.sh if !STANDALONE @@ -139,7 +139,10 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ testfile44.S.bz2 testfile44.expect.bz2 run-disasm-x86.sh \ testfile45.S.bz2 testfile45.expect.bz2 run-disasm-x86-64.sh \ testfile46.bz2 testfile47.bz2 testfile48.bz2 testfile48.debug.bz2 \ - testfile49.bz2 testfile50.bz2 testfile51.bz2 + testfile49.bz2 testfile50.bz2 testfile51.bz2 \ + run-prelink-addr-test.sh testfile52.so.bz2 testfile52.so.debug.bz2 \ + testfile52.prelink.so.bz2 testfile53.bz2 testfile53.debug.bz2 \ + testfile53.prelink.bz2 installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \ bindir=$(DESTDIR)$(bindir) \ diff --git a/tests/run-prelink-addr-test.sh b/tests/run-prelink-addr-test.sh new file mode 100755 index 000000000..9c19988c0 --- /dev/null +++ b/tests/run-prelink-addr-test.sh @@ -0,0 +1,87 @@ +#! /bin/sh +# Copyright (C) 2011 Red Hat, Inc. +# This file is part of Red Hat elfutils. +# +# Red Hat elfutils is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# Red Hat elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Red Hat elfutils; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. +# +# Red Hat elfutils is an included package of the Open Invention Network. +# An included package of the Open Invention Network is a package for which +# Open Invention Network licensees cross-license their patents. No patent +# license is granted, either expressly or impliedly, by designation as an +# included package. Should you wish to participate in the Open Invention +# Network licensing program, please visit www.openinventionnetwork.com +# . + +. $srcdir/test-subr.sh + + +# testfile52.c: +# #include +# int foo() { exit(0); } +# +# gcc -m32 -g -shared testfile52.c -o testfile52.so +# eu-strip -f testfile52.so.debug testfile52.so +# cp testfile52.so testfile52.prelink.so +# prelink -N testfile52.prelink.so + +testfiles testfile52.so testfile52.prelink.so testfile52.so.debug +tempfiles testmaps52 + +cat > testmaps52 <NNn+G-%PF0000027@2~000004FCWEpaV@1p*1lXphG4>qa#3Q00000XaE2j27mwn z007WrXlNM#&;S7d8X9SkF&bzLjDsPg37{GSATkVq$jH&4GyupN4Ff14AL8&;S4c0000000000000000000##AL~FN3@{jQPJf3vS#JZ z%BasWov04E0*QkoAQqTFAk70rRmvKyQnQdQR4|%rQc`&-%N%7XL_m}=lj9~UC79x_ z`r@KWjuxqmwVsK&6v3dx4H^Ya$rmFxg3n>OJGY$H!W>R1$=WKn>LV+adV68E!rV!? z8Aw_PYfKXLd666<+^EE<8530QCZSLSj`uhujgFb|bUAWJE7>TI=Z^9g{CjIAJf!YkM4Li&X^ zD#(dIqZ|?#9S4;H)OM7cQ&?8apfVHD)W^6GX4*Uv#AFsph}3BgC}-a;9W*0S6=N{W z@g9soFr5%86-@!6GWjK#t;ESSk2GKF(?pHgMLne^(1NZqu+oD~ips$Sb$}?u(gBSV zV-iXMQy>KiAc7P_MBu~_3I`Sifp{W8K<6kRqP++!0uhK3lPW^02aqD1v4};MDu)n{ zAkC-@s>BBrfG!|V+tnDNvoZo;vTPvb1b~qW1_TBuK@T7!jG22;F-fzKzC4JwPF5l&qDdG0tDGvNhd;PreMtDwq`ATWbHlo@~xs3;;Q=&_ie`xe3C0Oo7;`6yk|K^zw2Z-A z5U4bkAnl0xt!<7}G^rARp#=~TsJu^(?589vD!I|1=s{VUD2-gB&2DOC*CkQmOP5YM7{zWo(OWsjRQCd`jryCWw|Il!8Q=M78Oeh#*zYC}I;B zAn!B~V`~J^US9{f0%7>^aGqr-3W!{(N>w)1+Ol1y;#-ol zl)}e3h9ZqM(9np}=o*ybnu1bi1uYyeT_TE07*Qho1e=;#RU76N1SA-qAmu{C9%Zx- z6#F|Nrw-3y;9yIm6>s24*G3%@w-wj5CjQug3<7+%M(uQj@kyBia-W(E`{RWXD#|IU zC@G2n;s`c(GYV#*X}BYP0dbWBc`fW(Baw^Ul{LQeqUbvjgA`Sf!+?CArqVbz|CEdT zxufCCU4ntKQ2{SA20@v3a&EK7vq$K{m+WC!@l#)#LUA~w49Jl! zbWfNvs@BgC4oF#@1-XtVA@!s@YfIN+Eqc}*Tl1|Ig1q!aHM25H!S~DYXIu#t~v*DAJm@p9vmp z<}`@U$T(QqZUs9i&4v~WB)S~Pr!u~a5}^_0oRire`XTbWDTp$g0rjUHX)0J%zC@`q z|CZR*2J3p3%VRV*NxSiXJm>K~eo)fFTP1CyCpf(Q9|qPcFpt3!c`nd>^DmdPa&lg$ z?m4~Adr>FtW2^dJrC6%7Wh2nYAICfr#ZY^-?hbIUA}BjDJx@>xLr)Qgz@Y8R1~%F$ zgaY=W^J9p^zpu!7?=E-laitnM31}$3(_}(Os?*B(9ED}kXwaf+XkutjKgc913ZcAO zylxE5Wa3;L)sU!l=zl`tU&KE6RNfWsVx`q`8fs3{(#jyVRM}wgwUZtNU3!tGlbYT~ zJ5hPh6KzY?J~dH9HB??afv6+|7u2iXLJoT`6lu>f*wjS9UbcLrS62#aawcUgS-qq( Q3P1R}k}1N3g97%+SWp!j9smFU literal 0 Hc-jL100001 diff --git a/tests/testfile52.so.bz2 b/tests/testfile52.so.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..453759cd2816e92eea4295f150c3fff9089d0f92 GIT binary patch literal 1444 zc-jG^1zY+;T4*^jL0KkKSraz!t^fo0|NsC0fA!V>|9$)Q`)~jM|9tL#-N7FgO}u~T ze^O6v=XKBobq@duV%1?oL?)4x@{LWVQR)EEplHmesL%oB0i#b)0ib9D)Mx-`F&Yg4 z>ODuO2dU~B42=&^WO_giO#%ed2{h9RG;dL)$T9#88351&AkY8?fO>!$0004@pbY~+ z000OYG8$w7lO}mCPO1ZqehtkXk^I37=t556CeNvj1wk+001-qAZW;GkOoYe z28=^POqiJrjRuVxWC5X*BM4#)jTlUT02(k%ng9R*&;TSzNue=Q!81`FQ^`F~N$LP- z13+j4Oqu`y02%{B)byU914e)}0L?%E0BF-k_$`lklhleWCvCZ=b>|7}0RxF-3ImGM zp45P)ql}>r;_9}YtX(o1GjQJFQyv?SPW^*LJK?o{q>vHn{ay=xy{(J^GUG)qZ5$&y znzU5bRusxGY57X#d3A1}RaBs@UI7V@z!89PVa zhf9H7p;?{>=tfzeubP>Zk?YGNbvT@DGSJL?H0BqRly`}f(;pnC1BV!hLK4!o+M}pM zdRvUkK`yNFBQ%RBDJ7`ro^#6yBiN#OHzqyKUIz+QmD#>M6V|MQ0Tagp#EfzW4^#;m zEJB3RO{WB)ROq-iZY_#aqny|vAq|;$~kO66s5dfipqHqAU zEhH;V4W`7o){%Ld{McCxS6QRW=<6lnOFx>}XJ~CSEtah3;7{9oOTZU7I4`sX-3yZJ zte!N5$Y9{e$f^r%b<6~8-$=mAV3u-Vxw2e012W|xz-S3m@s?3%S6wFPEmggj?>#E6 zNnB%Sa^sJSAUjsn5EJm@TR`h;ITGzfcZ%-ClEB&K0 zVA+YnK^l>YWzEJ+409(}T39;!Qd_fd+vDM16e-pQG)R9Rd%ab#D4~_eyh31r$?YSBi~9sqO|cgGLWe6jjC9fFD;iiqbD|)W z9w0~o6H03<1*I?xi4VJ76TToDj>Cg*7*eJ767jDO1v7WE7bk?LDsqsk zi%^US5~&yJ&PE9F?3fsr%O(|r2I=}$YfXC9L3EJ_WAgxkQIdeRRtQ88;Dx8^3l|z> z#FG!YaIx^9Fi1qFnXU(faTALeahZ<=;G@M>_cfF@Y{_D?j9RuBbXPvgmBE#3tNbei z1kDPlcldME7?OVT19o84&}7By90&YXxAVo*UwP$(1`o=XMHM9vthE#{VfeoKQV-Jr z4dLuLt+*cEtctLO;pgf?yIElcC@?ZGNKi3D^JEuLWwNwD*0QzzL}Ko@d%9-j2HCNJ y?r9K(LY!tb`Xa{i2;Oy(A|i}&TOZiY|G4hi8_%AB<1Gqr_`8xR!i0dCw}o)Hrj*tI literal 0 Hc-jL100001 diff --git a/tests/testfile52.so.debug.bz2 b/tests/testfile52.so.debug.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..38088a67f737459cd1e9907dbb27430340600b84 GIT binary patch literal 1672 zc-jGo26y>FT4*^jL0KkKS*0_P5C8^2|NsC0|Ns7H|NZ~}{&~Ou|8@3s*{o9paEVCa zWRNETp-9jL(mOZ~5L%+vl}iFprb&p?OhG*(DmFy*Hcdy8Jx?k6jG^T{Kmasp`ldhu zplARzXwW@CVh54{0j7zf6HPSK^wm!Z4^z|C007CRhoWdUk)YEc00x)-F*& zPGsHQ)-7E-^Z^(gH4zQV-8Vm5Np^d9a?vBDQmU{3q6kh10E6g2fB|CLr)usaMl(HR z&GD6s>CJH_MB*VFWI%uj#8d~A}_L&NQ8{O$-8}wlW*P~WzPtK^_sk?&Y&kQoTnAhTK5-P;0H#P}Ni32R zBP5!PfrLy@4F@B30T_W1ghUM+N*fgsqN>a*HA!SCvRNf2-64ZE^>V})BPok(FQld2S=y zd)RcM8LNd%l{)nYz`$nnY;E(J+yQUuWcL=E6!+ET3|_Ndi6MrA-+&E zl@8}6f~7=GDyC+Yh*5@eAgi1GY51rrkN3PCP2~P((O^O`bd-@$n$MG?lJJ#8!^Li? zU32&LxjfH{-_?)t!9){)sHL)>dZB3TotV1XvkGJkP}=sN&f`GChh#hb55FAQa^}P` z=3z9DlFBFBu%c@nH2(gL%V;SL|5o018q8e`^ntp8cpF}liWoyh<@MToud?nK3IhvT zjRx_hU}4SY5kGClNsfDtT^VVlg*@e3kZy8}7EGc5V1^C@2{LYKU~F%bn8V6sKXl^~ zeCNi-h4V%P?`*d&RK}%0;*TdjB*qhQfheAZrCp>@de8**6viVU{VUAxcq| zkjVqxUyoJ-RZ{pkn;>3s98>hPWHZbFO<_UH#>iGwy7n=%6D!Uq3L}X0IMhpx&PHzt zxRrCE%7*(fA2zWN>+u#*!yLXmFsYHVYopY8iB$gC9X<)Q$MiT|4a|+*Ls@FvFp-`; zh!Q~X7(6_Ct1GeXQb8fXn*3ynkfbq9yT%@d)X{(pCVY@5%qd%in9I>04LE`WlgP|>$kv)q!q>aVmz6=I= zNw)$sp%;|F!qxbAp~eK5U26KTf`A}RMM-~e=Rwzb>e3!{IyLTQL@L<}ib#O@5!pnP z4LHtPTx&XJ*~wLh3m9N}|y`K|)hJ{WAYGZ`tU*DH$yL;#Qg#^|NU!6jAM z(vrs5rTPSD*=MA-lCsS97EJ5`5px8l_DUnP{1m3}-`>Khl=>lF39Km~!b+8bwJTRd(#}Efh-s%c~$irXqi z!$MqK2!~K+6T(DV3@l**8btM@i*oOYU>L8VS+P*{L8IOhvHKqVupslF~MughPQ+0vgTCO zc1dPa{(rZ^_~WT#1yN90XGe{-s`lPqyW7|;y{$CkyNV1QPIio0l`&~kd6KuN6?!1! Sz5y-&i@744C`eM7$cO+ZLJwj9 literal 0 Hc-jL100001 diff --git a/tests/testfile53.bz2 b/tests/testfile53.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..2e0e74c8b407fb00faa1b1e6fd1a603f03b4d10d GIT binary patch literal 1687 zc-jG%259+0T4*^jL0KkKSz6g59smWNfB*mg{{PnR|9}7Q{?Gsa-*oS9$U;%ThEDJ3 zY0OrB|KHFBK6g8X9ZcP}?mL9pu+-5sOhG*oJV6>}Q%yZX%4z8UdW|vw1|S+9Py<71 z0iX{G8UPId1Ij%|s4{8kqytkzXqcF%wKOTSQ&R#xAOHYl0ib9AGyrHB13&-`15E$` z4F*5}0My76Qh8Cd)ICO-Gf}34Pf#?|MiHQB4H^R=(UFm+5EujojR0uSF#(VOXc`8H z02%{EnluKOg9rvjLqVaY5MY>^4FEI%0|d}8OoIr}WHi$WlMn+ykt7pSCK0Bml)^yJ zG7UDP)byD>CV&6{dTI|T=>tFjG|&w+0BAHGpa1{>X}F!!W76?v>}8|h)veIX>Sb2g zowf~wV;Vdr1TnVSWi4dl;wZ_+rXj@UQ@pXDifM{v1c_EBo+;uZ1B~;6wXx0lmlnqz z35rc8PX6T+tdDog~zzD{`tpqIqwMsY0!42wBcVLL5uRmXwFm(?Ki* zhL-Cu(Pb3JbqjhazsvOc*iT9zK_Vd#wj`i~#DpLbf(AWDN#-t|ru3;P0r>%nU>}`W z>j(Gnx?W5CDeb&o&GhU?LXB(3fEXFwSrc&$|b+0!qV4XG4Qn(_jlplQfc(OT1_lnn*#Q(hE%^Ie@^*yEqD$pn?Rs1R}(qbIw$&Pc>4b4$bO=Z`Nr@ zOMcP|cFcT9B@+`h$vyi;`_YR#-X1q18w`Ys+S3hAU6=l+hb)yEAT&TphMZth1%^gp zOZ&xWPIw*xG4Q}_P&;y1S*XA(4e7OK^&4&&HcBN48WsheTOe4o5d(Il2Fd^p4#Ld_ z04PE9HhUJ7aPVsKU7IWm>!EL6(BPMxolHKJmpTCTAc73x0xhp?^4~~2I7_&4RM%Wu(e$Ryh2eO;v0tv9OjIF~yKt8cfi+gC?uGm&&S#Tq06{l${G8MnUkPBT#Z? zG>DRP1RR`p@2zpw(o$DM?1tYLFnFz3CM8Eoi6o}5Ya24$9OrI$&(z4YR(Q(aDBc|Y`vw2?C*&URL;Z#UO z+3i`hhW5DZbP}!&VAD0HveKp(Lk1!v7Kn~XBa%#vftjTylLX!((jpzQR@wW~B&bg` zMcMu%?J==0yiyOqDbBQ`Q&Q~OXD47mIm-z9C;Nogex0M^x+w=)M38L8DzoiCY_;hW z!n#FK3d*WZq{xjI-(k0Amkaodxb^T9%rI;f+E2{=Io8ZY2%$hOQZvYdQDWc`2ytIP z9IjflwOO3y#y+A4AT6mSW(%3-T)>Q8;x=fEUa@YYL}vGTSdnX>>Q+>uTcBo?+vhk$m4{!Rb@ literal 0 Hc-jL100001 diff --git a/tests/testfile53.debug.bz2 b/tests/testfile53.debug.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..ec36e98253ebdf4ea97bc8bde96d1149ebe50dc5 GIT binary patch literal 1897 zc-jGJ2bTCkT4*^jL0KkKS)>&h>Hr7$fB*mg|Nrjy{{R2~|84*O|9r%8WFEmtk3?p{ z=>~RGVhP{|oXq+`*jsn5UhV5__p{Q14G=_3o`f|&LV6_0vYRB+6Ch~QKpGl)Lmc2CG-v<- z05kvq0iXepGypVY0000000068MvVr6kkd?>223V{6A_a}fsn*tCX7G>MhIwO7@0C@ zk&%g}gChc9ktH=XFljW&pa1|gG|132003wMKmY&$1JnQpfHVLA1Z9>xJMLjvJJOB1 z3-|SO(Gp>VFo2=kgDb=p1GE)e3dl+#YQc~zu+x;?RD!5dfcG)*14atpq1ItW-bLxK zbg&j!RO+jxp=}aEmN7>QRHW1nCRR+r&sR?AP6Ha)=2>1ij#p8Jj2bE`+N=~&MN}S` zCS|_5(Z26G?`rYD8d3Ju=QzGmd-NvgTZ_2B#Z_SoM!G$`k2eSf~pyUe}>U_?Mm zG5~~wA~Q3uz(OU*tgpXe+N^cE{$@0{%-6bRnAi=b(1fa*hL8nAMVk@|rXty(s%q7V z2q%T0Fo86-WFiLGXj%osb*&3yu&Iy&Con)Z0bn8^ynk%d_S^C)r^ZpH^arimzbtTI3iC8GxEnv1C%XpELlX{Q{7|aEmAs zE(&rCSkNA3dIq-4M9l)a)Ktj-b*?89iJC?w$dcZ*6BC#}S5retAqK0VooR69z8MFC z*?kTJUuS&7d^`w7sQ{7@MLNX@il4r60*kW(ilHIWaa))d;~x2*P;Zc=iq5F1SYq7n z^h1GrVi0o}2g>m4?5EZ|X*MWjY@UV=Zy3ibRC5~B9Z|MAl19pMLubT40)iZ_{+m8o zXQUA6m?fD7nFwk@5=2>vU|~N<>QukAg&-rWio7Q=r2drL2$3X95lpn%MDD7Sajg4g zHmybzVBN;3sNxFNGN1-v!hnXv%vA1*(lZjUFpvnykOyUhRN>rIQozlb1NAD1I;S|o zv{Pf$KxJg~1h;yiDQ90D`~~k@L^5&d0_CmCZ1hOP(_%{g7Y)d`@+mZbn1m8(H~IrT zfR<&wTYGmZi?K7LMmy_Ot14(HS}#_Lq%;@Ii7L#Y4M!;13~;MDwV4-AHr*hC(41Km zxdYh%>?hG?OI}eaC&ajE=9)%OoW#}Tr6`J`_bfOIPq;$^fDGb5j<}eDqjPEM?P{?w z6$@8_91|7^VUddzhzyg(=@5AXUm9l@*i7|v5^0FS-fAsL;+;GkzWT~FV{tXYmaHpe zWN;}%3bS`XIstfp0qFBLgwzPD!}A&TB+YPAR>st zN<$M`Q5EJdrV_HKBswJEAsvFy6EnghpbLp&HY!9SWm?R3nwxz>Qo~LYBM_X-OOoI`Qh2zKb1i7>7BbrMtkjUL0{RhICKEoY$GR-7dW=nV zYN$T!x3I2AL{^}t8*9M-1&N82OqbZ?(p@W*Rv}8r3TM9>BzD;{?F%+5GuT^^xf?{7 z<}nTr?_XY7#?Lv{xvyaMjYh%@VXW3kDO6Thk5fG};zvhf5qI9P81|51x7l6AOJo} literal 0 Hc-jL100001 diff --git a/tests/testfile53.prelink.bz2 b/tests/testfile53.prelink.bz2 new file mode 100755 index 0000000000000000000000000000000000000000..b2f4dea94cb0ad482f2da2dc854bf05c53372de1 GIT binary patch literal 2192 zc-pnh`9Bkk1Hkc(8EQ0V!wA#RLostkWox#BJ?u{G2#&=~A4 zHns4|(8OgLbWQzn>&yue<-ZY8e#KHP(t*zgH>R1wr*jg;nTi8;)ihD^;BHlgf!-9( zy?TeGjE#lVnHSzyyeFErnR2G-jS;bsyaH!4O9_=|h1(g0YE2pYp-v&FaoOh$TEDZe zUnpv_eDZ6pQH}v!Vct+Qhs7HkD(i4m6vLrrd@$04s)B3e@E^YGN(;nON_W&w{iNzW z(^@N_*#$p>Z`iXV?BT~rRZg*sqZdDnnf4WB+-Mt}@|MX<1$zR!Tvb9r*5Y|&W>_UA zKt5nquC*Kh7>9R`=>{WZYH|hPK6U3`$S}X#4N~HmwqM2i<_vn@NkH1))8zb$rZgJn z%tDSPtfxU%sgLR6+|A-D6_2_5L7wmHB^$8Emq74{ipU`2#+#&*&_M+XSf=R%LL7zHQC`jN}!xV>+<}FQ!2N^W>~5uwFP3Tqe=zxccX;3ZbYMCp$ZE z)Vpjt_AzccZe9*PMAM8=pPZz>6quYtO9OAh;j^@I7?tbh?k%3a8MT&{^pnn1bLW-= z?7qJHV`vZ5VH!QbaQcMx2Tz}TQ(0(GWh=C!28UVj$KRHa@7CR7Pc0BcChRtJVtyf* zPywP$eRe^~T<)-;nb{0ep4>IWCyx@_xS3a0ZRisZ^mNWi@K&*^Y3b-3e998kh0NUd zhmBooex*;KTghbTdZUmxy_Cqe;Z@@nPcc15r_i)U3@97RXAuc1x8Cq7%yykEeXu>`YV+rr zh1U7zi^X71_MT1ezD}>ur$#Stqj%&F2k4ouu^3k;^KbyXh0@#)k$( zeMa_m>0`MPm+_#;_%yvH6oH`crcNaR9Qr{G{IxH}mwDfX7!BEr*iu=S&&K?5k%_x( zO6#ZxE;(-_Wd%_KSr4Xw+sr<11?`}d?XQ)T%zkur9rBuxk`7%{`?O5Bn><~d!(4gXnT+yRxyp-4O=4!TduWsR=UE+#ic6d#mz$Uorf`DRhUkYkJ zP=0AgY244hW;yzj{fXm4Q;LhbW-fMUvnB#OXq0p1%DA%^Tn!4-!Z_YQKTDD^KyA%V+2qi7KB<73W~i`4SLkp^}CE6cM3dePd5y zxzdZlBXSSOMCU!C1;1#)6JQr=J{dK zjK0J0X^@Rl7iIy@ph69m1sPmS^1Y?S9yL|POpC4TZ1IqCM@IawS0nKm6uJxP|pAeG1L|^giD$Uhbimx0-T5M;Dh{YpCJ!UfCDJRcb zf@=v8KG=iH>8GFQvXT{Qnytlzd}Bw!``X#HhwhhPkK}rOqipdfM|r$78CHslzZ_`x z59@ntU75Yzu4A|R>E}3@rliSYj&?%1X(fU_R}68y-KZB64GFFPF^!~;E~{}K+O6hg zrv64RqU^lV$|O2t^)2b8{<1gNR^4&Wo&=_FDw5+`LYXc#coW(Kd!U>0k{zGnwk}>b zPY%y2tl#TTWgqGg&StF}TI6_f?R>6o(|VlWEU&`61AUPL$qgSx{L16~Z`@Cec7NNy zsu_D8EYEpg=$nxL)xpNC{E1%953S)Lqy8z6!>CPJKR$J%%!Bd|mW1a9CNb*Ti`#oG zwY8L)h^BugOP1okhsg>vg!XAZ_{yCTD6u~hL4FuN*)jX{?it|?Dk9(ANfQ!f6(Vhr^!u$SY&S_no7J(?R2$ZI75XWm9sg-x!?XW|@@Iy9=a)x@ z3lALbaAS1h{yCo#&O(PM3?kaLEp5k&d|nGA$3E>!I%iuyBZhc=f%{PolG=ml(lL;-V)i%#H!&TH~JI$OPz zTD#Mb{Hx{RfW{5gAFcNW>eY_K5FSYzBXg#8Dqma>;EC(tfGpn&VlW7bh%X6Y@-LQM d{ac@iCfhthn+J7+Cw{)pQtzNrIC`#te*rkc>y7{b literal 0 Hc-jL100001 -- 2.47.2