From 92c5777880f7109af140c206bd198efda44b515d Mon Sep 17 00:00:00 2001 From: Georg Koppen Date: Sun, 22 Sep 2013 21:11:14 +0200 Subject: [PATCH] fix for bug 9084 which allows running TBB3.0 on Windows XP as well: we link against msvcr100 (which we ship) which needs small patches in nspr and gcc; the latter in order to get the runtime libraries recompiled properly --- gitian/descriptors/windows/gitian-firefox.yml | 77 +++++++++++++++++++++---- gitian/fetch-inputs.sh | 29 ++++++++-- gitian/gpg/BINUTILS.gpg | Bin 0 -> 25772 bytes gitian/gpg/GCC.gpg | Bin 0 -> 2635 bytes gitian/versions | 6 ++ 5 files changed, 98 insertions(+), 14 deletions(-) create mode 100644 gitian/gpg/BINUTILS.gpg create mode 100644 gitian/gpg/GCC.gpg diff --git a/gitian/descriptors/windows/gitian-firefox.yml b/gitian/descriptors/windows/gitian-firefox.yml index c1b2675..698cf35 100644 --- a/gitian/descriptors/windows/gitian-firefox.yml +++ b/gitian/descriptors/windows/gitian-firefox.yml @@ -15,6 +15,7 @@ packages: - "mingw-w64" - "g++-mingw-w64-i686" - "mingw-w64-tools" +- "libmpc-dev" reference_datetime: "2000-01-01 00:00:00" remotes: - "url": "https://git.torproject.org/tor-browser.git" @@ -22,6 +23,8 @@ remotes: files: # XXX: we need to make this input tarball deterministic :/ - "mingw-w64-svn-snapshot.zip" +- "binutils.tar.bz2" +- "gcc.tar.bz2" - "torbrowser.version" - "re-dzip.sh" - "dzip.sh" @@ -45,11 +48,30 @@ script: | #sudo bash -c 'echo "deb http://archive.ubuntu.com/ubuntu raring main restricted universe multiverse" >> /etc/apt/sources.list' #sudo apt-get update #sudo apt-get install -y g++-mingw-w64-i686 mingw-w64-tools mingw-w64 - # - # Build the latest MinGW-w64 headers and CRT + + # Build the latest MinGW-w64 headers, CRT and runtime libraries to get Tor + # Browser going on all Windows platforms >= XP. In order to do so we link + # against msvcr100 (which we ship with the browser) as msvcrt on Windows XP + # does not contain the secure functions Firefox uses. That in turn makes it + # necessary to re-compile the mingw-w64 runtime libraries as well as they are + # linked against msvcrt by default. See bug 9084 for a more detailed + # discussion. + # FIXME: We need sudo for all of this because otherwise # the toolchain can't find the alternate prefix for the CRT headers :/ - # + + # We don't want to link against msvcrt.dll due to bug 9084. + i686-w64-mingw32-g++ -dumpspecs > msvcr100.spec + sed 's/msvcrt/msvcr100/' -i msvcr100.spec + + mkdir binutils + cd binutils + tar -xjvf ../binutils.tar.bz2 + binutils-*/configure --prefix=/usr --target=i686-w64-mingw32 --disable-multilib + make + sudo make install + cd .. + mkdir mingw-w64 cd mingw-w64 unzip ../mingw-w64-svn-snapshot.zip @@ -57,10 +79,27 @@ script: | mkdir mingw-w64-headers32 && cd mingw-w64-headers32 ../mingw-w64-svn/mingw-w64-headers/configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32/ --enable-sdk=all --enable-secure-api --enable-idl sudo make install + sudo ln -s /usr/i686-w64-mingw32 /usr/mingw + sudo mkdir -p /usr/i686-w64-mingw32/lib + cd .. + cd .. + # First stage of gcc compilation + mkdir gcc + cd gcc + tar -xjvf ../gcc.tar.bz2 + # Linking libgcc against msvcrt is hard-coded... + sed 's/msvcrt/msvcr100/' -i gcc-*/gcc/config/i386/t-mingw-w32 + # LDFLAGS_FOR_TARGET does not work for some reason. Thus, we take + # CFLAGS_FOR_TARGET. + export CFLAGS_FOR_TARGET="-specs=/home/ubuntu/build/msvcr100.spec" + gcc-*/configure --prefix=/usr --target=i686-w64-mingw32 --disable-multilib --enable-languages=c,c++ + make all-gcc + sudo make install-gcc cd .. # + cd mingw-w64 mkdir mingw-w64-crt32 && cd mingw-w64-crt32 - ../mingw-w64-svn/mingw-w64-crt/configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32/ + ../mingw-w64-svn/mingw-w64-crt/configure --host=i686-w64-mingw32 --prefix=/usr/i686-w64-mingw32 make sudo make install cd .. @@ -70,12 +109,33 @@ script: | make sudo make install cd .. - # cd .. + # Second stage of gcc compilation + cd gcc + make + sudo make install # + cd .. # cd tor-browser mv .mozconfig-mingw .mozconfig + # FIXME + # Ideally, using LDFLAGS (and e.g. DLLFLAGS for NSS) would be enough to get + # all Firefox libraries linked against msvcr100. Alas, this does not hold for + # NSPR. Without patching it we get a "missing entry points for _strcmpi in + # msvcr100.dll". Now, this should be fixed in rev>=6179 as the def file there + # contains a proper patch according to the mingw-w64 developers. + # However, even with this patch the _strcmpi issue is still popping up, + # probably due to a bug in our current linking setup. The small patch below + # is therefore just a workaround which should get fixed but is at least + # justified as the signature of _strcmpi and _stricmp is the same, see: + # http://msdn.microsoft.com/en-us/library/k59z8dwe.aspx. + sed 's/strcmpi/stricmp/' -i nsprpub/pr/src/linking/prlink.c + export HOST_LDFLAGS=" " + export LDFLAGS="-specs=/home/ubuntu/build/msvcr100.spec" + # Our flags don't get passed to NSS. We need to do that manually using an + # obscure one. + export DLLFLAGS="-specs=/home/ubuntu/build/msvcr100.spec" grep -v '^pref(\"torbrowser.version\",' browser/app/profile/000-tor-browser.js > browser/app/profile/000-tor-browser.js.fixed cat ../torbrowser.version >> browser/app/profile/000-tor-browser.js.fixed mv browser/app/profile/000-tor-browser.js.fixed browser/app/profile/000-tor-browser.js @@ -99,15 +159,12 @@ script: | #sudo mv /usr/bin/i686-w64-mingw32-ld /usr/bin/i686-w64-mingw32-ld.orig #sudo cp ~/build/bin/i686-w64-mingw32-ld /usr/bin/ # - export HOST_LDFLAGS=" " - export LDFLAGS="-nostdlib -lgcc -lmsvcr100 -L/home/ubuntu/build/" make $MAKEOPTS -f client.mk build # make -C obj-* package INNER_MAKE_PACKAGE=true cp -a obj-*/dist/firefox/* $INSTDIR/App/Firefox/ - cp -a /usr/lib/gcc/i686-w64-mingw32/4.6/libgcc_s_sjlj-1.dll $INSTDIR/App/Firefox/ - cp -a /usr/lib/gcc/i686-w64-mingw32/4.6/libssp*.dll $INSTDIR/App/Firefox/ - cp -a /usr/lib/gcc/i686-w64-mingw32/4.6/libstdc*dll $INSTDIR/App/Firefox/ + cp -a /usr/i686-w64-mingw32/lib/libgcc_s_sjlj-1.dll $INSTDIR/App/Firefox/ + cp -a /usr/i686-w64-mingw32/lib/libstdc*dll $INSTDIR/App/Firefox/ cp -a ~/build/msvcr100.dll $INSTDIR/App/Firefox/ # # XXX: What the hell are these three bytes anyways? diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh index 2e25a5e..cce3331 100755 --- a/gitian/fetch-inputs.sh +++ b/gitian/fetch-inputs.sh @@ -38,9 +38,10 @@ trap "bash '$CLEANUP'; rm -f '$CLEANUP'" EXIT verify() { local file="$1"; shift local keyring="$1"; shift + local suffix="$1"; shift local f - for f in "$file" "$file.asc" "$keyring"; do + for f in "$file" "$file.$suffix" "$keyring"; do if ! [ -e "$f" ]; then echo >&2 "Error: Required file $f does not exist."; exit 1 fi @@ -52,7 +53,7 @@ verify() { echo "rm -rf '$gpghome'" >> "$CLEANUP" exec 3> "$tmpfile" - GNUPGHOME="$gpghome" gpg --no-options --no-default-keyring --trust-model=always --keyring="$keyring" --status-fd=3 --verify "$file.asc" "$file" >/dev/null 2>&1 + GNUPGHOME="$gpghome" gpg --no-options --no-default-keyring --trust-model=always --keyring="$keyring" --status-fd=3 --verify "$file.$suffix" "$file" >/dev/null 2>&1 if grep -q '^\[GNUPG:\] GOODSIG ' "$tmpfile"; then return 0 else @@ -99,16 +100,33 @@ for i in OPENSSL # OBFSPROXY do PACKAGE="${i}_PACKAGE" URL="${MIRROR_URL}${!PACKAGE}" + SUFFIX="asc" get "${!PACKAGE}" "$URL" - get "${!PACKAGE}.asc" "$URL.asc" + get "${!PACKAGE}.$SUFFIX" "$URL.$SUFFIX" - if ! verify "${!PACKAGE}" "$WRAPPER_DIR/gpg/$i.gpg"; then + if ! verify "${!PACKAGE}" "$WRAPPER_DIR/gpg/$i.gpg" $SUFFIX; then echo "$i: GPG signature is broken for ${URL}" mv "${!PACKAGE}" "${!PACKAGE}.badgpg" exit 1 fi done +for i in BINUTILS GCC +do + PACKAGE="${i}_PACKAGE" + URL="${i}_URL" + SUFFIX="sig" + get "${!PACKAGE}" "${!URL}" + get "${!PACKAGE}.$SUFFIX" "${!URL}.$SUFFIX" + + if ! verify "${!PACKAGE}" "$WRAPPER_DIR/gpg/$i.gpg" $SUFFIX; then + echo "$i: GPG signature is broken for ${!URL}" + mv "${!PACKAGE}" "${!PACKAGE}.badgpg" + exit 1 + fi +done + + for i in TOOLCHAIN4 OSXSDK MSVCR100 do PACKAGE="${i}_PACKAGE" @@ -186,6 +204,9 @@ done ln -sf "$NOSCRIPT_PACKAGE" noscript@noscript.net.xpi ln -sf "$PDFJS_PACKAGE" uriloader@pdf.js.xpi ln -sf "$OPENSSL_PACKAGE" openssl.tar.gz +ln -sf "$BINUTILS_PACKAGE" binutils.tar.bz2 +ln -sf "$GCC_PACKAGE" gcc.tar.bz2 + # Fetch latest gitian-builder itself # XXX - this is broken if a non-standard inputs dir is selected using the command line flag. diff --git a/gitian/gpg/BINUTILS.gpg b/gitian/gpg/BINUTILS.gpg new file mode 100644 index 0000000000000000000000000000000000000000..f24bb01d5baf78179b715936cc0119761bc81019 GIT binary patch literal 25772 zcmZtMQ*b8V8!qhljcs#c+nLz5J+W;}Y}>Z&$;37%wrzaBU0?00?8^VFkNV*1yL+v^ z*OLaE4<`O7rHcdxl!$WJ9E4WOoC~f|AX(cA8d#D6I~{t;Kb7E1dz6IFy!FfgbK>Lh zv|s1DPDX8l-2IWibwGopaU>ZchbB~4j(~z+m4=Y^x>Kbs^(Tch8z>qxlis?@bzrg1 zn`u1OOH+s_IZQHy1mK7s_%nd3ONWgG(;}o#o)xdBP8#HmA1L<~`eIkp*X*Rr{&r$P z=4bS=DijImrzygkhxpPeFMd~h@_Ly4=5-vYA(RBq_Tg}Uyx2LEeeNjwJGq1aaQ5u z?#F5c3=r}{!xNXMpC%E?-f9??h<|_9=d_dP_m_lY8H0XG0&^?2?A=X*SH_o+`s-*2 zBB<9_Qm*UMdotOK2rnh#v4JFsApcbooLyNlx-58N_Mz}anv<%oo_F7JbLlxuj)lt! zU;;<+K-L#C%Z6nr@I1p`1N=+}zYePgl__az{A&$P#}=6fJ9TPN4zei5rqWbOSvVY* zSP0SHn8^#(NT%#y?&xG-Lnvl$^UK!Cn2_h!|9>H1U~FJy>tI4>WNXbAst<;O1Oh|| z4)TAVC^d%7z7^}1j7#q8Va!=*_vB&UpE2G5hyng!I`6; zFT?b#!#LhGfkp)Q5zP`P3rTdvzwjX1u|43{ImLrY@%?X3br>)a7$PtT5G*)|G+7A~ zI4BUZGtmFJT?%4r#;97Am)Zm1(Wj9wcgUSDt?@U)aa~pR+@b;-jrZ^Pn}b@}F4>z& zU*NO&5=;Hcm6yCI?464qPu<7r@}Cs%j4`&)x0;4`thwfQj-|WL*RPou;pc07f`o3KObBd@wgKRiWK@sm#sD-d?{aE8Qmt=r- z^9AFPye1=&r;&#>cYPwbE)1CX{~Adk02IF)b#nsVV2JWc^tdht#C;1wlsT|k$4kce zdUIvM>ybNR-3z3R&*BHPf*6JMr}jvxLi$$6SUFat{34rYt$$Tma{GJQ;w7&QKgh>m zri#c^-;v8V6DRK5ip99NP>Rt3@6R@>O6X&YFw{57kvO7_We#gxJ&p9sdt$MNz0wSr z$Q1&`*;G;Fd8?N2(Z^conMv5&@V;-*#8hHtA}qlFf+^(#P-Pi0DO%Ln&k2Su{%CtW zGDHIlKZ*LW${bhfIc&Bf)U>(M<1=nm03aE( zPcAH)t(Kd!+hhg0^F)xtxle2s;^(+%@d$VUeMNGkDEN*<5d-*C^jgkNhN}Lnr)8!; zI9S*DyN)1iTTcW{d~mE1H03Y`$prPeW^&W%vnqAabVfG?pyBMXg2FHL%eZ%paN<7f zq~R{6SOSJA57$uA7 z7^o0s6_J2jgh~2iv91gI*r{*FS{b3s4HUC6R(Y@nt9qOBWkAAuTs~xsI^Vms(0Gk7 z6#{t}|4!iI>}r}=_s{7SIe6v4>O5~l?rfeiHAc-M*-icp{{G#F<4ai9rw2}7^^bbF z5Et4sj9{C~xj@=i&6zB{EF>Ly(M4?&-*w}-8tB=XkdL0UuSlOfZr_n?BO!tO(oU># zSUp8N8JyW}Agjh2U4v<2dL(Y_*|g3b$ERl--Di#}4Bl`j1l-a1jKoOJ{E}q~82_|v zRMdCadOI0>Ni&>uZ-HjvgP*5b+U-G24ew)8(!3A$Uu^`A^m z_g8-?^|wq-da(tha1Y8aRcVbzf?tCAVEDnUNrlMSz=#t3I&7j~?g>|I@MH1F z`709hi^6v#fni9XXu1L>%IXlD&J?gZ=KAi{25usjs7#0t+k1KWD;UTK_rQMpW}hw~%8+#l*p#ACrNROd##aav?ztZWi8z zhBl~~iuO@L4f0${x26-~N0+^=^0AkV=_vSm24kO@GR)2?lma5=1i@V{`OKT2k`X@NWF#~~7yUY3(%0-#$ zyCDfV?u9|WTU4Da`rXXDB<3)&v?@N87o@r0*hDNO{kx~Li|Jd<7y+&k7Zpd)y%7h<_{w>eO~Ut<=k_w_3RoyYJY!|>f)chNd0L}-4wYA? zOc}Vp-Z9Q$;$lb+IPT?718`iWc0gR2US}b&J0Wk(7&z9Ol`iGN4RhXlOilS^A;P+$LBMK)F^EwYq;pswvCMt`w* z4)-CKMhrlUF_TciUGodQ8IQ@0b5h5(4BzBo?{ z4gHNy;}_K*0+ojm)Ar*{_00t6=L9%d*biWh4;LMt!-BF_$qAqp2<3mC^_jPC#+gjT zEsYO5BuPoSd9TRent1rLbWsr*NVJ^(06S-peN}^zap9IWPC@Ww}u2N*@`m;-4<@L0PF^6JY?8* zzY_a{Nn*uMUnV>&^wAyq&WBqf6c>9lxQCr$h8w#ck$XG|>0K@xt4JuJy$7t4XJZ#& z)F7b799`XsXgJ0&HoAoG zJ5AHuZrTYZS?t))h33SroC>t#S>X~I!`S6>VpYXGq$sYS`bi!PT+u!iX>0Rd{g>>i zj;Wwn0VAe2gR@5#Dp4TAZhEG%88LhVO^oT+Wt@XyvnW?0_n`8uOP-VDBEiRKtRF97 z^7026#oeo}@smAfS!|`e?pcm&K=Bh&Pn;}z+zj>OS0qo$|AAEQ4|vBpI`kw+3hDS4 z+QMLxj&Z32AzO>sRNO;tsC78uw{A7w)=dm8L)__vsoE+V`Bo=c}ApTjH3RGbI9oBRbeP9U$Y zUIxv2aEBJXfl-otN6DfFX_Fj5%GVMT&&@Sg6#=5My zTN;r&DzQN~x;JGdVMHTPe?zS4G@=Ok?#VtwoaYt6KeQlHldGJsNRju)-;;Dy0r;Ro zNl76_=CU*kyw1}mXG_5gChb{yASZSl4r3^0yYEctI?eoY-oTfb(rIFr@h?QW%%bey>s#Ja`Qf$)i&wAB4zho ze@6m^h6JkQgq<=e5K%18Bm51`2CZj*LkFMqff{M+3B!`KsuQ;6;M)I>^FwIWIW_sL z+^d}E3QICsxVXoZW|m9MLS2WK71BO+ohJ3P(XeY6%*xI!>JZtT+~-E9yX*MEWpo7@ z3fhlB#PtrtakDgPy9f1xMx{*J@ahH2^@rQug)WcGNe@~uaW-H)Jh1{C7d_6} zfWeyuo4Ciw2DS=ss&(Ood3G-a>&4lgN!d^Hih-2W>lb9fOfgB#T;uw2nU*v|HlZcIr3qUMpk6@}m?paka7?fxgcKw#v7KLX z1bMGEvnu?vQp*7rzjqg>EJW~L`ln{mi>Sj;6E(TLjGr*I7Pdf}nO8{J>_)7v&d^8j zkhOoKg)>aFy{m=I9)6trE^?+Y(u7Uhf=#xbGfN88veNC$V9mFd_Ux)v({WL}8l~wT zd(P=$f5YvnmCFIVpAj$+?qe%jHiVnkJ}Z&{KP>c~*LJHvY9n z_ll#&^bxOE2j|j1>@=>9Unbq??L`}|<}lb3GQhur#2zkZ;y~=XszY(5@K%W$nM=J? z3^gJzJg~wo9DWWlbtv@DMP$riK32;SVaUxzHGR$mt;_a}dEhE`tD|aczHw&>(QE7} zD?D9MxSHz9q_S57iCOAjxpr>z(_hsS6sAwGulA#Yu?)wU4Ikwe9!0$+_HG+9VZ6>? z4MZ@}wuGiN`3Sq>#`K@+gGUB-Coy-Ht}KQI?w-1&IM2a4fwzxb5%+l69&O!|%c&KT zJ^{xHW?l7(M+v=aF{2Muztsh%E)r z=$Z9Dl{@5h`=Q4Uhsv^ljta%u2+!AqzY0&vOw%RpBHx%)NwCwQ``u@H#;y{=;Qk`p zU_F^0@XR4=sZc(rGqo7tpeuORA9BMUu+X~Bo0rd<{$t3h-?Zo*dD4a^8QJyvnV`rH z$`<5w^!Y(Y$e#u4zpRC7pDKK>&f=eW$kL*-WfDPq*=H_p9Y-Uf1;H55NseXou{2ac zJ^GJila4-xfBemyCrn3MChS%^ic&xF3CGJ_{8|cZGQYb|x?A#tk2)zx=O|{CicIjJ ze(E6^_7~c3mXba~djjE0IP;!;OoUI1Y8}+CNLNuZ-;r4L0iQNzy6PS_#!K0|La4zj zD36^0xF5M8%b0o?I$7OMbNoT72`j;dk1#c;r=Ud*No_K^;B~yC7D)B%l`waKHZ@;S$8k2^GRm#Asl_Hvr zZ4S+1SNkI%aqZ3uO|EK;uEUcO2lZ2Ie1^;+|dkc6@YwCqHAHCueLT{3rNZ6D~>i%>9Wm;_Xt;L2?N z0Ui{HX>;$z$`bTw>N+Ej#k?9~V>M;lB3c3Awt9z!Sk5w4mm2BGASUlk4WE5irELs) z9PSbc%GrV*Y9#8qMw!dJ3|)1Xz^}IacH&UBssNL1^&PI_F=c6V|WN+Kh)nZlt!m(wfo5j27cR5P-ot29zj@GJHQ1!cxR+6s}>o zDRZ^Q&)#i3TI;WkS?t(93wz-|Z#`ZQcR&VYF)p9FT}ihekFMuWpt=7#mPD?*e=6kY_ycG3txDpU$q- zdRO%xsMQTDRB&Gt@)p72C!Z&Z;lt7Tj8D2Zcoa{E-zR=cU_g1@sz+pn;2Al*69oB+ zL?-d;J5n(ZBv58f2Q<*HutIa-O|->z#@jg6g1zn`@0#r8Lp6kLlL~5yl3!tu5hjuB zgT@(|X=qm`^5)x^d}>}t#dZM@LTkzl41P0K2Xl~|WKO;P{MuDuX3qq@<;T}>-k+>! zFCIY&=ME|2g_d@jHqZT!eJmNOz7!X)bev|s2$0l2;(Z@ScYlx%Xwoo7%3$RzjW%Xo zKO!UJfkvUZT6!x#07rYBk=NcGONuRXK%!FcCS=KF#kc@aWzG$WTR6nl9M0Bck)9)^}7SiH3UN0{N{#OjgN)HcK}k< z+H(AzvnpSa*wKu?BQa(GK1GG}&sym{e;m6#6|MY!oW5wE^)f#uz8$r`H6zGeRhKq#vlA>rL5?`s{Ug}ax^_pou@ zCm2}>*B`I5r1t($@rrJ(K@p_B_EB_YIP_tg^32;@d;tkz^79pSIRRvnws>!?RP7A@10g;&rqkjoIs|`Ctn3S! zt|R$?6*mZkrtY3H=6d?@m)X3ILjHZ6FF9o#B3V5h+uK{0ubhnw)IDnuam3rc;#`9S zlNmG_eazsZ|D8K^_{FL!Gy~T^BFJ^OMPBY7RioQzGI3_Sa3j}|iHNNi`%Y+*#VWRC zUc%V^;8C_h4N_Qe!qq*@{6dTf^gJRhT&6@ z(PDJXwhv1q$eUR&LZ-LDa>c^)#LQKprrF=f6teh@MTPU$>;?71St0grw*4jA*9qSXmkR_u|@?r+)egZReuE zAd}mAY2$@$cA#Wzz_a5b^*sqrAfJ@d7*(hn=7J@6m2!C5wTT_|8}5uhoGkmy5(Gp; zyccI-HQ7a6<8YgcpsXULVm{(4#> zfso#YJ`a@r16o=dwygEZ<7Sz~ukwWm0wWddqp>opt-u`bPuVFJio1+|Si59i%C)bF zs&s}JM?VAT#7#N~C^BlT1{XV$Qqv;(hah5i`93i?g8yQLl<#k_!F9+GaG%EC>Gaq0 zBwCKam$PH1*XpS7b#grL^45 z&2!^+bVKr;H<>#NxBE8L=D}V?rBz9oM1k_){V9Ibs5!@On1OWM%l0(zNhH9>+5M=h zGE|$y!mif*8;kX-ldLX7>y)r{Wr~em7BCcF`X?387`mXYqL~-6F#;im4}qUr(yEC; zqD?vu$-xp|AFv(XrYfdb_vsM_4h!23#j++wp3O(65s(3tL+CcD;E% zoz(XgDUU+*I}&mU;2pbvtDSKCs{AJh|H`0%!0!F04}jSbh=+7B)sv&%M+c7CQ}E6= zr5E%(IU+`z$cozSz`Hsp#60e-q5t%l4PKL2$TV1=aGxWSU(eV#uW01xxNymv+`_Mi z*nQS}G1_%2L08HiDUHlGQBfW$Z&Yqw2J&%}BGv#P2EH#H`Xjo`#mxx$D50a-8XrW60h zEmNx+unlfO)7V#}3WCD#NHtJ^52EUcf2z^ioArW6e~!^(D)g9!*f<#mJUOqI(`|sJ zU4AxB8HP(w97xkhXy?IAYSL5LZ}`w4Z7_4b>04vN=@>Ib=gnYsGpifWrDyam#<|*) z1PYqsu7t7n7q07t#{NDQw0-He|NM)Mrs=#bFuba#9S~v;n_B0@`9}b5aZLEGA0gdo z(tLPG02=C8k+1o@pMcZDjWJFfgnv9mVUMI_Kwh4aK#~sWN*Msy9jTcsgb?a$*Qg;L zGDSYbdqFqk(0TR_8&GL5{WR+h8}`s^EuOW_J(=4SK73#X^$-7KR&YolO&2Fr;3GHP zL*rG#FK|2@KFtAIt#urv75<9Uxy1M#$TGMj|mna1sk zj|m+L2LA+e_}+MA3J!y`fR!v z1CsN;WmmfobVJgNx)u*891WAtIe;rh5tePYV-Us1`zgx&+@|oz2JB1%8ZZ%=aBPDm z+u$Hm%qvBLk@vIm9K>TkZvzau)8++OC_T0qVW zP&=+38meZ2@2t1(U(bPV99|X=_-rr2%SWZwY4WR(aa(6Z`ylP81gi!>waeSRZd*ru zkSOaft(6e1xXwqJD-UW2$Y62qZWs*-ttXDoWvi4_fT>4Dg+nye#=97Yk49ez=AfG zxTXr=AA&N9V1R1)&;H@5jx6UmD)ht-oT40wF(8z&T42C~hMvGvU1Xoi8__rVqgwf5 zB^<;OTUFClNOv!aMx?G-xON0j8)ENrDIpJ-$5^UxH8!~_0`ewDb_c1q9$Ps;MMip> z_r>0yI`Us8r&pM2lCH7_!&4WQx>V$1Fu6dKYJ$&^5@(KFApz$yBT3xKmRI>bN$V97cIe>=}D&m z-{i_aoyr?vjnW0~&uZ7Md|PO-X!07{hMI+rk^bA{5E4ErI-A8FtzM{kZsS__4jUNQ z8TQm+k4Rb5F?ZS3r++qLu7L|d_L7uKpmvhAol~7<#1)*@%V@re$2sb5P-+?Ti6s7r z^O9vvc;u_=sVRgDG)}u`O*XT|i&wmJBi;wAQQ46kM{jHyR7ya^O{RHgyB&IrgQ7C z0*t!&^<7L4EuWwgbO(^wxF?UMwHrRD1Y08b4s6Wpxk>|NM~0*HtTACDUkV1TDl>y7 zKnH%wr+BZ^6sSkwaX&QuI%8EiF>`)-7myVK;kpf2Nl={=c1Iyvm>pCUHWA3Ur@44! zOr4wp#^g&)0Eo2YBIYhuo1zyx?#Ozx@}k~`4;&dK%jxDAlpm0n?}ch;lQ5@g&i)Y* zbt;GD)O5x2QyNFs_QU1%?jCG5HMe-sRI}(3+}lP|(APNgL%Oa`t&+Q`!v1&i1xXsD z1>-wXjvC;D>*%?3&Rkv({B1D$FHyo;`1~m(Go=YC3?u$UqO{>Ug7{QhI$7Cq7n}-2 zDSX1@6ZfEt6$P_EZ40*(fPJe@h(mib-B~8;bWc8=UP@3mLzg*nG@1c~#kwbS8Pl77 zUcIZ)N%Ku_<4+c2I&6GX%@UZD7&>%gOiD6pKp_IygBGu|`Z3JWDEGZ`4p13B{BB5= z|22gVIXvEbMk9ywEyaK}*ih2Y;I7J_S_5tPLs=f*bwboZBC|S%i81_NSIU+up=q}! zVDZ4XpTPfKa7cBeI7?w}GPi>l;;8%WYr`$Qf2goZOgumxng3jicTN@mQ5rr#x|E?v zNw`S2^%V(a_1|}-7%9M~+0GCLn@N5$4~hR{y=G2n{Y{KyIL~i_*;R6|33v3lFdS4Q zfzXwoF4;6=ze8b=>WD;G;U#y8mlDF5BN?#wZ^tfd|D5O>sdIWLiJ zFuI0t{i;0;e4K+jd37T;d_|k-L&xF_fU;aO9J@vrB0wak5Zn!T->tSPggR*E^gvyI zy%UxzT{o0aVqdv1`nD*WVr(Ppes#;r3fePT{J5K|3vvyx-1;23kiE)F1M$x zw1r*~30!>u6@CTvXJX1%VWC5?=FQZhhwc7>p)o~24X67Iv9+3V1+XZYvj2|J8qsam zScG--gFV{R_gC}$VTg;(o{p$PlrQw8jP~(eX?CM>cLG>pRgMbPr_75_+NH|_Knp~ub=lYAB`{l$>h z2}{H~C2}Nw`RS?lYkX6YDmh;7s_1Ky#FPI=>6Tvs2^6tj<74L77DCRj1yv~m@ZF=Z zru0l%8AuztAxLCH5xkWd|EYE^pAuJr>f3=oVYnJp^7uebXdt(@E8O|f=)8CeFNLeY zUnnj}3{8(S8^|@dHf~v(W#iwj&*d|P_=|4Cb!)#Dken33MS|^_(*aq)wn-ib7K{#| zXWmCm_oGm(U{xrM$4UGYGVW6`PQ;h-|~Ucy--m0G$Ug{QbL81s%y zv)bRY1wkVc1Hxv^W^}rwQ(VFPcM*cMONpm|3FcQMjdr~6NpczhdernW$(e?2Q@uQ{jIOc%f$g{C;_8mH7&KRNP}YUUv`-VEBq;87%T0si_hYD4XU& z7Sq~DhFN4Vd#G+ua(ZwJ%2NZZz5lGtbnwUDgYXJY6bY#28$Rw!6DJ1y(CddQ(ur8r^!&US^b2NkN%3}t=RG% zDJKl@K?+Ri1}!_R_;j`h11@0dQnNZt5;&t_*m^Mcqj$De9G)}^iuAg*`IE;=Xl|cW zT$lsa&Wv)OJkMCJaSYI@bL|$$6@1d^kZ3`#+rk8Y%kQxf9+fI4W>1>jGP<7b36c_W zj@uWIXR3B0Kv9~BL_DPOKOFPc-&8xrpR73e{ZN)=O{eY{cTu8V9|EAPF#8G;^E+oz-vLU1*c4s2WemtNu|Tx9{)UEU8^~t zun*O3W98m)M}`CV4%{y}!~UXOt*e^A3>TZv&iLWn=dk=~lok{hy)Vnsd*k&-Ryl?& zUDK~@s|HmC`TeT3@F7wnMOkeuguud=eWj~_aSB)dDPke;bQ_O}mi#E`jfzKL=HWZo z5H-GyM>dJYVr`(&Nado^k8`$9|J*osS53sahJ0FiefwKtVVOb?z2QWB2RNWd+_2WoDN zXjHWCZ9wx($<3vVZo89#oN*T)wMx21Hsr4%rrwlg4Kq+) zCFx6BHzQPQNp9;oaVVkhB-Ga=)uJYRPm;hI;0^M`qHeuc#k?DkS!o9xT~Ry-d~|%+ zc2hq0w7(v(XOcrdbIU3fxA_jlvamZ)PkPf)(h|uGqC8Nh#^X5EC!)U9Y4MN^{3vGK zaV!AG2d2hTu^#qo+td4O*&|=(ScfZ=#+=Pt<5)x`YuZth7n!r=|kLL?FU49ceC|TLLhB{lwUBVMnD&K*LCc%5m z!$hvbO`kl>9ki?2Q5%4xdKh**%^LC>f<>1j$~N`3G{nrX=Rw9U8!-LPMxgT z{v#2}e1%=6g8RX~w9_bzQu8M_oS{XP2{R8;khOiqeo~{NTUJ|`b}DLO@Xh!guKb2T zVbyWsX?5S6qk+sEd4ctiqpU~$+W`Z(r!M5#z&+j+k!$RE6F-mPamyVd^pzCJ0M06W?mCV0G^x2Vc#Ls$u zQp2yYSnDm4$53HXM8{4r)_$hpHdGHkwE`vi-KqbeRaDFrg(p4C-j^nE?4-xDJ=AS-u-`es%xQi_ngb*Mjx<~K-w$rq-vIHA z;)*ji{M!;hK&zZd%qM( zYtKc*1M6gi5*3niaU8#M_gcuahn}HF8G2vx74X%~=j84-!o+o*BN-L}e~gng7YU!e z2dwE|&)!_S$^{h3(^^|urgO=^wUys@>y=5i!XAF8nV8G$wyv>QCp5U@FF$G`tKMeZ z_c|HVf%s@E_G!t})!clDii5&ik^hLo5XY*Zi4xG;ztTFG>bjqt%wK zNAf_&5-aZTlZ*gs{d{8h@u{Od9M{^~BD2BE;i(D&Ya(eG>Xa*lI-v0tX^*x4J5nqs z;DarF*1tkag>eQ^l>6lOL^E%U8EOrB#NUN0Ljxjq)$1QUI1>wQcxT;wNdnY75Ka8O zCJh#Fahgt4*Wj~%s1+EdEy8^49iAD_z_^e8^^-)pZ!;PF;F>ne;xvisR*dE;T7i<- zsNvR2;>-xmZYl(!iE-{d{772LUrq**y0pJQJkg$-B3MzOa<)ohT1Hk5POXDqZ{6M0 zoMwPP5;Y?X;a*Dt`J*Du<`*Ct;~+4iOcmepyO-XMTII4vli^^rcaBFHHFjzz6wm-a;lftx(=8@QuPx6Q0rFyp3Hn2>$LmlO?I3OMT^3QsFWyLzXDE zn4=rxGd_nT3nz50DiA_B;2MH`D9h%qTRBaNYH!;|9q@T~u4fSOUez+Ps zi4HBZThfM+&z1FEl{81)YKUY_kvG`P+y}TgvSND;)(1kFv%aPRV}}pG`~Ad3dJFXB`wwjf`_0llMLX)Wt{; z+`Xj`X`+b+KM+yT!o?pJ*17j|ha*ly=1jam7~EoE(AN}I$Y#O%0c8l8#0~8z2k>Y= z`4MpzbBOWSIkLk$AEA#Wl_9X>)>A!vh7!2yGgL*xr#)FZ6R(oMFND|6`y^U7+ym#e z0Ovp%E~0A1HS-!ym16~p4X2ew8X)l7Bd6up@R^XJLIh4Q6pj*jdd_v88*@I&AkFaI zf)~V5A3i<}gzUbKCfZ-C5*bVh?(awk)PPURrenD*MUX`Xi>}lJ)K-MTU6>aLfO*32 zOYZ<_xPk`Z{BWbnFz0X&F5K$-B=Gv`*+8rA9{(_&^~Qs`1c)fRmzay@7?uxONK#T@F2qmzh^0g? z-Om|~Wf>6j@MEP065sy3Cq({rTZMp;Vq8M$C4dtbKN;!U)p7h>&KFJWGTYvqSQhNB ziXfXHo(7If4YEcqRh}5GO4&f!iB7Qlnj}iA@$X1YypTXyqYKwo!?KXx^olm_2al8q zF8=d^c!}mW0%~@hH!C=xBgO%{_T2p z(p|p4A|;A{zzsj*!wQkR`fpb>NY)VTN>6mN1-AI*8r>2NL}pCCnp#65niY5fqmN*^ z^j;IHQX55+tmseTxGY#*&Ny$9iQb{i?eFFLYt}1#MdD_E|BiHQ{NL&}>VV#^Yv4#jEQru|!ZB%Y?PXc+LE-A4-!JQ}=X&KC--#2G1D0kD-g8vgT z1B@M13+DE)|JwKR9MS)5oA#842qwk32K2){UK{u4s<^r_2Qv*XK0qu-4wc9mX@enX zG@EU#R4Ju0pK63f9rsA|L8aF~{ymu@8>FLS&2uOI&=kg+`lg0&hXqlmXrKsi3&aHt zx!MDO$GFjJlhs3^jaLrZL)KdNP!(K5+(~$Ntfr2lc2491rULtlBm+kL9Vt2(5~%wr z`P2sbzawmcQA|>Je&j2W)rz+6dWWDr;bc`6-?@QdUHPVS;=P!+0cpxY!0*hlK?tSW zYcGUbZG|AY$r=$c#&*L4w*^?lMKoP``r)-Bi=rX2ZKy%-&*CmI*M$p3o(DtT595tm zgL7jns6zoI_*U46H&Fe7SL_Tpi2(XvFF5l*IuO-a@^xyAs+VPc*p^FR$wCbo8ZvCv z8o4jW==b4Tx{&m6l$7SsdmGOYjYGw7DVz%d3MkxIR2JHIjU`Gu3ot+SUaP@-Pte-e ziW+Q6--(>NvSdJHj7ipase~}^2irinPmE5j#{PVUu7)3X(eAYTQunpJEeiOGq)XoX z9ZCK3zh*K4>rYG2vI+0O2eJL&0!;FV#27QJM(55ljd06&I*_oVh|dP(;tn&JxGoiZ zr2oJv-r>k9JymAmKakfWo2^5=dbl$T+xCGGC^((HE zwG)({6dPBe<>4O%OuMFWciE(KD=Jq$yawc~xI5Q+uhW7F@&Us~oiriS$C4CYZ&SV! z7KC4sth$uGBR%>8K4>@QpwsmfR+LQ2&`y89mchr6Y-U|JyjP(OC^f-MUZ}nhpuPrV zs=Jpyo&1VJ4RG>Ipiggo{;#I~02VIL3h=u@z)W8c@%YGq6|jQ7gQD)JMl{}NMJgxU z9JotJy+lTRyv@ zzf}`<-F4-XFJG$?86Q)d??_uNfKQ1jvnz@_3J6b@SNESAENY)!y{0=7A=cF@DN=y> zw%BJbp%zz8WAMI$&<*v_ahI{1N!7w;+-~@B<281_^t{e|wM4iYec%NYT?tk~k}Q-H zv@?~6%)bvx_nzE@k%d0(a@9X62AW86sC~w2+>i77YiOzQk>bpX{0esn;^fvhGs3oC zz*u$^=jhUK_l#bfPzB>5oZl~*6^`5Z&wJrbDuZkroIQH3F3I(?1YoSV5AFrPqdBdT zF$O(&)y#l{a`(E1Xji5s@xx6{hKh1BM36IqU5OOc_`E(u!UJk#apjuRhx&&&^w|Kz z3vV(B2`V6DBJ1R7CAzngPK;lZ6cheGwg7uAkU+hIXDFpymhaNV=e<>yV-zJ%%^8l< zTrcKEQW^liTh~_zyM?TWNTpgQ@~FN24*83LCQN5SGt7r0DtK@W&5vL6Be13HeoL`0 zb!BI}rV1nZf$A2g!t=-EK&@(Ml7J zS5&7Mtvo8|CpboxKI?vAlq7Yvgn`ptO87Sy-UmNuh8uWZn(xP^p9I`zt!?j|Nlw27~&G{!O*n@L%Opdbi$2s0h zXf{aY7+SlL4!*n3n@*T_FQ80XK3QYAXl_cvi^T=98;Jen5&c``-duwk2;_&bunN~@ z-oK-Mr1FkeGWtfF3a*GdwAyBKYK_Q%vP{>is7p`cf&gLdalOhuNej&~@IK((7BA%` zuv~48Iu5oW;;%d2p1tpmfiO_axCA9?g{;?+U=3D=S8<`HWZ!Swq3#X{p zY%f+4G*{pk{FBP8`_t>)uphMIff9UZDggfP*6=UrYfCsUyd_j^`r0}XJU&rCK`zxC zr=Hk9zTEb+WE6NcX{EyThFjMg6T~}!UweCqeXf*W>}KnR#$WHyT)noq_Z--Y2UGawF7pJ`{(5 z`D!8I_C*-Mfiu6tp}3#v{PYg-vHHqz%4=AzNnw9dw9(nFlI+{{Ufoxu{;b6BNaaD0 zKo#&1ci#DV2Y#`@{FdbTQL>f^Dj2UxoC-Y2lTo6r;MI#5IXP(m1DMjT*m zo}5IOD`bF!)U1Bk?)Zu>(r)9KE;nP>X4*ETV=)oR%4sC}w>{cn890>Mw|uEo&Hdq` z3pKAcY;&h-Big@&>{-7I+Koy3se#mT>YXm|cb(rD;9YPd9L7>-I*v!tK?<#Z-ta||TP{ohk!V-Knfygo_oZ@G%Z=rvS z>B~8!e}4$EygZTU@C*DCia4K)EOblKTciDuB;wNEyQPh4-!?WHBa{BK z?KVWWRKOo1w82L&QQ^~LJl*3!9P@rP-df-46;UK`D`;N^62cH1OW+~_3fol_5dFgn(TCR9b1AbR`_PNzxQ~;=&xNUEA_5q65E2bklHLo z2V8T;cy%#MQ4>TEV=M$gH|u)fc$5N{<%l4{Bi{VEp+M^lj*wai*XdGK3o8^S@I4gg`Hx$TdL&TlP4lFxR^f2g|Xo$Ut!X ze2kxN1S2Z!F&2N&B?e}{VU-wV+RbBXEf_Mn4`0Xt>)@z7gB)_8f$@O}T^6WMx5s9< zm&E|q?Y{67!Xu=GY|cjvABbko3Qa5I0L* zs3AbKU4dpESwb|MCu|M<^18`F`S^WDS}cSFO7hrzJ>(0~{&CEY0dS-v^tS9Rw|LH| zyh6e-DXea?JiNcO_}zZpJYP}MFE!g(U2?qLiKk2@C?#-6bH>-QC^Y9ZE@xbSXK+(1Uaj9nvA)9n#(W zeV$jW<^2_Y>)dPab?xIiPRw`TgfRh%Su~;qS6p)`eE-FCa+E}v_IzF*eSY_^rgo_!K)fea};9eSs#KitAa zGm~#N7HV@H9n4?5Q*MO3lk2c)z$T7{+82!fjCCMtyVUNuxw1rAh*;O$`^0^NtNZb7Pit4bnOq+mq!lNBpmmSl;|cVB)d~ z`9*y2cVw8^0Ly?7vhgf8+#dmM^Wm=A&cQb-JYT;&6tgzyTM>j#pW`UK5m#P58+(l+>tuN}$&OzW7 zscGHF?v@as3!xS#>Sl_pApOb#(eQ+v+I&fc5SAA-@=e`+w%Sz8+bxs6IOFeQZA(&T zZnT4)oibj7NyE)goW9wcUa{~SaWsiaOY}N!QDdsEmY*d zJeN{6sgQkLG|?EnBTR9qtpM;AHaH2NXkTsLIJ7Jy-$hdeFA)`;X=(@fVF*$m&fC65 z5?cR{kI5r-Xn`E&icH$cjK&6ea{9~c5sa_xV<391SoYdVfYnSrKkK_^l87VBa zk8maeB=v)mp$BL?e_y~LHf;CmqK4dQl;ho!(dw(YG&1n!CJesZHF{Gz1f8OvtO;As z#p4s7Esh3-n2}w7hxR&JqStKs2^OVy45kebtOkLhO&@~_Y!twoB65zH9H)<@68aH# z%l=GV_NDgy%11Io@9P~8;d)XUShhmW^rNrX$rEj-DL6g^nX{t=CBIj}4jLr%9Biwh z)$Myy6@885__O>!9yfR7XW@w-6V3LMIRRAz@gD=`b-Di5_q_8%Nsu|!j8+qwM6#m~ zykUWP}U3jM7Q+{prdnW42aCpvP!{hH%UFCT^JC?>Tmq*7%0`^aJJXvr%{|5v$aM zoi~N#@OL@W;AeJsgGz`HdGy!JSy&M}K*lEWiL2Kv`6$r=D1*!FR%9gk=rj|_Nbk)pfmB-)^ydERYk z!vm{jW1|8{c$e?L4ZKE*&wcq93AG;pQ$tAS^%7;*jM43nb@6j_AUmBO&`h5>?FO_V z&F{LrME>bLkU~1Z_A$YSu(iP^HR-$w%Ck1x>GRBxGFvT)+bmfE_7{eiX$gIr(J#x! z!O%b$lo3bf0&yNGljXoI)06m=a~C1l0p~qi#d|)sV|9OUuNtbky$})D(eL5 zsE>U0i^825I={qfeZop{{%Hc5ET_%jY{l{)*lpU@8E+HZ4(W<{DH@paf-VaURj1Z^ zjt@gdnQfN^A@56E+j)HIj1ZV=21xfLEIvwubz{5jbSg0%m?J66eoZ_gm@9awA^NU% z?7z4+^rZQ%#-R80Bc9;XedX6kH3|Qb1pv<>zbK$4?82Xoe*LT= zaYgBzwf8;6z+>fagT>B$xQ(r-+YNGHMoSNZOIyr|c(isXaQ0B9FDlSZ?IQ#!>j_mH&H%%sG^EmRt4S6H9n#i`jTFc>&^4eji7Dr2N!xnjZZd~Yj->^KwahX?Tjr(PrVbpOXBMH&7rnc7g_ zL<~l~Gaqc+bMfv(h7rky8qjYeqYH!q=c0D4o;oNuD)79Gu4>WtSWYNQpb+ zzLy>gf<`*#Z*38g5t8KYWsS27bkFlEQo#x`wb#3h6a%?Jk^7{*;lAY#qYk*lnoDqv zkflF#%HnY6a7sNFB;%cGidKV#N3=-JtGr|_Jgi-nuO&0#5i-AvQ2SPiH9# z3Fu27M(A7wRtwSGHa||$Cd~_h@Z8}Z}s!ThZwjx<|aOq*js2(lW-YU#y<}Slc z-oq;-Wi;9U_|09rjQoWCyS+uQ>!?ouiD}U&Lc`^ZZKVNpTn)fk+G!VBsh=h8fB72q ztFtopXVP_B{ZLKvOc5j-uqn5&G<>&8ZaXFi}a|msp5Q zXmq-iu`!hQK7r_6kQ-gGNJH%u8rL{^49kmTeh6Uy?EWM?RX%(%u&#t9fZGP9X%n%b zF?AQ4hvk|6)`%oVCn|Mavm##0NeajfGz-lhttCS}i>wwu?J2QgjQj&AyKTf-L%OV@ zdXz}T)lE7DGhV$$B5}C=cakoxkYDUdLu2`#*pv<-W)Aq@OzoFwyv5+#(U8_eADi=; zc_rX`b{w>3+E3SlWvx~Jz}BN91)1TVc#dZ?mOP&~dZ53g%J2`$dIr`EFiNdgw0!vv zGW}yrfgwwCPw9G^-3Z)omz1P&#J^ULk1G6iBIGqR&B`w%SQwY^8#+7CO)*%igJhj? z)g{%=yZS})rt*XIF{cN*G5RkAML}Yb#XyC=kdM2$IFuunN_q(Lgve`xZ00wFAEUKF zUHylD_}{r1;Lid+$Z*W$vV*yiUTlt<+FJ?=y~BqhtLF)D(T`uMjSAMgu>(lMTLHo903nC31g zFQsh})53+=i$a4WtFe6cZA?@Y#Tu$%7*jGRN%l3W_9!)pLBFa_W3*do_O8B%#k%P2 zeQ+_&Zih&GNAp>uyeUiWB~(F&D6k&9XNDGT$kfjpLX}K%B_E?gW@7Z?Keg$=iy*e$ za1z&MP0anQIqbP@fI13G)wa^2{SDXeK6AfDQVP@gcan(zB9$7;Cq)P!-Ap0AX(m|j zas6~CBP%oh_U(l=kA-ED;=*%XYaMYo^MkY|wwq26Q~K>m)0CI)MYT3)iwc=#je$ zjK>mPj7D{4ta3m|yefI|`#*eL6e~Qe-J>g{*AL9yi6ozrKKm8A;R}{GQoRta`ssZt z{W!_WmJqc?=o~t9D3T!eq^E{t5KB8aWl57F?W>Eq9_HmsZ!fRG)@&i5A^_CF8Kvcq z`0{iSx-q)Gma4wk%&(~V3x$FEVzi27iCCGvgR^lO^<%?pBop!fI4V(-1i&U`kdl~F#C$PXgP&MX$&&8+Hs;9{&Ycf($cVJ5 zqu5<)U_7zeDRXyHr`B$wA+6Xs%@RO+s+*$^JHdp-_%>e*q7tH?mRsyMJf1a`)9!#u z-5w#}bh+Qb6;YRLQNfzDjqf)37Uw7AM%loZIm$l*zJW8@p3B5UUtQ`*_y_6MGoa>+Xj=7aBv)&Le<$gW z%-@qqm1mINjEh0%Wc1`vEe5nGe=m|x{KF9skD3dw9huuv4RAnqR94J8NGYnwkGgeOg$xFl(B5k>xujA*=!9H&A)p9lr{zqXJ-9(wdUI`(_ z{4R24cMdYVUn?{b>_-NF@7IJrTS>Mh?KFwhnTy@!vPOw*xb*qXwAxzEBu?*+~rWn^|IEqn3QRBsm&tOJ#(2NqM8so1LYn9TQ?KUZ2 zh!*aZEk4&P=x0m59@qe@oA3$V=fyAMtz-z(hRK2&Xu$#=A@tV;`L)Om+)U_G!{8;S zuzc@?RzzrEufy?UjvayjgvIwgT3J@(1d}A)WAo+T`)Hz(N*NogMHxt_2sF$_Cjg-2 z<}%9POx;Tw+)xmMm9@j9JRYQwt7WO4=Y+@CZ*%ta|If1sUv_|A!g z!>P3FPt;V_>q$!1#{3tlZvpw4M|L(`^cmaICIh6m0_ogh3)WKZ9@lK)^J}aHdTW|! zxKfaC`RKc7bF_Y|`bpSat5pdM@MB{aa^7IqNk6$#rRdUyk_bfo!$fgW9DackUHHcRnYox*ez`sb+>VHe7iV@*4osrNa9&DEQS$_0g0S2SwC=9cJ zi*1SZ8}0lBeeqJBFq=2nMm4MN8u4w(%WzedvL+}n;=adA?gJI@aUxTC2_Tz#|h3&ixAil&W zAm>xDEL>q9MswjHabh?xa2@+?7vQ%)UbyR}#+;i016c4;Ui3RkRk{*+$-HPS|frO^l_sS)!^dDZn%!1(RjQL5Cj0BZk>L_=z(5v@F^Lhkt4NRuZ$PNme*$-n8 zfds}^W1#~zn_dUd)wsdm!bInZ@KsNP?L#x@;IIVjqSE?a02R!=hcYo7+@0qzCLjMO zNQ26Pc(7CZH;s-WSFzmMY3lMJx-KdudO6(&D=sg?(G*z@OHzak2CXs}g=DlP>d#XvM{WA%8yQEnP5pxf(UOEC9){=`;FUyzo3=Q>h#(VhqAV?a!! zjT-WuKO)0J?rj>YmrZFB@%}DbcYQ7a5~CEgUuOf`LnH}g_ud$9%m~9;Rlz{ zli+A%^nj+INjwSY=pUucUJ|O=67Gj`+|bDUMvB?jNWb3vM=wC}Bl3$fmEevY+B2WP zh)icyOi=y(ZI@j_ibJHmB_)Evc~^BSb5%oUq*he@JQ+XR+K9p9 zEt9WXCFXbLN3)$3vhgB^<(d}X$BDYgql}33_l93|OWa4Gj!4WXoZyz$xgjKXv&d>V z-IENmlw*pU^pUl;YrXu>IP$Ugl~_R7B>N>;a#2wWD4ae9aE|4CtBgbmve4&m7HE>= z^q@suw4cl?Cq;LVFOO=uvXWn&xt)k5GepeTe6R!SZ?jJ@Em*)EZOQ(ie05sNOnQXI zE$9N*9(_}|smiyD8##+QqR8h9OGfSLrQT0gRD4wd(?SMVGCzBbw6M1I?<9320br`K z(k`^lYfsqMBfccwUvmeL_l4bGYu*>S8g-zyvgIwNQ+-Y!=>_Flj1PYVA&5IE#W6gx zrp|Mm9L>we#yvP@B04&JC=Lvly8u^pHtZB0?-?c^E@&dwbv*2yK{RH`RxRRmGTgMq z)?9X2C~{vo<23?0Jmn@i!>Ng_tH{<9CIabMEeAq>L7&J+T$_s{q4qcrVytT_M(UW$ z(9XJ)nv|taW6DIn*nGzZnHyZH5S`3wWVw+m$5WpE=a9clyDi>|yV(FlwQ| zTPBj@LCW%%+a{AA)_I>-!NkeK49_`7UsrGVT%%160~j$f5Oo_a^tVIZ1|DA{9hNix zi?nBmd=LMD@C{b&<-ymc@Ck_cpl4#V#^x42Ojho-hkG|(j*PoNDG9vzoLvi(vZRa? zYz3;OC1Lb|-$wl~!?n#m&T(j%zD?Hdc0Ms)dXQe&N`%U&gIkpj1)1_SV}>~sOgoVa z-OaZ#=)-IU({$?Z)@=LnRrD#gBK2bGNFUycBRJ?z#t;GFefp{;Y-PlBX32T&Q0?#! z<&T5do&&8W)?)@j7VDNVm83x$li=&?@{7&@@fe^R$l)v{3_a0g{{ zDt?XhG|v1lQeN@jT31|(t2H3%Q_MbwLfdcH5gh1}2CqjsIp&is{mfvYDX&x-dZ^bd zM#xUwGa7S)OgGZP8`ON7W;x4WV^Z#Qz{7T~T)rMWX>n}7x`rfUL-5?^jQ7$X-EX*Y zQiY57bT^y7pr(SVQTL>X!&Ru0BmpJ;NH_P)kFYC9x_EED#HjT2&;(_V!& zWeLhn;rzw5V42DOY+{9>K}05q!`ycTNPb3|_ik^Wn3lUz5c`$r>!x zTW48hQiA#hRlL~5pkrGd>i$%3m78BTbvcMu{L}dX_V+_sq{k0$Ql{e5&-F<_Ldh1; zS|9$3HHhmsTg)pY74#?6f05jMkzeGrwrJuU_H?fw$I6Y1E)N>yS(y}`jLXDmB@2ai z7ByM=TPnEGeEe!xh%4L@bO3>eBqQ}gRFlI~Q*&A&`S&O~sGm{SW`jfef?kqk#Q2{r z7^Z4l|6rd4VrCDzkJL0-ke9&rYxdIAB~+8s-kjIS$iXyghEzx;F^RmD2C)k5BXu-M zcvgZCErf2z`7HF35u?~JF!JldYLj;CR9qEHu72TDj~qBo_a~#(Nl$zCdUe5R+^olD zlzEM?-LHMNw|P+dUA@$y-IA#*+9fWA6d)Tsr|`0C?zv7FzG^;bOp&3vmD%AeO(;^W zfY(F%iCcqIT&!kkcU`8W=3{9S9LE1GlrYEs+i;5+Yxr(&sihWK;_i$W5dEe5-X~lS z*V)nTI%8SEL27sSmr83EmJqH5#Fc9(H!nKurp8+68^ZMA9%i$9xHAZxUC{ zVDQoXoB-#`@$$A7S3xv*hW|ml0hB8tu~PDtz({2JY4Y~=X+<_aQ8+Kg8reM9ebkN0 z_cD(%noW@@GPCE2hT3Io+f1_aArp^=MPBH*Ya7wExZld0qsN6#SMZo_N3V)L-)qMR z+PTiaJ!_k6=6R5Fe{l80`^GkYTp)n5dfCohaU{OI`0a6o$>S$WBkrQ>D$n=H2K}(H z<3v;f=QpFsgcHp8C?`%dN7BP<`?Q2CL>VyfNPnYP?1km1hZ-Zk$ul3LT6>oz2z*SD zsOhx`$|X;~MTufN_)V#ANx$5Rq^NFkm=DEFXB9FD5UV~wBz$L|uP$^)sEnwb@Q6yQ zHAXN^zpxa|A}3%UuL5#r6u;@aSVJr}HFuX`Ev5f(CS9vPWfUlrFyj+bC4_0PAP0Uo z*adNCqFs(_to1SgOKn7$Vln23&Z!BV;!096-k}jP@PN7G{Myhv-aOb92^V?y2d(Jy z%Xgi7F`2Vp%&`HYsvqN5rV+Z=Z1WhRKbE tGK&&kyOVFB&}6T{(m2H4BI3a0-WWA_p5TEEED{P;!vBW$Nx{k;{{s(aE&Kog literal 0 HcmV?d00001 diff --git a/gitian/gpg/GCC.gpg b/gitian/gpg/GCC.gpg new file mode 100644 index 0000000000000000000000000000000000000000..e62de279c842d0c58b980ef8b72d41bd3992edf8 GIT binary patch literal 2635 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