From da7a12b908000a7c196083f5d86c9c143984f406 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 May 2014 15:02:25 +0200 Subject: [PATCH 01/53] perl: Disable tests They're on the critical path for stdenv rebuilds. --- .../interpreters/perl/5.16/default.nix | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix index bbd9e003b2c..600884db5e6 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -64,29 +64,5 @@ stdenv.mkDerivation rec { setupHook = ./setup-hook.sh; - doCheck = !stdenv.isDarwin; - - # some network-related tests don't work, mostly probably due to our sandboxing - testsToSkip = '' - lib/Net/hostent.t \ - dist/IO/t/{io_multihomed.t,io_sock.t} \ - dist/Net-Ping/t/*.t \ - cpan/autodie/t/truncate.t \ - t/porting/{maintainers.t,regen.t} \ - cpan/Socket/t/get{name,addr}info.t \ - '' + optionalString stdenv.isFreeBSD '' - cpan/CPANPLUS/t/04_CPANPLUS-Module.t \ - cpan/CPANPLUS/t/20_CPANPLUS-Dist-MM.t \ - '' + " "; - - postPatch = optionalString (!stdenv.isDarwin) /* this failed on Darwin, no idea why */ '' - for test in ${testsToSkip}; do - echo "Removing test" $test - rm "$test" - pat=`echo "$test" | sed 's,/,\\\\/,g'` # just escape slashes - sed "/^$pat/d" -i MANIFEST - done - ''; - passthru.libPrefix = "lib/perl5/site_perl"; } From 01449afa1b44fe193d79ae6488cd12f57908d4c4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 24 Jun 2014 13:53:59 +0200 Subject: [PATCH 02/53] bash: Update to 4.2-p47 --- pkgs/shells/bash/bash-4.2-patches.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/shells/bash/bash-4.2-patches.nix b/pkgs/shells/bash/bash-4.2-patches.nix index ac6e9e97f18..567ec3c551c 100644 --- a/pkgs/shells/bash/bash-4.2-patches.nix +++ b/pkgs/shells/bash/bash-4.2-patches.nix @@ -46,4 +46,6 @@ patch: [ (patch "043" "0mswgjk3z80qm1mb93jmbql27nbczxk86cw5byf0m29y1y2869nw") (patch "044" "1rk6jywzfvg1crvhib1zk37rsps73minhr7l4vcb3vfdkin2vlqh") (patch "045" "0vcqn9rb26bahhrarbwhpa0ny0nrf4vyrzh97d44lfcxypqfzdyx") +(patch "046" "0vc1ngkxkamwr022ww3vjp9ww9c647az4pjn175c1v60d0xk5hcm") +(patch "047" "0ymgimqz65sx2izg1dvm1h5cc01arl3j9j5137212l1ls00r55y1") ] From 69deced59bed26e8fc6cd2907e4cc12997a5f05a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 24 Jun 2014 14:01:54 +0200 Subject: [PATCH 03/53] util-linux: Update to 2.24.2 --- pkgs/os-specific/linux/util-linux/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix index cdc384f3ee8..1dd7c0c089f 100644 --- a/pkgs/os-specific/linux/util-linux/default.nix +++ b/pkgs/os-specific/linux/util-linux/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, zlib, ncurses ? null, perl ? null, pam }: stdenv.mkDerivation rec { - name = "util-linux-2.24.1"; + name = "util-linux-2.24.2"; src = fetchurl { url = "http://www.kernel.org/pub/linux/utils/util-linux/v2.24/${name}.tar.xz"; - sha256 = "0444xhfm9525v3aagyfbp38mp7xsw2fn9zg4ya713c7s5hivcpl3"; + sha256 = "1w0g8q5aj5pjdf8l52g0mxyvlk62f4dch51q9jm3hnqwgz0dchqj"; }; crossAttrs = { From 6303278ad3acb3cfe81d2a6960901d09b70c886c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 25 Jun 2014 13:32:40 +0200 Subject: [PATCH 04/53] boost: Drop unnecessary runtime dependency on Python The only file that actually referred to the Python interpreter was share/boost-build/example/customization/inline_file.py. So get rid of the whole example directory. --- pkgs/development/libraries/boost/1.55.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/boost/1.55.nix b/pkgs/development/libraries/boost/1.55.nix index df29b2402f8..bf355f7169c 100644 --- a/pkgs/development/libraries/boost/1.55.nix +++ b/pkgs/development/libraries/boost/1.55.nix @@ -75,6 +75,7 @@ stdenv.mkDerivation { ./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${layout} variant=${variant} threading=${threading} link=${link} ${cflags} install${withToolset} rm $out/bin/bjam ln -s $out/bin/b2 $out/bin/bjam + rm -rf $out/share/boost-build/example ''; crossAttrs = rec { From 47075812ce0ca06e647ca8d2ab439dce060055a2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 13:31:08 +0200 Subject: [PATCH 05/53] Remove the unmaintained (and AFAIK unused) stdenv for mingw --- pkgs/stdenv/default.nix | 34 +- pkgs/stdenv/mingw/builder.sh | 18 - pkgs/stdenv/mingw/cygpath/builder.sh | 5 - pkgs/stdenv/mingw/cygpath/default.nix | 9 - pkgs/stdenv/mingw/default-builder.sh | 2 - pkgs/stdenv/mingw/default.nix | 233 ------ pkgs/stdenv/mingw/fetchurl/builder.sh | 34 - pkgs/stdenv/mingw/fetchurl/default.nix | 28 - pkgs/stdenv/mingw/fix-builder.sh | 23 - pkgs/stdenv/mingw/msys-builder.sh | 15 - pkgs/stdenv/mingw/pkgs/bin-builder.sh | 5 - pkgs/stdenv/mingw/pkgs/curl.exe | Bin 240128 -> 0 bytes pkgs/stdenv/mingw/pkgs/default.nix | 157 ---- pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh | 8 - pkgs/stdenv/mingw/pkgs/single-exe-builder.sh | 12 - pkgs/stdenv/mingw/pkgs/src-builder.sh | 7 - pkgs/stdenv/mingw/setup.sh | 759 ------------------- pkgs/stdenv/mingw/simple-stdenv/builder.sh | 80 -- pkgs/stdenv/mingw/simple-stdenv/default.nix | 31 - pkgs/top-level/all-packages.nix | 13 +- pkgs/top-level/mingw.nix | 27 - 21 files changed, 12 insertions(+), 1488 deletions(-) delete mode 100755 pkgs/stdenv/mingw/builder.sh delete mode 100755 pkgs/stdenv/mingw/cygpath/builder.sh delete mode 100644 pkgs/stdenv/mingw/cygpath/default.nix delete mode 100755 pkgs/stdenv/mingw/default-builder.sh delete mode 100644 pkgs/stdenv/mingw/default.nix delete mode 100755 pkgs/stdenv/mingw/fetchurl/builder.sh delete mode 100644 pkgs/stdenv/mingw/fetchurl/default.nix delete mode 100755 pkgs/stdenv/mingw/fix-builder.sh delete mode 100644 pkgs/stdenv/mingw/msys-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/bin-builder.sh delete mode 100755 pkgs/stdenv/mingw/pkgs/curl.exe delete mode 100644 pkgs/stdenv/mingw/pkgs/default.nix delete mode 100644 pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/single-exe-builder.sh delete mode 100644 pkgs/stdenv/mingw/pkgs/src-builder.sh delete mode 100755 pkgs/stdenv/mingw/setup.sh delete mode 100644 pkgs/stdenv/mingw/simple-stdenv/builder.sh delete mode 100644 pkgs/stdenv/mingw/simple-stdenv/default.nix delete mode 100644 pkgs/top-level/mingw.nix diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index a2723f5575c..47d1fb6d9f7 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -5,14 +5,7 @@ # Posix utilities, the GNU C compiler, and so on. On other systems, # we use the native C library. - -# stdenvType exists to support multiple kinds of stdenvs on the same -# system, e.g., cygwin and mingw builds on i686-cygwin. Most people -# can ignore it. - -{ system, stdenvType ? system, allPackages ? import ../.., platform, config }: - -assert system != "i686-cygwin" -> system == stdenvType; +{ system, allPackages ? import ../.., platform, config }: rec { @@ -45,23 +38,16 @@ rec { stdenvLinux = (import ./linux { inherit system allPackages platform config;}).stdenvLinux; - # MinGW/MSYS standard environment. - stdenvMinGW = import ./mingw { - inherit system; - }; - - # Select the appropriate stdenv for the platform `system'. stdenv = - if stdenvType == "i686-linux" then stdenvLinux else - if stdenvType == "x86_64-linux" then stdenvLinux else - if stdenvType == "armv5tel-linux" then stdenvLinux else - if stdenvType == "armv6l-linux" then stdenvLinux else - if stdenvType == "armv7l-linux" then stdenvLinux else - if stdenvType == "mips64el-linux" then stdenvLinux else - if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else - if stdenvType == "i686-mingw" then stdenvMinGW else - if stdenvType == "x86_64-darwin" then stdenvNix else - if stdenvType == "x86_64-solaris" then stdenvNix else + if system == "i686-linux" then stdenvLinux else + if system == "x86_64-linux" then stdenvLinux else + if system == "armv5tel-linux" then stdenvLinux else + if system == "armv6l-linux" then stdenvLinux else + if system == "armv7l-linux" then stdenvLinux else + if system == "mips64el-linux" then stdenvLinux else + if system == "powerpc-linux" then /* stdenvLinux */ stdenvNative else + if system == "x86_64-darwin" then stdenvNix else + if system == "x86_64-solaris" then stdenvNix else stdenvNative; } diff --git a/pkgs/stdenv/mingw/builder.sh b/pkgs/stdenv/mingw/builder.sh deleted file mode 100755 index 5a9f9749a4f..00000000000 --- a/pkgs/stdenv/mingw/builder.sh +++ /dev/null @@ -1,18 +0,0 @@ -# the other stdenv could change the SHELL variable, -# so we have to remember its value. -origShell=$SHELL -origGcc=$GCC - -source $STDENV/setup - -mkdir $OUT - -SHELL=$origShell -GCC=$origGcc - -export NIX_BUILD_TOP=$(pwd) - -substitute "$SETUP" "$OUT/setup" \ - --subst-var INITIALPATH \ - --subst-var GCC \ - --subst-var SHELL diff --git a/pkgs/stdenv/mingw/cygpath/builder.sh b/pkgs/stdenv/mingw/cygpath/builder.sh deleted file mode 100755 index 3061900ee0c..00000000000 --- a/pkgs/stdenv/mingw/cygpath/builder.sh +++ /dev/null @@ -1,5 +0,0 @@ -source $stdenv/setup - -mkdir $out -result="$(cygpath --mixed $path)" -echo "\"$result\"" > $out/default.nix diff --git a/pkgs/stdenv/mingw/cygpath/default.nix b/pkgs/stdenv/mingw/cygpath/default.nix deleted file mode 100644 index a0554c1d41d..00000000000 --- a/pkgs/stdenv/mingw/cygpath/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{stdenv}: path : - -import ( - stdenv.mkDerivation { - name = "cygpath"; - builder = ./builder.sh; - inherit path; - } -) diff --git a/pkgs/stdenv/mingw/default-builder.sh b/pkgs/stdenv/mingw/default-builder.sh deleted file mode 100755 index 422699971ed..00000000000 --- a/pkgs/stdenv/mingw/default-builder.sh +++ /dev/null @@ -1,2 +0,0 @@ -source $STDENV/setup -genericBuild diff --git a/pkgs/stdenv/mingw/default.nix b/pkgs/stdenv/mingw/default.nix deleted file mode 100644 index 947db5f10a8..00000000000 --- a/pkgs/stdenv/mingw/default.nix +++ /dev/null @@ -1,233 +0,0 @@ -{system} : - -let { - body = - stdenvFinal; - - /** - * Initial standard environment based on native Cygwin tools. - * GCC is not required. - * Required (approx): bash, mkdir, gnu tar, curl. - */ - stdenvInit1 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init1-mingw"; - shell = "/bin/bash.exe"; - path = ["/usr/bin" "/bin" "/usr/local/bin"]; - }; - - /** - * Initial standard environment based on MSYS tools. - */ - stdenvInit2 = - import ./simple-stdenv { - inherit system; - name = "stdenv-init2-mingw"; - shell = msysShell; - path = [(msys + "/bin")]; - }; - - /** - * Initial standard environment with the most basic MinGW packages. - */ - stdenvInit3 = - (import ./simple-stdenv) { - inherit system; - name = "stdenv-init3-mingw"; - shell = msysShell; - path = [ - (make + "/bin") - (tar + "/bin") - (binutils + "/bin") - (gccFull + "/bin") - (mingwRuntimeBin + "/bin") - (w32apiBin + "/bin") - (msys + "/bin") - ]; - - extraEnv = { - C_INCLUDE_PATH = mingwRuntimeBin + "/include" + ":" + w32apiBin + "/include"; - LIBRARY_PATH = mingwRuntimeBin + "/lib" + ":" + w32apiBin + "/lib"; - }; - }; - - /** - * Final standard environment, based on generic stdenv. - * It would be better to make the generic stdenv usable on - * MINGW (i.e. make all environment variables CAPS). - */ - stdenvFinal = - let { - body = - stdenv // mkDerivationFun // { - inherit fetchurl; - overrides.pkgconfig = pkgconfigBin; - }; - - shell = - msys + "/bin/sh.exe"; - - stdenv = - stdenvInit2.mkDerivation { - name = "stdenv-mingw"; - builder = ./builder.sh; - setup = ./setup.sh; - - /** - * binutils is on the path because it contains dlltool, which - * is invoked on the PATH by some packages. - */ - initialPath = [make tar binutils gccFull mingwRuntimeSrc w32apiSrc msys]; - gcc = gccFull; - shell = msysShell; - inherit curl; - isDarwin = false; - isMinGW = true; - }; - - mkDerivationFun = { - mkDerivation = attrs: - (derivation ( - (removeAttrs attrs ["meta"]) - // - { - builder = - if attrs ? realBuilder then attrs.realBuilder else shell; - args = - if attrs ? args then - attrs.args - else - ["-e"] ++ ( - if attrs ? builder then - [./fix-builder.sh attrs.builder] - else - [./fix-builder.sh ./default-builder.sh] - ); - inherit stdenv system; - C_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - CPLUS_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include"; - LIBRARY_PATH = mingwRuntimeSrc + "/lib" + ":" + w32apiSrc + "/lib"; - }) - ) - // { meta = if attrs ? meta then attrs.meta else {}; }; - }; - }; - - /** - * fetchurl - */ - fetchurlInit1 = - import ../../build-support/fetchurl { - stdenv = stdenvInit1; - curl = - (import ./pkgs).curl { - stdenv = stdenvInit1; - }; - }; - - cygpath = - import ./cygpath { - stdenv = stdenvInit1; - }; - - /** - * Hack: we need the cygpath of the Cygwin chmod. - */ - fetchurl = - import ./fetchurl { - stdenv = stdenvInit2; - curl = curl + "/bin/curl.exe"; - chmod = cygpath "/usr/bin/chmod"; - }; - - /** - * MSYS, installed using stdenvInit1 - * - * @todo Maybe remove the make of msys? - */ - msys = - stdenvInit1.mkDerivation { - name = "msys-1.0.11"; - builder = ./msys-builder.sh; - src = - fetchurlInit1 { - url = ftp://ftp.strategoxt.org/pub/mingw/msys-1.0.11.tar.gz; - sha256 = "08qp4jk279i66q6ngksg58fx3cfv1r6p5n394h2kfrs56qs9zvz4"; - }; - }; - - msysShell = - msys + "/bin/sh.exe"; - - /** - * Binary packages, based on stdenvInit2 - */ - curl = - (import ./pkgs).curl { - stdenv = stdenvInit2; - }; - - gccFull = - (import ./pkgs).gccFull { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - make = - (import ./pkgs).make { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - tar = - (import ./pkgs).tar { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - binutils = - (import ./pkgs).binutils { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - mingwRuntimeBin = - (import ./pkgs).mingwRuntimeBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - w32apiBin = - (import ./pkgs).w32apiBin { - stdenv = stdenvInit2; - inherit fetchurl; - }; - - pkgconfigBin = - (import ./pkgs).pkgconfigBin { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - /** - * Source packages, based on stdenvInit3 - */ - mingwRuntimeSrc = - (import ./pkgs).mingwRuntimeSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - w32apiSrc = - (import ./pkgs).w32apiSrc { - stdenv = stdenvInit3; - inherit fetchurl; - }; - - replace = - (import ./pkgs).replace { - stdenv = stdenvInit3; - inherit fetchurl; - }; -} diff --git a/pkgs/stdenv/mingw/fetchurl/builder.sh b/pkgs/stdenv/mingw/fetchurl/builder.sh deleted file mode 100755 index e9f2669a097..00000000000 --- a/pkgs/stdenv/mingw/fetchurl/builder.sh +++ /dev/null @@ -1,34 +0,0 @@ -if test -z "$out"; then - stdenv="$STDENV" - url="$URL" - id="$ID" - outputHashAlgo="$OUTPUTHASHALGO" - outputHash="$OUTPUTHASH" - chmod=$CHMOD - curl=$CURL -fi - -source $stdenv/setup - -if test -z "$out"; then - out="$OUT" -fi - -header "downloading $out from $url" -$curl --fail --location --max-redirs 20 "$url" > "$out" - -if test "$NIX_OUTPUT_CHECKED" != "1"; then - if test "$outputHashAlgo" != "md5"; then - echo "hashes other than md5 are unsupported in Nix <= 0.7, upgrade to Nix 0.8" - exit 1 - fi - actual=$(md5sum -b "$out" | cut -c1-32) - if test "$actual" != "$id"; then - echo "hash is $actual, expected $id" - exit 1 - fi -fi - -$chmod a-x $out - -stopNest diff --git a/pkgs/stdenv/mingw/fetchurl/default.nix b/pkgs/stdenv/mingw/fetchurl/default.nix deleted file mode 100644 index b4d278b2686..00000000000 --- a/pkgs/stdenv/mingw/fetchurl/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{stdenv, curl, chmod}: - -{url, outputHash ? "", outputHashAlgo ? "", md5 ? "", sha1 ? "", sha256 ? ""}: - -assert (outputHash != "" && outputHashAlgo != "") - || md5 != "" || sha1 != "" || sha256 != ""; - -stdenv.mkDerivation { - name = baseNameOf (toString url); - builder = ./builder.sh; - - # Compatibility with Nix <= 0.7. - id = md5; - - # New-style output content requirements. - outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else - if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5"; - outputHash = if outputHash != "" then outputHash else - if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5; - - inherit url chmod curl; - - # We borrow these environment variables from the caller to allow - # easy proxy configuration. This is impure, but a fixed-output - # derivation like fetchurl is allowed to do so since its result is - # by definition pure. - impureEnvVars = ["http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"]; -} diff --git a/pkgs/stdenv/mingw/fix-builder.sh b/pkgs/stdenv/mingw/fix-builder.sh deleted file mode 100755 index 09d933bd17b..00000000000 --- a/pkgs/stdenv/mingw/fix-builder.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Workaround MSYS shell problem - -if test -z "$out"; then - buildInputs=$BUILDINPUTS - buildUtilities=$BUILDUTILITIES - configureFlags=$CONFIGUREFLAGS - doCheck=$DOCHECK - doCoverageAnalysis=$DOCOVERAGEANALYSIS - dontInstall=$DONTINSTALL - dontLogThroughTee=$DONTLOGTHROUGHTEE - lcov=$LCOV - logPhases=$LOGPHASES - out=$OUT - patches=$PATCHES - propagatedBuildInputs=$PROPAGATEDBUILDINPUTS - stdenv=$STDENV - src=$SRC - srcs=$SRCS - succeedOnFailure=$SUCCEEDONFAILURE - system=$SYSTEM -fi - -source $@ diff --git a/pkgs/stdenv/mingw/msys-builder.sh b/pkgs/stdenv/mingw/msys-builder.sh deleted file mode 100644 index a801e7fbcab..00000000000 --- a/pkgs/stdenv/mingw/msys-builder.sh +++ /dev/null @@ -1,15 +0,0 @@ -source $stdenv/setup - -mkdir $out -cd $out -tar zxvf $src - -# Make the Nix store available to MSYS. -# Hack: we are assuming that the stdenv is based on Cygwin. - -nixdir="$(cygpath --windows /nix)" -mkdir $out/nix -cat > $out/etc/fstab <T2aElz@Spk1aTk8ub@akaz+9JLxNsP zVo4$c1H%E3ILPlH@3(*mkN^ZbFfbg@D}pGzAk4_Xuz-nyL4=Wkp$$WwgI-c`F-TVc zNa_G6=0QAE+yF8!6Jj1XY%VZE+&BwWJ;+{Eouj;=76PH2Ps4%@zjeEE7~bw?=w`5; z$iQ%*+}gI6f#E<=&^}Ps3JS_%$l`dRRLR89d_wyy9<~KZ99RDvgpZ?!` zM4&hIN9T>`xY$E147O7k7!H)2DtEP=3}Wm-lIksEuw?}ahS?(_|^j@n?Odhyk6W}qQ+o5je+67>#G3)S&Ug6FXllMwtg#RZ9e_~b?1w-SxgMg zr~kjK`TzfaKtL8l7Wa!Ph#HVPm0Az*wp_WBKmb@pK(~`Yz>9a~APWQ_>Y9HYC=m?~?&bxV5ZLV$5b)w0ME=FLawdjuQII*E z0xwo(GBGqi`Oy4E;6)u+o~N53U?IpA0SiIS2zb$Cz`)RX_(ecD6GNwr$_tKaCWgSk zfNm#&fEP7j9Z(xzX8r&Fzjuoo$V#nYPTx`1H)@Z?}c+NJ2UX_6OnJWU@R3_c;T`$ zLpKBec9wwV2OO`tvN(dk=^-+z^+2g)>+RC>uZ7`ehQE-iU}A`fdTre8%At7=Vo|R% zV-{mT_>1?TXo1A+)4@8wPA7fz1;tGB-rHqLos`Wr5Sm00d z$^V82I`4m4_x)n)x8BJACF0#vL8kS(NHGS4y$A>C?mQOpnltc)br};wWalxcd@DHm zds)N+UI>*jF)+>r>57Q@zZK*HNaBDd3*$0SR^n+rz~7qv|NsBa550)M4-4*|(Zj&N z(0aSXyxW}a2!8Rll!>A9bL8uzC_&SCI7{Tk zB#_jh?#&Yz7#Jd2FO?|#F+8x7m4Shw^Lp#I&#OyVI>lbIbxsD^+c_Des5kXX=LMwn z(0aRsuk%KCG)KUTHjr(v-$A0^qw{I=4~}yC|0=Bk3!NBtR4#C0cx|?07KqZ{u@ppU z?AQdN6n7j2QBpf@fGFV||3DPa4#R~`46j*t*e`Tq07pNV2oLK#2F?e;hW|S+H(N0B z?-N4H3oNg>vRHy%c$P9TL`Ak9DB%u%VOzq)(8(6@nsq-Yd4hcK1MY+7Hv*l9vly}% zf?kN_F)?%=Y(B!%$=n&t(s}v&#m3M7|NpP&yxDn~e~Rmy&V!Ag85kHExO=fC*HLbu)EN{qXnye^6O|pMilP z%PQc7SqT$ET&ej)y|Nrki-hA?Z=Z8=0{%-|wzh4aQo%`kQ|NovDC5xOGAjzq-_s!q`|6ed? zgEE&w?^IAS?A;3@!SX@DFFr>xF#PHK(0ua$r*)m@x~GEFf4|n<3$m=&MT{}vzu}Ae zVo;hC={($ephUfUFGvZ*sADV^R=qA3jA20mFQh<$6fo=zm&e#{7 zt{<9fMHosPxJha$@*z^dbvnzpqH^flf!3_^49(|ArYeKr*EtUc~?U z|G)VNPwQ>|DF^ts-FUg3k%6H*_Cxn%8xW(}0#rU+Gz0IGteemk${j7#Lk&?0CVWlxS zXF9KShhF$!dZP1iuZdV#@QW|0Obp$=AG!kznvV!*yWVNNRL7Hf=?fzRgXM)frp^nk z2kHb~*!=td|HZ3F28K@82c4l$K|!HY}zAcJ`vz;S(m@c<%C`5bq>12VBYRs>Xs zh4OT|egGAtz5*b3U*KPVu+#TNx9@|_&^Mj2Pr4_XfE@37qw{iiqX8oW1LtA>mg%4b z!T|Q^g>H~%ul(QO0!k(u96)60mH(v|UPwoR63~P0$shy3iR274k${ZBNF--qi9`jI zNED!nau(B0(0$iQHDsnhjHXXpuV6n6VQ z_?~*C({&Fh<(z<}oE@F62fAI)%)R7f=<^Jpp>(ryA$NV@2M-gV>fjAZsA`a zy9ShUR`9QP-2zHEAlpIV1xh&}H-OmSlyjiQ0hDs~lv#qU1=)G6J9NkY(k=f>H^5TP zu4GU=2xz;W0jCj(KmY%~I2H~{BNsYDuXMXU==QzP9ebs-0~B(d2Rmng!m+ynnhW|6~yh{y8|qUsXzp#YYA8ZNLP0&Sj$w97RF=U zt{it=Rk}SSx+7#@YC-Z48w9U2o)f%}qN5dLlHk-8fB*ky>;<#ug4mXOL1c|sJ%{C1 zkZ2iCH<<1Qi+6`|{AX(Y&)+|rfq|ihv-uwbe>=}KA$-(-cnSr7C z5<}m85nxO73=@4 z8~*mU@BnD739b)=U))Rv)s!0Dp&Y>(r$Bxw5_xf{3?#M~==w9>W9BgmxH`$eQ2ibk|CBw}YDWovvqIoD5-L=)BhHdZE|#Lcj~|Y$k@t zhW+3IsYEX9zrp_kmj4ADy{=a>UVt1f67a$o>=v2VEXQ20Ff{MK0Lp)*ssFd1VPIg$ z_`Ar7;RV|i22lGUs)P&NZf-uH@LCQk{~sj(Y%&8wWb1+G5&@{ZLuWh4nAh?djEkKZ zAWB~tF&P)Y7Y9IX#UB>-zpC(b-sa0UH-Op z3=9m-wLDDxt)M!r+f~Hywuj}h;<#>Cfd(51u2P={TZ0463=E~R|4pAPa$@Lpy%LbY z47M3${)>uIP{<1W-wxt+-pFFq{NNDK?JB_dp|_YZ;6->g6T>l9unEma1iD>CoINZL zzg|GVP-SF8H9u!D_Bt~{3=Mc~4AU#q?aR~adgZ@K@0~?X3=l^Jy?9ZA2)t&8y2bDSxCz4F9V*c6E7DNI^`EPRX#?XTkV9WCWdsKa8-M$3P~*at zr`Pw&f0fn+AWxSH1ZHr88E0P9LacgO%E-X5OMI~t!)wJ|Y9LB#mobPE-sJ?Mcy{@N zDArvGV0|M0OGTP%PcQ}r@=rOCQMlNN!SFx-wh#YH&-lI22ATNmLh})c=3@@lwIck@ z0*nj{;Tc_Eoo8NfgXE9!G}oSBD0McxZTXqM8I<~ZS>&xDGj#rP4tp_?=AH4nlpT7l^e?T3?&f|s$ zKpjNS#-BeJ85sE6*MqVvNJGXEkjJ)yl=p50wbV0?Ee18znHU(tUL?dbFl3xv?8FfE zVnGI|=2QR~{p9Wc|0VnZFMQKMy~(X0H@!~EU;ydJVt8Sm#l+xY`;U=v^OjTb}Cf#Lpl>fTzqFM$g!_^x_Lo; z{mxzx?|AE#x3Io8h|j>^($CDmVEFBL>lvuT|E(a2-nn1i{{No=8r%+kVUP~;Kd1v+ z-@F&Bu9QFc#jkiKhUiYPzSlm6m%70+e>yIJdoJHEcJ`hCMc92Xx4RX@`F^q2hw*>l z|E(Z1UhIOp9b!a@N^ro7^i(E>_=qensEQS7ObpSj2jV)9@wcS@|Ns9rOY651=3{IO zP*?D`>}6tL_z(6I#QI~cmqFfm&FJ36-g2Nsn}6Shg`hDSoZ~ZFL5_%QJy3d%e;<4E z4_^M3NG1k`dR|bc(4UEcq4@{bYvJY}TKp}JAaT~_AIh(pn}6u@w-|ytk$dmF{r?|k zn>#_<+(90SYdugZ+{JEV%RlvyjTQgY1N_?#v>qzm-C)m9!g7qA0pfI9f`&Vyh6fsc zD)CP}(0ZuEtKnx%Z#iSBb(dJ@cm92cntv3PDAseg9w@oo{3EYK=(SYykCGDh<{xDx ze6RU7alYo-#PynO6Yp!LP23&Ay>*PvuUB<&cYb$%z4#b2!)sHBKL|&G5!4?g=Z>*6 zG=m+^P@>x13vyx;ci|afb4>M1?8?33pf}up9VJ}EMLn-@iHqbZ|OY7~DAmmKdm<-8OrCgA* z<;r3whUVX_CAytAUTlB&|9`;$tsp!8Zw2KgNS4dE11?EGu6fb)8q~R!fVrCI|5lL0 zUi?mGVu*((?Dxq`3~?{p{`~*n4bGO<;4BLA;MXK3hG^7gOXHghYzz#YQwx6n|9`wS z<0mBl9&b(g`5z39wI+kaj?}N=?Jt zyFec5X6gbfv*IY(>D+t>?48$8Mf@Gwk_-$m$LM5(qlBknN5)Dg28I$Dh&>Gzj0`0L z4v^?!>}&-^<7?CAy&#&QR18%Ue=8fPoI?{WVFSC3k$)f9yUj0@n}3A!x3806VEC`n zYIEL+fqx&^3(YSQn}101x0f@6W#(LPV(50|=>{jA<^wD*JYW6)|FTYk0a=veg)vAp z10vddz~SX$AtVK?a~K#HUI>7cxPp}U@-!5xF}}0}v0+BDf*Qat-n{((zuT4Pcmt?$ z3d)@?MKBc|2Pq2WIoiG9DH2?4|ajzF{ z{^4GtQP0}^!|AnP^AGP5pVx)WKhjG?>)D%sB$X7sPHz5@U1Hw+Bez8AbvS6g+M&A_ zK~^7pDA#%UwcZZUj3uhLNay9(Vmm-H-KgSRotJw>xFHUQc;z*3hQb*qhX18J zFVC*r7bfofJS> z=H*5)28M+W2b>wcIS455w*-NjxV}8c9Th-RzAq;u$qMkdfJPTUG321Y!N9=qvJ`F< zI3m(OT(DkHvGOt;#C7Fq*zgL}4|(YU;)e1ZYkCRhT7tN)Jk1AOUX}**p5j0%L_)-9(@K^(=L}q-+CZ_+)s2LIx85`teK*-Jv{j@y)wH zoi&D1Nr>_c-!o1OK`#`Zfl64Oms>=^Vc6LSQgp2G57=e%MHwLT7~P>f%?A`Zn?RB; zJ3&fe>9zSl#0$IU|Np-%2C0RH9#e?~Jg=~x03~{9kdgpV28JEr;HpJ6!sA82%m4ph zHu8hr&`_w(_)-O;qIt&@Q1UMo>O9ol02-!mJer^+4%sxIAcRx0JK<#EZwz|Nrki+IK!Mur6atxv$cklRi0%eOcnHY3FVjHsupnZM zVPs%W&ggA{?2oeW43C<&y1E#?JrK`H4iID-BO zgWb`v=^dE+9>jI!Va;G z5hzYwd01;eoT(5F)PfF>1xz3d%t01_eDxme4Gj=Cl&4`6s0+vVQWC@k1;GSx5O9IG zAjPl2ihm0+FhEmu;u$A~7w4NHb?7col~)=FmC6Q5ZE0p;h}#9q>+!7zO3k2Bg&?V! z%?u2Y;AxKN)&r%|P^l_VHY(+L@%s@tlYr&BeR(=3_JDlT2r1i}4mPeWo zNWAzC^0f{~)R(7mBgAS3#+Onc5rjIC7w19hSOifEzZ;DV;Qmdi5|T|CFMd1$b#eJy z^+18?%5%&?mEpB$cPP&>CsoGdP8uNZ9e2_JQQf{g#~f7{U#=ElVCV+7ERMI;<)vlK5LeQIx^Zz`*doOyC7y z5U3;e+B)MXB5}-$1a*0jfzp~7B&ae@fMiQ~Ui3czr!}})pc1Y-l*jOY^C1(%1D#WS zz)e>VsLNWvmDIj=ZT(*&(cKFY>t*2%2!F9Uf(bM<7FFW$nmzbMZv+!VROj*TR*-_= zUJ>@*)-S*R{|^Xy;T!>)t_2A%-z>&}7iJNlhJygO^qkiXwijYY=Z{XV z*X*4iUQ|5%|GyI)NUh&W_^rWVP{JPeq9&Y)A)KF}#onWMY7*jd(2x zNk+Y3tuGiJf(yp(tswQ?5eBWdOVSN5HJ|+dr{e--I=Zu0<>&wZo!_C|Ul8Z}#aWgoumAu52b&X|!G6|>AuQm@Rmc)0__M5M5Q7r77q|9`oNkAWeB_pB4Nbb0YC3|hVNf@;GqQ2G=&1}AS7{A_)FKe|tSdkjBNIr6IkE#-mw?1y-T(jpr96uG z29WqAkT^Sv_!f}(E|BXv!CokYCt^ffHYJ=VAVq zHc$fwoS7Uf50|DuGL*~IWqIb@>`n`QRy2G<|p;RXJEf}jxwA*2-`s?3ZG46k`J zKvd8Rzc40-c+fDAC?uO^Sv4PE4tQ}q6f}f#IIi_}iSRLI2Ip>9p3Ym4Fqn4_lET0x z73%_!v%By8|Nrs;4>-7>#hd^G!^?Fbkx-s)U!KN83XBX4jR#d2LA?@CzAomUa-j2A zZ|j#||NjSMNWc?D=TsL^>g;v+`Tzfmiy@%Y#pA)>%E8LO051o%LLq6Vv(@4!XguvT z3#cr4!R!Yv9y?oYe*XVoDghqH&QLlFT_0i|&%p5V9H?zO6(ryJp~1?5f6Afe4~*bZ z4*r%>W(J1tUXa}JRs(2(;CQ^X0?O>{1zDD5eY{l%D)N6TNaV$w5GIDm=+0wVI#7Y` z5QsYtM}dbiEI;#40*zuYb>2JPY68{U`i;K@JUo88!A_@yxi^mS7#qV&P=nSP8gIg& zc*DAKXEw+}&{)ltEY{!*Lr{6(R0Hb@r!*gC?cMqX6ozv_mi5jp`St&QSa60pIEX<) zFRFq;!79-FgNeWOFlct?)PKVRe>(4XUi`GK^Lyv%&WqhsK?*;u`+iyTbgzr>UvO73 zuQ!6}m;)ojYqu=U;0$k&y{D>S_S!ce=FGD0oC^w^;1?aiu;Im0QBb&mL|+sKLkG}^Z{#LI4|Nn!QhGgjkzwiqN6|cu4UyB-kdo2ml3l3!SV9>Iid-1K` zN?4AuF}P*%9BtL0 ze=(GJW%0Zy1Jz5QaafS6N_0RgW590M3*vuX4RK5NRFH;FXO7Op$3X*_44nZiuX%!B zRDwM4GMNcfSAx=8>wyyH&IpdqxnRz1{uU3=kRCX>wSFt%Y_MbCZ!P-!|3B0#{4M$* zty4kXG5ppY#NpO@sq{xL%U4kEAmGLAKv0k#Zao0Y6QQs?p&SFs6QEg|ligt5mLH3S zx|upzPIo)8bh?~o=?>y>eEq5$oF9&}d=>;{cEdaW|3mU^mSAueM?e;L~pM!ytgWMIg6 z1QnZi{r`W^YB7-CUnmBEf&r8);$KwV`u`tXz+`};|Mg|4JOBBECNX$ebwHC#pcLE5 zqSEck^KuiYt^xH6o`D+3FCVjkyGF;Fo`bnp*cccLZ#Ua6IO)W|z~6F^g@NI}$y^Zc z#a@3V2IpoQFoz-T^&?Q=s6D%13?sL2r>h|Snc=in@21*N^CtkFGf&>&dMr;fWJ3xW^ zG9F|y$R{trPL~96LwO*z-3#q!|Np;ag9tTl0@=;Lz{v3O3oE$k4|9zv149EtXCp`& z(vmFUZ@tLMz|i=KfuX?x;)It6Kzcwu7aK^${G#$ExV7A}oRxuL2PieYyu!-B@ZyX* z1H((u+(vgO55%N64c(v z(uFpT6n#Mx>^z`ln7xG=r4AX~=bRV{4+B!yu1mKZ{7h4a0b*77?2Qp zbaCK`u0yQ{z#}k;*Z%+SJk)xLzr_V)x|cxbiRKd=olXLf#NA-QP|DqWQlisK;H5G% z14FM9binn+?JNKPzZ3xJiG>O^AFk-U@#656|NlF0?TA0;#PA~X`v3ng-+=NgLQPHQ zjTiGFYQC&+VtC;SQgZ^N#+7FmXc+-yytU>Eble3rlnU-RFJS`Bmqsu!1Z1Ru4DShr zj?6{JHCHGwl$d37frLw8!jat(3eDCGCBpxWGp2!LqC-K8L|7uCUcbly_khB@nHVC# z146GQY4@Guf+@(j{`Zm@JHEq4rr48}mZs0WLnT~v;4Sx^`CwFq=_6EsNk zLf9MBMmZecdE>>J%is_I4X=G*U|=Za56)P64m3dc|01}O0F9bWU}Rvh1{=fQ0vg;2 zelf|Di6QbOXru_<>t+RMf1!Q(|Nobuu@1O+^NWTTq99Q(Pl)lE!OL|L=GchzqKHAR4k5UX*!&dblM&L2V5X834`l_p-qyGic#xqXcLS zq13y#wdE&x?h70Xx*kjn@eWa?GN1t>ur;94F=P8VP+zR!!vFu#ajzvngPW}@K#k-k zkRh+x!P7ji&AWO*(>I72EUsSA)K#hMfAGW%blSv%0kqJNqrr-SzlG=7|NrQ#c^coe zuz+T+Uu?2uV(4uR`S<^S#tcwHfFa-ozXxbr11RnE?w#`I|NlR|P7XUkC241?4|omt z=hYyuO+D}%G^O_AH*89c;SYqB#dN&&1YC3nly$6i{qO((8IQHD0|^{&T>+v%Nx>wP zf#Eod3Mj`c28||XF&t|R`TPGr!;58ZObpTSSTy$c1IUl@mp#!x1 z;s5{t$68PP`~RQucG`07mj|@*0Mui4WNEO_E#=E940sXj z4(>NamGbsZ1qGVnffqgZ{{L^T&hB)V49yCkyKmw8B5c=Z22Xk~Wiu@a>hhM@fY zkCnfrmx+NPAUNX)$jh?l!I}PLB@?Jp1!-g`vG@;m?P~+L;ShtnMK<)d3W3euaT%m} z;-mlnqdJd8f|mKOkp)$bAjiDq`48%aA2{AR<2Pv4HfVWC2~Xw$&`Qouuvqt0kW6HtqU);9=MWI0FT#&lg?2u%~*u3`-NE?6aO;G&rWdPa0-wK+5 zYuIZ8;p_*kZxOuY#PH&HIs<6^N$Y`9{R{<=z_xVoh-2sB5?+X-SV03KuVpfHL9#Q_ z85kl#&6E;3s4Qr>r}Nee!E@lQBS-Ly6M+m2uM@yE!Z!y2mXfdxRz^?);eqCy7gt;9Uvgr|VtDc1jftW4K#35VyUpoG#Y&A{+tsU9d*bha+}{r^8asvn&F|9?NI;C-1W4N8sRgiw;# z+sg3=RN{b0kUIl1q!}C-{%-~8ePON-if^9oxggmLKTw2RcLwdKxn0Vekp$wN0C8W7 z{x{CZ265N=GB9*Uv&6ODjxT-ve=A7a3*|rt2E%XBFP)@7!z`dw**$m3zyJR`dvAc! z=IxR=a2*@`VvZBI6CPQj-Z{4f>?l|<_gWb|ob%%B>Hq)tOM^C{yqqHiol|Q*pwQV0 zQrJBeL_#uC=hTWnARB7_fKoNc9#CgR64cEGak{})cRR3j2Xb__Uil3ge{BId2DB;a zQVDy|iw90j4DsEqV8s#vFN-Ciwn2;s+1Wb>WJBu=utS$X)7tUY6>!!CXj$BPsf0J^ zMZ7g=T&)!(2r;%{uN5e7bUX0yPdU`tdIoGgZ0Su&rs08xy`UnPp+u+~Ttl=TDCGc; zY=JgC^|rEr@@8)v9K_x58#LJpN)ub4ET~gU^9VWW4`@8Rw-r=-{oe`-(0~`` z6cCQGc)1NUvkorfGYT((nnf>8Kzgm9ICzom$i%P@ltd$5{uTo{1!Nwme|Nm~2-J1RYRXwm-oUf5fL>%dO1{UxlRCVWUnJ19@x zIPw2~+&*zo_h>8FR2K)(0Lo3!%q}>nLDAhk7v!*j;1`>e7#N}=gCXX;kaS>Th==>2 z>EHkV4ST^AIDZSMRrw$6o#U+)&>(rS(}D@Kb*Ki^@B@3u@BnzW;QK|-P9BvPUG|`c z?r~5z`vfBc!!ZU1=z2wvh8H?^;PFuK%V#M$lDqvB8 zEQatGN6eWRA|0Yjv%+7jGzS&+VE;IjM!kr#V`AuLX#OEnq6=!E@|N(u)@lABS0dj0 zL#>4CwL*Bt>Pt=xujRrsu7GH<@QfcInlC&<;j$CMYqs!=w98JAse4ead-28tE| z?46%qiv9opKm5fGJ0^yR|64(hezC?59N3`1{LkOA9OTozm7toj#I3j01(aVQ;r*i7 z7LqJVrMg>VKr61MCV8OW|qTABYJrG*ck4P@({?8Zy9> zr3C^n9-4qQ@Vr8*IJeV;blscY*$09*3cIhk* zsKj!R#2JW$;ic9CC9L4-{MJh)irwG@)_R~s{C|PK3qKQZfmXuR*b8b2fu=*dr-Dl7 z=3k6;@!wkS|NH-6pfs!-T;R1HC}rKT;j$A$KsUH`46)21C;;rO<^v8HJ3*2!vRy%u zAZhDSSpmom{keQGwW4Ap~=(R3Mxu^=Y9ay-Wh`GpoJjd=3hTV zKI4SA14D+kA6&c~A|9L}30K?Q3rg|5TS0Bq&R&p7om)Y(<1f4+YBOY{92hcm5M~%d z#Dg;?!_9ah4-w1wB~SxHb|yi^AHLg4>a zQ1udkQ8EDi1P*5VmauOYr>PdIi)^7ePqOfJk(M`@X86(UE{GEvRKR zsB$a}3;|i%P`LzDIS!DV4phzsRZajTrwf(SfXEphfaX#DsRshG^q`X55J{M07#JA> zvJ9Yd@0CD4=Yh)!Fa%^7LFFzhff~D@oY#DWXC-KOxr8N)@ip&C(6Dj|OBT~>rYwdm zW2ow-XeKo<1Z0^&S(gAP=h}B<8>*Ks)6!G!YWb zFo_=^qtXx(SuhC}kWuLfi9nbH2S_3VAz=ZN01ahiXdxuzAre_kS%FaR@+yE*F=%)J zv^V=eDR(nuc%j7YwMallAVTXCd1zJujXty{WOopiWzZEnPmgNE!^@WJ? zZ)+6=9l(+$4HY+qi2vUj0ty=)giB>$5)mK?bA$vlOdtJJa_XCwo+IXUkEku5LhKoL+u(!!Bq|wUj-5GcHPi=phP_&1F0d@50Uy` zx+N;w(gy|!!q=gi;Qgx$0+pba;zAk%iGfTjnI@N{0B`Tb|}4_5wG ze?|s|jm-bSf!N&&nyJ_Y@_XmCncx3GN4Ec)^iBZHKl}nae%BVze2NG}?TeQ?LFZ0^ z0=K#L07I$F#ibx48ux<81L~X%piw{=yL&2VV79vzG*Al~F5zzp2Sq!0Dvp7_#p~by z|B$|uK&b?@*O_5=1-gRps~ITF1paRY4UW86stp?52Qj-N1iH6^##oNCfYvuMbngWX zzJSgc34U>32fWm-^-^bR0XSil{Qm#H!ZeE^JS_OdA(&(ZsNum7{31{lq?#v-;r~{U zy8l~2dV*iff~d=40!e^ud?BF?R(Krj5m3}4Mx0-^{som3pvj+3aA3l!9Es+=pz4I7 zg#Z866MsM}BwifU0xhQQZgqhaihKdkq^&8yzz`YT`mH1kHu~%fX>>R21d%%l&E(V5ZXx9+rWbjy$ z11NOymn^~c%i1r!~m_#UxbS=fL73h+r;1{xzLyghfj%McPnU?2;x9~ z4JL+&hP~ifw-Cpl+8xhE1Xe%$S}g-nVFGqiGiV>1_-F$6Ieena5l2Kv^$3w=jYZd~7{X8rHk@ z%m07>d-sAggBE`r0jptT2=Cl_;Qzn>FY*pBGISn}X#UL@Rjv#j4pa!(0b0eV-3n5i z1v+lfLJd@32zZxn2!A1SkC6ez{a~jzztQM)z0y4c6hffI{?`q^9S4OR!|U*dpV1|$ zUHlC{Yx$=fYWNuo-DkkxdH}RY@Mlb^PM1Gp!_R84Y&2B1l&j%qZ3%0`&)8Dl|E?VF z4fdcD9atC`y4c-2n4SN-av<&VuLke)FP(ObnW5YFN_Xg$?nxlK|8E4j=Hjc)&FxyC)9HJrH=eP#K%={sHg7)Gy|EMjIetC(3fgwDD59EO&CJ<8- z#7qY*stY}HjERANzZ*v{ODkx?Kj42E%L`eM8(I%Ub-JYGJ=0Ld$WU_D*}dEMOc%4ea|feir|%iV11$&mTR>&e%f(FKkPiig{C`)D z`(&%+$g2a|PbOVHVvjt-*?u{!`l_7^r@V6WVHHBT@A7=wKLj!tUUj+2J zJ`d=1eHPH``ZORTJJOjU{6(7*Cu)ra`5jv2nt75&@pQnOCp^avH}8L zoB?+RL|&$WHn{w>g4DvlSs^tHcSG&_*izPR*B7r@!A<8*H;yjXryXuA9d2x0uFpE$ zSYLt`s~~$Eb>|24oXUktps7{Ryz5DrpP3oJ>63?n0m%{aHvunL!QK#fIUh7@S^M0o(~YImO`tQ3gP?~* zI)69V8t)s2Y~pjIXiI3Qm~IQP2V2pPw;oU zUg`F|@ZY54#We-c?8~QKF#q-ce>~_kT9;+4V$KMQa%T8nD)K^43lx3=VK0~!m>7az{FMi}SO9#c#c?K3ZhXxTIhQ3w+9v)&Fe{q@rS+d*Z}ix`k# zXDtV`&U)!14?CN$`HcX`g{~jECxAkvdjm+lQ)lRlh8^HgDdjoV0Aesg*7Sjn@dTON zdEw%VUXTBl7x|kT85tO|4@&fkNOU`C7~XFF!BnDJ&gxOZ`Pv6GWuX7sHLcsp$RW+z z$sn!M$*9yW?YNT>1H)^rE+;)ECxZ?rJu4^OI*l$Toen3x*CO3cHq1^IolX|kP6l;C z-A+24P8ORPUvvB~(s+4|fq}uZ`ISV=?Gk}**ALd)YO>_xOF=%m=!{@t!`F1`R)V;_1wG`bx$Kz?wB z_#p-42m9Bt{QCpBx*b_Sn?SooCKw**41EGRmm&ye+V_iLy^;T4aELN6XvV%^yw`k0 z;I(y^BU=ZX+iTe24JOFKsfU?ye zP(|ztY9TU!GM8syr|+5;BUzTuXE-A9lF&L24gGpw}OI|e_sG2 zxFo_^3I)hAF+|6K3RLh~=30(kSB@;MfL?dTfEOXMpmLL^^+0dHfBu$@plI^t>23u1 z=;8~@L;UUY7#J9`4@vZfZpo79b>Ywm2zucl1KLfq1w7-#RH6xqhFDNE=)4Z&-ygcK z+jR#x8e~Axa3AEY-pc>4Q@UJt^~PT5aJ_QO^(w>bfd8dO`1iXW=&ij13HB_Z@E2La z3=Dt3g-z%0<|867t(yN!w?HDmLXCmpf9Zx7Ix<_Mbh~Z{XLel?9PpxC8tnPb(iJb~fkqxf zH+1{1=)7=@g$op2;Iq&`ZC?;1ntTO`1;5a81}}ez;&15(>0$YLCEA(6qxpvr zfBRyPI+fN9G0qI2_78Y~>?PhrE(J4LLCh>LlMTd-2Qvjh%n&e>oxy+s zbV}|dR=C4KXD$9Oeeu8aNk$dO(ihg?8Fhh|Q(@L|fb^dP>*oY9Il)XWs8Q}Pqe|1E z#?*s?U^_Sjg%|`FKwwyx3@PHRrB|&2>uT|ZeZNSmQ z@Y3zy|Nr0~N-$_8M@x(|L%@rL(0T3HJKdpox?CSScQCy?@b~|JP%2TDU}6a8-{;I2 z@IpcYoM4)d2)tbM_y2#Jm{Na`1n3|z0nn1Jyb`|GvYZR@9|No)&&EZh6 zn>(L2A8-f{3l8{S%F$iQ(_JfIc>Bdi36LKxe;2F1SSHBCV8h$NB3H_Gj75&&wXh9G zDNpkW(7smYUgv+Ehn-(vxBOkodd$V{KPU@zet=~nNd9Sj!@|M9&gVsE zL+)4@K)dc|Nii{a82-2Y$IQS`&eHk4^K-*qkUT?)MV4yt3uy_+!nzWz-mPEY+JavM zgS0_331q2;z4#0Yiq-?srA(dQTmP5vfsS?K41aM(fQcdMH4{=bZ+NNm=?;NdXNDJ` ziM`eXrACIAc1VHvpn;Co1EosfR?`l7kPv7cVe5fXeu$7dNJ#7d|NpUvL1hC7gYVl2 z3wyC-DI)`9VE3}&rOspDKWAP54fASV>pYlw48-d6{m|+9r91RXx9f+vv6QoSrRUq>Rh|&2$+f`&{r|XCBKRaFD^s=zWM}fl>Y#~HTx2r(s&F)YU z&4ZmE0yQt(W>M*6QMt{ca>Fzr7IbF?OLSc9y@Q}rSi4<0piT}2c|W-E4QPMP!hi$L z4BfFD4vRqy5B}Cx(Dn#cfeB6w7rLAnjwywe4{$KG9w^m*!Lycu;TtQ+t&AnCFEqBncuXa%FQQnO7>Kf*C+3!|#H~26xADwB9ZWfn0dN)?6XNP-@+<`y{BnS|a-*ehmXd zx3J}*5}{V`V(&Sd85km7c&=e!=wxoTW+)YSp|pX4VV5*$#^pdKa|uspEC=Yc{+CQE z85j@;_jkL31~S=VU!F=~fZRR+Ju*Ci1?)A%LFR|O!L9>0ak@)6vKTXdG&3;#2M1^8 z;rIx{1Fg6DTR>Zdz()-K7X?K@>w(T@(7jHP{4JnOQpcNFKwUmiEfOry>n4zKfRTYA zAn3(0VJ3#|wjZE<;>{rP-~*-rhykEu#Se8he_;ZRoIy{)>INw>Jn-k>L#EE_pI3Fa zX@JHXrh$&l?ra9JyV^jfcpY#416u9;|NsAvW)Q#iQi%%xwze+}3=9GPH-l9FFJcLM zq3a5&dIUf&1&Nj9cejBim0Ay!NCx~D1tl4f6i6tlB=}hK70^zw?lw^03{440D89tt zSo0l-k_X_?KK_IMfJc*q+f z64BiZvH(>C3i zUZA@el!V|Hmnd{Pt3c`zXALlYycty68+1D{GPy#>JycZNY$C^Pm z8ZjPk2CdJvVPIf5*1QBHe!LlUjuvRk<8fyN3l;{3`xHIUSb%x{4E+BJ` zH-mT(7Dxcps|Do(<>>BO%tA;bk`y1H+C?5UUZysspjg zL98wiD;LDt24aDZKG<;y!~z|1y5lW~1v=z(2S=PU!%J6?It38R8pJXNu|WGYcX)$X z>L9UX5K9)sss^!yL996-7AJ^x0mK3w9nqlu|h$tJP^wp#A*Ps96_v^AeK3ZwGG751+h+m zSjr&Q9S}o@32jAW_Vq*BLzg2?q~y1c{_H2sPr9oK~%zycOWWq2WP4?!|R|O8X(GhM;wT9 z*--$ZYC zJGe5OL3hn4WkAde$pGE`)E&yv{EMYrcS_Nof)hpYGuGzyad1a$;ZUd$)XbWf`K2@ zXytj?$HKtS_}fh#bofFUGXn#EKPaU%{zF~t7=v~Bf{Xzj8MosSSOsVS8-Gg=*rA}z{L&0;tUXw9 z0n}|aV4fd{C)@bj3e3|1tFs2PwLpfZf^D${3+RF+?Z9kPkfaA#(g`f!1U1J2%mYaCQz#`5dgFPC5 zgBE4+w}^vyvW>sp!E&I2rSZ21nEe@a!o@bQQC?tyZ;YS-@&>a(3o2gD1WSTeqVcyd zLCx_6OFsiE1ub6VZvhodFY`d97*i%Fv_Y#K`CA;o&b42HU^&onDUH8F!R&1yjgnyd!@&ZZ!G>gm*;_%9f4~AiwLmEhROW%q0WCM= zZ5DQ!y&IPf+rQtdd3tSrR2C=}U;Vlpg zTpE4?vB0GvN0u`Kc%*%Y0*D1J4Q)XzaA_C~Vu4G;A`lB)8g_tK;L>m^hy^YUSAtmJ z((nL?1uhM*f>_|v@F|D|E)5y8of%$&OG8Nz3tSo+gIM6w&^;Sm8U})>(j6%vDsM+N zh)Um438E5qG=r$f9lanbXvbm@<-KDQh;rGn2SnNKI1i%CcH99``a52ND2*L#InE5P z6?dqCD5)K;AWC>g2#Dg@kq4q!cg)CfhTI<&5cXm<7Zbw{&}<}V-Nd(JE^Pl9N)56g z(qUN)!C4I8)7D=o^ME@jqQSu#J7LpIUfbL5C0P5?3x{6>7>JN8b4>SB0+?*+!+5t@A^tJWB5tbQRXq;O3W55~@35Tn6DmA@6V`M05hQMHt>`2bTVSi#F> zEDQ|2Q$b2PPyBBMnfwB@Ud`|}=t!z1AO8O@<>~GP33v8_c->$tEn7kCI-c&SAi8rZ z$Qj357eF0zymbzg_3|xfSgm);hyVZi_c1y)|FDF(rar3qharD&Drj2uhc@JLyn5y4 zAIkhKpbP+-BvdG=2RD?OK?l`?CO=++){iy+(1V<22U4P2lJgRD0%-FO1O664P}x%l zHZX&~1+3* z1IJPpS3uy4Sav3chV!6J37rsm@NF2U1zv*M{@)HOl=8f0Z8+WVx~BQG!t3(p(+;nT zz8z*MWo|gn*b6hI8_e)%IIj@!f|niKBE6vhBKTWC#Y??%^AC6a7IsDk22fnP^0$BvrFzK;iozek zB^fV4MNjjO6#kZW22d@&7d-c#3_1MaC1?+7^N;+J>U#O+ADJcTAS2TGTR?-PFF~gb zfvylRe+lYhHUB6skpm^kf)dl0pu)WQM`?*o^N)%W_m^`(W}fEAJ}7aV#RAkD0?*b# zxS+ZDm!Od$2p7~tdR>`)P~x>__Cbk;^GvT5!8FTjNifavS`bW2yynb4C;>`SObo|a zEI{4**G?d9T2NsYhS%~CrT`1WYY_;OfrA02Pk;lY4|KBBYc7b@pzd4tMG0tBx>#{Q z(qLzd6-%d!70Ewmu)gl8pt7zToV6S}nVJu=bV5ZyrBs6j!%L~(|Nk4FvUQSP8uL$i6Aj?PATc!l6V2B+k(t0MhAVEzlWaE%I8k^FwbKOXsz2hE5l2f!9({ z-5hrr?#5UNz`_v}7mhDM_vnIVQF_081f3$V1ypwLJ@Wx{eFX!5%QG&}N_jBXLbb%> z|5i|S(A^3W;NQj&@P8_(Vu*5xAC#MdyhZyMBO9 zs3_&=23I_<89lNONc;!0ds|pR)k|mVh7bS$cYCmOJ8*nE>QKU!eL$kSMT6xF=mdm@ z5C8vvKM0O=;qJX4h1u>rFzMG4X{{%Zx7K_B4M+U{U&-GMG0K6b6D-(yqI)Vx%fT1S z%?}tmT3bN&FnKipVB>F}zzIJ5drq!1Xo)OH!d+lyXKMi{Sf`diZDnHMZvmZ$)$ov| zRPTQ;$T7`(K_o++JR~f#6d*wm=@8A|k_a*r9H_4^L8SS&flY*lf4oB!e~S$#=*S6> zvmoLB&5?zLzl9N`71;v*zIPm;rQ)D?gjo{p5Xay02P6!!tqGAW@P1L&{_kV1xX z&gQ+K_+co^?4Am8bmzs+%LjkT2L}D$3R3WYD@eBU+>7+Dj11kqAP+Vl5$K)@GNOxx zv4bfr*b7A^SmwpgZ{YQ9&A%8RE`vC}d`|NZhSyUe&gkj|B^_DYq2|yE^z(9*z zK@Q;nEv-3NA`kHgL%n=ASm`ka0}n{5=>+qk(skzDQ$gO;oC-3j^MY3=nA>`wPOiHb zl9tT6W?TnF(ksGb1@5{7r7HiC2SVz~C#7ypCftG5@F z1}(v%Uv37mv3oBlhWNL!L-TYTC{JgwGBCJ9k_yDNmd886>Rv-jpl?o~OfCaDBM~Ls z`TIa;2}4YV<#MoN#1M`-3(bb{04dy@sP!n9% zeRE>rfXAv5EWD%mTZ%vjZGuZ8Nb&-eWJDz_OSs0@7yX<6|1VL3gaH3GW@xB7M}mqv zL4>*+kU;q6&ccE-GNCCBT*_VpUF`yP+v|&v5c%f7!olA%6C@6<9J8Qa0VmMqAYrib zm!L~wAl~nG5@1q^fL4qxM~62S_AG&feIr~YvrZV@BjZH*^{;5 zAwh?O(>-V`2$F_gUu>|o&UI#B*bO2}RMEo-oaWzw2D!lwcW$s|czqKQ6a1}fLDMK` z$!#V`J;eXe-~uPN*z*7X|L+&O!&x-XeLJR5!rJZ5@mlQLF^3Xyh^w+4Ibbz+ zCs;#T>m{VxTM%MacRf!hI1Rp*|9%Ku@x!&lD}G4z-tdT}M7S61zKopXponE?_^ka*~w`vufuDirx&C=d|*!t*D%{%hC^ z5@jfLWwZc{k@wlvIL+8`xHv<1lMY=(YctI0_4F5|7K({2j@^rfX=ym<@;=;TC|D(D? ze?+!kDiO2}{n8!!p_J{I(|?B7paCK9UCUv?-LX9U+e$gQxm!<`%4aD+W-MC|bTUVk z=p1+EPypqBXHfr&;k6d%0_I>22g?gZ^1UoV0fGO)lhaYH2O>*3n@{{d=FG$RTJ&Nv zM<+8#rEurR4j!ie&Mf@f4kE6yZ+;`t8_Lt``XOjn$7Bc4!kOc)pj`?K$6djmIPMCX zykj`#`iJ2KKga_PktJ*mwSO2&M4D@VFqClpFZ}?S4U9BA@LB;Z#@`KEweaB>3ux`v zhu7R0pn3r^?|JfYDA*ooXz~0n<>+<&fZNJBZ~y;~!f9m$kye7HH+Vo(3tSzH|C#u= z9f&;~y6fQ-P^5uo%6nZo{+IH+FaTXm2fkVCB+?oeh2Bt}pj{U_L3crMyx@8J|35gU zdP6}=EnyNoFFwBkOF&J943qV`a=f_x20RRQ40J&|c%Cz~`G5l0xX!1sFZaIr|39?z zX}2#Ac!eoPXDCmnF9%pU_T_>%|Nnyq072t_pnKhUx?KfY5A;SbmhwZ^y@40mcAoxz zxij_ybg^VGB*AnZk25^b`k%jLF{n+=7Y>Ob!viltoyu<456v%_I$d8h|M*{0(;dpg zzs;!EZN80UuiJk9>4$72`KLoJIxKPTb-Q50S?18}`hm$Z_CuLyFOPI!=jm`nLMvI) zdA#!z|F%Qjp>F~*F625hWU=(JhzGnl1G-wz^$jy<=_F5g=$ppF-|9&tiDN`X3yk;Kc#WZxp&+1-eT?iw`3hOZg!F z@BIF09mxAoPak&$-6P5n-|2b>v>5UZ1Ahx>t)zGBZT>#cI7k;;hwE({)zS?9ZFP*j z?(=O}d)@c*PdjA8%0KM@=Y7o-MjpldL2RXj_C4^AbIs(*9TbwoxcKl zU7vJ>J_+dXeR|CG8N-XoUlZY7^Q?2w6=t)+w~5-IO%+v1-f_ae6!wb+E58wm`SyjQ=&C4^v zi6Qp?!&v0`=J2rKEdC6KJZFZCf&KNnacnIkLqLXqo-;#m*bBZ_;N@OBK!(AV5WQHkmXRTLvCRZ0 zh8+qMoEVVp4-3xX=q}}eCceXwpoJSHcA%&PuTh9NsRXdrFL&~tu8?E0; z#G30^7&&!wjL-^>^$7f++7UXItN?S5E0z@8Def+ z>+RBqFg?&^v)!Q_-L*X3r4rq~BG$W>fX2e695@cTgNUJFj{xYx6NVCr!2hKJ0YNVw zP6DslXg>8Hv?b#IYoq4V{~=17cYzlIlnQ4tfYgS+*!=*s#i;qm|5E-J=Rw*|{kH|p z^Odl4${AilT@fD^+X}cf3ZLoV;0kY zlc@!H&I~W+d}L$*3x$QhnD7x)F)ARfMFZ!D#y6mp-CfGj?JLn8%hRwAG|j{SZb`SE z1n(WW-8Gs=W71VSRw*m``G-OxrD#@H%p21OHl2) ze_|eJoF25OZAP9m!)tydfw_6k4F3x)x*Kbl85njg$a4m*+Tz`{FwdF6ql9(W$~X+sR=19@l{Duc~v^E21og!pf>BZyk|NlpK9*YNW{b>DGlJTeWJG5Z{56sT*y^;Sx zt8RnC|CfR*ZE?`~4o5^<4|KY|DAn$EebcZ560bs_(x>!8cos{*i{qfEK1LAPN-(hw-RJs}DL1F{%`U-*OVRRNVs@#y7sU}xxuESt{5h+^}Q;s1!%OC{!@ zt5WzutNE_C-u}G0gt;?{r@8h6LkSz`Zfz$C!~e&fKuf3@TECTWce`11Uhj0W=nS&} zl{-HWL2URfxb;$C=jBe<52Yf1z-52u2hh?d@ZN#m$p7GKyO)I-x+<>oIB2=u{}RdI z|D_+oU$nnrWa#|Re1xavKncq+7J1Z4Ivms<@qxBEj=O?(hcO&?1>H-=aLn~SLl$F} z4P+Ic;s3}^*AKn10&(D20r`W!`?U} z#eW$Y7&_TrW`UH}aWL?=s)L+>s;<+G<$4`OjwH2Cr zkdsQ-zPTwdzIFt8NeiJj5~?>BqL=ZQn*ifW&@>}9Bb2|nDG2bls6iJWg7$VomoXY% z>NHV#2|CiV^+1UPR1o5>QUPcLzh*z~`UW(A(Cnum0GVd=Q&4EGQ(@q51uY~%vk~Ob zMo{W^Q+Wxxg|fL$gMq&lG-rsWu+vTBCFn41G~wnt35F6akf%#3S`U<1LLJp?pqm;QT5t2WtOLneGnBA3SMxBGvNhK}VJOjUt`=b^Vf*H+z*wr- z?X0kZv4mv>N2yqIwF*Ni#|nWGmK6%694nYg1Xgf>UC0VLS(BBCfnfzBNS?n1G<4rw zEy2Lw3OX0B+x11aH&3VUjZW7qpqr9Fo8T^Vi(E~~cV_4ez4AK$xa*aUd}oH^t`|V# zOpp?=yY>dC5bO>7-|c&$o9Ao-NU`sV=9B-sYgd3|JS|TZ>HIHU(Or83eDr8{?F#5g zk=?F0zF*Wl@%<9xg@6~C0+2)KOS}KOUTChpz*08tyTzVb2%TnM?7D*?~`svl};y>&Onvd!l1q+W9xxZW>A0E zm#0&pQ?Tg5;n!1*#@z66|a0OspJ`0?GbA6jph@OR$mj<$fVJdS()w%hd$ zay1L8K1@184|E>uuI0%RfcG09b^mQh$L%<%&|ql&4{lI#z}o=5mH$E8(I9$2X@MiE zln>gu0PBC92WlJyyg2fdk)hj}qqCZ)`3TQ377K=M*8`o-EZuCa2TGVaB|7DrYXule z?7@fRuyy`0y!2Z8e=$eKlYD1}7cY3hJE-DH6?$Ed1pF`Nc=7BBBluYBQa;Fz;cj06 zMn=Iv7Nn;64)FNc)8H3Yw;35gt7UrU{(1lZ|Nl|}@Oq)(7neXI4B){A!%Lv{!AH32)~K%bUeaoi}<57+(vt z-Y#M7EoOYp-g>fxxwnup43e`u4?_nkIuYy2LDe7wbcBSX^<;@qC)aT&Pva8KcmQ-8&{+lshUO|3#?qqZIu3?X$&6?D z&J6#HI9?P!VPuGEKJ_15@^h3JfkM9Y1E_t@@nY&@P}fVK^RTt+hZ3>>WgIVx*E<69NBA-@Nd8%*enP$I|Wk;dN*?Telxe zckGAm0G@6Kj!xGX-L4#(r!;@}vRGK&>U4cme!ScDMG#b@Ajk%>ZYNNR)plb!?gsWL z{yik6`$j~k7aL}2d^FHGRr%o1?PB8DqtH+ECS+W_w@|_uiU(`Ng zWPpq{Hy;rImsOSjoBykqOTXCsn2})@Xx0{dbX8Z=%Y0{s4i;kQBxQ&T~TGJ*=68G^!I+yqU=9D$lt36kywNgG}Y?ELV* zoa28v%Zt0eKxcVDm4tzmKwMM_v0yr~3Fe@?D(h7kO0-{ygL=wfy8=4F;g(Siu`&&; z0qTD?W(J1Ny$}BW|KAMK=G)y1VjF&IuGC>DYW^G9Gub~}PfEH$W8GCm?}Z-Q$-z~8C_($Wfc ze}O{lw-ST@X3$7wDMX4?KV&`c7#SG4%UD{!m0o(y0kZclXg?7+IHB>&SqP3m39v3` z?10K9h^IMLFhLgLK?3xDArGV)S;)=+KH|TG19FA)Yw>Qd%OC|%0ndvM_ZdNF;YEV3 zKLz#hts%D@M~A(bc8`&v7wiIvnL$|${|kA*n+hRe|6=nGP)ZT#Jp2;0@fxDGxA)86 z|NnywFF_M;;EP_cDyWM=cf0hqf|P`1Fo5bM#}3d*?2scIUV;{$tq>^T?**sc!2jhE|I0;Q^Fo3-;D5Qm|8gF~OPwEH z2*54B&EE<-cMzJef>b)eDXjGpOxj6lkMVE9huv zP;q;_6*M>vV!il%myrQ-(iGYuY9cAbpiiA0r+tQC|W>Q zF~e_U-gAc$dL{vAo#BF{5@!a(+kZM-m-N;y?YOa19y}l1Te>7Hqp1XRqQ`<4t8Ozg zbbbd-5_Ew3Bc7lu#Ckzn#hPn7{+GJ!S1EF4X#UAu&i$ID^TuoS{bve6X8t!1djY!R z5IlqS+`0KUOY?8Gx|d)zLCq)rce-{sl(0j5&j?xw0}6)bPmImAEubByt%pi1drOz> zZ-5)Nh#A_A*#|Lo7cWz<65vAw-+2cpq|X365Za?CA%4lof!=O|2GbM z5dbrBr+f2Zj^_VbWiLS{wSsgwl=3$01v!aM862jSJMy`CqEl>pCZ(*L6lfuj`b6j6P@pd)@+-86wR;m`gdET^De?1g%%@ zb)AsK74W}w!HcfjAZeb?!_5${l%{sOPU!Ys(ENhM@&x$goW|e6tPBkN^A5BgD)F%N z;pE87qSo7H2l==1be%bEFv;jHR_kyzy#B`yd8P z8J(^tx?QJqx}NC<`#~4viSF8#PS+ctE>)-Rh0fY5$6Z0|)nP-2$6diA94}_yWMqi$ zbnS5{@#=N$X+Hfw;6=qvMuy1N10^;AFKTZxGIaa)M0K9hJk)ssn!-vrx~GEj0OO(7 zOLc<1EP~Ca|687@;eE~8eER=uHpbAN?${pC29GH$Ji#wkgGZ}DJuy(Z!_oP}+5h!JL?r?#=|No>$o~GDo!@%{ z{=a5#uw*D=PAuwotHZgY2GRof(*KVrY^o;>~)d+|5~oWj-f=b`4?je zTNk@m2cskCn7P+)H9vk4E<$@fE)IUV&QbP8R!(=17 zosoNwQQgiO$VNfC=HM-|AP@ct>%11+eCmH-r|XB#i-rffYd?TP4K%b52{pq@y^jAa z50?w}vao612>4(6;RWc>Nd9dXKrwg$>?> zAa=US$Z)LnHt52hEXFL0&Q{O`9FUP2P>pcR@BpaYRn88&_YI_hfxm@`g@GZXLm0FR z9kkgTG?ocILY2P-v>H6iI{3w2P<0sJ2|h*jwV;gx|CB>EoUjs$-MNdoB=mw4w7(B3+Rj;XhP|Nr0cORto<*PSs-FW^Pv6-WjvVR3dSedk@zAD(fz z#2Fe#jISd=Eg_H|J^m>N7>_sCN-&i0b%#oH{&;cd@BjZT2TC-%*lj?P{M!!nvamzj zNuaT8foRBGOvl_*7+-2KGBAWgBAzkh3%JhWcp(cqCG`l;OV9yW!5K=W&I~V@pzbaa zfcr}$`Xy*yEI308q~IawBK`u-3<>kSSf*=dLiJ2*kwirW^e-Q zJlyFfaqzc%XPnGyyWk8XkU^l+he0Jvi2>9gkTDAJ{4GhKjs{p;!2hkF7<|F|?f?Io zoo*7HVKR}?uMIVsTx^cuu@wdo>$K^}SUy6aw=K&j%VO0uBHH$8R zQVl34OF<0Ja05Ap`}cp)h(~k@%P}_tMrg7uN$#EtN}mnZ3?&hr_uWh6x||tbi=rhB zPIpkr(sH2md6sqfi%pjx=^K(6_**&tg0}*cNPw;%n|cWn*D%S~pq)2+!I`nNthr8r zp;R0k!GixwB_O^7g^56XNf2n>0^CYyu9aZ`&t{jnX6gSgm3a|(5nK&KmzZk1%JfDs zHXnc;>HyNq6ICJ>{J&Ht;Kj*{j11jwpiz`#ED{W$8#zJtGC~3Y(u$90fVhRfH6GN9 zu47@~Z(R%8Yz1m!HCQW`cxUkjzqkOgFusKO7z0BVSMZDd7a_xdV1ZundE)^YzNMgn zk|i~uIaHp`w2Ab!I>WEl*S_J2X=`gUtzl!3Z|kATs{7Ip}`y@D~B6z$pfj{9Y@;O=Ee@1!r@B zmUF;N>YWNYQQbKR90pkoFXmUn1EC9C^72nT)ck>we;fGZWhPMl_nWO$F(U@WX&mvT zoKUB|X59_izyoS6f#M9*y#CD&P6Yg|ppCfjXj=j5v&Zsud2_U!EENL}Qwwy5$#lC( zbYA8>%-;e!_qM~&(C{{BP|O0f7z(u8?SB~yXq1KH2c$&fZvk~Rn(GA^N+i17KvkeP zsQ>!n#dnB&3CC+bP+BeFXt~Ybavd~|SkJ>yBGv5%%2m<<|I2w^?D-DKPMaA^1z&S) zW&|bQ5_ZGeFF|WG8tM!gO1T>94H@`bzcDZ{fQ$ikO7x!}>361d_li?Hw)ThB2vgmwOdq<+vC)n3pE;GoWP>6h2M zolxG(%b+poP@aY=4u%rL|79}&%Ow7n@%%3n_+Q4cBev9;q2>1fGL}--9ciV`3;`KA zpm;3hc(MNhXfQ&h<#wrZGuSAG64CCtAR9W3Ukh}8c+vJ9bTRa6UeH;(2Hl}Noge-? z@u1EL1RQhy#MtdB&=o4uUCPrD`WZChR;rgJlEnzAwBtJugC?nO^S68k%@BTQ{Z`7l z;{eDVkW}93%o1t%|CloeXl~p%<7g>pZG`MM=t+<~kn`A%xqf1JEoS&1)KucnI1W~m zc@8uTb3C%k^>ge04rc-W7Em`EsU6UHETZ*WN$%@_Ebg$3lb|g3;48?(Je?npxqbvK zg^}v@<38s4krA^=;Mm0oY7+2obNvW913xez7}T7!{tnVF5e~K_>_z!maK>vrP&yY{ zSj08deqtzL4}Z~fhLIuim@@|>(y(~vQ^=_AJkTWut+z{pvzW4&!d{qHfpZ`HNSbY+ zDRxl5aW*Jcqgg=F-UbqDyq`|(5f#Lr)kRdN7-}?XmcpHcbYDqO8;pt8N0UJIB z&DY3uxr%hha%3@dxPE@|;xr=zblyL%^>(N08~zs1WNkMy=$KIcmWQCj0sUmU!z4OG zZ*=)B-JnTv z(2Bjz8&R*{!P>x}p2C0Q7gs<7FyKk9u;A`cj&7#b10}Ygb$gu$yB%e^ zCAl3XN);^6l`?hSvpiqQ(s}Q%CQQe^&|Gju3Uo&-{@4VT1yYw9BAW#FO`~^-g zt=~!vyWNmWooMiM7IIe|L?r<`eSD)M>lwpAte6)!xzn=b_dErL4QI zmO3*8wVW*BYduiHwd-!FGed)g9?blV`=D$Vc^R<^H1L?~XVCFNpmm_PAzP|J6X5(U zpfd%+z}fwU{wHW|=ZEF?&y3B-6<+IP`~c_l`ct6sxZ{xJD6RiX5?>2t`~p|9>R0~% z2aV`5y!LIqU1AlUAzbFn@Iw9+BSS>Daa8NK67|jxFTVf#{~uH;m7EI5SXu^ZV|}>% z|39pYV+LC7dKHv-OWDI;TsgtW5Qo{h<1qZ+-2l#m2TJ&xD|i@6d0(?d zx(!;tm8f)nc+m~B>rp`Xi|N13@~nP!iO?yZNp=l%ux^ zbox^7tP{-)49A;5Bq(R!4T!iKkZ?C3<8DB~-2jKX5f$CeD#x9{lWE7DL3fXV=7->Q z$8l#Bkgns-pot!a3>?1$0!&%SB+Ln7~F^gER^@{sJB9$ls#K z#K7>f87vJt^OC>C7SvWO0tS^k8COcpY}PF#tsS-EE8j(QbDeK}Q0;w!6Pl0K_-DzY=uB z%WJ*+D=k2LwfieUC&9dy>u$7RWMFt5aDU|w5Y2agC1}3mHQU|B3?>GKyK*l<=OJ`E z`n=ZbZhX_s!0_6$yRihM(y_bo35YM&-S_}R^K~~GfM~Yv#uv??lki@GR%ZsjSe(Yd z@R}{~g(~P)+R!(hOp&kix*Lyxl(4@}>23ra6bD*h@6|mKbkbZmOB1Lx?`{BjvXi;H z6C~fw($%m7RP8a8a0a|6Nn>D$dM(!L`Z^rR)C&km?uSTNoKY3uBLiPPhO6 znjM_>kym;`Gd`38Z76UBH6@W3i$lgsGC=3+!CF&>-@p}L6nG+)zom~6w3-&wg+w`K zFP^_8kP&nm8VjhVVuarJ4!Y?b_W^DgC%1vBa8S7cJ=*PfGkBa4w3nqBfzAd5t(M9XfwmVwg8<;;^&(5z()LL+ycXz2J3tU|P~dSa z$HldNE0MuCjV}sut{$lFmO!aFptU!D3+SMtZaL86kyvd;hTs=&(cl(e!#+^+i=jmD ze^~*fjyTo^7Kv!y2g(o(rJT+CKskw_M7O&cbbjEm<_VxR(w)s6%?u3P%~P5|C*duC z2+aU~>=TrD^$qj00t$F7L@J|NnP~u|UomY(BzsoCVak zVfeodbhzG&V$huNwiHGNh8GziW|_~61Td}hA_7d?ya@RF|9{vEyJQB2?l#cMWSk0|`#76Rh!2TMeNn4rs{{%-@Ftny+d zSQKI=V4$d=WG7K%-^EK!@%&eQvhTb zAAidnZU%;z)nJ||f6F8u1_u77{oEi)Y5tanybKI4VvSe+|>%M6g4`I>*Y@V7LvGcdfI2$pc?Z((HxRo-A;Hh;@yPLPwq zs~vwt^S7*KVPGhaZ2l3*-=Yt)NWJ-oAAbu2C^-3=e|Yn^)PZ!nf^`Q#&Q5q~4(5gO zx2SMIf;xo1#S`QfIj}?&e@hD};03_EWd0U+sKE*REoz`B;{#ukqQb(!@bV2G$S+C! zEexRWzX#@J^0#aPhwC;@kYp-<%Xg6EK|TfsThQ8A{uU)ZNW>TNx2S-avdus8`CA0R zK3fkuefmcpf6H``!+XFcmh-nf0=a>&`9~3d%VCgd#bAj_{uX9F28NfZAhSWY{PDMZ z1bJQ27BpSY-x35ivYnNI!4{OsAlAJ!2dM^~-^Jgezz0f2C%73HY(ZCK^S31PJ#?y$IHNA3%a|QzvVD!Lb08fje)@ybP+Ot zOArSG!^>Wf0?3(vS6CSs$`x%PXZM+b!&eNX8gv&ie+wfh$;E?IgKpmCZ<)je@>c{G z1A{H-9$Nkud60c}AO(;U=QKgVlx_<-%I^ipsk*k{lm8%zUceS~oh*OLEl?z|gS3Ip z2;^^x1sU_5hk?Nsa-3ZyCTU0=$0eDo>wgRkx9b{LuE$F&n{uWP=D|Kxl2i|djJS$)ex-XQ!r5xlR zb&xrr`$qX&ia}lw2k}Aof%3P2?$O|HcLAl360o^mAeVjv@%zF2t)Ot!wQU1)K!^U6 z3)t3zIlDkcp8=@^-JZ$cQVuG<_JH`H%hCB;)`3%xA4mXnWhQ@12}r?g5WmL{6bLz- zptip)=z4Yj7G0356>X=3jb6(Fie0c)ZLrc0paLTSq%|MRzYHq41Z*R~97B+#Ge{D2 z+bXnlF$VEBfaSR%My~^No`8y|_SftT47Q8F0>41ISwX6ol!9EP2QeCS7dwB8EGXH% z0Hrd}?WO!J$spzmusRWD28NesK}Y2qFePoEV{Ts>!?*`J+CcLMARVBh0-^)7 ze)FXOOi3HKvj;k72jZhepgj1AgMp!&xf9%GcnK;zA#w{ra@RN*7$DsFAntLfQc$Dz z{V^0t@dP!4Ea&C4vfu2mp~(GWSe z1kiF2KMn>4(DI*FR}Kb-<8BEzLA^XnxQ1mQ4O(#Sau8P3=$-uoe{^t zfy?mn8#^p$L2dMx&)Gpifl$`zmhuvm5xbdZcDiMBhUL6G3Rck_%mU?a1@j>~K>d@> zwi^r#3^3!TgJyR3feyuHC=vO;4Rnw-tZ@t$jPGXdbPMTh14+Eh0vpxo7V|Oz!fFF; zCw>_W<$!L)d+7${fVMomv;=XaLHjZE*%=sup~I-}jzDGupczA)oq?efJgWMV6QrKG zvkkPp9(9B^iy`dA&ljL^Nr6uA@a)UGY@m?n0G}-W@&bqhw&)le14G7haMRoEK6Ic< z@IQEz_r;Re|Nlq7Tmn+@8mvO)K6Eq`ree|S|NkRiHnA}q{CiR zBijy}Yy=I9f_AKY0Oj$QUTh2uS=_-HA3(!mkM4n73mQe`>2>A?nGul12pY!90v(SD zaZ%WdaPXvn1ax>T;w3xCYS2X}|5%aZ{TMjoz+>$pXhRrtXPXWv8G$NoNDi0>;vR*{ zfo`LFxdXy+Q+T-!#1aNyyW9NeGk?oM(B7{whnLgP#5=*_E-yh%x`utAL)95dM2@wA z8UMF|4nv2e4{*XT=>#9i{xT3`2y>^K&P&ieAfO~8@zNG5rt;Dl%mPh67VuAP1C5}( zQ~))=K!r#fXusV{K{yw50QpNMu!fGdGa&zb1#LED25n_}4Q9>kYy+Kg-Z>3){NBs! zU@=f?M;1K@7VT^UpYON@$^nh_ne;DVo={praRam_aEL!~-2c|1uV;7S!eiN&AAOK|IiD^e^q8(x7VYr6H698q;{G z0_A`@t}n%*9MBr8mt0WJ3edi*zo13R%$;p_K%5Uy4rp8tywefnFwjz{m)D>&ppm+l zC!w4-AU%6P9B`QcI?5V+yUdXcty2M|@S2y=U};bknt+Bfr?!C(JqDjV4{{x7Nk_D;^)FFTQ9W;f@+}S1q$_lTb zoB~D$1`k`%7Hs~uYoL**HjoIYRq*mSXjLNE2PZ%}KvjOXG-yjli5Fp+l`~!L8Ozd+l`~SLV}@0 z7GfP_Ury7r|NkSwDkLC9JIKD1aSRL*QP4t|zZFy=zzX6|k3a=0tQr8_kp>Dn(01&X zpmQ5Q9MCW&_;^lGwb%w4I_{hXT7Lsw!f zdXS*4Z7iKgnqTL2Gk3IsIt8y&x|v%Kbhd%6d*PqjHU~5)8VE9W3W((nVu9`~du@vfV_wTc3hmP%J;D$+==K26W>8RaXXy6*09wp-0%|G!xS#0+`$|9?coZgAxjRl@s!Got>9 zXxI&Ipnya{jT1;I9?`HHT#SQ6FMtPXK{JaH|2KoKLwUja>i>VxEO77(!x+%GlR$Sf zXfn5XHz;{Alvse$WAKYZ5C8v<_`ew>2Dz~0#eyf$W`ZI_IO7kv_3-WhD9CtTbA$8+ zyeQrC|9=F;huqx`5|+)N21E%D)QmZg|NoE3VhVooKAM3c_=T_{Bg6mAkd6Y#iT^i) zhS*;ugKqE+<^V0*zf{5w&419w0b(lYe?dsY4$!IN4F3y6N?5xCJYF+*2UrAUD3?1k z{5N@C6W!hL5mg`N{pL#gKS|aWj@BvXn5dtBxoMKC6<99qG2DXL}Q35Veh>0;?uwX z|Djq+jhlCaG8#jP!i)V=|Nrl71|{^)$)H3Z9{hhYNG>w2)Ahq^kdeolLH00qyMi(p zBztu`adbZIbmD=HJvP4i1KJ35tXrb|d>9zw zoA-hgFh=xFwfOV@zvO}5xl=$}unsT-4|>|1*WX(A@*}W9xxZA^vS(ZOsRmEL%Y)mT+a%l{+)MT*bz~(A#PPvObFm zsz2<-yB#o%oXvYdl1wFB8B0OxtJpv*U%_^laAjNo38k|!Fm!=U2X$mYLkc!b{H>rA z)_m%};ekKhV6Q;e>HhDH{NKD6BGX&>Ke!j{kN;aiUJvM)i|{Ao3$0b) z#V(z{I;LoYJlhNQe|Ym@=KotkrZL`N{2lOu1){1K?8V-xAZG>y2SGw5?1kKJn6Egj z=RyO4wZfU<PUHPmCf0v~2Z#xjczYXlFfQ??9;rB#IeIxVyoLp}~Tolq=&BNQEdX14Bk_ zr8C1zZV+o3h{XsRtK9Au(L2}R4?OyV1OAtp90P|vV;D3QKw_WqMT!$B1q(F)_|M;R zmW6@Aqm(l^>_zGy2GD7Ntsp}{$rMx|bc2_=buln7^v(_W`~QEILvZ+uV-6tgJiV=Y zptRB3sso|4Ae07(%D7(%n$gK$0g4)l<{vDjCf%(dnU2;OfB*ka>uv?9?r5C}+BOL` zprdsbL;_@JN9%0RK5{0*|Npmwob%u8#S~`-hKSbxQKh{9%SQ@KE{l|9@I%tJ|Od|ARr&pcE1IA{`uikjTFP zI`{+}`5C_;kq^>?H}X%~K_g!Y1qdYvp=3Z5H1dmGg&;S3RQs@9<-3Fw^af(;kFkPh`o^< z0m0$_w}OH<>;)G*dvjRM1t}`w%HXJWW_Ss@bEUTxw6`@NivzCw>SmDn&;$dLOf@n}M2V_hF*#tU>AEr4b;6*O6 znqO2qGrTT=>5L6{VN9&ff*NOr*H-+HOaKbzfEV8<6Y1nXHQ=a?+X4zph1bRz_O;Fo z|F?oRLcdtG?f?JCXi)9|#m|d1t_%zjh6kcvi)TcD6q&uy*z*5>bo>s`g5TFnoi`fx zf@}X0iT|Y>VJ}vGgEUM_MUJ(B+E9$I%^(cWa!c*bL$9qsEl#fx28QlX4u}lnF($_N z2-vYr?42K8tp57{|BJ4k|NkLl1)bACWhBZWZJ=wJ7{IN!#y5M|7#NPXhWvzWP!~Af zngHb-Z!Lhbjxm5%HZ|`AHNhG9TP(yF7_t~MCV-Cb1>am4)p-nbH6velEDz)ei$o^k^wZX-f7U?2x{kaiX8`!iGaimFCBMd0Wn$+ln8*DTHMV$K@Ady zQl?Fe9n(PV;$v-~u>r>8ZJ?0^kkaGeAsZ0u#e(kt|GQ&3nyWoPBj%uyf^J`q&Nfh2 zsN312a~h~;)ah2xJrOjv(%lFiQ3WkGaV(yaa_;w_8AOoCL(>|I19eLpg#ox)3gB1G`+r zgTEgX3IEGLMSZs~N5(>sl8s=`JzfBEltAl&dXbE^AmLJu7vDDg{~rSaS&ezZGO!z>9P985uwkdxYm0 zgMN1}NbnfQ`UY!;Qr5KN%=!%7VF3+R_N9t{K&K}|Eej0lb_;L_cu}wrNq56OP#$35 zZ&?bin!f(||G!K2ZY}hps4Rwnj=5hzZG7+fpm^fxZT%`xx$;7~r@xIQP;YIdAaBk>q_4xV!f2m}~50GHk!TM)MauuJAa(|0y)(m$=f@z0FMlg&2&Z{3NQQyG1vClR+X^}!ARvRe9#qhS zBwnoa1UE6j9jum_3=9leR-nk9G!MK_CB8e%q=ZZJLMJ!|UkigaW`n{W6s?|+Xg0hA z%2%EDJ1&3)t-*0$Zr<%@(s`c|%z;LfXXkxQ6n^0Ut)O%f{KEejC{%b_50nZcyD*F4 zW$b^@(E$9dpj(A|=a&5b|G&3RqI0gx&;S1$>LeIS{t_MB#N=K38cC?jpJW;SWUNEMdwA%gC%AS`#=>BL#b|1K!yp(kSR!pbh;IQ%6uk% z&@>%ri5lavHjr}0<8Giy9fsaGi43cHP$8ZInMsQ;v1|6@U^(s<62QQ~kapZHB7osI zcml%ilq19OHqc-sXe8ly8)zQl_X&^~sK1(U!ja)+5a@_dd$4h$N5C-^Rl=U(TJOy8 z+9sm`EdKW}G{!_TTEGHt4ufa#;`v(~K}#Ybg4Yj2b&F(lf)Yb1$BXRMpw`XHr=St- zSdQavA)=t|L4F(p-QckjkV{3uO%+fzuGX*{RDCj($|AcR?qWAkq%pjXf=J$43-ScW zV_YjiERZt)dJqfbv7^gDEYKK|JeUOsyadfO zX50qret!_^%*aMR4p5r~qMhOqVcr6{A@djjaDaVVZ6_7FjH2V3{lN($BbT@&D6;MtF zMLB3~Knv(dOX!YV&>4NL4xsA$c&SJRYXj(54vrUAEB^nFj(e#E8U_&siERZbdGTgC zWTR*ab8iK6mP7c9XsEM04@0gy>+LQ13A$3Sg&QhA&Oym29mA!t8n{u;FBYW-r6M?m*-gR9k&l>gg6b?1vyAWdLP z;Fgy5eLF!6OdYu`MwSgK1j8Kn8fvUU`@&90-K+4ki&ikEnK^}W839%SSF0%6% zcoj_NUK>#5V;@}_;NJQBH6wV}c!?>_BUC`i_%&|^hzfeKW;!E7WK`>c(vuC=RwYLo ztYb^LjxjShcg_VFnq~EWD~Ns}Ivv~yiz?wg#=zhZ@S=1YBSYkCuI^ZlZfDTmLD13% z=$_7~PB)uQHy0FNfJ^-5IvWQ5mM~5RhHq}1EF}UB`#^OFLkasaa5sSQSnC(iu{OuR zM+z}~bK?->1oln^F+h1P2o!0j7J?(W z^Dx*4AgiZwz;?`c-Ul}?8h?TsY32OAy&#>zfiHGW1x@8Zry?R6_JU4GVkimhoeN@s zOa?d23NTEz!D%u$M1lie#7|{ph>w7p9NpWR{S!2DYt&67t&mSB>c$kP>#-7pauc7b?`a?W?^{uTu?*2w>9PG|NqWeTmiu^ z*rqZvbWa8GL36dYN=zE87)teRK|Sv>>41zJPzaTBykJ`basm&ylm7B7Xdw)&Ne}W6 zC@}}yv|cKafutXJ(gC%ugI+9}3{E=7+CUfEf(}h;2B$oR61V>wwtzR@gW?ya3Djb3 z@CB9DppCbppk7fs)D;gQ4Vc$_5Th8OiT0Zthd_yP!#+?7W+;`)I0#Y>IUx~zUiWbp zmD3H*46i}1`}hApw9M#i1Lb3ggF9JNAX`_Xn)iW389Kqs6G}Ln_kotTGn8_HQ}N5o zph0c$60v}8R}NOtf~|lTr;HdFqQUa&-OdqdmTnRJt?L<}C6R1z zGkA?XY^lAQAp=8X%Yi7!#@%i=juir>{3}>WV!PRzcYwA#aFho9-wX<2=oSKYs0}6Y z|2Km|`afhl!H1pyK}RD*m3X{Xg1WcF_J6U<|1y^sS735F-OeGFZXu;Apt}D5X3zxI z3-Onrgu??`D>CWd|Nk2pJLiH%j$R9P`*OHj?*xV9%Z>j)JN!T;Qaq^5=w{RT8EGM8 z6wEJE3>g@@w}Ny>bTxyLRtLCJ7q}$miveV6{+d1G^8)!EhW2aldu{O}gH3n=WUy#Us!EpNj|0qa|zW8zq zu$aCxgewnn6P|ofkXZDmuez zI1iS%HGsF-FqU$`x7kGeFRS@qRsreftN|}G-~nezXg@~^G}I00;6QfdFut|~m0Hdo ztp`dppd|uqGz{D`0!`XOl|p+)uh}6C2Jqf_XrO`SMnN;poOrY zg)oyr%hHP4*>f!(YFF{2Cgsc4!e5nqs4O+qq>Lr8gu1>d*Ua&y{|I0%DmzjjU0IlY4 zJ|f@&x&%Ss7$f8B%I3Xbn@S7*msw;aKz%$9T-EVF27f{4$G;Bj4YTR|06y3N*+`eL z7uVGo7@$VR3LIl*e60pEQucqDM@BW&NN;2#K}(0b!7l3r44$sg$GJ6*T5sstdYD%9p2`@rBQW|NrB_ZA{7TP#*A(aDjjquTTE}-|fo-S`Nj) z5D8kM0y)+y6nZQ`=ZEfT8KCj#Ql1xF4?s~1+ThL}_F~h?|NrAa$Fkl)?Cb{}!z$5j z3|fQA^%XKe->~~HC|C2h-U2PAZ3b}|VHrjco?(tPgR@XXw=-zqQ6M1f#UgbE2IyAy z_=xW26!5_`B|-s^9DN)t05Ukz@PG4ePzQ#ggztYTPw@ZAAWrA;h^XKfmqC*R4f{Zg zy%|b58+JbdX(&+(e(~+Z|Nor_LD%5?KMoQDof7~$4FYoCNr^${`PVw#&MckaW$UoA zo3+~+lu4W|0{$1XWK3@a9S9*Z50tnC5WA-#dm{q^x??#EPj)kRx_&s;0P-_Kw?Q|E z{SIVZx9f*y@E|q=e+#Hi`(Mfv@P7iRKh}9LzWJwl1b^#%&?+m}4-GrONt(Z^#RYQR@z2y`B7Jpejx?T0z+6sgEw*LS_O@57I|zGn;w z4to*t9OB}Gtp`d$%dT8MG}OLhC{YBRZ<~0JfuZwYMC-|@Ql)UvQCZ*r{{J5j7AX}3 z-E!{w0qV}^&VzBFv;tjo1zz0Z%h5d%G|td^se~o)|0VE=laSzOej@<7U&fWETdrXr zD5o-%a5cA?FflN2HNW8bzYUb<1F{(ZZvzSap9U%mK&ML_w`E{p5GWPO_|OO%!*QSW z|Njmx1_p-LDGmERg2J&h1ZJE!=>DV({w8OJEbf38vl~I_v>R-L=8fLaC!Js>oSvAmyloW+8dtCam%n+_8L17q`XCeWsE3zQv`;bFmno!7c&fYxod z-Y(JTW(M7J4>}S05A?(_&%m(%#xEo`fx;FvY^cy3&GPz67He3BNRu7R0Pxo`CqK@ z!mtC>pye^VMaL~COKG1uyz_H2Ecnq|f zvYVmP^-ec8Nep$jzn)_m&!3Z@cHPz5y^w0}B_At>;L%>z(z$J6|SrPK97 zsdz?n6R4`W^CBB$vpHxf=|T|(hHqfg82MWY1Q-~;xn5x8Z%G49d)40QZUJ7MtfZMGjzw9bjDfyFZ}>I7|N{^95tZK z-05c1?RuxX&Y(N=Luc)Z?j4}5)BLTVS%hxa6^s`we-yc7A7H-tg7LrQ@nWXV1+f^Fy83g2{NzKP3M2AcZB8Dz=}(2;H}2l!jvxEUCZ zxhXIlcT)ikJiRpIW?<+%p?SkW^H8Vjj$TK`&d?8?ZYG*HKvx^Mu3&cEg6Vo!uVe~UN22OI_ zZaUqucR<0}4AR``<^b|osd;mq0c)8d#3!9MUhw?^p9P};@(1{anO1wyaW}O)pq}ci z{qQmlwD%~^p^LlWCl~mTQC?_a%inSsG}-@?x0J2dnX%K&q1(-&!Gf!l#R1F?X#SB> zDtF9H0W>}hD!&@)5*SL9oBKd*8m41z2@J2rK=#@$WMp6{4xuQg>+x1TK4p7QvEahwb z2^!WbWjp4&pYgRB$UUz&LWV6trXK<2PEdCdTyB+!Wz2)->o1_Z2=QNZJUGR-J^?Mx z^W|vR32M7Dlt4^W05|o(E%FkP!%m=y8O~awnO~Zq~)fv>acMIvQ3kVPBb$t_%aTHuqPH6_^P{^UR z*{*N67~Mi%`-Ep)1$n#7;YBG}n&-G%20cB&ifKKp9E8T7(olO^-85kONfwqY;lz4Uf1vLKb zXJlZgvv2$fT98s=-uQDmBLhQ;KB&A6uIY9L$02`75snlm7qTWe=)R{P`FdS}#?IfL1SnJyn8D3Z++y-itb=NsGALo6|=-$QNa-c*TdAt?%KxB^B zTv;4JFC3ddLvO7IO3!8ShQB!62pLZAJX|WC#TEWyb0cJg6*NvA0=mxLILd;Wt?6apPT+U;`3Zh+fl-S;%^w z;d*7j^9JB($XEa}x%AG9U6cO*f4LB}%>?8GsI|vHl4TArIN(|ZyK6a)wS%-WWLyGS zdl+H~Oy#|8FbDF3CnP{B8DD+^P38RpIfkjlnc;t#!;5Wjbz)$TfQllZ5>3bc8N@nr`y14EV|NRb9e z(YNKGqy5 z@-lxb=tw2YgZ!0Mn=h1C2bnZF&>KZd08 zgCHYKVMg+|fM&|NUGFsP0BzZ2;BT1=>av0gMNZ-iMV(qkhG@|I)4A?A8*j_sMcM>Q zy`MFZQm^!av*qtD;f~PtC2Gf*8KBco;6ffWSkUFVzJocwc_)a?z~5p5s?|g9AX-e# zhnX98f%iz1h=A^YEHn6D=8(l0^x|0;D0ztd2MYv)A~~Z6Bm!$m-2hEn_}=MuGw24* z)Ej^*JjO;)n~KpnqZ{0=?sU_6E!$mt=eQeKwxM=ELw7rvKO=@0o3jauK_g)LCY}=8tPmaO0~d=8qzS7YuE?U#!xDn@w^4p z2VL0p|NkyUP`!H{G{aJRr@J4N{98|!M1ZF2Dhe1%{kx}u&gW^pROi~=4q9E%dZ5m_ z`6p9}l;xpXqYU*{(46e99?-ZP&oL&(mpyC@43>xLBr*b9Ar&2TMV!wAngcKeQgGWQT4Lf|&)=(#h5t#sX;;mufM94moT-!qc!D><|7{ z&{_{r$EFk%4&Vee6?$|yXfY-@;B;Yes`9_gpxgJ(|Bc`fWDI-}2M$5-k&B(6cK;U^ z1_n@Y^0$LpYu#=s%|94R4C+DmOL4xAY5u`fV)Z%{W?B*?_&_&e-FYDbHOckHYcH4r z$N!}t!a%|Q^(_O#Yf+f67EIXVJt)|DI$dwP7R%TH4O+vF|NkS7yWRke6-9N2-Z<_C zo~j4k1{21@!0=ib5KxaEhG>X6F1!z?MlHqOZ&=0jfpp;m9 zr@Im4p)MYYZm^<;pIoIH$5@znogn;UECO6m8%l+n+d*Af#^&i@-@j(=;1O_kvX1@m zdXshNhZ1Q}H5<#(8Tz5S5oBNIWRUYZn?dGx*K+i_J_z`~9VGOBJ4opNcF=HA_=}8o zQ22;I!UuG>D!4L&lmMdP|4Sc0l!Gqq6>0@51w}>^$e`}f2bLE~gu8t?G%qkt1R2^1 zIV%t}<2%}h4C8_1H_+)p%}01%q{jXK z-&}iz0dn?ri6N*I?FUV?ww^5E>SpT>V*%d;1R5^y0Hu=FlO?906?b7gVDZ-);E@5P z|79`%%OZjTUIc*5J0f8Ff|-G#jvHyf0F+Mj)EOA!kGtLg4UK~449!8EXUJj8rFUM4 zy#Qw#NG;zg4N3!{cba#B3LS=$p#Nnep!06Qs$aZ{{r`U#$coO3-LZFOe*f8gM8LWk zq_Re{yO!hsc2J-1|8`LK5OnmlS%yj*sKj62^8f!X8BpN{>J~Nc14T6he=B&4F{tAJ zPGzM%cKw2Tab9e_{uRD&Vo6qucDU0R762han<<4Bt` z!)wL=WdRwlp*r3-|Np;B45UM&JM_kDh1k5}@@yulc)ud0-x!!iY9#3p!!9 zmLmhSZ6k}JcRpxn z_O@|4Gca@p%XBt_PDtpU4jRVnZU-fD&~k7$8Dvp!*o)aJFjlz=DC$)j_JellGL%{zb5>yJMjAwEy;LJq&)WQhp^Q5y zAnZjASUC?&IVUXldN=O}x#)ihdviA^ZW){RgWUGN#He8(=x!f|5~c2TNK8~Pl?rt` z3v>sI9CJ=!>~xOk432rteatzL5u%l;H}wnX;JWx&$cEVPFvD-4t+$4^yK8xxYXunV zyuUSpR;__XQky`wrtM>7=w$B(3$9=)(dzC3*=-3PVJ>A^!C1<(g0X}Zyh@>yXMV4@ z0670&e!zLG^8;kVYUk77?pTiI-Jr!J45dOD2JN6k`>XN)f6#GK46jrFZw8&q7yQCV z7(AdASsL8!>~P%K2bAkO!RH%xJG&ff1}}hs-1*LMtQmZuVJG;g!{*(fX;y|3_TU#A zmi+%8ajY4%OolP|#r_rl{|CP~qr`x8xNWy9$F~NM4+Tmk8g?jvx>Ke68MdGlS0M1> zeKlxBzTttBheHidc0TPq6ug-cv>aEFe;-rx4}}t*<{$R_QxANN`HezDtpG!*F{t=-3IL6|Nn1Mk z)QAOS*tdgLRjq6I|9^)*r~rrp)l$A3{~djfHG;y65u9B?X8@!M8PJ=?A}HC;(knYIwW#KnZVe1mkOt zW6TUM7lE4It~{W#r+L8pMA(`SFo7mWLhm$K>6NNBR59w6$~ROo>6c12yWU~$_PyiQ zV5wKi(@@E%SIX8<$)x}KY3uEhSik0f|4YI__N>T*T0H+41HmmTV3#0RRMC<=jVepN~pzZhIKz&&Rs$xoS z{4c!{{$gbw=#+ENxLkvkeu*IHM6m{Ih7yirE_VO*J4dLqcfn4!;q!$zm(_2qCDtIPJ?b&o)>RHyYw7DDOF115k{UQk9+J7^)Zdjn`H zoTD3j+Hms`9$Q_|h$?qYv8_HM14DhzYh6%UYXWtAnqM$A|6nYS%$N<%0lW~M#~VR% zpkbBB=-0O3rXX0L#1OPss{zbrU|`sBq1~CGVHapS6hkTNj;kQcGj4)YC&!CJ^`NE- zPZm3<_Sz{68l>ZR(Ju=sLy%5j2hYawbRO>veUrs@%=I&4cyHVfY9FzI%ElLa~gA@=|S1LW-9Qo(N5H(~z`UNAxy z3Pil-?sk3i-{8fGm7s-8w@c&rw}B1qbbZl!pu{SR0dzktGi*&jRH?@Q?V#XA$XJQ;LWN#`}rW2G()yFo1t(6Y4Mkj8~k#y3##8NX<$`~Sb28Mcy;Wr7n!cPP(B zM$m{6)3Ihy-v+&ggwpWt&$`y97mg1htNlwCzFutjzw>wN|58KHkQ>P7pra6?S`I{ZxIQm+?{@vrJpt72 z1YPo6!Vv^X!;zh?FJ5aS)>?p6HGqaLKy{#Szze%b@Kot>uo!5Ts@L^Hc)*JfcmDrx z{oi>oBC6D;^Ym+;-p~)hK`(CI`TsvYqV;yEMtA6o)=MRd{M%fg2Ly$^m2{UrYy@?BAoDFCUH`zkHiC3@f)7>ic2((Y1oeOn4}h}bgwW2X&9(^#of#NP19VFxM`Wsjqs0S7x((S?Wzf_?45KHq2QMc~WR?Zl$($YRY@!wt%249%4s3?Q9glY^VzfVM+4 z?*_Gu|CfX{TQigdHdk{nl<;OTfkvaQi-6N^uj`M17f;g|8M>Q6D!YX{T|acY{^)f5 z((C%+IE%_tB}ayUpcibQ7Kzz`LQbZ0_90O+#6P>~lt|NsB*bbVuZ z0Cc56N#URF+Be`0Z&^H@=OBlU$A7;Dst!uDk2`=5ssgPAWDX7kZP_XX75Fbf!;MD- zK(|koia^(!gHAsZ1y!Sl2VTp9O9cavqg_AzcjxGIXMszjFNFe^VW5H+v}U?HRHR!1 za`7){4|Ax%i}|2+OQ-&Wx~C8LTR=zNL3Z?Y*FJ!>NWeaZ2H6r}aFB(8`u4^z3PFQU zkRa)FeNqArmEFRiLlHpoV7JC~mp*CzR+0mYg=A1H#Pzy<=&gMd@FG7I7V4cQDxI!x z!e1!;1Lvv85-VhDbs^SffTAM&zwwJIgvAhBUBR|OubgZ?|G&BR2?KxYLI%+JMVgNo z7@AN0j{~i$1|6&iDSib0m-2urc<$XG9|?3GYduh^53Uwlrh+zzx;_a2NmuV;fZZw2 z-`WNmrU97@x>54S>jGpab_s#Z;ep&R85aEFVQdJ0lcmqL;z zG@^bBLY(6VF-G*bD-WpJ>x|`qTm!BG|3Gey zIr;x#Xy;RCIq(8BstwMKu`gdfU|;~>P!QUAu=8nfuZ+MhR#659%bUggofi&1U}ZeS zzmL(;@X+hGofp9UBG45_u{@wp0-2*MhG$0I%a}Jj@N+wymi?tr;WSJFJs_G3| z{VI^f(9QPWWX6jvj~Eyt<6pn}Zw6V+2sYz2tMlsvXd?^3Sptv@3vQs5$U+iL@C(o; z)aE0gm6BYDgZ?{jKnnv}I6Le(jfvD2l z?r4tJ_p*2(u7qr0ssJTIaM*x)B*#kRLHtslfENu(pxRQP+gAkC94lt&bmr*fevR+} zsDiT&{$I`#{$dYgnON(A5(!YDipFm%kiQTVt6q}H*+`3gl>t}+a(IH@CpZoRu;@?kh|GIM&3bj zY8dFUn^+F(VvbsY;BMysCL3N%dceTo78&vSHE0DX+7(KWv>6<1_`kc9!@7>6)~1`S zn`K9*>l?7$+Mwh3Kx3)@4M52yQ~-Qcq(E3OsIh+GJ_EylKhRx<-LW5DUvz)HAIV>! zT-bWML@fA4`v3p`5t#y%O8!3tk%uRQwjSub*!h%y>Y?Dy!-faIEr-@aC7gl5FBm)j z|9{QOd72+oJi#yX0hJEme8+6bR+`Z5%wg%qQ3_h-Yw5;Q8qggq(CsGhV%dMts+bbT z?qHE_H<1_9AzY*GV2N%wi5H-|$y*MTD0c_Tbi2vCsD#LhbO$SRyD7ZL`v3nwI0LmD zClgPTeq`F>wywM=xX^+H<2jAORWb=QX!Yt z!o)#hoo)h=CBEI@4Q?>;PB#UJded%a86SZEJWV@Xuki-(GV0P;8bB3XjUOYdg_ZUHg&brNM)Rrvpa!-WILJVwE6opB zntw1#UiyBi`4Lm+1#l%0)_E;eo7 z8K9kD!7tAHGBP-na)6UJsFmgWq4gyHltYa_JwWHUPk~H>O+C>1t%RwQ58OWlH%h^Y zsqqbHd3NvIAD{xVlp_Pg3;tgw@M8Pd|NsA&iM+Tp1H94()a7hGA_CsF(R!fMO{7Gq z+fAUkf<+v(#28eCfrpP_OKZUcY>jU~J-5!*3!vk$7&@n(0gY%B@pMlG3+x4PJ6lhH z1vNkyPCoYmoqKTvRK=h8-@F&Z_|M;R5p*K1E9fwR|Ns9VV_*R9@C*)rA@=qE|KN;( z4$uJ$AVXdxg|7V$qNZk@EmLY@xL^@7pxu}Spgua z+S}lE3Fz|g-l<@t_JT|Z&teGrzZK;F7w%s{?icVV!lJGH;7|Ol_1XPX6kkjX+FRb0A}!SX9##9e-q?7 zf!Eysi%SAt6h?z~d;Z@F(jWX{GN?Bl*RU7lXogbW|HUO46FQw4UV{1zy=hgcJKrK_SOxp2QkOC%#n`46;7zS*9sRFHprE6C)47mQwv3~8P2Okv^Bgp}X~N=Oy4y{$L?{{Md* zOoBF@1@yK)0iB5kRi+71wlJ-EFG!fFRD^$f>obso7xO$pMuN?US(EV#?1-8ia3H*n z{@)8qYR%vT$55vPSH{%^3aikZ|NqnegAHgt!t>JW|Ns9lJb!~u#RT2c6#$Lfb>9E~ z$43QZn1b~j$o&8RWiV(R4kOfs3cvsVhotam!`pGq6&j5Et*b!ez|fp5@V`g|s#M04 zk)iW2C~fAwc<}50|IS0rKe#(vul)W0zl66&wzuKzjsO2aBa1?y9%d^z!`%a^JN()f zmPF;f|NoDQ4Crkw`48Iv>(&L&*{YfU|99^N-k)TZ!?I54LmTUgaSSkt0_1$1& zn|Fc6keK+vN38Tt1-Sqs@nZfj(AWU~ltV2C_`xeuTMw1Ub=UG7V`t1rLRco54e~X} zg|8#MOGPqr5mNuMKtmm`Oim$!@S^+I|Nl|VKmJFS9_o&kdHo1%7E&7sJgzDN9clxO z1iJDZcLklL&9M8yWEO_*mUfWw-R7OHPr#KX!~bnHOrUE|E0`Dxa%ZP()ULU zL49%1Vou0?n8#gTfDTi83F?qG|6qh{hlO6k*!+X3RIfMm4anyFAE5n6Zy@Fdgukfw z0H;rI+=jjQlmU*`*St_0A7%Xi9~}X=QyJ7aZaGk5{Nmzw@UR8k7z>a8|D&S<{+EaR zFE`0p2X?MY+W-GhXEh%Y=|;IG6%uuz0i9T$Zi^R>>_AGNfMTsP^bP3Zch?ukm>8P( zgW?5rh1q^koG_Fm{of9b!R_D}Tw@20!3TE#|9AI;R6=40n?>{?T9~d5J-Ve!+;K@DL2c5AWT5p$lg03?!eb62Hq1%ubDv`BiOs;yO>)Jl*qu;Yz=`<_B;el9kCu`X86zE`2owdgrLq(mJFo3*?A}e z6d`|hf>NpBfzIonS2uGpbzbPM{d4kg=q^b671XH#AG6KhdIwY_`||X<3V3c}Z2rl@ z-+l@dIV!yZ-Odc%9N?nh@&it0&`LBVaND!_Co^QLO>?yf1Ai;%Fsc{X@BjbrbQXCn z+gvTdz~9;mTBQ!Y_#%tpMI(5b322Ic7pUrNJy4SUI=!1?$G`vo|6e|!$lUys8MLk* zWP$u^ljfhS_4=>fA$#@fCKp|NoDGxQ0F8#sBvI|0A*Jf_B1TCvPJ;q1%_II~X+VDz}00 z@`F~U5|QRA4$xlBB7y&<0)fH*gE*Rx2;kEw4b>>vT*U(_0E@u7K%H2qE>K4UibFxS z3WtMgiO$P`rDDe!bakzCk2|pFTIuQ@bKqcj2^u}$CBVnP(0QZt`pobDI}bMhNUk@| zJOCEEzsrV!fkE?l=jF~HGr#}NzF?zyy%RL1ADCg#?aYwH8TP{76O_>;Ufb>h#R+<;fLF;I1 z*lp*xF*1}3fY!{FzR3vbc4l}9THOUwQeRiY*;xDLzx^DBa`kT4H{GEhK*E(Atp7m+ zx0e|B*IeK__=_tjAR`K-5417`q@dmnqVK;wTe&r=zW@9T&6gND5AOiosms6SvdH(x z-M(*j&78@|pn0(KMCZks-+u-KXC!umjsjw5LAeSxv-sCs5IOiuBq$&w z3#7@ux%PuZy$71g|MoCj865c6T$Y2_nwFNvhHPsgDD2ok-Ni%hpuiV-UEWyx;V>ry zL%jkv1NqlnkPFDD0$JK90hr1R;`cipZWcPDs&E`gl@T1R+y0_bAdyE8!7 z%7Q!A!Jtv@SPqZoA8h>XpdB#(Ra$$xof%%ZSb!RtpemDDq4Y`5dr3$nw{5DDscY!TNo`@*rouwnLFW1d-PP%Yz*J zTJHbm5>Q)aGw2SF7mFbBJYadyJ-47zBNkM$LW-8-%@05&EU52QZVvJcNLS}%kO`0x zSI{a!SDx-rfzF9MObiU2jiAeQ!J&dABLbEIE!Kz2fCnO5FLgG84tVaI_=k~!p+*3* zOo_9(Q-g_t!QnM~^Fk0~Kc*%Ikbx6fm@qUcz%<~87sP-8U7awy!ajtO4kD2V3RYhfkX=g zz%zW&aotlvrZ#qg%ma0gUT~QG|KHsU68ygr6x{zef`k58Q0Mi47cn47usd$PyLs|1 zcqQe{+NQK_*QVwp0u5()(mGum?moQ#;AU>a?Wr;U|Np<4+cfX~YEa~qvE2Lkn(6M% zo4F15_f|lpAQpAEg1FsNYySWL54lyjvk|mQyK|xqDDgkM|KRRT$SunA@E8Kt4l$~; z5j^BE(S?bDAw2BG4b%VsA)yy#cq!7d8Fbe;e+w6A0r_N5;^}S%xvz7o$^ZZVyC;Ja zO{)QDnrkyiWp^_u0a=4(>&0p~tif`{Jl$Zr8!X-p4zTXIpt$L5x!C|pCR1*2q}?8RIYaFl{i#RRq0xQ@4a{Qv(SG@uc_M0`Xe^*ErR4H2yR1bYv*AxDD2Sv$pAm>5d*}hVU>@oI(N(8m;$rRGN=) z-1`WMzugi{3=B7On_j2y1UE`Qe1F(^F!MNw-7CY?4K{0LP(X0ti<$P|qVTm&_f}Av z>YfLRlkRDti0$qJ#Zou;a1P5`^;|V9mM4l?I!|=of_S>K5oAl}L>bUn0yxnbUh3Wr zN~qtDg9Z!uTiroZWxGK~r7)C4++Pifr{*^bcVko}?ym-A)w?k&0+7UaH%5iy{%TO3 zzbm8ie=}&7{r_Z;#^xg`;K@p%jEWvmPZ#9K7uHe#|Hs95-g^0rnStT^anKF&kl2BG zVj9>JZ6N2jUgGcB&%nS?&)NKgfggPC5hT>QyFo7Ko((E2I(r>J$!V?&8&dN|NsB~u=8*hLv|}jBqb{a+1y?erWf20qk{s%f?xc%1zXbzE{~d@J3xI1 zNy*@x*A32v*n9|$OHg=rZv&N~opUWfZrExA^5Hjrm=Av=`4A-ae=A7Y3(%GH%|}2d z$)D(C!d#FKH6gwN`%o6b?gW>;-E%=Ds`Xq@Ia|xt z4Wy*x0F9g1U#xX%fSg&i#3nnlRlsLM{I z5bbPD0EOaI(C8PkLCkHSAQ7Gh3Z7>05E(;FQaxw$UXb#XvT#r$2?}_jYeQs^fz1EE z6{HyyWZ$g82>~2ruORGB@W30y>AkUAx*>TGoF99Ap9Q{H{Pq8Th<|&1?{u=L^tvty z=yh!g=yjbE(2bNk0$)^uRD#n~CyPoqQnKpxy%hK&8YBz$dav(3kOFYHLA)OL!WJY8 z)BArbsNU=b*Y@4u+CKP&3`hYuw7_mS@qa6*mJR3z2jh!>Utq;P=|BD4)Om}5uK%W@}_46f;gDVP99USmNx+NT0@#(OyH=#Zg5h}U1JId+3=9mAkuJk;ovly)fo{>b4-!AtdJjU~g-~}u)bZ9E zAc}#3q4j@hdd7hsXNDJ{8UO#scY+NAEpyomHkH4{l!<{M<7kgFL&h19ueO4OkF|n~ zX3RJT(s$es`C zfBqKm?U*x-!YAjcWxf~Q2I`CC9I9D-LBgAXGIpI<1P`~QEO z;kPKz31p!0v9x{643Gc@MaRptpyQbKf`hHZta&deOc_dqgTdngIiP)Io#0S>&6i~l z7Hn|^rEs2Otza!LLB(&wUT|=i7&h+(2RQ%KLr{aDr!AB~Gz+|NhiL|DcpVa)@fhU( z0+2|aD&BL{F6!^@eVF8x+e zB=pV&o%;yxT?D`Q>kRe=XyF}b*7rYH#S3v~Muy0Sy`Xpp9dn2jzflc)!6~eSBODUp z5#8WK3hN$1$5(e-Jw%YasKG*`QDE zZf6y3XN7?O#u*H~pz+L?A>bvR;LcO$#n7~aFF87&c5rkAFvcE6@I9D10+?eDhw^U= zVB+8Az%?tzP59{%lq z8aqJsr{V4I4?Axje8|}=!W9${{zCo}XsjKUMnOYzVZq>7F}&UUixm_#pt}JvYoqpAm|PW}mr8k+g#u`Iz-x817`+e(@+?M-+7si;9DT4a^ z7hx~dz5f624(0)+6xSEM&7hr*kgb;8;CpW&2UEd!n~8%qI-PhAj`i1E;L+3<`C#LE zo4uGpi|s+H;!9s-gn|MM6oUaTd`l>`jIFTVf$|3Bijdqycj#T=LlP=Ox&;wo5$)Ny8TX6DQ2?sI1NZ}dXc z7t~8KJn&ki^H=AM7dwCb|Noj3%yj<)nr!*-S|?)-!ccer|Nmc$XY4|VT=4--qI>|A zgP?O)kgfp)tqaa#>@MZV2w(;67iE~>#L#&da<_cz?FjHTk*JcaZtw*)oy9zz&Y+b( zkUMO;9az#joehFt$o&MRd{EH!Ivaq4%SQ)%EJ}&ei$iz+{|^XzVWbC6&KX}oJ~DgZ z>;s#(;Qw#-qVO$f=85MR10!fo;sbwO0FB3QpmH-U_b@qaK1~1~Z85x@Qf$AED&NfiZQK|%K zUqfnv;D8sr){G3@U~Ql!cWof0-QYT=`9E{LLboeN275pFBFxubpcz{v_kgBGx~GDy z;ok->uKBkGF&=!t!Fi|?+?;Rz#lqhLI*+cL9aIDJzAk}udss`HUS~G{XQ``(w(*UA zfGXfP4gT#1oGlNRru4f10Tt7X3=E(%H6S6x4h|vENy)A+c|c_cqtj{|#Tv_WA$+wFt-uO8wB{?Z3eb6)$j5gCauW4Y(!8-wHb0*YE(i zg##YOZoO2h+6(Sd2fWC&1WgmGL|TIRb-d8p6jGRXgFX848|dOYl!N#|#^1XDvPl87 z`M5N$I}9|z5$d%;tN9m4x$l3KsV@D_3_DyvvuXA_TtSq@4mS{G2yRon*4p6#;wkU& z1W__Oyg-yFc((U7A7oyReHUoc>T9OXLx|P3;QmZ7D6!4}rO^MyEH9!<{{QcG<^auU zm#_!CSYyNpx)uv5fp@!dfKU7@2>5UC;+G4^)dHQzz&FZ++U}qY*;$OB6`bH44BG7# zRVo+;$vI$EFG15@po3dKckTk&+F++&s?bo!$WS8H<;G-V#XsecO%1F`&VI~|$*MPw z(eMChB2TcvhFQOq**@?wtys2rRCTA3C)^8kjRSpZ~WqyIU_@S=do^Aj;Q0V zpv=k8ZE@TcbZjyM%$klDp$g!X-1@B(GLYI1I*t)Cgxc+{(b)(dY;*1C1aGPD1do&M z0Qru;MUaVs0TkH$E$pDqWE&{E8ovM?+8xSBBi6#@y}~U?29n9teP+Jm9tlECybcUfLadp!IfL z%>UA!V9?PG9WOl0L7f}{%NwQh4KFdeHVB5c{4Z_!U)m7r7=O!c z(3N7YD;oBLj>!YV1vM)EmoCX-4u4VR z1_}TbQ10e$1)av1#gMV9-_pBNlv%xi%!=)y{>x#UWl7B zGW<9AU%>LefTKG=r14M=I|D;dcYwfulc^1bpsSjAx*a515A=$({s9dQvx27*|8F`| z=**CD5#*@<_7F#1(gC?c2Q)JUcGo>u5MQA45Tuy&<$%m5SbnN!tC6(4Q6`$fIsudt zWL*FM-vv4c<0WY4h34Td-xZSAI&W}(;0G_xHN4b%5VAoZ>~?O@lIOZ-AftIei5oIU zagp<234ay?=wO2xFG@_oah}Bz{zCOBXz5M{)QO;2P}c)V@_>%3tV`&2U2=?tgCVf< z#Q)MIGZ}s7WHAbcE(m|23~@SWJ;IJszyGBR{+G@Pe{tn0C;&KKWPxo5)c~BwT_K0O ziv2I0^1pOK_=}L`;KTyfS<((lD>k5u&_Q=eL)CVN?m#Xip>x3?Dzsa);h-}EXg^`= zr4r77pcl8y7#TVbcAfw)A`S069=4AOv`-^AODEuko(UsERAlRc5aue_&N_q7#@gfy-xd)TR?^ZIJm#v1BYGfffBJ!md(AcA0QH03@`57 z`~TnV_2bSPNWCS{l4uUl!T0T;1qsd|Ps0}VMnF~-BXL2Cl~oPDHCr&0i2OI%04bN< zBD$SLnr${Pyngk+SOg*#0a>VwRjmR{tpY@C9B7jT%7zETUJURunw;aVpw$wfG8DSt z2U?7FGjzJn=ynA)xw=DV{NDuH`j}xf0kjL86CA-j&9*aGK!E@S@w4kzp}N z1ST#67SHgT06Jq~#)~4S|NnPrfC{Ws4hDuD^&ma&pgoDlc4&fz*uL?%_<$rjK@xf( ziQ^E7|NJe+Ac;932~m)Q>lLsJWXHESNNyEK?kA}4=6V4tcY%SwylDc(4ioZ+VOfIzOPBn=+#Sl%)dbq+Xn3jRKnW+P$e9SL zFoU3cSB~xppqexYr22aE5zvDAbcp8Tt{*_zl`JzlU2l{q1pE&@(#fKdF#+n}Pxhc5 z&K)&S3Iv_8lf{^&0myb=fYt*g+Ti;jd!r-_ z4}jJ#L$8Dh>}G=OKn{Mv76A$m(23Ao`#@KEy_^Nr?mDI0cgjAHvBw=i3rQIGw>w32 zI`VWonRGgWOm~3pP>AoYozi-s(_MhSB@T4#o_)ZJc70IA2-^M6-x9^hz;KL#!9B}9 z{6)S#>|lcumSYSI&Y*)S`KKPT0Ua5^zYTOCfJWyJu$?a$KucCbK?XaC@VBsnPxk?p zG3-vwHWL_LfA72xig(b#<)E_z#6T8;nj4348C;t&ev9jO4K`Vr0t7h zc<~d|0fhvE0)Go=#kt`nsJ8^2?l%Rrp720-xJW0wywk^vnaAOg!#-#}3qc2>@+ugd8eRAo9OJ=6`|2{{jI}4i3H0d<47>@djuJ z{|5_Xs-^W%iR%B-8_?{y2bvv|ZNS-49hBXU@VtBgK4;>^|I#JU`saV>nNHUQ(X9vK zAZIOu+Yw8kJ1_r-9>`+JI5W|i0n|{P(dpXrVyz9NRo4R+c`?rh6mc3^j2RbUs$O*2 zfF=~51VD`XAG)Xch)n0P)^GeRpzd-QOn3{Z2Ynb6+n|Fxn=KfQyMh|=43Go%vKTWi zgH7!G4r&pZfvpXLSgHxOR3VEg<0@DQNP#Fw>=bBN33AE3XY&z(=AZ0k;hh&dzk@bF z^!gb72+X(vDvV!fLGo0oRd;O%=rF8qmfimiKtut{3&}Om#!-oR!2i+*5F58!gIZM& zAeDXd5s}x@-Ju=bER#XHCjT#BfvB2j4GIi_EC!^&s0HbC?dbOH06EB}o8hI*f6%^` z&<*h@ffj20|9{y3&^66RME;jPfrZfyP#7J1c>pvyQrh!BbWOMG6Ht!l$YKciAG#tk z8m92Xf7dykt_xlogH{~Z-e3V8Ffu3O0W=Zp2L;X%o^IDS&?{{cCO9!fHPp!TmXmSvg@t}vqGIqP(fi=az z?L%;qtc$zsmn0E>0N#U!%WGI+pZB``7mmR+E=t5(4;%rzk^bUP21I6G%q1;0=O z`xA8YbcyCM1_rk*tFRYBn&6SS_|D@cqTmY0D*VMiP`M78VPihVzyLk?rIbHIcoL{F z@ZrTY3((%5)^8=O4R#ErtoyVkIWx5WFJW!4XDDUeuQSP+q4QR^>xUQRpw`=A@Q@*> z)&Y%<1&4=a=z)#l04>)Ow)+1+xbxVHwHlzFhRjPr(Dn3JTPYK0=oGS~5i(y6T0GnB%F%flbSBb1@TzFYS+C&Rw@Y<; z8%6$u_NWM#^Zz&L1=ZU@85^cLGrVRG49eI&6*SfN58|ZPRkonZ(n_>!L1!VC$k>9~ z6D54R+^0G-*n%qC64BRgyIeqed3M=@DArw8Q=J)_f2!BIKqnE`USUJ37O(QcOB zgelITD^R%tf`T*7fK&?w1_fta1F<*)1A;RifbDJq+bx3Dp%Lgj-s}3LI~Ft+#vIUj z?f-UAj_L?~+7bKgnCp}OFPudg8M@hby_)LG5FGa6D`=M)VxcD_Q+6H(olxk?0op9# z`ld7V1?c<|X!w+Y4yvyG0O~-14)}Qw@Y>JepmQ|%VMlXTQQb3EzK{y`U(`;GgEq@R}_=LwFjfaL9#P{7=1}^S{YfsIE37U0cDr z#KF44GNiz|%ptlmWWhX5b5L$>&V9iII;Q}1QVEalH0TbrZr3+m0u8^^%Psh~ed_gl z(fpIYTm~F8mmjQT>|g+`_l8)T0k%Spf7_w|CaoZMWH^BAr zGRDw1%}03nw>dF_P8F2~pDN1tS`T!psA%&K<`VJON*Qq=&B7T;Ac`j=14OZAlz@$> zGy~;Ju(?dlKa@+v>baVKNR;ru1l{f4{6oD&^JODE3P2Zjbi2L*UE!Wl1=en529B$j zppHnl>zjrOMuyVzjD~5>4EsToEWs}%%|QDet!rNtCv=Ct>0+_s-*y4ikn$?wd@YvI z1aV3$*sOP^prCs##J}x8Kt?B6=r*{P;c{d`1^njJ@F#Z4Ez4-{w z>qpJC9~er+j=S7 zczt_!^9Csf2JPlGQVa|rANMw|kzim5=mx8M!2{Zw36|sECg2d+{7X5m6U;5~sOM__ zB~c>$61>XkmpXq7Xh}18uV3$E4hhhfd2lc2I_Tt%3{V38ehqwuc~Gw#YZgP6L}%-Z zZ~yolOZ_1pLV|6yL#`~!-Qm#(0>=vI*NSqxd~NLDO{ zSrPCeK=S|p?%69OK&>p9<6!rLwsv&Ree(^xORfc!nz~y-yylbt|8!e`PEzaM3v$T! zi;U+R|NmrXU?>mno(fXYJNFA{_1e~w@BjY?hh?mp2A-w!P-JA-0rHSG*!b?LAkD#9 zjA2;}8M~)BGX(Uuh=Lp$@Zzw<|Nos}vzw3TbngWj*}>7%^Z!39 zc&xrP=MQ+UuXAe0AJFz@#*7_O44`(tC}`dyKC1H&r2TM-zvU4R1H)@BF!$v((2YB; z9Gw$DiNCiAl+HVwKSpMingMc9C`V^&%Af!L8+L)lGZ;!d|8D{n7`<~{{{8=-aT1)47(vItaEODF zsz7%uNLw&8Z1{9RD;Pl{(Q%zkpx`>*v;^veZm_xCGeFBvK&>Ls?%m$KAY*&MOHsqa zGA@GBkMRo*c~I*Cd>~>g=xDQyXVXBHaG^VR06wzB7-DIbJS!-Vh6lV5R{&j?3bMBO z2+y%5bc9dcE*?EFUfcaQ&iDfI?p9D} zzp&8*g(lAq(DCXoKXHL})@ATc2dxeUOUpu~4MC$imqEAnM6YpnpK@K%u4EX9ETTR|DGdn!n(7ScT zA5f1!4BQ8VIY3Pw6g>PbDWFRLT0ts0Tc`Z_{~y$wcjEvZmm8J=o(I|rG7jqMhjI{2 z`fyDi5M2%>GrO3s64R~RJV*fhu92z9vz)|~uDk$|h@VA(-gU&ra!pPsE!p^|Z3wCY* zWWEO)KA@BU>PbA%0G-j#0rAoC)|fxw<|~5-Xm2jKxzTOZ*_r@aLh<82f6Fq^eLG-9 z|G{MUR8VMlu?TduP6nm4W>AUT{DXtPJqxs?M5Xn?3}=SpU{O#>-LMy=ih;ky2XsA- zdKXxe&HqwIw zUT+f{xHrREp8H>=m1QQ(Mo@x$`3Q9A9M}P%Cg01;a4x6`@bU!K-*96SsR&A*sRLhCs}J7QldfOcK{VlI(?DF$NgY2*OaVWs)U zTfj;|Mu5w>?kSBN0-(#0AWM9`_*+5SDUelxtb?m6;qWRE1z(1PtYkAY0|S%~3MCK| zwD*I7fgxZQsFU{+bSDec#c*GNI)pF!L0e0sKu4p3tYLtv!SGc`J%?8b|4VPs-o{_d zB|cRPb3#Q~dvJz0-2)$HCmIqxI3^ETRRzQId-Utf~akw`? z(e>izdr(@$5i3w{ghQeP)WZX<{^5VQj*)=@WEUv#Ue5&uF4*BEj$Zt&lb~|2$N*&? zaOwahZP3Q{@DKn0N50Gk4ba1U4Dn6`R42&Pm)=MmP<%j*d1=hZz|hqT%F7Ku;iUm+ zP3%i$Q2QR-b?KfAYV%nh;&0|>WMJsv`VSU;392`s<;VyAme~vp4F3-Ff|YiI6_gZN zUMS`~#_%7azPlT2%Ee+nh^7uks5n^huGSgO49zc?I>EgwED4BML zg6@R|ua;}xGY^u4(?H9Uz|HM$msuR3&bmFg=g#@s2h?eoe(iePWfo|&3}|wB7bpn? zzX$^b$ZMVEJ+naRouO3ecng>X3Y6EPP+`VWZm2NG(IET4g<1~6zLr_wg761Zi4)XH ze~^`OuRTB-c^DW#DX`m>V;3m92ETal7PPDqY%8e1g4ikmY4$^G1#uv@f)p??FgQ2= zR_E^%0PR8qw_T4rfi4?n_~v>1P`D| zfQ~_z=-vU^+V{fw_dn24DK-$Q;P*e+%@fT>1ZIB!**zKLzSc{neBIzn8`E|sylTBv zqNsVO^-{fPhQdtHsFs-$?1U81&}!x>(BjO%tpDLJu4RI{>pY-C#2{DE@MZYSbY^(% zoKXy-YD&PF8mOVcw;2?@0*Im2&~8YUV1V>ypB{H| z0HxwiCl}amOtwPVVY2LpDWMqlT|I#D>OAox* z{SzDy?|;H002KPuL5g07LJvzR(d~BS`M&`)Blv&A1kjG}R*0^hXu3cLro5Jinw$tx zGZj@$u!-g&&>Scz7Vpgj^<4@SV6k`tR25dMFqDRZ&vyo;_BSuMGEm}D{wzXV;=1KMFEdkEa~jzMyeg}gC1A{gbNI&T4+ftqvmt{e54!U-@2XuIL3Fk4_8w@X(fEKaW-eBNwnFXrf zz*qLjW+=^aW&lZt!~Bvh|Nnnv#LF^}8ebkzAHu%7qo-zzw3)` z-zyE4T>Pz|I=o>&r~+mv5dt0bSo$I?i!uC#h8)-xpr!FyOyMuq%7eJztIJOCx2A(i z@7fp4{C%Lo=Y^2_CB-oBmt=X(mBkYDqMx6UArjnM2kn7{Di34CsXiX6z9bx`mI@{=4q!F1_ORTB*DA3N#tJ zfy7+*{CB-#?fT&*Xb)9G?G1)f%Wl^XmacnB47FYN%jhA*109kh&|P|=(-4$xeJ^w~b#|O+W?<-cJpn78Lm`*cbUy72 z$bepY(jCeH(hO zm#vpdI3UMGy;g;kj;)tUL?9x_x%4$}W~2$IO#EM%^1m?Q#f7intj_Z7-~Z+#0-A^6 z2gW`HABF&`$$DJ{Ap6+@I`984-NVhu@aH&qvmq!uG@tx$ zc%b=+1bD`}@;`KwT(>JncrdKjc?gm%KubMK4MC+6Q^O8OvK0>czZJA=F*u7U;6;Hn zD4~jUgN?TQQNpHqobmAMb)aQ^@OxZ9*RTh69`3g2ytcz}mNP@krBc=%&a<2u0y12| zt~2}(G6b~R27Fyxuj`xOfEROr!2}%|Yd?Sr)Dqp!Pdj{J1_Xl*h?)f|i=IgT|KItc z`3R2*A(UYOFC^fOP;IRJ0=~Id^uKXN(JW_%|7I_8rT_om0b0`Xn!P)k z<@IV%y#d?J0IoVg%b-DF2f8v6G6D%bm8>)LNtc&Jx06kW?|tZGInM+qhG@u47sLPJ zfd9rXSj0ggAb>PP`UzABx;`=d200*&A2e)lcmT3|skaccECF=q`*l#XdUl@B{7|CP z?faym(u$!}xiiqF^;-$cF%~9$+*x?P_fcK{uv!w>{1 zO(Q|age86l-HF8`SfW)f(p<~KS)x?V)?CZO@LHm|mWTJXP;)JhTnQgoO!zfRb1jcb zDR;N;ldjPF9f20F*}G$(9CNk+H5&hetJxO^e}eDq?Dlw;-Wg#6)%`#Qth+=qV=dHo zCqWYdp-+xESuniZ04kbM+O{pf#G^t}hyPK-N3Ag6?bXj(yTlZOFjix}Sl8Auy<$8MF@B zAma_xb|$dx631O1fNh@zGS`)(dk5%hukH zPZ}x=7)tfJ8NlXsUgSJjs@VF!Mz)@{`5!}>ScWH5XOaZ?I==_P3=9lW;5avAIOc4? z&|Ld~p;Q`_2bwCF89?*EeE&g*N`vm6kBjegebDX8!|nT^RH8ffMfYUTAb#tm5^hju z#~(CQ35wzeNZA)$;(@M0?A`hWG!h-l(fJ)RZP6{<3E6_{DiF{)6|`{~RuG20h!gk^ zDG0+}Y-VF*_+xkgr6>etm(Cl#mH%Jxf~I-EMOi?2*#FI-0zUY~4sf98fQDm18;AK@ zJ3)cZ3@;9YA;n=Bs5nd%17%r6aTuU^obgyVq$2C?1?^*RJ<#bG5>+A@9v1LIjU6;p z4H5+{z^RDntcZE7pAioV(ybsLyx|(8 z1yOM4VMyK8?ZDD{ppQO&59|aj+&Ka&Y56*DfHzCN5c&z~mcVwNfcgjw z8D$_XFM3cEgSzG~p8h~q4B9^0umjZMXDCt0V#ufhYYT;F10DWRD!L2Qs_p#nV$F~L z|6jAem<8H*dl=NkxPjco5a>J(adYQ2&;h^V-R?D=p>Md|D>^@d@0)2k$v@=)bhQ|? zCDD4QR2OoOaOaKATL*v0AN(Z`x_Pei!oe5vorgd-WkDCLUEpsK12v%PYZxlkxJ;DRNL=H5j4BAfrQVCQ@_`W&TIG>S$fw4QjqPx6CJNAim>5JBH zHG=gVjlV%n$TIfbAjy9Xn-}_`|Nrlh2TgUX2PG)Toyf5-N_#AQpOm(Dm%c&X3E6t7CIoVr zlCS28Zr?YOw>ld^MNQ{KP_ff`sotyxbR%53e#RE4@rL4{0d>&g5m+ZQ{KbRW|NnQF zerP_TVR-47n<3+CebCh?p>O^d$n3Z_8+5r5$kU+9jqZV>GWWqVsei!{K) zr^j2j`~#K#Aa@45;A8>q=_&wCZM7}|oz!r=bpeQCU|=}bIv;cb1SpC?C;0@tc>9@w z0n|%m&tmvrR`6N{()fXF=Ko(-@WQtl-1z{leGGna;4^5ZAUNQKNF!LZ6Kw8F(AtbY z-E{@sy&zX~f$ap91fI=58Out0=U(^+I@}gSf?7<$V4MDL1^Mm8tvR4v4mxZ&7%Fl< zjDZ1sT=GBA>_mxFH>eN-IX~>h#Cf0;*4yeH~K@?;P&uh-+y&#ng zr53%dXTX+%NKg+qpcj0qML;(=U?DBD7Z*Q)0t6I7jI9UwJ3!SI)PSz3AW`_@6Hvo2 ziy@0Ki|Iw~C(z;okUt&xTR?X(bweTvTmgduk}cqc<|hUQh(+B~K`I;ef=pxRoB*n% zOU=5$q1GKB(#-@pYoptV1ybU6J8?kHwdi)@K^!H~2`)w<9>@|1NITy83>=&Pw}K3R zA^izd8B~P!ww?fc8AL+8d=|rxL08lBZ*RQ@l6?{Lk%6J}corj6 znJ(D0O05iOkTT&6GZ4j-;SZu%Gg9Y*g8P8r|Npx{-GA`-BGh-i;51nx2~Iizz2F)I zG|lK!4@xQmuSFmd|F?o-=tc8PaE$e~9s@a|xAh2wIs~CW%O?XM24=L*1(4ZY8{$KnD9Tae>H}y*={I-zru;Au50-cAucYr!HhTpmw8tM(fccX*bFeO5U zmpX5}IQHrP|6}fkjNr`Gumf~03_}SwSnBfc|NmbX9Cv+kbFMSPan~33z|tH5)qkDGf+23| zwrki23C$qr*0&PR<_Z~x66a$MhKyb9pso0j4h~220mpz0F0j*|eFG;-u+x=0KkNeK zq8GLw|Nn<*=x7J^fL?QUet6*mt$e?9LT`!!Z3gc=1{>mP*a5z`zLc|h2dHt&P@>iC z1iHCEIUqv_Y*P)AP2!M~Mn1f_`~ezB;B(#3yau{Vsq+}@^nq9oh(DWubAi^xvK4VP z|K={^ZT`(uBGBCd8X0-b*WCdswqCP!cYxZ0Etf!N-@G~Q0NQrT@R|*DubqQO>&X(Y zZr3-4|GOPLI$d8_9MZ-Mrs zec*2a)w$qfADVx2^S6MG{Vr#3{>@cV^_sK!HxGXcsMPCj110u`3QLC4(Blq1phViR z4^(_Iln8bQD70QG;et9X=(SLDg$P559xNj{2>dt5kOBvrE7WGtq5<(;yr5e2!;3lZ zp}_`OMB5qr;k7Bqckpz?577m7ZK>2QP%pFd!;4gqHXiU6_XFQRTVOwc7CED=cx-&r z0Xh#4d=`86RM64ukWt9)UJx5{KR~xo=Ty-7^xYdl9z5Qv@eeWs+*}vIP*UF8Y5*$H z{+C5`yTvfOg=o7)1pMFn;P3zcfiG6`f>Il3w5-)rf`OrXDoAO!TZHAI5_ZiCoo*4Y zwf>idK)R2|-9kV?cHAunLPdb67mQE;{qJ;3=nPAVFg);*1-zi_Wf*7?(Oi&|j<@PS z9n*LiG-lfE=FmA8bXqy%;m%vfT0w`TGiryq9B(}Uy+Yu4>mDepb1LXSdRx$F5P$n6 zP*>RvG+t=_zf2<__{GlOpdy{8+fCztnM!A?3aIG;zHBN2diD5mH^_*gn-0jGudRE* zY62i5hHef4!H_WczZDdYFXnK<0-^_WPFe{M#BB^ObwN9S!H2ms@V9`DkL(7U(|Vv@ z12TRH_5%atf&hp&z{8>n-2eYa#=m?AYJP&F%J4s7EJ_>uv>!b@zhOOP5fG2&2P)u-ZgYI~g--H$Obbh^28yE#B3uM?aTj=O;e`CqH`Ix|A9HvlDwPB#~KXY0M7bn`O% z-~ay&kT@=NfW)um@e(u5ADss~-82sVl<)M@`CkSdz>EUjC!$g!2oflB33y@f6PyrX zLzr=mbq=5;TP|gIpbK)n$6ipZFn~ug_*>0EofL>jsSxy({k1e6 zuS@9c1?8P?X6R@pIE!>1ZoSRlI#+~&p?fb#w)H=MOD~A$meJW-^Y{OMkLDjT{O!3S z3=IEOS}m41Gc^7OjZc(FWthwZH6}or@P@93jWgaN{ z!AZ7ZC%7}n-wIks*4=ajH1+Ei01Cb4AB<(}pjkzs*9ynod_WqHyFp5I!{ctC0|fsc zcLTRUUMqHk3xfZfLE1CY=7IXH%pm(g(||883o|fuyLtRKY1NtM%#bl1>_$)!ytoTF z9;Wl~E|5ad+Phi83=A(9fi!?i!x#5H{D)j|(fI!rs3kV#P~(3;&>AGj9Wo_`SqzYD z^kT-0|NkR9566LqisC^AfHQsPhekgR&}`(fwv8Z9y$o>`e+hwF-(Y`Od;s0r`SJxw1YCYM{s+yWcXM?& zflBLAtLBOf=2DYx2M(m}{d`0?Tzv=1-8`L#!Dn89I!%*=7#Lp85Mp511zNt<`J?mN z%sqsH3I!Yb88$kzEw;m|b2*_BDFs==59B8==$T(+^ah^g93>oX^IWq*l zNMi%7Jb29?o^cV(4`Ty6V7D`xyp4bc7X-ApBt;Tccof!fEq5QRIqK?*rRv$K$R zTKN9||Cc{OeMxAl0*7{~4J2V09%$YT3N)@*L;L$ z7ijJslmw;=GBCWHF9;7@NzgIyhhKvF?6APN+zq~~W#;$a%|DpBr-6(v73v1Nr1=*U z|I`MM?XUOm0LRxaCjRySK?a7`>l^h32TED!|U7KV8c7z6aq51=fiWT6FX=bCdjOAH-*loBh3s9uVwyk1-S!K z8)wKP6pONhW9VhM00Tqge^BL8CktsGglAZRlo`I5$O0YPewir1!0^8;!|)O$OkOB` z`~N?#^Dy{Wb9fj+La!tf+Tvhp*s%zd$4i{L!#r9ql~^~|`7o54cDo5cGyngR34byo zKvscs)(eF9{B-o?iN+LOfJa+jZh;pJ0)28N7yuriR>Ui@bM|Noeq72|8y?l6zz zZr~=FQ)ifmb(lz?Be{{!5hi6Pe7`1`<|NkA}1FIVN85qFrGN=Iz z&;I}K4)f@C69Bss)QW=^3stY7uI#)4DplP|;Rv@*2E=+ov23q3M3c87@cQ>e&6VTf#18Q^iwt^fU(Az2k;R!$}9x&Am zN;(;<=7X}%=}(|aM4|ZyTWM4l!;6?t3=EO~w}K4(zZGQC|E(Z{{%-}D^M5PInEzWr zreqwR@5}&Rvl!ml%JJ|2{}*bnK=Vo}yRNSNm}=0ke^#G)%kZfgQjg;57fDW?tD?<4b!U1_sMRb($GfVENt5poe! z$XEiFo6iiguk~9gFEpY3{rLYsXgk+S-d~_oUqPimG|d{`?&brR(w(g(p!)v@Q;B%S zz6GE%?gs;Cf6NX+P?-rjKdkXTcy5e8JmUsf-jW#<20YDsL6y5esQ}b2_mBVozXY9J z0g(_a4TMN^3v@SuE&*;mP%6BGcOhsD5Oi<~XbezjA!y(jG&=@O{?(9UVp*mw{ zkGF1sHs`vHdiy|mqO*4m$m=KnL-JFpcyAjh1AtZt2fSGQ5|sXVIuCYUhS(%h8ru9D zGz0SUe~EQ)V21cYXgdGD6=ci{`{$s9A_A)6LHsP{uooVn1!70Q&0vt-{H@ZUJ_ESm ze{mjE1%dY0LrfRtZ@ms`7J~~bh&Q^;I=8L>?YV*E^JzWc5zr+dkv7muMet$qYL=I4 zlw*t+B5XX0hl}KLh^r+~JsCjK|dAVM_hQ;z=v0`u_=-vl}`91$Y zfhMs7w4&lAXx*abLCMSAQ$facdKGj=m2~%l*xi98-HrvFmpKoY+JFa}5$m47UV4$y z3QCg-8B-8OPhtQid64dS!%Gq1!RSng+x{2S{4c1;*nv=+22u-d3N;@Q_+M1>zo;VP z=|a%qB`=?X3>E+%#M649ME!Lr#6|xLWisA_4FDyt7l**gK+_(kyFkmLAQrt4e*jLn zijX)KE0ya8I~SZ*J3n;#RdmMHyoh-I|9>YqadyuIC6kx_obY4|&SMggc3FvO#MR0`fMfi3joxs7gMs1YR?w1nNPhrq zOZRM0gR$G7bM69ghv@?>hfM|Xd*^|&Q@57~_%=nu1C9SdLmQA@N6TK&9%GH*7nk2K zFhqfO+VZ!6c0u&EGXMMk-#MVS_0Qk`{{wnknZQ+3F9W!6X9RHqGZYqqid>C1pe!oW z{DZYLp=&Bg!3IW)DXbtyslP+>59Yd$t+z{DyTK+w>dv&z)){|6+xm|*>;f&FWhi0& zUu5!{6B0Q83q`<#Iavk)FA5%m!xdBuSAx!2)?Ne}#=G^OF%gC*1h| zF}SG@S`yOo9#nzt19_XF#Im>b2gt6_EucYLuxDHk1b_~L>UG@_5R~Bo_C)e)kS9R( zYzc>RgEd3x$=9qPN<1S9Y-85%fBz$Pg4!%mFYTEb7#jAS0k?bnA^kGYF+ZgT{+I6g zU%KOe>6VN-u%>C?L?P4bdZb}D%$vm^Z-UeK|00ApJ0F3)30j2Cc3DtLN9K05e-gYjTmXD=uuU&pteEOmmo1v040kZ}m?2BE+I{>Q~C$*AhV&}~~xRd+9l-(2AVS;~Ntom4<+RA@0Mjm`w6m?((f zk2QhDxfzbN>3~*hK_esRh44d=o#2DH_*-9sno_+W3;sKL7@m9yngN4EXjd!92OZ6z zMFtI!9p5E3y>mhHE8uC1;NIFJ|F?p?$G?3mC}3V3Y5*G?1}W!)!!rUGgBP-}{su*> z2qX|1c0kf(Lc@;dpk8iCc<)>jP-kods5AjzPnyLL{37xNycj&f(+OVI$iE$&eFJ)3 zj|5~f2EACM0Bb^mj(G)#UF(5P@R(!g!BSy(kD~t;=w=j9=yjfc2|98J;y*~s20FcO ze7toEtoVxXC<$u4T`HAP01i?2U;qBcM?f5ZtO2xm1GM0msZ=tf4J?1`JE&BE=m$*z zz1Hu%1yTLN_A#h%2O0cYDq{v%_0OOG{zDCmGQ9NS^G(oM_aGJEK}y4KFK>V%1e{YL z#ZtFW=jG0+6aN1H4;is+{67s`;v8!JU)$XY3N!G55}mz0fB*kq!N}io5;QE*+5);5 z7JMO12b2Y=hNSshK)v$rtsoPj=kJ!*K&sf*OZ7#NdEV@dZHqyL?B-_-3~`;u;{8A? zKT114Xx`{N>|J8f#b%>XV#L4i0{+3Z)aMM~gVXq1Kv!J&y*}#J{Ex9j57fj8d*Sf_ zRP^z@7VZYS9O8oJU;k_P>UcWA&hMNGa(ee%uuFGCW_yI8A-nG~XeN}u)#yE_o(JXn zhJB!pG((9>#$HgW1N-kq_m6-7qvJtqZ&lmDt3M<8TmQcUB?pj}?unq~D&38sr7M^_n?Z|WIwyk`$UpV&)$2Kg0SSsPw@(S9A&9(nm6bUZFN zfkFD_kQImBMxDJ4fB*lllMK(0Ujiyg-hF`>1e(BmdFt)|{|)<4@smsIUg7=jI=vM)Vp`e3X88u?nOUytGER^*|}h z2AS8~oi|==dIqwfqz~0qfq|fPRLtGGK`!fb{m^-%8|*UZfnzT?uYooa@w6T|#>9Z+ zICqd0V8?}JG2nFFEh{Xp;{j;}yH2|GK#54_jTaK20~hNu7(f$ft~~rx7`k2Gpt`d0 z4d_fZ&;@3-9LGRgt+Og12ct#DLGEh-ubge(3%byQfxiVb-PS!7#OZZU=$sA;>0|9r zK+)dG)ZGr+6y52>(mfw!W@i+~i!J9tx09BF0%;|fS;7UrH1H)TX>|93%sK980=ks1 zVLzlAac$TSsYYxdXCrrS2iXCyMuZ+QFz|18kLa8a5)SxZZj!|i{vrc(#K94nPO#e6 z1Eq=I+&P&__&`#Bn;_*xsc+|x7cm#0x5#(?c;R{F|Nj?@Pl1+4ft=Cln9$AM8JN<% z1AIegDewPMp70k&|3If;z838K@nRxqi0(isTX!hWF(yXTKx}>kI-?l0Yz?$@)9?Uf z@n&b}lZGnL8a-K1%g2`kHZal(I_ep`pbvc9Y>7u#1E^PrK35y~!s;d{M}Uu%{|xF* zx^nCSl>#sNE`!dQebLnj($>-Vp_zf^4Za-59Y9|Cf7}6dy7YgTYaTT0 z1W%yzgB!Npfd#FX_*+16*X#NriySq(ho1Rp(Y>fc74-%+0ykxDI4gN_0#`B zw@iJ%@ck0!h0Y(}FYr$}bnu0I>!A|XZdZ=i_O1Ubl{!Ck{(^K%eL240>I9eVo#1l5 zv#_GGvgWnC=ErVV4$0rm2N|0$Gjw)<3jfX-po*ZgprW&)raSb(F((7YZr>LTJ0U|A zoS=1}6*3H^##sy*JHa`d7r_Q}HGv}wYz#=)33N0cXtk{&Ly07)4guAopwbYuAA;jW zY8l8m3P{N;EV#RrqkA4G*@H%^K`p?BY72%E^(=;r1KHE1oXOo2@ZJi z?F>R#q}%leWB}_jbUc`8BWLFc*xEwqJpayq08+5dozXf!%OE`F3 zIP8Tq)I!j_d33Mqhk#z!H(>!UTA>z#gk8E_KiGnX;Y&DeL8GfBBCn;wGme5%fY}R! z58&$YwS0KSqb1G^uQ~pge#qcl3Tp7~295i^SoapJ05q0cs@VCf^TP`ch`Vl=2!v;- zgH^uhgegLbInaW3*eXlIZ=Im4Mq4hGXa&F654wZ=SVZf$64~x%kk>$KtAqkxoIS(9 za2zZETJQGS0+gRX3s9s{(@F3P`w~!SDs&!u&D;5-vF3LSpk;`zAC5U#fC{P3 z58#_vz#GQ8V|ltuIfBDp#QgmKKdQl+A+m%Myfy%Iofcx_7kGgl=+Hax(PIpd5~W+H zyE33Nw5J<=TYqpiJejGfLhFK>fZBRPZC%`hBymHCC>E@}SIyv}$5 zw5dM)zrl+&&;R}J_7>?p)a?v%N~do}r$`5==mhoBIxoDqZ~|1vm2iN~b_cD?=;#iX zaOkaL>~t2fyilXk%Oce2EYZsX8s=vJ-GA_3lw*PuIB57=K!;FtItzfpYuatl;0fqF zHh%C8k)72t-Oe(gj=+7}8m$RJ!xVi}%O>|Ie@jCBM?17o4v_ z{q&ch#Pq@(;xK{E8!t{D|NsBB)p5uszwXeUhFy@V$FR9thM`m&w3NJr2XUr$iDZTg z)W99DK)oUG+TWL;=G`%8ONQoZ8wUOs@Nt;P$IdrD17#3_&ST&>1!Y%I&*rrf+;KUt z{{4@Ldd>Xb8`L&2KmPweSmo;?(8h$$I9BG$bZ#DZMI zaSwgyT=7Q#3pvC5(eXk(CFV8VXM$pk{2cb)y8bGp;wMd{`b3?y!;{_MZoA=uhB`}z zQpfI4j)q;JaXy9;(e5zN5+**7opHbZ|L;85da_i(@V0fFNUeCcn?Se743LyFMCw2( zv-9gGohLv&pP9@IkZ~jMaNPf`ARAxgoCXzL;I>UAGXq0!>4IM0IbjgVz!&F_!DXXC zYkgc7*n-C8KnJ}I`7ya@e=o;P98Q=rVLDvocF9j{w?u}gn9t_Mf3V!kP9LSX_!5Ozey0?NFWiN_P z!Mz5$1T?HSbPnV?kDwPfkHV!=K}|;21-9VH8p(i+M_^xTgY!NQcw6dACng4l-K@); z85;IOmtpVbTIS5q?c4CbFaSK99r%I`VHs#gBq+}LTR~-DSg-4x|D_E9FH#Y9egw5K zeHS$T1Z7+BLi*;PwUCW1l7Sig%Ru425}e1Oy;0EIH>kh|FEsdHAQPOSxC}JRKH((D z9|EAb2TkyW_4>~FU&;~q;^z^NI5^HhC+c^*F0chnCiC}A25qx-#b%T%!l)od1_p>x z4S_G#A&jyDIU8zJ9dp2ILx|rv0$y|?6p4Zq;q;q2*l%Z_f?|tj2e^X_Y8M+GczG98 zUxacTbDhl4E!7R)1An{;o|BtkIT=(w2ftu%2m24gdC-Q$u|byk)drfCwqOL^wd2bJ zo<2Cn$dJVe%06GNfx9c6he|C$!NCOUj`064Xg>MB7idkz*!nxrL-O>u>tSbgPpM--}z~W+cMC$r4Qi!gucr_la+qUoEctd-u?H#lNoda zJ9vFx^AQ1*TPQa&b_;YqRSw|zc8H~f^SA>GXmI1T@wY=vU>*}F>8gG^!~y1k);zry zZ+OHA=7Gxn*B~tn3=9s2CyzUTq#5|P9R%<93d>aw8ode=FRmk2lS1~oVsOSugHH~s|G8ztV2KPNIWFzg3u1LxPqpVL7jN}#=H zrFsy_QqG2bFF>vR*CG(vQoe?Lph04Ywi0&!ZM&B=Gca`ifHf4sYqur9XVZ53av0t= z{NK&cJrR`GJ6%5*9%%lR!r#IIDsf#uH0%IrWhfEpY5=(%)Ft|Uq4|N>%O{}X3)JHU zTU}z-_zUFF62XR@plLyd64l0E+Kdbg^|IZrA6Q$O85mwn0WF$7)^ebftK0R%u?CR2 zjNsY_?A8*i?k126Y(f4j5op*2F-FA}VagPcDSrR{|L-^qHpTbDu|}{dogX-E@V6WV zrLWKrkh=^ZCzN%Ef?AuMjVU0hCQ#ru|6q&)pI*%h-3)YyzvT@mYIcIwIx+CK-Ulh2 z2YF`Q(4-fDWih2u{VW9Nk44-BmhW4Io!`xIS+=P{L+-((v}{ux{5E z-3=g{I$iI8TFmz4;8kv1uWg!Z@355czBcI&ebMcd(H)fYnjge$0*#(^PXY~>bcR0Y zbiLzL%Ir|W*X?_!JNChAwr($u?kFBmW98QOOUD|(uIxPV{Q~C&aIpej3V*=zcRfc9 zi{;01Cc{gd7x-Hyfy=ZP&AVnaGca(Ja5nGi05MAAJ5O}p()=L#tMyWiXg#~_d3FYd zGEl3qd8Y#?nU_d5)IMhbMGyzXDn_W!U&nO&azNP)J3%EUL#ZcdY8ag1Uc9&po^=A1 zS;rbcvW&+YKt(7hRUU5u6`>$j=P#%UoS#Z~K%ME!ZlK#%UEhGNVf)egpTD&ql+_YI zTex?E(gHZ@13`VG9TPyk;Zj#v>au}^G3fTXsfU_>z$3Fnx!d={|BV+IL06fvOmKqq zZ9a51fl|P+Mvy6taUiSX{(x_lDv|4U<=8LAz`*c-1IWgVnP3lnc(M3CxTfg*0V_Qr zryD}HJXmywet>$VE0m|V9hAJGyU;papY(1ACDex9kU=iahTY)wT`JwM8=O^2g}OtZ z7#=w0#KU;Zjfe5&DNus*ebUX?dZ2`}xsrvUl)2N9r5k+SMROgP>&5~#jlTu7-``>~ zXdsQhbr~p@-B_A`FqT?EZ7GS`wQrd-L+6hd(!ap%OD}LL>AZ2=^~GgSQ5Xmo?sR>_ z-x|os!0=kD`3F;J)c;aYU--D|i<`?pXRZgo2(V>ffON`0D%C+Mxj?Q3ofuo9-Q5f- z*};nq!KLi~(ia&IAQkKbP_PL!)bTLzPjTaY&2`L;m*F)FNNdA>2~ZrC7&q(&9Tvk- zs@1$-1}viZzu4seb`bkT>$iXZLH8k*@;2;W4leXsKx3=jp--UU+wH^xaH4PBrQ7$(F-IOoupd?a zZw3u@f_x^t9MmlOeE;8n(5TW8frbi@=Nx!n3v`3F5%V&jtV z%US4<+_@~aunbW2y@-ZPC$t_YvHj-E!BoPVVFC7m;r)OAU#EAwerV=kGCa`i&A|k9 z7ypz4VW7R#FT~A3VaU_`gQdjrwRRS3SOz%FaKR1K?hgIX%*EL3&B54Q&B9nJecTyb z;bkO%Z8(4L-~VIn;37FbqBr#mXxu0sbXdYk@agPf-L4|t;0w>XT?P2pyYh4g^K`m? z=)BhL%)xn#zhyNjJ-doDS649dPigqbz`$S#x)HLw^h38Zhvl#Of*Kaf59L|^i#b3? z-IQ{?_Cf&{%oxvRcoh!OSML-u8Iwy2Cf%af_ zJEwGd^K>?WR(l?IE&vru$DK<+)N4MdSB^XLfcV|MA70CWS`5VkpyHwzWK-z}!%K|C z0-D7fogXEGc|aS9PQa^F(9LV0wVv^vhYbINZXWux6Leme;epQUpI3KY@BGnS`v-DW z5oqI-2xPb((%kI4+}#2_JK_y!1GMX#?jVkD&K#h73`3uEy1wYVUZUOj3$(qojCDVV z3h!qAU;2WT)0u%G;Kj#N3=G}O%}02^{7%;wpe|83xU2FY_yzYJP>vMoJPvBBgBNDQ zH!2GSgFIOJ0<=$g=S{FOPvT)#ZUzNj zr&~(5n?R>qMz{*{Hb}NR^hu{%jp2dgU`;;z92q+O1Ukbwj=O=w z_PARGC~LpgKkilms&!s-?J#FxV6gUmQYzCO`lg!+=>UWX(4j2gRvUUz3_3u919Xsg zEl2Cg65j3rj&27Q#$O(mhst!jojDkPw4UrWVJP7a3xo{DM80MZgY3JGYCQmMLY7E& zGItiUgm*iGNi!AZB*RUiO#B2Dn+fB!o{<9Sgfntu!rbbbdN zukZ;xLecHY5%?kzJYEPNgg6l2db>m(6sX94iUt*4U_XIpUf?y1;epPl;IoHAc|aqh zpwVEE$-R;PgM-3ew0s1`5Rc&{(69^WDm>`5r!PSV`Si-jy=HXoVkWB0XgJBh5Fgcg zp!8f8Z}1DIlMD>tB3A-*_S2UW3=HwD2ck;3KvVk9PB1V;#{KC$)?F(AJ|YC<9?g5b zmH#dO6-kEwFBJ%W@dh%g3QAs}VH`i_*N-v7FDwkSjhmq}6tqce1E_Zax|ajAZ$8WF zzuAjAkUgyjqB{?l6hM5DNwDPG1=0idMT0d%3FyF><{h9-#|$N+S*-ufGCGz!GraJJ zIj&UVzgb4#a!~i+%?r@l?B*jppgd8^(Ot#@K5!Y7ol#rJF3>t2bTF9#E2sevx~*Xv zc;X@SO6#Rk_T#QsKr>t2zMux$an}Q&lH<55Xdx^^cTWeX<~r^QYS=OSFBSP;Dv&XG zxidppr|+2;OTpPq0F*MoO_SCGC8E%Cx#&M8w%oqOs?>rva`ahzSX|wdMOQ1UQ!;8xhW$edYcRX3{%m7+n z1=`Z_zjVhAkb%v0F`zjI(5-%;%^I(TGMHC@rlOOtfd&F!9s>0ud^rNT8$mrnM2jID z8Xy`gKrwRS#We7?as|+;xKiHk&=a7}?4iHl&g}mZ-UfRH#Kr2Zw@ZyOJfZqP&A76675z z(BM=Xs4ogVP@vQGM(1(pxh%(B?|{mx?of{Zn?R!~|2KiM+Y8@y;3Ie%*Zo5~?kw~Q z=wvhgKJcD)(3w4;$(}PWcx9nA>;DoiQ2qrKrmy)ja#n!0zU~3p@Y)SjY(w^zxq>dS zx$(dB45;dHx%}^c^AXSnyB;RcdU42secqQ2KX?l380=3bm0)_GROa= z55hr9F=j*D(A5T-gS27%U;04uKzQ>3=76vlB3D7qgRW;h4?4n;-G&!*l_(c@k;@9k zlJsuZBiybBN`kvXUo=()fLcPO?hX4u%>;&0JIEnp$6fD$YJ!Y)U>~$!1GTk2XuEEK zx*K$dP3;i|{(jIN&>F7h+5-&y?VuyFp#kvn1*qxZ`=HzPK^G5yhwtWNEbI(fg5epL zRyZ@f@OlGsB2Vjq5*~;Xz&%xkEaC8sCm?w(xV&b!?~BGth!bVIU0;O%F90`;^bi|e zOQK(b+Vffb;TbF|MmYk77SV;UAu>&)VpyX$VBkyA}1&vv3&UdKfc?S zqj@K&FT}v#S`V6^1ocG&AY+gU0U4qzL3wxirGNilbA#)q*H)c3UYqRz?MHmA-|frs ze@wtt$I{|_H#qj4(oiTi z`7a9U@^ylxBELCvaFnPu?}JSC^M?n&DE<#w(NZe*Fs_vK7(4jlY2*_u z0=sKDy4gDqf$FUWP;=yq&^j|W3(&IVfETL| zFfbf<0|h)o#B1^9A1tLpn7X=Md0G#YIyLMEC_EQj!Q|Wfk znF(5<-FmxTx`ws+CqubNM&?RTk^AAr!3+QX?=S&%xS3GmDm*OM@LT8M&g;!PbU;N& ziN>zRmCg(=PQ3=#7g8CW;3WLy8>sINY6_LIA8Q7cKd6(D;4vnjN^HG(rSfPTlGH zr1e0l1$dnZydBr+`UKpR<8Qetz`y{O17*N-`xzKOSH6`#0af$h^@ZK89FU<2hHnlW zA|=Azp>JSQWbDUXFMx*px_#etH-ff4bh=(?Jy7b|UCMFX^~!>k&J56P_@!pYU9T)% z>CDhvdx51yvz(*3_5xFp)N6jIvgX$#1X2Qx@F#o>4Be$1U45W6+@SM-4uJ|nP#}QL z=`!BMvI-LBLSVZ}{4>N?IWuH{L<3$-`~oh9I@&;bp=tEBZp+CMO}Mt(FaG~O?s`Lh z75J_q!ERR$sJdefAWfiwrT?2i?adbpfBgFoZdY}?zIn0a1*p*y0b0KSTFKk(`=((h zxX3Dz?k?r{UuN=uBdFkdG3V*O|8cDc;`v)HfiAx;W+lGMe{e5otu(0l-uW5U=rD0Ftx1LpfRxbT)xxqQJo& z$=_1K%fJvE7Vx5J4>)gurZyTu3XZWzfa2kJ8z?Y9N#P}Q+W4CT2S*79AK|C?*s7| z_**7Jt{8zXa)vB~>zV)>YU>C+-ExV)6?9)D9zK%Iddpi(Y&3*+bi zg(kr-p6_B{(5~In?RtPYb_cWTp5AcApn%{P7j}Vi%A4jRDh>OtfZCcRy#Kd>Tn(wC z;=4hYS8eH>01`UZ08+sSDhk0K>-2rlTzdgjWw|~9JB{)gPI4LYojzhy3{sR+7$uR`-P^yn^D@X=k}p>H}b{4de~ zS4zR4bGs&i>V3nLjK>7egHG+b!QUFr1v(UzqdTIe+oQtre(5&LbETUwPv)|z2c5lD zW{Uk}E;-1GZSjl^t3Xxpn-^v$|NRHACVR;bGQX6gVc#2&C-_@Vf)Y{f1;$dBT^GSY z@aBcn6HsvSx2^;Eqb&ro*#b5R7T4{{@xP!T;|3_j8y$j{*dRrb(XZ=wy@HzY?=i@X z(mYV=39RXM1n(;=F#*MTDF-w795G?=IbuNp%?JKBU-};u06M1XC&<)02SJf8(FwNt zwKh2MaQxo@>gN960GiAAUsRAGv)Y;A#ioP*{(~BvM+7<>K~Cr{eY4wowKGHWK1joY zb+RU)8{><0c8ZqS7zr8m%%3#j)A-vk8idv^Q2325F4s-YN4ctK0&+Ca4t zyp!1-`X->;DFJj|HfYfRsJ`lM1XUmi6{SxCy4@rY{Lm)>;G17dS)mqydaj`20imSy zO+dF>48l-Y&ljP>mm>hW46}r*8|-m}Tq#FDcN=I52_XdPtTut#(Qu)F;Qyr${+C|K za9#~c9~)j&yaiQP4xNWVXE*V;z5-n)Qu?O54>WPrdJ;69ReOd3e#{pra1H;rp5$)< zO%P-;Wif@lFirt2QRL`$;yCz%x%mNO!2hCvZgBbDdZ3iK+w~48EdOr=8Tdls)xZB) zO#e&YbRK(Qk^-_>rS)4$Y-j13<~k0B64%!MrJ@;`P^aB}1Fi3(N{#-PaqK8s4Z0fg ze;Erj2m>-op(;1O0U0F%DlAIb-Mh_Nzm=~4U%KYSW6<)WX0Qi9XZ73$?>8&4YyDp; z2)CsiVoOx(?NZhMrDveFz^$l-S`qN(|9|(+!_7woTK|LFLak8Kgm!@j47y!6WHG(i z_Zrl2J=}Q<)c2ncx)2-GbOCMoW#9*&T+#V~6}0>;;Dy9?28RCzpkp@+IJyHw8V}{L zGcW{o2MGK(nc7h3%<#W}r`tiI^+2ykE9lCWQdaP;!~dJk6go3xG_7`KfZVlG`r^gq zHK3gMrn?DbP4f{Q(76}P3AE3W0W?*L!C z4B+-Fe+#Ijf5`^YUit()-vm0Zx&b=z>Xq>t>V#jfKu2F30v~;m4^jW z?IkP`lyGG*u5o5~`4}`9#gO$Me6B)w?2~}z!v?`GoG(BcJtbTjvLID`pdzgF38*0n z83{h#2t${QF`R{{^JHK96&<*CGk~IJ{m25FBctc+)-%THW_r73@9@h%*(k7y_~w!7GOu zKs|YFFOW{qVA*Z{mfPSFwkQ7$Uz|Dn@Bd3<(6qcOhv7HF{|!69&HYl)b%fo!K;?7y zCQ$hdKNnU5yc`e`!ZP7u@X+Oa2{IoVy0swlA)$L8v^yP~<}#QW7?845_6u+d0VPpC zW(J1vFtATRMUE@FuYZHKD;$CNnk%CPlnOwpvh$bW0nSe)Y*24^{^0xoK0rI5+w}=} z6&AE2@0tnnQ_JmAYfz;dmecK)(fkXv$@|Cu5;pLvb|uh3V4y1BA*IuGMeBhQ!9ShH zL5o{%fLmaO|2xlt7ac&nt-A{}hy!YGyuJfYBgo;v2;SWe4Tn-Dqy)7OqF6d(J~+*6 zcySH1Cm1}`*m;Y;)e{s6zHho6Q$S;VpykL7J3&*=45hpcJ3#{_4E!w+1_tP~X16m7MC>tG3^d%q0A4=D z6Y$~!NC-4p$pBfHzY`=2p7v^fBhg#?1l;$104g^Bbk8VZ23-&Od3CodM{ntq?uG*K-#{uhgM9uIgCxCwM*XNhC4>x(QVkW4`M|6+yk7nTrl zP0$_^xVTFA3q^>y;Q!J)kO4h#Pv}D_f9Ho6te}J8PyBxgIyW;*0erp9|6+mW0}cT% zUabW;&5t(}Ff%ax(PCi801+>O=P@w+FP3>Rdn2g7^x=i^JkZc9Pv>#afaH@GOExkv zfUlh^^#hI6zj!fuBgnO-4j}0_FIwT!`u~e1UW9=p|Cg|aXED6y$YOXgZ7u@?cz{^e z0Bq|2(ifes4_?@BWMJrZeexn4v`N+#c3kx#76!;75>QhWw7dh>XpioW69EkvfEHzT zSMxN3wsEL5SF13T$YuTiU##%r{|2y|1pXJRytuppw>K~_bUQ1w9w=c8c)_<3 z!~vac#}@E{5zGM{)W{a_;>!jGhUWkOOW49+M9u*z5`pNr1J*8a9I~(;B6b2K208+t zE#So-kTqo@kRD zENQ!S7+>68&%ls*7&Idi@V`vrh0X>BhR(zP%S2uXL2P>AwE;BX3AO>Gz#7bz0HwOt z+ofh19l{Kt6ZXHXhs76n7KmT6o`K=D#Q*J}NPm$&hk>EjjU(W{*$W?#IN!1M9A*Xv z#^Y|FeH{NmXUUgvgKl_e2UTF5Ooq3c_k&mr{H>coO%XSa<{#3fa#_+Zd}sapzgfDI zMI|EuoF_lLn6&%f|Ce2$;{x`B%w#BufNf(_gV-Ma!hi0+|Iu*)yFq&t{+D}XWJ9%v z@Ba7ywF*p?=G=e(qap)#gU-SJUv84o4OL~h8`Q57c&+15BDfp0JFsy-$Wx$1Tq*%l zxN5C416TsI!I2rPny0rNl>Y)=EdKlde;m{^rRGK10<|}wPBWM)20Tj=z2TG*619+N${Vx#$ z-GBi)lar@YU$*Iq9;*Dx>yguUpT_3wXlR6uyfad5(X@#5#MfB(Z@ z{GI`Ff~m*V@Z#L zkHH2-9jI(m>f8%DG9Mzy2s%!6?+LhaF#q@Q)+^An0zlj1T|2?2VnPH#3Jec)PX(E6 zd7+rca!V^ncL}q@>kpO}N`;$$*q8HlLIfQ;Tfxfil`(aG?gcxow-+Q5&*B^z zDMwm&%s-ZIhZ#%E!TY-Z{r_)ysF=sHXDTRGN|>Eqf3Q4MD&73czFZ76;KcH?vjr^G z>%<5-IsDsUmJ(aTOWnPoNU}UtECi|{S^inJfX{CQnefW;6uJqZ!%4v=fHXBc=75+0 z@&?$1SdMO%-dYuLMVbF{qzrUCL9O z(H+atEu41TnGJLS=>HOb$T{f&K`$0h1t$pBv}SKMMrhRkH-6EBB+LSF2Y3g*YC{fDz@zjwaEAa)NBY1m5Waq8U zX3z@CQo;Yl6))19|Nn=U&Y+!Hkai|G_k*IkmZ$Yw2}h$H$jlNhaN+c_m4N|rm2vC; zlA0{WtQ5EtT5m^zcbJ!?8XP$8(yRa~v>lp%@Yj6;t?TTp=6InGIyusrqZ@R)2#>W} zMG1SriziN?bJ&78K!<2Cb-S^2GWWW%bjGoCI7dAmD~rS*16iDfWH2}`&1>(8yXOVYcYIUp5a7Q_Ey zju$`r{{4?^uI6EgDB=5GEYj=D6Y!!=40Iw~cQ8xqr4p8I=1wN4+X7fXnj1ha0%g)} zX9=XK??`CK{`bo;Jn))z2WTY)VzXy(w}(LUOQ!Bvj^>|iUkH2mmw*3XJ3`neL2OgQlidzHt+z|$x*I^tnO^h51bDj}KwA(ynRbF| z{mv7wxggr!>i_?b6ur%Fe2%+r07Vg~^-wDSa(1Hyazvj6wY&;gK=bIJ(TU#BEu9~- z1YS7(|Nr0ccBku_h;G+49XBukXg>9S1!IYQw=0j~CD17lD=ZHc3xif(xy;>S=`xX} zgw4r1bj9n})}bp(ML~s)093NmWg-hGn=^KY%-z!KEzs?{=JJmfj3xSpm%8~aPZjfa zgH4#u0xD?UTb?Qv0_g^ecDhUlYh?#%1vhuBLpPK$cZP0oZvM^B-v?Um*KPLF0hHcc zCAvd5bPAv(7;qa%qVsa6>jUUY70?dT7tG*E4A4TNZfA~$9iWvu43K0K@M59<|Np(t zJfK z^7-s4Gl-NOHlmCDky`Y8-$iO(zuo5WsHq?G%;BP$#UaSN*a2Kde-BA0Pfxi`$ zNFbY4K{Ft|u5X|%#eo0CJTHX5g4)5gZx}kAMdC}edR;$*g?|WvT^$K(&T&Fl_`c== zo6>pX1;g+E|C_5t82DT6GBGf`HtcnM9RSLrJTEr8g9Edn_BF`B5fAoGn8t8&))64@nZ6?|Nmct29scB)qni= zKN94%PG^z05-zY$U&=6nN`3woAJB;HB2W$iC6u$Ewn~Y7w=>T!(0+C3dWOy$FYJE( z{}1iTz0T-$ebrmc6A<>oQW&z{rPEoYlo#BpZ>W96P~z}f7Zmgsy8r+GFBS=V9op;q z3LHv`AeXcrhy$rN1S#cj0i9je?ab4#1GMR!p+o|FjBe+R7iWKhX2(ItLPO4_2zZ?U zGV_TJIPv~3772KrRoxPxCdBr?0 z)Iqn?6?1eRd+}BK|Nri49`HqT-Tk0tRp8l}mIKhan3CYmPc4^9c{_cd9B&6ngUW7b z=AI$|j+{H2U%XKg9CxQjXSdC25eBM`;|SZ~VWk;>9+r|NsAQ16AZNR$Kl5 z-yO#i30lf+*zL^GZH-)s8@GcNZ8=LsfhsoW3f>54ecbu`^(knP3$B+zxfjXv!JyL` zd^uWA9tV%Tl~^=dg6hRm1JE#K4(PUxKu|M4vD-ypmUDOoO{O62e?28QFVpt^)M|Ru8@r_2bxP;0EP)qizyJTA<-2Cr_c zfa0%IrL%NFZ|Q<8mayO#>=xjR-Fl$J6U?7u4(7kM?hc*OTRW$-bWV2>M;1$X@Qb?; znbrfP@>z^oB9O)>XricuztbQ9tfa>bq*>s<>xAao3H8}{P!A8-omJRT7R8U_R(Z*!~j!wXH2 zfzq#EH`j9fFY)Mg<;Y?QfF?>ii1RuR?EqDbt(QtFx}`vOBTfdj5Cb|tyr}>F|9|K4 zh}Qq5G2LLn&JQncf=*QQZM|KhilQ_Gu9O$9blu{|)Ct}d>oGV9XD2L&t*q5jN{r?{dP7R$;!K2XNalF`&Jfho~1yVL57p|bH z#u-$sfO>aGN=2YE9Y|^;yPZKTT~MusBpTK2EOXo$GO~Q21a1QK=oIKlNzmrXF=qkj zqzE{*HNF9jZXav)|Ns9#=myhct$rZZu~yIk9z!=nLoE+O2|H^7=&XHKRvS>#X!ZF2 z|3B!gErIS(fi5PZHt5`+%D@l@+S70{iw(4G{{tGY?Cu2_-RvsB z)@;d8!VYl+xW2gaBHz zUZT=F6)f+2B`7e1YdvVvO5lYTT%NymE)!@1k_{iPuKf*?H@i2FMk zUlxIza91)E!K$0~fVY4~ml#4+XQ;0Soj8%b=ih(O#w7lhTcC+bu-}h43NRjbQ~=eh zFF|*M^txWj&;c7_yXW8k=+*;qCDIT>P_1<2c=->s>eBT}h7njf-yX;+036CiUY>_4 zw*)J{zZ>Eq{+6R4ad2QjZHNYS%lKPPfV{Lf;Q#;s;Tg7IJ+tjVwFP*3w!|jG9xOI} zH`H2ANRncFEs^1}9(0OlElh?TlEfGx#$++P-Ue+^#5L>%r@|63uwf`c>L~GAv0*Pb zX+m~Yf=z`gnF>lDolX+bpy~QPP!~-a>olY|G z{4Fm){st$KjBv0n(6}!+!1=quDgL+v=vW(u*9MUA&qx4A;<8;(5A#DJ|F|Q#&G?!N zd_&7i(DuaU)Bg=G{pq;STYIJR=BIVNdqHmKJO^TbzxMrNZ|#-d62pI;H$kUEwSq1% z1D{$ED)9YcgN>k4DQELB=FY7k@$Oy_$>hHilpo!$=6 zLa^=~pmm4cGe8Gt^lkzbCcRCdEyJC?DWL6zdlNt)# z4w9oW~q^7+$7>W=0%%7@O-97)sfX zyMeP6cmsO)i@3^v|9khA{0ATK4Wcr#Kz?Npc=5CS-~ZlL(6Kk5or?j`(>i*=C+Y+S zyl@r-6&f<&Rji=;kp;Ax1gyN%jV1Vh8OQ&vASY!MtaoO3(KHhrXr0I5%CCaTk_zR55!g!k6AK(uuJ z>b&s+)ZS`7!UNW%9R9yd0_5y61-Q%WLAEA=ZI$Uf{#qg&E&~oZ53r0t=W%4WK+Z-3 zUGLNf%HUwDt07izL9*KT@BjbZt)P_k-{8g7lOT@?fZY)pzGE_|YzH|;0py-ik^g4@ z%QzbLg3~J`=1N(2fRa%_#w?Hv4@?JX*XW)KGOm*eQZkiEyjZslQh1lx{&!P&Z2>hH zuX%zSoEcseOa~p_2{Nqth)gGA_g)Ya9LCM|4E!yi-E7@%pc!qgfdA$h86YjTU?+f1 z!Uqj-fua}G_xW!Q^|5?(w;O0`+#&$x=Zp%FHa0YEC9x1s{5OJV?1tnj$w-JcP-5@4 zfTZ^3gUk@Mfgr`8bKg3_D}li7ED_D<-T*4my?a1MUxVD=DG8cZMY>8exI31kw;7ao z8xMnWd%%l#-~RuP=#1q64Wzz&`0fAy389b%aKjtW@EE8y*zf_$0=Jq$C(YDyH17wE z8!_;AfbLgm-VbUgg2tdgr(0|XDgVD6r2U0)8MKBi?QREcS?%rzY3n@JJzau{f#Kjk zdCQOWQ8g@=#;j0qb+ zE!wy_uv2*D1H)e&`~n`05CWY<8!FH_9ps|Uc94q@&1+Co5R5~+gCshiwq7a`49a-0 z0n~~RoC8W*Jg<2(_%?$0jB`NiZg$u*Fff3(lLdEP4tSC3!T@fUF(bFyIxjcBk!U`g z13GIU^v!YC7oY|MsBP&A9>4;1cb#%NT_0pHFfcMe%9cp*-eC3a&^KAq&4)5x$}+-> zpYG5%|4Z+H1UW#PCrj_VF7B-6Iqoa~(w)T={DM)9fuZwQMDst!sPfA0U;*gK6^*|@ z3QAZNxK@<5`W`n#1I_%H&PU)QHe~hKt&~h&L#dK!|hSme!u5TjadJ8g2 zCU@TIcKz_;A?Qwp&QC8vE5};Dl{Ph3voP?34>*Hr>~_8Lx(sxR1$Yf?^S{5~UU`X2 z@QZ0q3=CNo85tX$8L~bGzi^iXmCm62BiQZwq4O5Brg~Wq>Ue^NtU=X0Lnm{$>yu7r zmY1TS<_sh|KwJ_IatUa3B_N~o#)}HjjSna{PX>dQ9JmUAmW9-E^v2~h)MYS~dc#}T z;KN6cJ3}v7%mFpik3(AaP&Wp@NOc0a5VXii095tff}COW^4?$2`C1u_-EJnGpFr;W z(CN$qQUKn-{gM^bJ#7BP32L+N17(xo&corIp&$7Bj)4|%Sjd-3G*mElmkRN3t6*-Z zVB#p{_mFxU6vpsq%V4%nFHUyS^HpzT)t+q@b1w=o}l z$iaEA*OAHcP)$MSh29u$Ce0JQ0sp=q2Mtn|NVHxmF#_#PXL0s={k8Q{i7M!x2n8?a z@5cog7#K?AS}&CdAyEoAfCJPG63Wo4ES({t><01_!;9z63=A20 z;N0ZX0p7Y2RUrcn`z-yi7wY1m&OVH?GZ|H|^XOp1L zUoSwXI)R4Jz>=~rL7N0YJ0_h?7%ymE?_}$&V>#xW!Tb_*zGi0~OE@HxwjStYi!ZSU zRZYbv0WV&*gI1;;bIxD_U*if{bK=Ir_@mQ}B>;3B2KY=)kfx|eP*L^*l9YRcGqR*# z=Q6vog#Rx#(fkqcVnI8|+dRFlZ@R-+0=n5=Yyj;<2aR@?aDq<9Vk${`t@_^#qP^So zO?R+Kw;v1RA;w>tr!)_Cigo&dT^sRQ6Q&3fLK>hE)x#N`w?G3lUZCrbrC;|}13QpX)2k?a6kSIz*d34((`$;4Nr zJ5&IaD8LsqgO4w0K5hdo13{^r0d$;|DyTu`F5%JqgOk4{Dprh0D$i-3yxfe90ajBFGJU#hxJre`NF&1%#ECJ9F-h7Y{Kkg2yfEYU6 zWnQ*`CQht*OWBXROMr$)|NFjiehF%*HCS_%S~S4;FnUb2H0=(@{vm%g$5P|VbM474nv5wsj0ltA_B zL5uS^UnhVPs?F<2@cC1q>u(rJL5JUl1!pn-H+ms64P0)&4(|5l=sW=q-p-jzKnEBG z{5O2@2Xxh#6et=(IXY*6guyDp0{$Dl0A-ZsBRsDqyL~w_8a9Hj_c59J@Ba?aDA>zs zkPSW1G5Zcs6W>*Y@v~;>8%Bd}cNxtOo$fNN2l!i)L8Gzm;PY@_hJ&{4Tl4a_nnDD@ z1}TFDx%gW_4SCSA@tvSsC4ApFN4x}`=L8z6YieO;V6bfJU}j*b@oGI#BFT856D$_+ ze^Uc9=m;%PYbG)d?9}6pAk_^F&~3JmEC@P(gM9=0OHknn-W&?j2J-d3^_A4Ip=d&fh-nE&-avdN~VJBwO>A)*N@208K}}&ILs=cxzH4*pP`JLyoZs zaCJ`v^BX~Yr%o{E7>fWyH&_|yR47hp3V3ZB0NMw&0i-aC>A%5?{3+nb>JH^N?k)i; zoR5Ru0xBRu3G1~acpBriY`5>5PJe~w6aQZefd^J!b2rz%VR(7<59k^OlpF~juW|*g zv*quOkbw^TcixD4{T9?_I}B;A#WwF~U}Rtb-Al>8?EpwHJS;dM!0@)=0qC-}=2{L0 z{uWT@4dgag@Dxb56Hm8A>;ICxEQ2gY$iQ>IMfU1{ncF@X(P>!^2CyumEHwFIft~>!RT#FbO{)4vrain!R zGl6Uhebf25+h)S+KGb`ogPY$NfDY7fy_2D^$(fw!SN{9|zf_<%_Dt{#&>$)}T%e^HxI7DQuH|4V zwd!`|`ET&zP7wnG=q#N>h6nz1UI#DLxAqk&;(u|tk%8ej186;DmdtC}p#P-;FBFd7t6tN_Ua4_86e_CdJ(7w=!PD&1WJaXJjWftLkyh((6txPt1G}|WiWgy>u`kO zf!5n4-2Y2Cf?pf}^|Eh(-3vZdI}5aKvb&TAlH?;hLEDrrm3V^It9kQuGPRy874H;2 z?gT1j7`mB{L(YKg3}$&P-R;KFS;W%m#L?{rN-C_K0W7bXJA+v|!#H{!8DR_Y5NkEU zz;i;S9IdxY{G01|7)m^?<+`0YN~Js5S`U3a$wbsKppq<(OemuRYKfvWM^dxtXO&r~&prsvZpfxBZ{9*r#S%P1bgBDmH z;d%WU)cXK01%kNl|3e53ua7{76~)4MkofGp9%gtc7<70*7ms?z(aql!Xyxr}3!^84$tq}Mi`8%LNgk#Lj z$61_TKkIdU()sJf$$$U<8{P(&Jld`gEDzUmb-Bns>0ps_e*NkgiyQ;SRB7`Y8N=J4 zO5K&CyOyWZ^~P~f+m@mAf2qKq?%Esh1Dbj(|AWV@dRf4=R_8^-OW!{>BRMjv)AbJI z4KLh9K=Gq60B^=GQ512}{UMKKxJI=qa!C;d!LjeD_ z!!Tw>;U;H>EY`3WU8SIcT;z3i=Z%9e1o*cdfT_TtuL7zs2&_-ywKGVc1WXf%Lxdp> zP(ygZhR8G@V|jVv-~a!|*gz!~s1yjj^QTjw^SUAAbaO}awi~F>gAD$KheOMK(Cm>b z4|L^9>w(U8&{E{m{QuiQ>ytrc+&u}%*(9CEN`kuOo2xk(N_exFKv$Y(Xn_Zkp-Q)d zRz8OXzc?rg5(Rf7Ka}!?fiD1vJns4iGzbFLEez6|ss-+XvqL37=deOn$al7bmPmuT zaqkpgH&u9gGTSZo80`o>;4?h4uf&T!lnbdDE8=e^D!+D<&J2WpkNxmr(_ zxLa59RPuK_vUCQrbTW0G0!>aBcM5l2?iPA|wNA6!i>38siBjheZAYHg19kk}jGcm= zPAr|Lnk&H#;4qfXYu!OCuUA1bY&TP<8%wtn3#gNKqm!xI^$JMwh2|p)klfz+G%Oh8 zz*vFqQjX3Gt+z{xS}&Ct28F!<&EQ9N9*XRC;ITYbD&5W0S6AL| z1X}U=|FwPVrBZ%q#}i`dYbDELmHgdIppu#ylF454gB&5;>C6Hx=sSyfjzbPV1g*3E z0WDU;LFFoB(YrwF?NTno1CZqmuQP+gK+|UbBRdaASQqnDiZoj@l=uX9GlQ1k^@C2v zJsc6$?aX6&tilX*q#<|fr4rswC!TI+7LbRzUQ4x}EM@HuW_c|b81@1*ya~Fk03;U| z(Rra${xt{0B9LQ{kFf#uz+*XDZ+F)U@J~6^`VD+26L@rc1!HMuw;NCMkN>5j-D04c z3RX=qbqaLKzxD#%hD&pv(YT z{|zao4Zj6<*K%|ow)|PF(ao}{gN3`BWz)eI933v)jQrbOHZgU$a5M35bJ@h~*5Sg< z+E!O`u&(;2#^6Eu@Qqce6&r|XJN*9pg6K?@Zb zx?R`sZxi9*-{!)>*y-AH@Bs(sA+VSW2NRet0OvDzy7n|5WI6ai0wlDgGo*EkL#OMK z=ARBlJ3Bvge)@hv*>#2DEzU#Cp{Gj*?q;*g49O2sq3M$>9D-IqOWR6|Yc|-Bm_X~5zso;?vBmMGre z?-nt}scwIQMCH#RHp^v)697!BGgh{cx=dbfz}yB^bt z&B`aed&HFlCuC!{@WC{^$-}@%>U~=mN!0oEMl~-}KI5?sKkO*6j+j z_NL;E?-x5yDaI~P{Ka{pJ9GuJ>xbSgY>FIPJVA;;;jH+9+jRl6>kh?_y?fY`ROP-M zJkAP=RK**dCw77w)y%GEdZ#csY<4)%`QhLpPR3u~FLZ{kQ2YUk@6I30p%1=a=$#`R z7!{|c46>IG6sfmBvEA*uf;n`{cTfp(nmy=-ne8E1-W( z@dL!xU!VjA)_143MIczjh3Vh{PG}n<>#2T z-T>SB?Ce8DOk3adwg_BfH$RNa)&pQ$+j*~k!Dj0fu&r-JqFga;eF3(W_2uK0n6~ce zZ4vmf`28PTwq5|+dXp(X9nDte&?miH#JYU6dSMoJelWaY?7D*4^+fL;b|=eU{|_E# z0mY`_2g4i8u2*`eFg1QFY(IF2oAFoY1;ZbPADCSq^v+>cN}QY9dEww;0mjRQHw=G( zlF}A79*d`c4;~W-Wktgqh8LJ!cl7RIcX_pM35uCVdZ#e0Jb%v{#mo!6bC?sncYi}M z^G@#;wt_wT_o0~iqIVDbvAWqBC}wWyox=1>ec>w!$d_Y0ih zz}o`yy^`ja&Kn1hvoU`Eet{Dld>4ABFirojxlDbC{PaPg&jh?L?aDs#IMDG?h%LSAFfXo(UyazM;N$(!^!;#UcXl5Viox(Kf3{O9r*>`&9FxP&0 z{~yil9lcxFF2=UBqM3cAcMrRN-HLoPvp@7sVS4aP=O3EcXL{!_i#RhbMl<_G?-sU& zf*gKmW*_O@!`@UE{2k5g2fb66Og~xe1)JR&x&jd_dwS3(9y^Tdqw_&20ISEWM;h3{LsGBS-|o_G4p?Ck>jp!96)Qpe`xx? zG5mJ$g)F19h;{9oA}i3jyQLp`UAQFzUi23+F!TmXbl!N;`s4q9&@n(qczWIJEq@dX zc87lGyutXX`Iy6tOwc;g7ltRhT|a1k?+xLWVEhms5cDDlq#31E84S7@?oGyVSI|kS z44_3;t}8&U`_p;-xa$l?W!LoMu5&t9pM8Jab-}+oyJj4BT~ZceB+wf>13WI!c_Z+J zIB0oF=!#y~3CCGfKm$52R(}U=*R0tUjPW=%bkLd9J zS6y?(nPCEGZV}{khUPai-7YE`oiQpR-7zXEtp_?wR3y4fR1`{B8!QY<1b6%b?GXUU zmZ(THACWoST%)36QTn3w+m3(#|Nk!m9dZORs5?xd^-`%YX!PFAiD4Imn-jxv$k=_i zpGxaV(8Roo0!YwBg=2*@1H*9_70^{d4BdVjojfZ4FLfSjy#(5S^uJ_MXP8XuZT^l! zpy<7M@F$C7rx!=_Z~c1a=EwZK-anduvh%lt78-O$$+Uhu?xX{N9X!a;8I{r*<?3@i*h49pC?3``7s42%r? z3`iQ#m*mz3>*p!44exX z7(mY9XkcLAaA08Ie83>U&c?vN5y8N~A;G}FIe|f#-I{@cqk@5f!-9c<^8$k)yC4Gt zM+O4}hXw-!=LQA_4h{wejt&L}4i5$f&JPR%>?{ln93c!093l*&9FG}<*|ixMI7%28 zI7}EAI8QJLvhy-9aHKFWaHudaaIRor-~g#_VPN2JVPN2V!63j6GB1XKfkTFYfpZ3f z2zxLC14j)51BVR*1Lq9}A$D;F296vC1`Ztt2F@J}3>-WR3>-ZS3>-cT44gk01lXAw z7&w9$7&wF&L^&2S2(v3QFmMzxFmM<#FmN7W5M<|OVBkn%VBk<;P7H#;QYcMz|P9Rz!Ap4z#+x}8bA|fH)deqC}UvYFk@igJi{Q! z&da&3>RPJ+gN zB?AM8B?ANJC20I-GB9vxGB9v%Vqo9^xwn&nfy0x5f%6kI{zDlUI7Ar)IG7kA@n6co zz+uY3z>-)44k_d7&t)bsh5F)!7&wnX z;~x~J$_xyg%NQ6yb447WOGTU+7&xCn<3E~#fkT>sfpZ!({;L@nIII~MIIltDKbwJp zLz{tta~lH#2Pi#tGca&?Gca&|gT{Y20|SRRQv8=QFmRYNFmRrO#(z2k1BW^T1Lryh z1`beqYiD5KaA#oPdT;XJFv4XJFvG2aW%H1_lm&1_sW33=ABg z^wiJ5z~Rrp!1)gv|G4u1L1_HL^8Z4#{QnRd|FHZ&5gPxn{C^P||FHbO5iS3JgvLLv z{C^S}|FHbO5-tC~gvLKC|IdWRKP>;>gvLKC|L;W0|39Jek1PKlg~mTD|1U+$|4*Uu z56k~kq45vP|5u^$56k~s(enRSX#C^K|7W4`56k~+85mIV|66GM!}9-JX#B(S|6OSO z!}9-LwEX`U8vnTR|6yqS!}9-PwEX`V8vn5TKN%YTu>5}+8vn5TzZot6e}=|CuKa%* z8vn5TzZxz7zlO#?EdS4j#y>3o--gCNEdTFD%m2Tj@sBJ2ABV<2EdMV@%m2@z@ej-Y z)1mPX%m3G*@ej-Y+tKp>cWC_M%Kzt~@ej-Y>(TQ6duaT_^8b8j{KNA9eQ5l{^8bFc z{QsXpfR&L!oRyJLm{pKLnw3#Nkd>7|l9iD~l+}?zmX*;#fR&j+f|Zd;gjJD2hLur4 zh?SE;ij|Q=jJ1)$ft7(lfR%|soVAfrm{k&_UqXQEG8< zW`3SRZfZ$JehNcoURh#JW{N_2W?o8uxk7PfRVrLL)Qq&8#Pni?;?xobs6cX2vO;cV zac*Ksat7Rhq@4WZY=x4_f>gLraY=qrYKj6xCMPv7y(FU;PvdFAgb5}2`3kv-d6fzf z)e8AV3MrYzC5d^-sS3rFxk>ps#cL9Lzc_k;aB(*3pM;~GasvOKTR8dqN z3Lul=*1&Y&5Cyq7EwM-;DKR-4t|uw81nM${qSS)a#1aNX#H1vaBtoMFAqa6QR2bAy z?cJjeYT<^0$IffITU0<@gw_KkcHKQ-W_O@W>!r>Rm534@xCm&+j9lmGZqC+|{H;n7 z3=G|%)0#S6R4huwd$*{8%meolnvc|gyLi224Bas*5#7wqKe+i@?u#=pbcU$pbgzL} zP@)pi>7!E69ikG^9V>9$MI{DgK)0VkcaDlhXN*clcace_k4j2sj7mcD583i1|5aMQ zs5&uB$We1*xT)#HkgMgyuv5#4p-j(-p-In)p-<0=VV0f~!!kW5hD~}-47&PG4Eg#_ z47K`B49g6h7^DrI7@7^8803tc7#xkA7_3a47-pF{F?=y|V&J!MVwhs##L#Z-#IV)c ziJ{ciiNVs=iJ{TfiQ#~z6T<{mCx-4Cm5A-MKmM{ipzHeh8f#QizP1bmxul&pTaI6gqEcUg!)_ zQMve{J48i=@xs9uES<*>K4;ZDZuz@J2^y2f9V7~roxs6=oEbE^0zM}H@v*C+T{B#&`}!CyCZ?CHAccO02uR1VG28f=+qrbW!2x zF6RNM)jZZ&qQcT$CDLi5@?we?0|VF`h?_c{L^|CJK=~1rhVxmv-A!8GmM}LTZ~*zK z*^;}&x*MXh^>(M5PANxsj7mc5?GoYUJu0BqsZ56ZE> z|NsC0`f2lvhSvu`PJnqLMUHE*0rCQF*angMr~?8fbt4oX|i$XYd%n z%hRA;`H-a8?IiH>4QLYjAAh+jC_iO^l57nkKZ(0{)~FO*e#968$xyeuT~ty)S<{B2 z(_NrM7#gg{9l=TZr4DG>c!){_|Mn<>#>Wf~{{K${`3vgOoI zQ)cksM+zuQz{~+uboLDc_DUflTO(x8QG;L^9U!Tepi!#Bm1D zmQ9ecR-iP}9cf|ty7NXEQ|D{Y{SjcdfQmZC7?lFe8=$17dAHNa0+hHxaSAHZx`PEk z<{xJVt@HYJjHAR6-){jv_C`Kx=}q zD{DkjHXk&Og|4guTyjK#l!br_I+1QCi8(*IfoldO^UfNO3u07Kz@i;KDkWe`AiNlrQc${s8D7@m zqEg=NEz-%O@}dP|_{+jSAZLM04ng<;6rNxcK>mZ683XoXX}1Shx0@>i11L*(x{17e z3`z|?DiPg*0x#P^DG5}fh6}vB1Y*0WM05uTyyOREKPWpGi9H>3>kX_BnfUYn|Lzb( zwzq;5BG5bvDnxu#Qb75%yGAADV2VnL#KD&w&{DebA;W(LhJ&vqK!qQysA_x;5@bAm z@Hr@zL@@qlJlq*6a-0#gTCp?E!0;O=aJqweKuaV*cb$SF1e^w4R6s$?0IRVjl%Z)6 zQX+T4)1s3Bv^rqrZ@CN_VFzVOZ_qjk>Eq0xk=4$RJ3v(PLw3z`mvdB7Ub=ky|G)Vk zQ@JiIzk~AA42V{E>4{o6F_qm0wR-$OMasn-m6Ya(jGbPf$}pw*0W)abYe@4C#v*6X zqE{o((bU4Am}6>w#{@2=7++re`u{&P3xbR|?jZ3P(Mq`tDM0u^*U20QMf-6EUJ!dX zC}@s5yL^yxVmR*X16uHT+}Y!U5{MT7DhH1cUJLqa&=}KbQYVueE;SD|IUx_Ac5B*lRy&zNTmvDD9D%H=HDKok^%~fgD(Xd zKY|XFvpiKI40XV9Cy8&M(#7)|xTyrGUSd=t48L^-TO4NwT?-HLUU!5=>+KRh%h#ZC z+d4)iql~3HMkNEZeP0N)ogP#K)TrcW-UTN_8x_X;pe*phEs}u&RQ`g3R5L~;qq9aO zr<+kT(&A~#@hT`zVSHd*x}Bq2v9 zLn>wsRGb)II)I|xMDKot>Pq5g4BW5KcMu; zf#z=176vFi)~G}@zhegFHINgTyZsZIAF%UppTfC8%84PZ(-fTXY(HWv5&{?Cx1Ioa{plK5y z6&6_Ljh19!=mfXWkZYn4P!N6o42?SnNDwgyGC(srs0-#F19C`r6sS{X(;c4B8KdIB zc-rz7DAf3yK`VYi^1DIp00cxRwN_fWRAJY6S4IlsiKkf)F6FSd# zo`%Fw^I@OP%9PGZm(KHz$H9>mqax6Gy7_QQXN`(TXN(F@cVNVE7SMhYP^Xup^HlR8 zP`t6c*d>k>L6E-oaYu<#;CBoh({PL4l4pHM_=l)Cu0-Q(YO zx;sY2hwQWlB(P>5g}3yNjfw#%nm|Qtw~vZ};`MHsouI|0+fKmpo+8M0q=5+uaNYx#&aY2ki53q?w78&0 ziwiVbJkX-W08g|m1qBe2&j~~e|F*-R0N~$tQu7=*xFN$+#~mbggMwS_JtUtTd@TS9 z@kpCaM~CB#qOj5oHPE#{RwE@#U%F0#`BuTEvszGgrUv!nt{bHcC6I4LV&^SU^2}R$c~%Zat8DLANgFs1$Vj33TVN zfQSD;jmC0=P9K$w&JvZB?qZXd8K6}XknzK`<{tw5Eucg9)0%$>^0(|^fK>#|$Js6a z73+dZns7*P!)p;(K0;Ig&4<`6uN7V9-*(>cKmWFykce%5#|}!epemfb`C)x;BsZv@ z?sicD4T9J(-eNpqd8k~^yZQHj{+1U%|AUJ?P^IAw3YWCb8jlRe=HLH2JrX*7RCG$8 zzB~eIz(a>^KrIhe>NXyviw(c zr5jY!fht&N*tGsHk?VF*(E+uiL9GGMxMPk=3KReK8mF}8hs>{gp$$(^5;*Pz@hNy< z@#RHOb3Q~R1Jte93rbp$B%i~-&EKMf+xb5zqGMEYji%Np#aZtap zJ4ysJ23Khg9U6le1R5H1Gyp|0sAb$;0jiM_x;;cdBM(nNMGB}DUIXcg9el;n_z2X= zI{03K@p|K95EE2>9DK~dc>mxd3C8P|=aDN1PE{v{m&;zEH_<_-vxTTc9A}aQU9NGU zBol0Vgh1=!XHb&za_4eUsP zHs-sifDSQac**tp|9{ZH#Y<;UvjK@E%UK=3#NgD3;T%R`{y zI8furkpsNM1vCl>+OYTX5Xd5C(0DjxP+Smn!{9e)(a;^o(ix*-@$&6+*gz|^z1aLl zrn5vv0JH)L)X?d!QPF7q)|sOs(Ve5B0&4N_x7-CqLL6v~5cm$lW@|3~R?vN8pw=&_ z2t*%Bi4fuZ$4X>PZ-g5~)# zukK= zVebwFt#aZ8t7twV0G?IpE@f%`R?5{}Wx~$i2Hp&6CClG(0JNo&Nfs1VQ6`4}J8yz| zoTo1*88rW9?~F1jQ-stS{M(`oI$~^iy1h)?4`vx~G{59%{>k3yWm5k1xD&Wr&|8#X zc(SuZg`?9%#qgWu&tg}I&R%GJ6Jx^D{F4#1>7~t;k%7VXKd6Lm0gWesk8jjG(RtAD zK+A3ZsRuk154u_YD`su}$y|24yGDhhlfS!^#qf4_EraFfZm)#mpyr><<-SnkA@foE z+gPlde=>HssIY@}&9s5GZa}R#3~G>p1}Y#{G}NfDgDw;EP(0{t`MH=4WXr(`-6krX zeBHhry(ZS0u`HdX42(CMs}fi`eK|^NS}%3Sij*WBhb|P`1?p)XcLlYm7>>Jw#sC?P zyF!+Uxq?P97)V|wR+Z9O<a=gGSb0a)JaQ6(c;q=yc|&XmsbO7<87X zD0G*on6$p_j8T#4tWi-ZQEdHIBHInhD}3<|8_XLAeR*LOmB1iS7^;3DBVK|JF+-Acf!{>vq-w4ff6kwdq|{Bv^KW#vD4| z|JeaD<@3_+8WoAodnLl%#ygfsGca_Tg9LhuS(=Zt{OLS+@FmmdrQO~x-5}FzR3tQS zb{Bgv9_;jY=?(^sd5CD<)4av_ue02P@mK4~&hV5H#cppI(0DULcePG;jEczRN1#p+ zs8|P;=~F$x19TFG2f9I>3phO0YR1+;pzw~PVof$kU;j^-mghe7j0 z9y;KCqAn^d-QJL;n$QF13=h1%4jy!d3U@opbO)=vz6u>kfu_%HY~f>gpxKJIgavHA zmr3i%(y!p=_Um_@-yr2356J!9MKaxa;6}_#P$}l8(0Z~|7QU!d2HY(=4ml>`^7GE0 zoplPJ`OnVFV7*QPnuje<^EZQLu|bP7&ud<{ykExDdB597MWNe~rZQ02l2% zDld}V7#K8vm)dv7X>^AvF#hh0)3Cf;qR{Q80=is*@dwmfoo*_Imq52SK~B?}0Cmsn z>rnY_7Zru>Je}?ea4>i3sA%2?rO6j8ppo!6jczxE*L%97c)*p4j*8}KP<8s^xhv=j z8Sr@`ukXTAD5OW{Cv*8R$jKme-GSgmrhy9J#M^qH(@lrJ1$2Z}=h2s-<-sTw5tNgc znwp}Jl9^nRnV*+fRLM|WQk0sQtB{(P!oZN0nUkuJT2z!@1Q!N#zzYT-;+c8HrD;Is68W$B4(C}2Zqe^FqiUCL!s7>Oc zqS0NVVgnkU>kiZb6N7?;RXh|}$&BBFQ$8oZGD zy4y!Zrdy;DJgjoCD{8;gnnf9q9HEy1GVP%6g1jYkFS znuD(dKt1gny(|K+cYb40QQ&U{o!sB;qY`r5Q6j+2iJ{v?#pXBzs5jO5;ouAA&O-+u zF>4;xyw>>&e$2qQ|zmmqhitRqGHi}fYrK21+<Uatp*8?;^r&14^ZCD5#*!rvL9!c(GSZK6`lhX_DWkb%4lbFJd7%dZ(h z>6J%C^BggOEuaXpT>>S1`L`Xq{Cb5zCyPp{&Ntj4dK{G6jyp-@xH&Pr+zgsef53n6 zm4M|jP;Jr4qEf7g>P~!4?`BcC{7Cbdm*TC?A7CGVrk6}KPguIBaCEY$@VDiG7C-o? zaA+Rv2JJ22QL#M8-|h(#1SLry6%{W~gB!GHs2^0ag9gZXR5VX8f(9ITELl{FWxGNA zP8Ss(CwKmBTpj%Xc~nZjbc0&rzcf!Z*QoF?l_`RyoI3bHDxg#ce{+rs4>MRn`TcGe z70?MxqF{v`{2)=rGIsuLUX1P?{Gdd_-@N(n|No#Q!QTX$qIOHviUMXrK#enDkXW_m`6f}y3QsjiWMfr)}|Vo|n&V@ghH zkpkvgI%WnI237_(26hGx22KVp25tsk27U%X24Mzq25AO)24x0q24eY-ZZsMr*1g4<)@(tC>vXs7Rg z7Zn@+?J|D++e2a!oIq;QIzwU-itZeDQLz9w?xv`Kj`8i5>Won_fweb6R4me(YeEtj zO4&iV%A)iwsDQHcQ86iF>GV-C=`K;R05>ICzm*1cx2S;jE`cV7|Nn13@6h?P+h8kW z=V{QH1`G_Ha@}jd^4-1+y@4#9p$wgoEZuv+mNvUGus{|^86Idn0`e`mY@CqRToaSP zP|60nSETHdWsHhRF{o#60xsjghmt`Z3ay{{xBHYNFkaF;RiO+HllQHc>J+-CsDO(4 z)=MRPph?bz&X<}OJJ0!*u5?YN7I69WU-IFJDj{M%hh5*QDrb^4Szxi$ae zD|?9&w6>r^xf>Fy{M%W=(pnFc$n$Uiz`s4D#G%)V5u^`1#@D??WeWoXLs}41X|T5V&DU&1wf7jt%5M=ym#D1 z1$2!y12iCyyQqL$b(d3Abh<+sx^q-aU=Hn$QPJrPQIR?Bq5|GpMe;P2fHItuZT04RzX7&xzY z$EX-U>qpI-mmhVkLD>*E#Au_)q1JZrm^%* zZ`glu3hKCc`Ee`AfEX2?5)nu;znBAVZ}GIcsA!aa0*!uv=8`o*=Tw14LVQ$sycJ_q zG#GtUG(a(z019T$wAPcLC`c$(u`W@u;BVmvRSl4+0OyA};QYY9oyCuTyNR=PiHZq- z8#Ab!j8V}5HLw*yBjGCiE$=}kVTg)B>m~34HPFne+91$lhHg1 z_HgIRUKZ`kkE~r(EQ;kp%~byFJ}wEGr&=%734oNlGG6Ls(FREuJ%wrj>(_zBPDv2R z0ia;)?g8f&#lxL1z%8s06_swu4wlK#Jk~7%T6SX6;WC-AdkR=3C{VklKz$U=n+Ja~ zrFHsDW_qdf@BjbC8WkN@R_J+SW%FOo0o@$;5fp>}|AV^YT0SZUpv?Na<9z4+#^<1! zf6y@C3ka!4P5|8{;2{K=%kMfacGhfV=)8CNS!;=kMrVl%PYEAd9OtO;w7xB|?=Df{0i_l{ z#S%#Tf~;?S%io#{im4D4&@y3AVbdL>Vsh{i6SN#*6zr6Lxf67SAT(>dJ^{-lFK>e? z;}8{rI#48wK>W|YO(p;|D8PB2f4fWo#PbIq3vk|lsr2{%e~6mq^9c}%mwX^Gfuzxet4Kuatk`HO!W8{$)*p)?zIVFR^*?&Z}79XBsc*Y?@QxwmFx9lP$1=M!c3Pe>8i zF8fJgLzYM3&d>K8_qEhsxh3`b$=%$*tyjJrZ@t_cHX}#)z>4gYs-H=J-<(YC@{eH@ zxtYV3oNUYg>nkru?+JxG>o|c-pC^t9SBnbM7hQb9Y~y}~#rtn7@1^XmTuXng*lLE0dlb}(shbg;&6y2*1))v}2PZFSSOO>n$Z##VTn zagV~K8Cn8Y-*>idER^56jcw_Z{qv2l?0B*0BzuL)PX_+J6`a!~X7D}S&6`!PYn#h4 zJtt)%V@&e1FM-+FNr^c!Hw;o+{TPxyy`9RIQ@xZ?`rsFirtl;DUyt3~kQ(rEyU?p0 z`?_m7cK*39dpF5b_m=4An#(<@K39H6ByRFO7r51`gkjI(M+UpEI4-^Kb$#j$+uS1; zm;C;6?Q+)3Oy@s0^Gw`2($`+tk#MV6m&N6&EVFUE57(-bHN1Ci3RweIIWnmW2ypLf zQ{XwNx-}zwb8Ef==asab^PeQ1!?uBh5=mS(X##X{W4k6Wx$rr2fW@~()= zs^UJ+_hjyW&dKWQ7`QghW3P3Y%>UuiVvhEVPmFT^4zXp%h9`YLou1lIXqF@SoGm-A zO!~^d2iliAqpEHRobkGwo_~Mm&!6x2^*Qg`E`GIdL&A&2*RIt~zPRwnp&J%KpYHpA zOy7MmJ$%oyyKGzSz0Edx+|uT~;Umqp{+k!GSwaY8yklw~KyYJE@-hEe}ZhwELM)Ce_?kkrrw>dq!^6|&!yBT@Sx8%=??Q4uy z+xhKb`G)**_w5qTqBuGVviSd>vSv$*;bs*4KQFaEb6wJp%m1?zUC-x;RXpNa@a_`t z^^j&3zeAguEfdw!mwy*axZvxa>3O?6&(16B;<`Ig*KVe9-*@<6eZxF>-JX?4=k2~% ze}0qu%l}&qWIpZP+jVHyDTB$IgO@GdqQYu+Vb^4~>t{8??}hA7zp1QOm9}|@SK<*S z>5SMZ+WA`M`?$9(?Bh8seV;X|_dSy?s5$ItC@tBPWM*_YSXZ0nXikdjm-5=S*vOeQDi|9yMMEA#lG z&Ms1Enfh3Cevg9Nrsav{EB7sX_~PU93!h)8G~YX%y6NbxRqJA7U(a`Q(KwTxpZT|- zY+bgY<@+ct1szUy?pzBQq0eS+_cyV}9xDtfcx#ZF{pI^-t=-!W87?ZFDAQ@OfPKR6 zJ@dtP^|tU;-dm|^@qUxd|H{wB`#fG`)k+_Aw9&d3!RlZ6!KE(gWxKBbp<^;3w;8)c zr#S59>ur9ayzJ0Ti~YPu7g+dw*{#^Wd>YreX}!Xn3}<3I46nO(C;iGh75uO~BzE^M z(VPW~ui5u@Oy`?6F<{2^dx9&^9KZDI;hV{)e|?R)o>V0JtTOxF))0sJE&h=aLVRM9 z%A)+Y3M^D+J1W~Q&;FbGEb3W}D(C6&6pIUfi`PwLd^EpHLh;OU1@w*`;Km9 zSlZGey+^9cu`qgfRK|=K<<2*6=0wT)>x#zLneoigl~%ti!(b=GFk@%1Ve^6sN$a{V z25+4tcJ#~L@GtL=Oj&;D{ncqVzrEbUzHUXY%=YYihI6#uYqh?u%s#coqu_GBbnFj3 zEw_gc&F-ZwU_V-)9P%PWDfP4O)6bijmK<6soj$R}KyAT%%^mBGKKVKS-e0RTpRZN_ zeQ|zI_R5C8QJZGkan9dVZ_%=PgNlsKM^ScDBR4I%;&MawEe{JkzFx=SY>AR91E!<_M(QZe0&;C zGyKz;SBBIb_*EI&csj{P{-{M`+!y5;bC>gNzB5g9l{7=h((y6e&LjzU_38%go@O%f#cufvHy5zI`CJ#b_E4&O-b9Za{RP3LFU*9j zRKB-(jZK=ne{xs={OVqWx_CDBi`qRSR3$K&z{XL-k{@KmF5BG@t zxv-qqzPU@SZqr2johla!eu$pVw03*uR8{^rdTVy-oi9;!N6k5d-<4T-eBZc^bH|7I zLJN)0*mo8ERhbOR|K?eT81t^QFh}llW4g0~ll}Ff(`=h+dRbb<{8@Jd3iI__U*x~m zI-U37`%s>gpHiH`lW%Zv>CWS_b&ugLSga=Fe)5T|T=^n-P1yvwHQf5rvlHJ+9lF0- z;_KE-$rGPUh5pa@F1$=_qu@lJVgZpT8&PG0e9H({I@~>7@0} zAKX?p?_BJ;TiWb`tPa?u1~A!1h{u`b*Um9FJABKOaixSw%l>e~%~z)yyvn|8beB=k zc*4_cmF4{_RsR{jS3eo8tLEdIq+G4OKuKxlGX>GlDvBCgDzxP9?b3Ej_@i0KWvB5) zrcn2A*=C(tC%)>fU1Y9*pm$cm_vaCX>mucfXByurl2M&puI(RKR`gN4#C7)7(uzBs zb^hDD>%};DYZa5u*DNV%sGKb4RB>tnOV!^~$Er8z?a66(sms0h%Od~fgkO0%ZCkUW z-;`%D1sP_TT71srs9&FCFPfX2wpu$e@ZigYE7zB$KHi&>vWr#6di_bh=YN`0#&6R0D4(TwXZX&Tb;ND`2R8R_eh#h&RhnE}jLte1NANpn zJ@a&u?df(7$oLqN&SV^Fx2H6m^V;^Xo&!IEcdxPvdL&X4aJ6n<;0wz~QTKxtqTAl4 zMQ&_g5@9m&bu9C5&6p_H{J32GwebzorVqClet+=p{KiK&mli*c*=+MH`{uvrM(I1A zvhr3vvG7uR&#&<0UD&)uZxX*GynXUW|Hb8ww=cWQR=?gGllkhy4&lGYFJ1gIFK7C{ zm29E^bp)h-Nmt$Y?Q~?`&(d`%g1)N_k1n9*FAsp{Y#2p?>_Z5zjK2p`}+H|mDjf2cz>mF zlkQcPB}o^I&n>u^Rq*U`tdz>+WPa=P+&k#PUD66ZD+4CrN6& zoIJ;F*|gOmDbqi_Qkr_S;lY$2$M?)XzqW4PG+~Q53oC!kRmtBvLzuOErq^!6*|irx z&oVIW>}8Ml?umQI+n3pWzW>eKhOXP+ow}PmSvt2WAM5Bynbo|XFQVz$2Dyfdx9&8C zoSEE`yezQQN$}`aJP( zra$@++1ft+sqMw~w$v>TtnNnn_n)`dFfMNsc=GCTc|;KJjkgXN`vZS0{Gt8f$o%OZ zS_Vo{{^9c;earW(pUm;~cqgrx%a5VwD}9_wbUiu|L&?$aAca) z|3%>Y3y&4H5hAlA>{lpnn;>g=`TN4otn+0e{3}kadB|SBuO;Cy+ogg9aofdZo<;6h z`NihGs88$jLl+-3)MfJNpRUgKC_lW2pZE0fjE%*b$5|467VNnBbw<9+g#VZS)CHuy zlQzE<=BvJwPs4$A+p+f>mMrezk&)VPyRrUyy5+=*OWI%L^CmNYSF=u=Fsr%4UVq}- zh{>8E2`*a<*?;idU*Rja>-@)MZ|+a}*SSN_EnR$e2vdRjo82BC3h(LroHS_oc{}vE zYx0~0_Srv=H(wUdFgsYp-&J|qJod@DfQK;-|3my#XT11U+|j*G?7g|z4~Hg}x$1U% zRODYOI#z_vTz~yR_o)pr#@5>+-^N{h8oHq_!2PP^oBuhA)=8Xh?YEx4G&<4L*H>_5 z-dl~0KLaPkhdpVsGK{cl=ImeoEYDb;<6s+a?lP;bOCCDxJ=pe#RbSIn+{^Fl`p;!b zM$-i6bye)so*{d4x`Ow~FBN+0JPsUS{CjC>nq!ts+_dkNmRkPPr_GQ3^ilaKt7Nus zLf!SReHW9SzutB)KB$lLkon84RX5!jGWIC$x$w&Hen)>;vO(g{Yf3EhvS#gFwwL|J zLB{=Nd0W;7b8?8z@+*@4uX%2%U|aR}l849n&)yW6v|`^HEjK|)3+1w<4W((vZU`_| zCHz}=zG(Kz;!{c=mxQ}dlX$<Kb zw>GK;@4q(d^~+;FH}@=bMf=-Cru0Zr>8e_XNcOLdoSh* z6~^|Ii#;?sr)RcuwP%;0>oa?1g~sOHWfLDf7XB6!{WtQZ=M1~hkBV$fIWCEIS5}?t zK6ZYkd7Xu0{k2%N!+D!K%WAH@J9Q-gnrtN3#)S``$ccPztX$!JJ@d5iCcg63F$)jv zv^-YF*zj-VoToEIRk+O-nB@h^^eq=lYdchU%TDKBzK-Y4%TqoyvT#m)wqs+pC+}i8 zy^Ycyc9)!WBlCVA{&xH2vWe+|@+&u-sXE6~G9__m+DA6ld!YPZ&TcU69bcl(OwPbv z?72rI3$niSzf4|gIxl7FV!qoQMwNGVEO~JCrQGyOH#<1D`DoW|tl9f~hc5es{jw8f zw+p0XZBY31d1s+V%Ra|@Qn#+u=H7ks`pcEAfz6j&j|=C_2usOcao}&#&#JD}lW#;A zWBilZa&G?Ow@vQl;QeZyr*Oh2Qy}hYg5#4#>4il$%ugwyjXFC>a7Zuzn` zZ1WN2^Sh?b+_85lzXsEedGV|r9LIQWZraHGQbj+%radCVNAO^x?CNc4y0&F^949c| zE@Yc=Nny|Xs{&eu8(TZswr!Q4zyHb77dx&PSFoR4#Lw{4WE$s+zK47>BP}3_nf@#}hA}%k@QX}NVp40W!HrKz41PImQ{PH6F0F3j_;T+24L6SoZGRci zy>G{>KRY{WlJ3gh7rmwH*>kz(^Y1G@slJ;MBdoRto?E*wdoyhw-R<-aADCcHfEN6x{Avu{w{CL$pF?u8+9hfRr|OF z1WxiOw1sDERaMAu-MlmH3g@}RC-dX({p8cUd2+^v3p13CUth5$aY3EpcNsjSTMkd>#f8UeBV;fS_PfO;Q73O8L zJ^yz_x~%iE_5*=iRZ;18z0UmHc|X5z-}|59+xIyqZ0Ngs?b_lO3olNtv$%2Si2wah zK^J$Ye_XaFJl%dP+g*=MX5Ke=wQsHGlJ+rU_WI_?Qk8H&;r-zi>Gwko^ZMSqW$vpy zow&JYPg=8-YW}4KK^c$C&hV5^-OcUJti&X?Gn7?L|L893eVg`jYiMtYniR7+i{;Su z|I4>tIB%$Pb6$7!y>+s)Qx0u-ll)1oG;8r3rrgO~b2!;nzUDKtFJez`Wn~B#p1R+w z>CuiVk?M`w>v*{H^A^#(iRE zzwK0u&fie}P-44#c?U<-v;X{A1!-*7rvw?fWBOC){r{1)E;BLv|7Ee9^R5fH9#vfD zz4XqHr8&fsdGn#=>1v4=62!iHX1e>@<(1!FcQMQB=C!Ch4)?j!%x_qKSh;6i@V(vh zj=FC;UvIGW|I595Kgpchb*L+N^JD{+EsK}!x?sk7_Bz|-kbB{p$~V*ZZ%(VyJCf+N zBQ`^tNh@D_$`t^Pb)*VXyXYu4>+pCNPJ>yS`j@J(fbiZ2D1 z6W=>d(pz^u)O_nR5t$iVud_C{Oly*!5jmS-rNjo^U$y(*TI)QzG ziTM0Izxi5vcd4$tS8229y+!fo%Kup}JoY&rm9CArr)Be@(x3HZQk}~of8F-mAu`9N zh;}jd^6hq5ru?FLzs1c%77LE@D(?Q`!!>Przi{ugb1`QaI9;zBdgT2|>Mnm6d}`P3 z*pS5wazs0N?XOLo#y9=m^%()j&#V-D^YGWDufI-DE=sx{lU?~t)*)o;y-5F-`C@!R z5&WXck}4Jjw``RiXQ%$nUS9Jo>RI?{PF24P7AcGq*DaRln*Ydn`58s6J%1C{sytl3 z#s0#(`9jUQZJe8OPI{=Uz7Q<>>UW)+=A+c|41N2`Z)PeU+hsYWOIU=oOud8md)duadF3lnS3oL*qt+-3G_)e;O=!v z6DDm9zIgY`QL!WMzl6U(w0z39o71kYW8d>~yG-wjIfnPLTeaS6oyx9!d%3`4&5u~= z{D*E@dTIB}9@ZaaUl8&lB-!_KsuI(t&rhXS9$I41GBI6q{sOfpN7wE6dvE^FYoE_p zoqzGSx?yGZo|&7X{%)GjX}7w?qFzTvWrHcZ=tns%HzRh#@?wvIhg$-(FMO?XYc@-c z-Bf=1*LA;351;Y>JhS!8gX=B5>!%5MZR=I$p1YvnM9Xf+PG;p;Hz|u8c0*D7BN}{s zt?B+Voa#bWGKW_FI^dIZy0OvXsQe7&FL9gsmd{-!I_=KW5C-W#{)SQ4lagkhs|>#3 z`OsfH;8$H(^>y8;NoQoP==OFAn@rmsB)|K`M79MtFT~Y-e&e2cXl;(i#Jtkr1^QM( zW-pXE*;jI?gk%ZYr)p1IUiqYdkH^v_6Q$Gkc4?`9I=$z?>kGXL5B$BCbo1GJWsyA( z_wp{k@JFqy+1`HQrn-U)Dmybzi~ewW=4KuJx4i03YWCKnbx~j51#_Bz_pm72!MSeZ zLZSH|y6n#wPgeO`1gifT4`rD%w_M3%a@!Zl&bi_a+v!8ES$bniB~=GweWR&VA-#8-TLID zJ}d4YJMCTG+1RzUaN8WP3bJJiNHvQSk1(H8n{RsSu$hU(N=C!*{VfJluWmNFoc+pJ zknyfc_R|TfEBlwLzc>7+rW<`yImy>YX@PpR!n2u5iYlK)wJNq~Xz#iwulXmzO~a0> zP`6O#i_YeSL$==IqhikXz@{o^SE%Uf!<>FSEC{ z+50$6iFsH0gUnu!>!%ew zMHh;D2h00;O)RbSznA>SPloffPt^8FzBBGFbvrU^hCADb^{x(n-&~qh4mzGSa&h2~ zD0cFErsdq-BOCHDBOuh6DLuS&k6qaIYn;J94)g?Bt=b(>Bl0M4U)|NHN0u+56@u?a zroC;8Skk^R_Vq-Q7|q|zarv%M@oV*SADT)xJosL?{n5tr?;aN~z4^>$bIkL9H?yDa zNH=;?#mo9$&CBB569xV^i{^#BP56@dLjTc|mv1{Rzg}(D^(r%F?_c2^AO2jtbo}4+ zoO%C4*;f9N643d5qe}YcydzFOV%C*@W_aoG=}>e1hZbA4k8a_DUpO77d_Aqb_7dHAhAoqV_L9$Vfk{JQ7<=K0-szban3WA6R*dN$9EYb(>ra5)Ph+!o$uSo@(>^;N_-8 z2LxYCJ?*=G#i{-UlPq?D#u#uUqUqx<%uCEr)+s{@w>E*BRRxy{_%w z@hR)Z-3Rx}jU$o;!U812=f7BL@avbrd=aNLKMLcN)t{r*wq#v1moo(QxBMU+2wczc8QN8tX9586K#dQ6{x zBudFZ>(RV$|9a2-Z^yrKOup){yf*jG0SVLj7yNpaw`@zXo*`;aOs(h`1UU= zcSQP#-nY4U=y_{qUBiRw)B1de%RRDB^YSk$-k5Pbk>$AN%^eGTT=Hjp{d4*Mgm-BH zbz!&6rTKQM`)*@(&{(qJ{V^Gyj>V0)H%M8gU$57`R55XKp8OYUweQT$vnHfX)VJ@@ zoE-6Xi%UWX&kuG(Io}ocmwi0H>))jNZ`|~DbcW0pPk*Ccz*P9bWA{lP{d>26HW(zk zJ`c^dUohu#^YNbt%`(I*yZDQq#G0Ruc^I(HFXX?&w-+;1*L8OkiNfm;BY8E+S~2HVyBp^TqnFPM`udtQ z-p;!+A@JwMrYB+XRuP6)%lkQ-<&E>6@wOf0*lM*bcdx_4C9Hqi4vKqf>aYLm=Vhc+ z_PJ}G;ItXq`zjQs-;}NRa?<;N$2z@Be;E&CIi@ZBJ}pkhU(2#GcK)>KPnAD@^39fH z{d&DF;d#=v*&@GLOV4Tk-(KA&$bbA{$s~cBXSLSsTVWw7=+>~bO!>yKw9;9c8J~=yl$w#I464TuOuC-k0Dj0XB%=aDJxsRR6cU;tZQ+_zU_^DqR=r~!< zBv@_Zt=F@z?ceva-WU|}L4&2wGZgzXxq?x9AdjA5{LUzua_u}54 zp4dVmlZRsEE6w!I33hp|X10Iky1Thi;qilsWzjL;ggswI{{0wgHzTKsP4S9dqRX-F zbF1piSDwFC?`V;CSS_}utaI~`Q}3=t%3jNVxNsxaXA!w4-YY5_g->T*UtP|(Y3HGZ zF^qM`Ea$BJ*PtRg^QqYaGwwc_z`V9JvE_ER3J>Yz-_x0Ld8a2QOXG))JDyEl%0-zNZt^dDYF46vWh`B@!q8_y0)!+vIwi5?mb99^ZZU}Z_ zF#POa!tw18bLr#WGKS{=@}1ZC+deWfFhJJZi8UW%F}%#b?KJUx>t%$ZY2FJ+1#cKb6SgOMj&=zF+RV5giwQ7?gf}R6yrm zflgHy={((e>fmdRM(|G2gRdkQZ-EwHg0_up{Y%6k>PzpTs&9VB0t%0|51^~GOVk*ekFh`!1(N^M z!D$~9!XUF?Ss)uF3*5O1FHQl zVNZ{x&%R&oyx)1F^WMSt9H3=-3=9WfNPtdbWME+Yaqt-jpW!OTO(A2*`<6lAJ-$3I_pqVFv#(#pQ{s9{Q z0vi7f8vhF#e-9d;1Vrc&HzeK6?aO;5*uKyx)K_cFz- zWGtw5Vt5fU?eBl^&6kD;nr%h;ofsHi^MTg)I&{mlg1D`>OTWB6*!eAV;evx8_qQG> zVTnE5`RzC>h|kEtz!3X-@`MQ!77844W(e(k8r$u`^8aDyw@_8ka@)?Q!Od?X3~%>_ zuE=r<3V4ww#K5pio&kLI^iGiGQl8hA;QYXN(yM~6p+b*Fn4-T>1F7Ty8VM;1N+(%uGUXZ9j=dsoU{4EO^85n}ILb4bFUOeLgZFppP&;z<9gu|i6iQza~ z2m=Gd!UG4L8M;M}fTGAvWZ{AdP7Ix465XOpKnypTg%=JwGaPr*0WXgaQ|NRvSh!*W z$O!Nv`)<)SU}Yu?AAt0SS#*m&0WsWc7JdNha{=pf^XLq7Sh!(=6GOM?7LbOpfaW6t zoo+th2nEMx=Lf|T%|93=4=|o=exT5Nz_Fu6)Z_pE|6Y|(;UV4%I-~>==&d>b|Nn=C zdn;%=CM4)vLED2Mp%1>~9ufhqH6XQ+IB0;zK?@`f(mGu`dRsyE1iTOx00kURTI+$* zFvCl&mr9MA-|&RJ(BlDzZ1@XSh&(uPzK8&wB6vig^Vn-1h=4oj9=l_`ZY-VP6tkG& zkTXNC8^>Y=5S@t@Ge<*B78Ze&>m9 z-w)lPFIrEQuz$bNe2L-vt>z;l;8nneC!uOAZdZ3gSyy)8SBHDC|_sQi)UA_-GuU~%A<@==b z*5zkiz7IH$Uw+l)`=s0T&E>~kz7HGpf{s3DJ;dL_@&EsS&zGRfgC_)bK5Rb7Vap)Ez)&R6_!2}nb28|H=+`eb4>of$ zbUx@j)6LQC!1DhA=zc+HcHDVhLh})w z&Qsv<@Af@o>3gS4s3Rkf zFR?eE@lqn#?R%y>^oHgwY2Q1Yp*K2x&-A*!0A+d5^lo?Pjc(sFouLn2FYGM?9k9U- ziM>nTKX)GPc0JP_dguG+Zr2-~p=Z8-erW^RJP>+e2RL#rbopNBbiL9Ydgt<^&Kq66 zS1!NcJk;fT;qv3o&^ukeSGq&bbeEn1Mbd?C*BhWX1F1L$(p7q<^TYSjJDs6tE~no3 z{kZ8xlAk(5&vd%p0HuoyAbY!A z&s=`d8Tz2p^~uYPpfdo#+m5?kUvwh^3UZ%tSa9 zOa2xOaKcymkJvQvUp414YWpk(jo*RB&p_kXpz#~f_&sR+6f}Mb8ovUKpMb_MK;yTd z@FDxRWx8EdOh7FW5ZxW3V$ca1ov=9gO1`;9#e$K43ZyLHJjCCcz{J1+5>(;u4+ZUt zlAUwenc=nc!V8z38M+zLx>*96AAs)I)&Xr?a_DqX0q0{15VBFQ}k#QL*Se+j*$-{J~%H$6de|k}(|oD-SyL8?+btbq%yVgK5=7(0MWY z4)zvY=={+9;s3!G^59Kja}I$@(p{ka!9FTHf!!f0JVBr;w?6Cti}atM6D%884M5gmY=Pz*i{348*fdLd9#~BnEK)yjpb%V}>k5S?H{+xgP-Oh`h zEGmpQyJJ*%_}Aa>{Mz~b;9q&ho6I&Upo2Vwb5tM~LXfCv}R?j3L_ z!ome~2^&hdFg2h056%@KDhB-fn0fn={sJ_93`+m+zv>b+`73Dr8EE_- zH2pbf{0KC@4jP{ajW2`7XF%h(pz&{@xn~BN{2w&=5;XZ8X!0M>_#J5KGtl@hXnY$q zz6ct>0*!Bg#t%W`7ohQ3(D)K)d>=Hv0vcZcjei2ozemvc9BAsNpz(j8ssDn;uR&Aa zfW}Wi<4-{22cYp&(D*87d<`_d2O9qYn)~jc@fV<}pM%DCK;xUB@h#B!d(h0^fW}{g z#(#mve{u=6ePx3tZ-B;kK;sLb@n4{s$ABjP0ZrZoOCG0-C%A8eavC?}NtY zK;uiG@p;hrENFZWG`*UZywyghm)6JArx{3}7~xHGGK$-A)V-nw=OPbU85ybUQIz=z{ni=3~&& zQ4eyR8Cdw)8J_1lgRcXH$$@BvJZBJv6Dx*0qR3%{Dd<*WBozwKutySt#{*0+j7C;7 z$|f%a!V`<~GV{`{6c{4&OBIq6^Az&)aw-*yQ*%If)aB=;DtLs11Sk}x7M7+Kmnd>E zB$pQDSSdiMlA=llb&!aHu5LzZPJy~Yei2+CH!-g?F-Kh?Ex$-1H@_$qbaYOBQEnpW zXf-Z|jKma$(!Ao*f`a^_lGGH1lA^@SoXos*h4jRtq{Q@8hRk9G=&g7lW@2tqW_oFU zX)y!HDVas7#R>(9MTxnoC8B z!IKwlLt2+>UP)?^f+{Emi;K(ii&DTzq_jA-NI_k-Slx=DJc+?AF%uLeCHV@;MX8|k zmOxPjK7dcPn2SM~K~+^(HKkZVRn=6_FilleRh5BPwHO>KC!DkxY#8hq7#OZBa$>l) z$cf>`A}0n_1EUlxIH9L%V3wl5pv$1jP|l!QtXizVpjvEetKgZJmT#q?TFhW;rx2W) z2TDtzOB&%^&`Ey`Hns{usmW!~3moBG6uIDF9|f2I*dVw7$Tl4X)v6SQq{@=iVg(I@ z3e~C#O)dsi1Cy!>D+Q2CD-;+M6ciX#lNlJ6C^#^jR&Ze0tKh(JNx^~Ph=K#dO$7&r z2MP`h@u1XNl*|wV_JV3LLlKz4U{hR@l9^}6pjvFDnqs9;4$I=8z*PVRUujVegH|F# zQDR<7ey%PkR2j6A7*f+ypzLIZ4t!RNd5q;xY!UbcT|m#N<>4tqcf5H?cT5Gm}9plOZQFH?u^yD6u4!K`V;^cDH3} z3WHWQLrP|PYHt}qmtT~so1C9llA2ed3%TWzK?M@l#o3t!x*!kgW)?806oHL~ zUP`J`%#f3xoS35vD!mz0N+2FLVK89GC@Cp0)H7f(WGKlgE;D2>Vkj=oDKla)2Ghn2 zCJdPcWhM+}Aj*s(ks-050Cc#fBLgV^>n5hB=9MrcF(l{bXJ@7|IDtf==?Ro5L4vwj ziA4;~pcGn?nOB;sn^?k-!T`=|DT!bjsy-zN!b{2oALQx6kW!jkpbNPml_8a(C^ap$ zD7A>el_5E`sD!~aks&z|!b$>*=z=dwbxmf-POW5cO#x9*p;U%~#NuKG*EELIy!6bx zR0h{{hUCP8#F7jJhBSt>#LOH9H-@zQqFe^IVlb^+TvC*om(GyRke-vDl%JNy;Lebq zTEdXQ0ID+?JfOF>GGu}-AP+>lQ;Ugw=%vN-+cI8q?y`q1UcEnz50&B;qGfx4)eA%vl{ASXW&T2_^UQb-X)D8vc6phUz_#!!}8l$2kb$`A%( z6=&w>F_af&mZa)}in0obQicd{O9E5|fs(8)s96ExL^2c?q^73mg3B(3N+=KPz$yk1 z18OrWm;>0ik%AUH!iD3qmJ#UE^~;8pz&2lG( zIw-q&xf4SxRDI8KCx$+#__XCt3^SnYxyzjx=0n+AmOC+QgR=K8cVajQ)q7&O6T>N} z_?6{O4A-FS`^%je9zofkmpd_hg{uDt5?cXrKl=(N22LoOe}xl+5R|RB!ihl{%GO=s z#GtCx&t; zyLN>WLp@YY_X;P5UMPFY3MYnXQ1-$VP7I5o>Nl-$V%P#@A6VhUa0tpizQT#&B$Rz+ zg%iUysNQ=koERQJ*^G;w7+yftd|Khe@CC~LwZe(v4-%VYCB(miE1ejGp=|k;P7I1r zw$4f?20bWy+af0hiZ}mZ)++c9mS4Tm^4JPFl5&#xsP|!`(*VTnIRTQAW5!`T5D9KkSNi0fF zEl~iq8WqYjQu7ob6%?p5tKp`}prGrhuM4i3Ak7;Eo8l5sd%#X1v^cd$*Adj@0U1*a z>Ts0gD-@>|m8BMeTnOp~DCp`!TW?T%12U7d6_gV5DwPyK4dc|jlFVdqpBj2$JVc{z zlD;mq!JuFRs-PkTA#*MX8A?3ebjzLRwLNF2pzm1qEGQ zaB~&v3I&kk!C|N11Zt`)IF^=VAh|`u1LSchh{quT%{ zuQ)BWh(SR&8SY?E3s1oYPCY4_7LwwtaJt&lLu=X zD%j+wr4^@^*eL|17MJEi1{%OtDnKL{6m(Pcb#*}vNCg`ZX{Vq7@mGL6oZnE0$45BUs!cO+MqD=5jvpaAXAYnfp>`DAqLjr2kR$c4Qp@=K{^;&WF}>nD3lh1Qm|`4PzWf2_<(3|a)#Oj(^6c9sU>0u3gE_eT7HoNqzelT z^Wb0~O{iX^?iVy5K$e9#2gLjNySVx|Mk+wc1_lM)RDE4tXlDQ#a6yo+fkJ4I4{3YY zNWmsGFWpW-!MUiipd?=bDp-;a8mogiR8K)kR~IS{>cl94O$M=`kqPOT!IFWqqXH-p zVPRI154uJnGp$mgAT_l}Au&BMGq1P=VlrGmIK9}UWEQ0+m*f{!+9^0YD!_RP8o7xn zsnFz}9AA{0kyxCe2}+S=sYRJ-m0(k#Ndr#dwhS^%qF@8^fSm$p+y^>x0y43*I2F}t z`MCw4ZbWJd$mAf%D60Zuq(q@8wYVTZ52Oo{9aB;v$B*Y1DWq3r7QoUw+IWqEO>t^+ zeqKtkoq}&-MP_bkt^%m*qL7%AlV6?+8E=DX0dOu!Wpze2pj3t5#+hS1q&r41%2A7}UF@j=fzO1eV zi$%vWDCoL_3`s448UUieL#!Zg>!v{Jg7VCg4248Uf^l~Zfut7Q41LHn1xO17hk#lW zpivkFP;-PqLDvJU1T^Ri%E5W5b_&j=#U=T<(9vE{Vg?n3AR42chIKGaLBSI|#s-d9 za1eu15@@i^Cp9mIX?%gwiuL^K)!|M z5DgD~a5K{r>UOAZ1qFrRjQnzil>Fquwg3e8MSQ2-BnWtLPbfYm}1b~ZTRz*4CYzdM4;IR!)s2X0@0isIr-(3m^O zP|!RMs2+iqB)Z<9Dn36iEi)ZrgaSNYlxJinXMhX?$$@=elCJ;?4+aI@9DQ9~P(cqK zcmr$n$t*4b2Qs)SE(XmNCFUuBdJ;$#4k)_7p$8si0*{a@*nq~#?G$`KW9Epg3m%LD zr8aQu2&4oWWZ>c$Jp8I)lUJH+7p@PA7MEnC7NJuM6`^bCXhwKp_N{PE9T;2Gud(su7X0LAHaU8#EK3U<015K~$$82?elBNxni# zet8~fNKyfo6Meys2Tgy%yy}u!T#%Dk2`&ZFN^^1)paZW8x_SD#y5PZAm{JAb(&7?u z0#nd~NPt?pppi{*k^+~5pfU(Fa|ZP(SQ&JLG%*Lj!c$Y)lxe6IO;phKWJFhWs?JPoV`A zJmoUCf360Br(*;)_8+w?JQ47d$Nl8LU=NQ1CBE1?4J*l8mDK(sX#G0al~{Riy!G zdpZ02`MElWz}j43CGgHUQnwr|fgX0y76v#7!MO>n3f`v%^@|}LX|$}9p9l5^ST&>? zL(&cF?}2nfJ9(sN2ThHEA`qk|-;F$yko8;US zP+th#1W3-$%}vZp(I^Ht-=P(BQfeA#^#LdaAj(y6^G~-3l%zmY5unmHFFh4BN>Eai znOc^rkO-ci1$8jfQy~K(kmiKGp`IbAKMX3-Ar?UM5u_^$o zlqY6_9GO`RD$PKPM!Ekh1A643>4!)B`U}PNG3wu2%5H1041GFP-@RC zRwzg<%FIt;P|z*b*VTpe3ScQFI1@BUq>!7RlB%cRk`G#-0WAR%^D0X+Koe~Wy1^iA z@JS?)R&Y}Y+;`AZ2nV$eb&GWrauc&tA!CK087Igpj$+6dUP(r3B}#~Zh8~Jd6l_2h zRkRhTI*o;-`(S@(?_d+qGLwo*P%kAt6I9!QlqqN{fYd?50BnFME(1)7FaSJr4NF|% zpmi>wmI15|Q-I8D>nZ3$M>gRlXNkV9F3K#Lf{lMbh;3P74rrM}i2_6pJ|qGzV8CJHCf~*Erx)ASzau?K}V4bi*GLSf^QInmjpsNd(QAjE+0mn6{ z1qL!8BeeoG6@!(5mmYv3&M_qglI)915_1c{Ejh3Pedr_~T(52jXtWVAHwbfl2((oI zvr3KQf{$6EGt5*rFBDL6%TkISOL3!NFfh08eMytzOF9Jzo0--Q1AsMT~P2L z20+1!tV$AdvJ*=(%TgH>bi*LJKog)4O^^-&Y<&~783byy6_#d}FevDj>+9;mXG#^K zLEXK?l30cCjKmU9P{8sTc;FQ@NRg8Ynk8mX(5--Z4@>d}Hzy!o%gkPAwSLH?=)^SBC$N%=)3dI~P7X^EvdCE!G4Y`~zP8wocF+!6Do{4d%mpu}NKvo>$=NBuQ(sadXmMJ8o9_g%i+-0#(W2fHTxHfK>ash9KiXYbu~hAR`SSKEY*%urVcFBanYU>n%{!1PA++ z8Nt;UL)92#s4<4A0ha*A1<)!MtS%=Ll!XJ~0}RFarJ$Y$Xp9sT9>ztW0neh6N>Jed zZiGWRXE2jM`3r20f&!Axl6-~4d2;t#eMQ~xA6T|y;P7G@6ofwkWJ2A{#@5FF@y%U4l1}BD?4NeRl8=M%< zZ*XE@+UUffxzULsdZQCV-$o~f6C0fv{%>?*FxuqA5WC5VVd^F)hKrk=7#KD?F{o^I zV#wO;#ISm^6T|JzP7KmpoESp4I5EuI;>2)oixY#&RwoAUtxgP;Tb&pVZgpZ{-R8vL zvdxL1bej{y-fd0{f44a?*l%}YDBbSF@N&BogT@XghTI)a44Za1F}&X4#K5=HiNS5B z6GP`tCx%lyofy9DbYigH<;2ji%ZcI8E++=|-A)X)yPX&+cRMj`-tENjeYX>X+8!r{ zoIOqq)Au+rT-)QsAiCFyA!M%;L&IJth68(@82;>aVldq2#E`SkiDBhFCx*BCoES{^ zJ28~(cVgJI--+SlekTUK15ONu2b>tT9&lp#bHItg<)9No>p>@m69=6bgbq0|Bpz~N zn0LsD;p!nL29?8345^2m7?vG&Vt9Pmi9z^?6NB#&Cx*TwP7J4xI599Cbz;yt>co(C z)QMr~Q74AmN1YgWjyW;79&=)-Ip)N$`Ir;K-(yY;UdNpnT8=w0tUT_-aQ3(p!^h)J z45BBT7~)SjF)Tdc#PITj6NA)ACkF46koif+;>x__3>Uv(1{Y9O%HSRxtP7vmVeoYE zWAF?pGh^@pO(}xvP6klBoFO>C&(+~ z1_#joxYJGyp#7?Sr=1uWSQr>4orcV#P6zQpTNh6|f%Z}}ECcZw85q`{b^JsoD$UC*(F1oA-E|avbrifojbSH6E{5_Fq(z(g1*v%o zs>O<24DcaT2Jnz719*TjxjcoTG_NQ%IX^uwvkEjIT~Yw)yFt52prwjB(4oH+NTJQe zpqiqftDu^~kd&ALZI@@}6_l26F%%^+IOmtyWkcd zXn0W}HMgLo5-a z%uOr-EqMlqib7guY7Qx74ssTQ*1#4kFu0{AmXsEyg1Df$0Z7FTj$PGa z2B^0|5e=S*%1tZ*1puNB2Gy<#8la{PXwV;NU_et3R46AVf!CUsfSL^;rQnKKPa!xJ z(jACTPc2DFEJ@Wc)&v_{mY9| z$ARIRjswFR9S4SXT?d9~x(*E6bR8HN^c)!Y^&A-F^c)y;^&A+i^c)!6^&A*N^c)y+ z^c)yk^c)z@>Nzkx)pKC@qUXTCtna`er0>9>sPDiqTi=1TumGpdQBX_D+ocuS>U!ExI4-K8cBe#AVoSu!9^#Aii=JR%@>^*z!D0X zd6^}di8+~7po|78B|v)>iV}+|xfpbH86Z>H3aZ7RrRyLO&jM}Q`R6uB6z^z|8nz+)efDgac5Dr6)U zE9B)XKo%r}%9CR729*?We?KF!EEP0FkegWy?%N=C38)t9aWRBsq=KgWAalKt#vP={ zEXmJT$jQ%3*W+SPEe1`kf=5EZO>$7d0vW^y*BHf>#U-h^dRz>C`3l7aiOH!7IjL!& zaeeTZ43ZLs5>Vf$JToT;G(%952p+&dwjS&vNQD5Nqy)tvVkQ7Ao0!DloCvDBz_li* z>H~XNU$q##ni>>7pe3rsAO>h{e|~9+9RpXiYKp#UN-QYO6?Ap&z=5l)3*HkDud55* z2>|k@YO-oEgKDw9y=pOov%gQMuU|0OR0eRz1bF}mY*IMLC*Tnt&?J*;4tUB1G?T2S z0OEjTGER(X04~8vqDlG<0 z^`T7X7iXsDrGoZGC?tX=>5EdK^R=ld3YmFa;LwMpH&A_^ilP-fTMt@;k(r+d8caz_ z1l5|5I#wa26g*&&$OV?kNzDZhL4eHz%>uzz6KG_XDCC0g^G-@tNUbQyEJ{t$0kv>I zJ#BEp1j}-Pr;>9MOOi9dMx^BDf?^)50Ga|qgM2jgxIEJoD)UR#Qxw46C(!bx(xN=j z$|LZolX@{^?E=iv&{1d zPBD1@la&G}#aQXFpk{o>*rkOjqh86~+nTwEXppu7ZXlN5ud zk#UDPnm? z@3Y_DDy`M(y7&FQ^}qYpzx?a^7xijbo!?xq@_5tV*7EoN%2ocm>;IWs|H-@m&vx0L z)BkR}?$Bw=HH(R;7bkCXP zf%aOTE8=2QD@EM%_5IAu+U)1eo6FzdKJ|FrDY4X9XS?Swp8sOu!GsT=j~#n>@xy~h zKmL6B@n*}XoGD_0reSF}r~Lc)*8h=F-?~pZVyTwoiJSLb>5ugr*YzKNXaD;;sovhkZpRzfi%&0} zd?{FGX?e$f`?D3duOC-;k7oY$Pp$LV%^b1w>Jsl%G%vlj{OWvo*ZEJkU)bs9Z%Xx4 zUfj6+v(d@NhGGdD0%vBGxe9A%s4Y%4Jo||AnE(11-OOi|R{L}pWme5j_`e*!7y2?pY3axZAq#aiO;xQB6;?1&o*7T3e^n@jht4~lAun7wFT=I7&;yEwKf&AvR(U3@+NBK7n3|F68aG!^K5 zY3)w?}Tr+m=2lHU8t?)6mj%1M8!9hU4C4EXAGymaoAD+leTpOoRf zWbo+aBei*#&j}ko+9KGQ5Kwfl?$^$X&qd2U|MPuWI^)_btJ`e0f4AJefA{9k$^g45 z@;?rp>#Jw=&rdpbaY_f<-~W@IL~gu#>57Tw%LA-$kNk~a5?%enr2CoY!PifV9~*OSTv)-y7ZPyTB;paXr_H`jqblqCJTIGg-c5h1 ztj`@ce<{26%;)FxzrCFQ+&=$)YH-ww<@Wi>`~Qo6cia1MKfC$UoL$qpRv6Ylnlj~? zP0r(h%O&$TE;BhkbIvpD-PyQ-M*R-Afbh65K6I-9m zt6y%^ncb*0yHTp`Qay8Lpjhgr1&q1}xqoUb3bi_N{YdE|rQ-JIYI@pVI+n(|F5mLr zMNzqGdfZgry1@9WzkmP!TJk+7I`2f8;KIJ=3;(#?tHNsU`BwPi3ZGVyUn-oV9v}1zShA zq;=rpXtOBgWm_LClRnD2E!!_7@RIMwBk|@X;x3;nroC{O8M}`y+*j_=%;dx)ldDeU z-jy!V@lx`fBWc$rE3>ul%;e(|;x+CcmO3=^t9f^e-G4OeYfABh_{&EZMn2_qlZ^AV zVLPt&GtB7ReHG~o-2M4&%8l*Z6UApV7-kAeEV*A9<~I3^x!>MhKNtUQdZL?DH~CT9 zI_;=sr==h9yzII5oiBT%$E1@AR=b&epPRgxwEx(}+3Qxso>2Py!Ay721D?e27h7B( zEWZ58@~QT;4*A2U%srHb3aw$!LegMkKVj4?tVD&%d;1s zUMwnFcy4oz+jq5I9bK`@6|6Ix(~9OcbER{hdy+Eqv+ZQvj_EUF9KvO}#Xe_epDUKS z%@Nb6GVAM}9S6FDKlmI-O|Nmhe7?o+ov7@~BAX4*_AShwm%5|rCkOwv-ifMq9SvLR zO^!rbsqbs?4)kYYt2o+zY}VwX8!o%APwLK8s0*`MwdF|IQRO*t9XTb()e`gj)@->f zcW*)BQRN(!w%}-+T^v7u++FU%_2o_NwmE(;tmk}udMH>k@aU$Pfc2ZdFs_cxZ#(8z zub1&L)u!3%|HH{wZ&=R}O5=QDBiW?V9D5`9qq<7HIw zWF5_Cu~yUgHAPxO*2^T>J+?V`@hkVs>ywXbd&y2~PY=Df{PB|Ik3=?J=3Jd}XU4p_ z-+rFi#93P`yS%aL%Kha>TNYjJU+<~V8F#9G5zFLXi}vkX@ON#-igIJN4`S=zvA<8a z%Ju4YSbu-_9ros^;=??v&S}i^IhbY8-n_p5rIuo${2w*lsXD@Tnsd!>>YE&``28|r zIkTqrYE$`qm9lLBXSJZ-Q8MjEO(#|Wt=e12uS#y z^muR4%=;>jqn90MxcV*o>`5`vi1Vr)DVt=9y^F1;m8=)~t#@<7fg_jHwIX@$2yB?M z^_kY21pym1%s5l->?^Ysat{uQYWjU8g+q!xc8O2uUpvleFK0+3*H4=CCGOGoO3S%l zE4F>9E}A=$EznH!l?eA4o49qN+dm(B`LakckmJ`k7Ij{q+4=9X(Bb*y%x0-gsKR?L`DH+QX5@~mYQdE0a%ekIL2+Vs*k_oPFgi&A-J z;o+9qtZ zP`2R&h8G%FPu5Mmm~$X4HoC;~{?eP9W+aIp=gd4l*`Z_lvB=Q3Jd-!wyTe%iW07#i zo=dCp#Bx`Dy06V~q-2lvhKzUne&zjt^7i7p_}5>&?!P@*UOo5P-i2FxcCFvFYT~Z9 z7yS&n=5ftldS~e-gB`7}lhfDsgiWdx@z9&s(j7QOQYH7U!j_m5oG)C9aCVebbdG&gx*3*v z&}>rm#72{wPj5b*xWRi_gw4xPkB3JO&OFMQ{51I6Y>u@XpQ+sDzwsk=vZ14Y=jn57 zUtPGTo;=Qbd&5Wbz23i*&D;LjCrvh*6FE`5Ysb|&EdO`ATo-$NwT`js?%{VG&RKPv z=IDlW{X85c_H#As)WA=xk4#zbqV)FoQ48PfeA%-=& z$>Sz9S64l?IwIyD!WnjtmQ4RHs!uPYc#`sr*q z@o68wppfIN8kPNrq)ii#pZ3+=ov&s#RWPeKaua8&qfwlts+rfVk23Z%FHB$a!`#&L zMN%aft2)gikFfoP9h38G zSLA(Pao}ULYTrML*gFp{?4PrY_4br6&23i9E{4bPdPic8|1Y5C{-4exbhM^T+Pt81<-@nk=zoOVF ze}rRayt;z5?(4VE%7qg%PhUOSwsz5`+?zR!zdfDbUbtM5 zc+3CE{4d*P?b<$V$KBFt!s4?6mX-mi$%=SfkF}2uxpn;T+q~ z7q4YAyS8&pV=WG`D1Ua3{m3utDPMPOc* z&Bc`;KgiDg*7)j}PPflx$up`&ui4+abkE+=(9c+296KX<f8^{^v7Fw z`{Z2yP&xa8Sp3G7J2aW}J-9uY_7*Kr=@R4mIy+i<>TV9Eyw!QK;d8{41e4?6-IU=8 zRg(yJja_Y;eoS=Pl(R|Qp)YreyCmN_al5k2U+R<1EvBbC#|RKcs*J4=k1?ACOJGZ+p1G=eF9799f7xHzvjlx76_caF4xEJPS*40$7dY99f zn7^!bNB?KbY2mV_CtYkFpRo!GhI6^lDjJ+;nSmL{vNHx zPpsyiKOE7K<7w62Q!yo`@uZnb^tOx>DW8r=UR9R~S$Kv$TIKqhh|O0!u2-c9Y*})> z!_v9^`2Xt@zhAKmf6=vaw0-}i$}3t8JZ9&X3GG_o`LC<^NM`DmLlb{+82@^pwshn3$FoJ( zaY^_-G}`}V^P0`N@0{OuX|@z=Sl_&}Mt18*!N@xeS(7zY7@`hryZCi;L+|Hf8;uSn zsw6Q@UYB4o?OwskhfXn9?^-;PyL|orbEVy9zG(0Ml@sbx%lVecmh=9C-o?QQv%{}@ zU!KJ>&wu@uwH`U`9!q-s;+oI!>Ag_TT_8}s%!mrk7UjIK{YNKNZ{+Ep9MK6XoL8VA&@J^L)9vx>r+==wG-`HEay?>rWb3nCj_LJWxARhY-n2h{ zvHn2dcw8xWlyUfDn!*E-*TesP3H6)j(qAXUA+W%yhjUTOsu~fAI>R3!Gb=T6(>Ic-4gdXTP9(`_1k0FdLuNAEta)ckDm5 zQIP$vhoK-M4(V$gEy^)3_#b!-l2KJZoz2-Q9TY@IpBOZj*y?(Wg3|sr)^^ z%i#+1HGi?nn^I;Kl3AOc=_fxfe|X~Wi$9MhsaG|{hfG@8-`u~6P2=Fi`5S^SwFdJu zHE-htvz{+Z;IR#yP$`mSDR8f_u1!BtC1_(}Z{fXm`9+?4M4!s= z$zQf$tDAR;bvCb}EPH2wn*K($^d`-fvDam6dL*M;YWkIV6Jj2m&}v~T))G#+@#}@b zCzqN%IstJjANhQD+bN`HEo8{S)plaG)5k6QCU1Ewa4DmrZddgFQ045eQfmsOJc@a@ zH>w|e^zQm(h3EwptK6R-e!oZNu9&dumE-D?Uyk1v40@2S;^^LZW&fnRKmUE$Ep_l` zwL++IWNfulOHp25*_Lni+cmeYVE?FmMgQ;no8}81zL?}F)Djp{n$Gv?Mn>?5KOrhl z+`=c{bgi)UHtEROT6THI^yF>)r&U!KPI(lx_;O ze=Cc@jTt6pGK*WEy4l_cUQ%|=cdCK+YChY<=lpCU%G#z+@7S5I?ayrUdv^UqdezNW ze|(lrt0{8h?!VDhxGzc}H|SoF+7Uw!q4xr5YP`4B{9otJd!pfFf}^*Zj;EcnmZa|G zmo9S-o;!ZO>Eu;8A`FaCQy?;hEt$}Ze~jY++-rl#&) zZg*_~tNL0oO$+(o|8Bm~_{VtCd;Mfxozo9Dik<)BTho3obJ5#%v;NOZm>lE(YmM8s zd-Kk0XuG;)qAO4L>RHQOR?M7Uxotu2Un{our`^vC{L*;eyH4!QpM2@grBC4t3^#c# zUY2xgALreAuXPIwtr&chSE@RO9hNSr_*pwM>aNp8`$K!#+7EdD>CUJRDyyqXymk5f z>uC!mox(*G7A>%RUY2hZb^73unZ;Ur4(M`NbI;!RLVMSp^ZoY{RDbb4J$dx=jhKb@ zR;5$LB>tT3Hx_sw)%VDLx<}IdjDp2dMlpvXj%M_)nU%02>BFk__0MJaW$&tKpVlgv z->QE(?a_0YtmpD}%bxfD68Zeg`_FATH}Q8S&*j^dpH2^5w8wj5yI{@jFN}w8cv)ZX z=Iht1VD0nUpEi>v@c#ABU&I4!Oe1ST>eF?;)NPRG`?md3XhepWnZ4SFh$y0lrD%RnrVbf9;xSU&O`y|JcD>GvxaBFEl={F5@AWv$<6=Yt{1J z^{$2w7sw?Qt4JjNv`lZzzoYPQk5ci$n+K0uEo0oeCNI$N@M2M=Is5pE=1h;>RTSj6 z(0^~g$DM7wUuDm|jp)djV59P8>xJ!nKlW)Ye!qFniThW^Kk>Fu^Nrmg5Oa1yVK%#A%+n^Z!cWiqv!~cq`b2qgQzBe=$k`XH29H8tN%WV3{VB^}l63a`{VH;Csb)7wM zXu{1Ynj25ONqTgG@wd>uE1M)U+t>8_cCv|H;qzt{>{%$t@9DxDaDJLmcvwR;PgK@J z@n0fObnZ0<`8mb3eY_&Xv19vp?ag~l^CNkT+sd0_-ks2C-)Oo_m98!X{ns+y)a4e4U1<>t;F$!gYKJ)&)n8L zH(~Ya12;ml^Zq|L5M8|Z?BA0vP9ApBZ|o%BYj-#+QvaLFb(FgAX|8jg=|e%Ay(l9I|+_+hm5*@~^cyAGedcWnB)ZQ{?bpPCl) zz-_{O#kh5C3_SLirkoSsQ&aBwanZh6I{*6KtG^9sZu&CGur)L0>%s5sj#rHOjL&;= z27EX##dpF$z$GPwfv2eJu8OCa9^1spKB{|7)!NRi2->_%CybX(YmdKZ;v(_&{AKpl zpDaDwRy$oeqi}lK`{j<+#n(EHobc+J>Ea`7dhwQ;&f60UGXkF4EOs?fY!2_a+_y2R zXfj`uvf)XKf^FilGO=-A7Cn4=)Ajd+0`Dfqq_YlY-c>hKekn}rX3b(;kd(44a{u0) zx3UaxPWbcT#gUZT_6<%FP0h<*ui0-Cb=3aj@*Ll|{l@=`*Gyq{f82b@&^)-kPx`c& zjQWWyU*vwNGA5obidETbJ6pBs`O!&p3wJvO83%n^bmvI6+x4fh@2vVmmt9f(?Id(= zOUy%?vfPlnR{9HPuen>z{#fHqqSDzND{`a$G}f&9t!gnfCoWJb*FrHx`RMvqN|MRNl4m-cF(a*P!-E-fb%X?#{+wtdt zHZu*b1k6a?w#V&KEt_H z7B)Bc*+^cR_tMFXGxhJqAGWL#CZaxPALWY5xjfdE?{=AeDE8o&XHILIZ)D|l*R47v z{MqBRl-P5|s5x7;q=hoyI;|CD>^ynNPm#T2y9{SOtHp(kC*Bb@M?>6&j+q@-*nELM zRB66OiO9Nt=k5Qlx$8YMBPXokr&6V*(8;tP^#}GoZaCX9`B${Yn$_92L^Itted6u% z6_9o=;3^A=SYnv_ZF(>Fw<IN z_k{arYRbxQpRZ*!>bEjWYjvr#Oij(1u|zERMPo3J@mj%qQ?f!%d0$szSBqQ9Sx}Xs zvxjTaku=VgLW(`SnbNTz>NfcC+7*8hIL~5q+2PoYuII_GuJp)gxy-2%DgEg4H|dCV z?CzJN&x&;f^&Ia~G}3eRr~T+4hJY3-gz*tN-r!e~b6a)#+2Oy?f8Td1`HV zh(mMjhm9`j7L#6z_3f!~DC^kpypeVCiu*kQrzc0fTIzA*?(UYY#kOy*&%EcbxM#&j zZ{H_%H~0MOGK%jzy=)mfPpt97gZmD>Oe!-riVeHLyn3p{#)Ab{&g(ADFR2zl|DSMNBR%&(sGD}XRhxTdfNlPs==};6zphT76o<<&>2%T->fQtuv&n^75^V zYot#e?{e`kS##65&UwA(ft~Zx7QcD*O7NCIV()B$ZFd|?`0q&@E?Ipbk@v`kWj~+j zHcjQPjJ?XRSMpHwq$^h@zj%LJ>DTrB^}lwiUgzLi>=t+7ve==sTC%wgFN4!X|zph-?Gu7yI+pQG>GbXR{IBGCg{J38rpV_1A z9GB#)F+Q>D^`3SaDX&Q8DOTWQ-x{)O>q#AjsZoZ}F|!u>yk`G&_Ts;VzCY?smi%i|W?tUy))P_FTXFfNQiWNEQjMnl^^fnA&mFvS zz(!x7!>aDBfZ0nYb-seR1zR~jtk~rt*YHhx!QZKB6`7q>mrR5Gh5wvkaz3-|j&P)yLq>$`k-cKW6d=M1=yv2N+kymMgY#)lRrdfl#N zf2JsUswCN-Oq_RMaZhd0{U@`yf=?*EYv^;D&UNFN+Pc+heNT6K=dVgQU)?b|=*^Fs z@19~VEiV$H&lQ@Pz6mJ)a`IlWdhW^&i@k=@|DvAi^WTlISi!XI!0Qc`yi+m?qOS*s zu3RL!?ZuQMu6&!d8(tY?9ox=cU?{SnVV&iqnaVoqleckuGW!)xPg%x%iTefXntR`N zo#tR(%O_W*n6g6Y5`)B+qnj=C zUNbvgP70rSh<^gN|Bdc-mtW8L7|^8Zk?FkR;mb{p`Dvf0>Bk1_y346mwet3zB--|w;}@htkgb7j@Uq~0Qh z2xgCWW|=SMtSVtM_C7UxuK4b$MMhk5N0%nr#c7<~*rk|zW#?b1|IT+ez9>Bu_DE`C zQ{`VryN#QdMfpW<+T(pbsnVBE;k=X5U!!L)+14i6oeE1zPwr#CyEu>4I_RtZ2-fPezefE3u?sv^gdAGfk-{Si};#~f3u0?Bp zI=fm2|Ga0JWwFPxr_5L9VZ_~Qo80;jh_!j~ow;xF$#9Y8f)6D;*CJz+-+F`kbv4lF(V;%b9iMb)N+8AZll zat^7Q)fO|9TiEP+QTQQmhS&q6b#||we7<=3#nUPG=G0w$)fT!XFUZ+#h2oDbd~4P; zzVDLnDbrEdIZ-3b=;mkX-Wx0Rnw3kc1Gjgq7y6?TwKu6bRmy+2?}8ue)+J6abCfbp zc^T2Jcr8GC`4QPjsi=z{%q3^9_FBDdU%P5j250Y~=w-`aYP4s*k()T_bjhllGx9{E z53R^tUF##@b|x`g!12NMscZJW?-1O{*~Zo9lat6}b)pHZy~Twfo*9d=Q(Ai=1=thVLoqnO=~Hm-R6kV`Bp zDb8rUPq=>d#pZ`qo1dS37jXUX@uxx?FHYSwDZTr_t6iR#?o_MQ$k=N$oITmK;l=7E z*3;^}*^k1HURN}nrzI7LQtDnz|$_T-Z__&oqL(GPFu{@ zOD`6zES<9FU(hOxSN|?nhVMv=IDN}dZ(3IEpH{Vhd z&yTC-FU@gX_I=vt&Paopnaq`oc^C64n!XUcAZWMyWc2f!5}_6++g2YkyH;F&TJ^ZW zhouY)S1sRIJlV4;^f~K-(60-AMw*=$SiZit_}jA+tyNt{J^oR~3)$ziCf(%Q+h!qg zQfT6--8FEf-psrm&P9=19(Ot6r^j{95E$=F40Uit0U^qmP(8 zzxaL9-D9`!iOB`Wc4qwl^QYi{(fzZ%mru?}|KRKPhV_~8x7xZ-WfdiX&-r(ZZ~ zf79^H(H91KkJawozbD34{+?}lUDVD4i_34Et$DLfC7NrV?ecr;=CkVEj>?+LBsEzm zz-V*f(fy7w8tZR06s~yR%g!UT>>z`lOKMDF_JYNs3j4Md$xr%ydTL>+2eZDrQAO?i zr(dVXT>8@OzVp+Wg|B{ZdReiZ@#VTjslx3(hG(9fC@$K&qdp?ApVdcxQrWHvpLwSr zcJb*+to3?aV8+w!A?n_@U|a8tzrRa@?rm8f$0hrDiE`)6cJBt+g*h>I#rB>Kb?Efe z+U@irB01=pp~|(*=l2&y99p~M`To$0Aw^{tms}Fp7H+(|?6Ml0QkA;X>vOvvZL7T; zx^{|S&DC$K4<_8re)%l>zt3H^2WyUs9SPmj@vW?E-& zi@aynlThJDoC}{Pg}-0=P^Yo6DOLC%PX2ETs&;M<;eu! zkH<=mR`3;+PimQ`lhg9>!LpmBR%strn@zv)Ufs)|amOUFRQYFH+`Se*lKeX3V3ozk znVT2ccu&wd?$`84fzdSS6l&r2rRNiRGi;M`6}`mf znDj(E4dz?&NmGX0!&ihq8ik^|1oR+IQPcM9yW8XT( z;iA^E_177c#Q6kM?Y2hUJT&L>9-*c_yMJ0*O%*q9#maG<;#FK1sTgXoMHM?&}gSn2=&-<^VIhE_do8oo_ZpZStp9nS8Q{ke_f zK;|tk53AD>*LQL(dF3Uo^6Z@KZuKOI<3D$}rVD8NliFhMG{0L^Trhz@apKMl>$pJ4 zYT=Dq&by|&+`kZZta9F6?fSry=TB`Miuq4(4fuT8wcC<^VaV2s|LKW)>REGEUfsQL z=F@df8=H>{$=;8YH`&y}d|%-BMU8y+^)FlmIAi{)hW z4)ag67Z7|jW1CjV>%GrbRr_uV`|7XM7;?9@bZ+aM#?_M&EG|jS5dNXFc-hhul|5B< zIgWcc-+1v(*IMzZoOyMXv{l&Ie@op1gLP**bM#1ytSg+if^~JliPyaI6bypjtPuV& z&0>Ycx$upv&kDQ|lY4KfpSdz#NMp&Hjh8og?#unOKjfgJ>8fy#^}ID31cPh$R!xjAi|Q&#PDQ=A#a8_l$0 z)18B5%TCzL(mCF#z^qrCP}rv;7?y2aaJ#O3mRpzSv7gIRA1S|53^f*5arEQ$)9)BR zo%-};b_Q#V;FPyzVH5Pk7F^pZ%DLTcoB8L$B8JjU3=I2Udrxb-er=W0sST?v|NK~{ z$r5e1Eq(`+O+`>sl5Z+s-IdL&wn&{gxcRxm{kWxEr>*YzIWF(#l?ih8lDN_EGxO7d zWr|75=G$fJ?*DQq`NxMdR}$8;Nv`u{6?dN&o_76l_aavRS=vTj5uxjR%Z%sPrLTG% zX?A9bki$_&Pob-~BQ$hf4xc%7^aVqS*2(9*8qrI99IB2a8TwYWFJ9i|b#cr60QYrE zdt|~_aWy&5Qro$pYR;wI-AbDT%=?ZBm*3`?+P(ON{7nySMRTL$4eQk$znC|)^{9Do zOiyx&3Yh!YGs3QSo#dQpw&!J@UJaWZdNDk!^qXB(;7;>B(w|e66F&3STXgWLE^~Tg z=-pc^8j*MZRE@O7%~ZQQlSg__l4Q6qOMPe-wdQ|!Gw&gf>Z)fZtqCipem1+2H(f?g zk$KVd&Pu@pE3&Gj*YqY#b1|1luTDI&=+OQR3)l8_+`Hp8@A|XLYdxy&-nsjTF`~<3 zhD=`SL#Kd8o7TROyMN^6)XtZGjOLbj=<4j+)Umf==}Li^S7*26^iRDW6uu=+XpdJ) z-Q08yN3Pj+&oWhGwb=aAMc0^KZ_M2C_-N;WUr~3DvAuoAtgSD5f0e?SI%~s?hL5(n z#0Z`azuEbf`O$wbv);wJF$YrY-fUx=u$oJ6(j%4G7lV|pd3~F;eT(n17w5uGB)$k! zjM;UhrsH|}S>e-FUzH;xUjGtfnxLoh2_+FOV zKC5OPV<)eU#obGR**gS3su!O)uuDMt$xH)>O4(;UuQVDD-tTEBQ2a7Y?f2J$8}?h< zqgP3&TvdN{TWyAFfwRBRk{w=or)QVUNp~$%4QiOUXLF{4!F+ALtLv|CbUNi$;N+2z zJ@4EL8^s&aoPJ9ql#`!dN^ASLcGuqdw(GnS`L`_CdyDJgtK=o-7oDHa5qlJuEkD;+ zYB9^EP6eNk4dF*~>uO4VTFrW5xR&YvZG-vGPU?Tm-5-&#{#U}%zjK#2e|lKB`ZD`* zrVHEN&X-S~`%2bZqoH3ekC$!55hjj=Rkz-JGM%_lPi%pc!Rre~Z6)I18Ljzase!uH)>X#(_lu;Ul`olu=I_0?_5b43`+kabDSs~t-M<=VBa)}_d764t)08gh@B^WC z+<~`t6gXd8!>?`X+#SVxc-GC(U7l)JpWXh%|D#k~cjckoPoA$(TjRSUDr`kVlUI!E zde<}q>1eHt$f)1F%}TZ09CffUlg$I0uXk%4z8|{(mw$y_ZDEZ~O5gfp@7jDKyRM3+8~b~HQFeQBy2;`43GQ`& zcpK7|399(}?bJG;lxeY4>{WjHM-HZ$VmDac_C7k~y7Pjm%Ms?frH4M~PFLC+)x0_Q zY|^6xQ$43`PSo?5=a~1@sNGlOaP&m6izil{KXUf$X`XGbF1Q64=CE+vZWix;`mABw zac+*6br~L#8_ibi-eMUvBcoQ(vUu-`Gv|~qxy+Wa{;*-yMaT7LP0!t6tgV}~@~!>8 zJt12iR=oXn`n9cjh^_^1@NfCl?UKDAH!mq4b?zxl{S`1{^YWvsoa>k0S@{1~`DLZQ zm(Lf;#})Q9@i!PQ(yEzfyp3Nl*vQo~=Bss}tl_GvS2uKeTMoWv`tjg^;iAZ($)%i` zV$%YBH#~1p+PL<^kB95hPN!StFY7(wmfdqwf9-SYU+#9g>a>7qLiD`VvR z!XjC(SKp#VoE2X+tV({Xd7v&#ge!bzc)%;k%4K!_IrGjg*UlH<2o^XzeeV7vQw0)! zM=#Ek-Ndsk>ap&Ytz7H;1DF<1I8wLn!6{S8reAk^JJ^motP%CdTg)YJ^wI<=pPV%U zEZKHvcCrTF4418+qV=nG9slp5!pWDvZddyw<9~wrodlcV6L~|s7(KqV9O3tSxek40 z5)(MGZHdtQkjd|TwGvPAcAeSeccQpX#O(9}j(Jhpl@iU@w03uxJeZsJT`AAHKBaHP zK07Z(GlBH)+v@z=tFu2c$6VLoW~y50S=RgX*_OrEj(+=abH?u|{Z6L)iBoe!uNzh# zT{Zpd)9mP7;y!^LayKR|P!BvR-L0D*G74+n+9`{7 ze9gYxzG%YKKW(fjXIF2kxzo*NbHeNDT$P*ci%b9TwP*xw)V-AyeSNLVgOgj%W+~I^_wuhj`MMhyEq}-@`XWP;W7&+&s&3Ct{atf#TZ4^( z_l`H4IF4(cmYwWlR1|rGgDd=FssCORy{?wkhn`7VujfAbptxGM^->DwqUOz)FE4KP zmJh!4s3}Lwc2$h$uUWrtUhPlaR$=RPA^z6V!jC(T6nB7hZ>@(WDtIkD^C{P5^1>-rvCD(K{kOhQH@$MLcGFX*(2CGyN4K4u zrxc$w`*roNp4Sa2uMXaH&}VhgR^#keTHn7Xj*I!)(MJz7PF$M0He2Q5qD3y|YohXR zetu)Hu=Q1DhmP}Uqnf%4j@|aNT_=?Yno6zWOM75`;Q3)w$FvMqsjfcn!};tUe(auC z9GmLYeLN?2@P60wl?-6ao1n`mf6VQwz`@yDf0oU&E0_};oK|#zxt}Nd`_Fp`-!GqM z-)-G|_tb|QJKD{jFywAAxNr77?8dhoQ;t8uQ?FgEzp8ObPJ%sTTax8A-pAKp{bjkZ zFZ;u~>yQ8L`uCq%@NU5dzF_%(51yPmadqZXVa1Pye4ncljwNqA5bk}5E&Z{EMz2hi z(`IeJ>RD9XUTan-!y-#)JN5|N7WauY_>eJ@b%2pq+11N z+a+zEHI}IcnjUpezIQ}YV2SRw9nZ4k-fi2nP>C_hE_>s_C;!AvPiGc+v^|-)-8kY~ zVMF+lpBlP1Pl+8-XP@4qf6uVv-}OzJ(&@ND;USU6IuSDc`K(Jk z9XibzKSxa$-YL*=a87o~qo3c~11)SKA_@}%!;W5hdCNPqc+I{NbzNt7nZv948$_jJ zJC<7;YwFB8a@6-QRZSJERVQjEhTJ-x zwlS1dEYI=B^{jJi_Lu#4QZC)rEO6#bt2^6PVU^ZRrvL7!24{+FJS|Z4AncNdfA*}x zOI%M@q;-C0kZDeKQQaTI*7>qnA%5em=`|ZS>F3OOs>5Kq__6I>(E~Mg|K3>oafUPh zJ^#_^@UGtdYgJMsK6swtntI@a7()zeT7q-mwYe?zo`JKs?l?P(YwFt6z_oFyTb)wx zGQIH1H+vQQ?Digk>swg#7D=lSJu(3Hgo%`*V+ByESF5i9mwfws8 zb;a)=ra7*-_2=`oXXeqloB!veFaNGtXIFnuuQcRWMN;tUo@uu-Gi#?u-L3t%r#)_7 zZNTfNwa-3Umc@qq6uahfeM$e)b=a*rYhm1H9$`rdwuFOxaR)Q|ZEpN&JO4SMc%D9Q z)IozO31uI){k~D~^M>2&jN3(3BJBRLSM9{l8*v|fYxdH$#&4zMMsto0@hjNlz2kb$ z#BJKW+wR@9CF;ymrl0U*XMLJ>@MKU?M(mNCg_`bqGu%Y^d3BTR{yK>BvVZy3Z4_<6 zao?BQch)+amPPl(r-e;E+mK+eQ2Wmgm2-O^9EkMZb>dm=qnFa5VduXVvF&dch~8`* zU*XSsFKcUF$b}r|2KC)PTzIH1t=-3xlF;}K3)zb`qym`2AW|G=GmcCFYubsDUzqt5n zdVjOTgd3`S=8-EcB3!#CPJG>%cOhg#wp7tViKd8KPwv#Mwr%a`l(t$M6B;9aQfh9B zcj#X!@vVnk8!mVl`7RIYH%xo+E;j0a$-XNg53S6+UT^YWx^4HBZ5NcoSl&6viT`1V zoBCwyi_fclO=fF+Sz91Fkv%Hs-8l5C@h$mmb&P_vBtB#H??0?=u5txD|hDXnZpSe8ZYVeoEB`2JNebQ zc;TFrGdQNN?p3s7FwPX7=w!7;x8{uEfh^@m_hy&&3+&V6$rf7nGh^EMOg7_<&79?L zU(DvU%YUnK$wB|js?z4P?aeQK=g4h~-n8^Yb4A2m-oJ@+A7AD^YLSmmCAwwTSF;b*&|TxJHYnfTTE!k&3nEqv#`cJU4wyzSpcJGw1KmxFWM6+(UkzY>jnIR$g?o`R4-+V$%D?40@kxZuq$o3{&wmq3@n!fn%{|BqCFF8~o_C0D^Kl}M>y>s*! z{seU@9rI0kH=*s!sp!a+Wvg~SG-%#-s8?ToOTpW+%iO1B(rXz#3Y${bzK?im>drsw z+KPjx*Zw@Yk7=e$SMj9y?e|T+45T}neNq-!ch0E&awe1OgOakK-x2?{G7k@2%HMH_ zB|_n@#98Tsmu`OiVi9*F#_VPI5#hhng2Vg7|5jdGb}~lk=q(+c>Fm$n`<>_O_xn~~ z@-^nHIjh(|z0U5d)|1x1IDJ+Jnp!iGhU& zpXRMqrlt;yyseg}8qHN-s`kuP|NJ@q_`64WFGTj0TyYX`>;AN?+tra}uhQdP>My65 z&v`O^y8S%)y;Yo7Ht8$;Tk+?FLfQ;TftuIv{}fc%*w|ZISA6}%emIW*Ug>T$nukVGu37vWq?T(s0lKWVB;$?y5i!}a{bW;P@(AbWc z=eys&vD#uKza@J|@w!mH312(+9x9YGZ{cLvV*YE_6T_3*izGR&JlHmuZO*E#st;M^ z#CT*f({0S<`dHtDs4EH{B4WTjordF^K29S@r9vu<11F<7EOf- zob!y+?@#Nk)tN6Jbo0P`H|w?-IfjpKW*?oV-G0(_#l0%_TIqtnQg@Pezx(S{`fF~+ z<*8HK50{>1Vv_o*A-$`^{jvO-)l)L+{0q+fTe?1E{e~r_|Nkji9oqi)G@B7uT*Q$~ zxgCn{MC(JRhsR!ykqmylXLHkjHSeVzR$(3Ml9y>pEj-Bb{f1LU#SA;e#cTT(2N#GO zb!rHzaJ7t9YS|%p+o1j(*F#f<^zh3J|8M)L%s>47YU`dJtN({I%Bp{qzrR0sgG)Ql zK9@DsiIx(&n&J-q5x1+XcK^%VzJK@T&7VIfG%nr!=$YWttsch<=3Yo!W*E*m@!z(? zrwyNP(#Sn?cIke_gKI_^4VWFYm0$;K*?mA6Rg*H7(?}M^FFd= zbu6nWsEIk5c<|B2#XeKsFqvLS@P6=c+tr668!V2TJmQ*l?rcQP$#T3q(f?at zsW1qv?VdYrlHA@S`}K8HYjjQ4s!Y6o>G;~Jh3n5>_264!R{m^CSih3;(Q{chL|z{V zigcUhe)!?f!uY)xX31-RH8W*2Js})7zxGz}f6jG!E0@HbydJ4n^R0%tb=g{-d5<1d z1zvNUaNBo%*UUS0Q5EZTbu1Jb#E%G0yV!ls-G(jyY|w{n4yS}7ryElg&acsB{{H{| z#RT{Jb$4V_9sW#L5ng-Sw()_x0mG$`*L{mRTuV3nm5x$u*Sx^fwC%<71&<6`3j1of znjG&3E2XH(1s*k7DPl79g1N*W-MAU5H?|#pI*Y0GW?65pPqLTZD)zg4 z(pp}(`(2ewJxU_HrwOx!x!%8__xNQl&&mXWy%S4gyGnQHZYbNbXWz3^^VMT&Cmjyg zsZ@AXcQN#Sjk|WYqtZ)`2z`gO(JYtcuD{8v<`%g4GB)7i%|}*wLAw?|^PN9uQ7S`6 z0Mqy7xygSve{Fm5A;hsELLuu}qQ^=3xBK@_Xt}y-T?rg;qHnlF6*s{~#bXjw& zM*QDNTMJLTxW=-mY37pHh~VIuREZ_(mg3v=!?`X^D2n>?=UR=^)hfodH@@zwuvy}( zR_MF?&79~**SpV6<2<&;d`Hg)vzgc1-UxIWhu>PUw))nsJzKwDkE*;^zRv6a4bi3f zA!~EK%wc?yDDZYSgI@UgIPw3k#*I(kT|Q94`0kYa%c5nzmUB<1yI$P>Bk@L!M@dxl zuI@zRCjtC3yW&3U_fPx1Xy;$189P&FHVPd#C{5q&x^60yYR{biA;q-^`-Gp$yquLY z=j-22flF;BpMTtuV^-R{?7G5C+j}1r^LW^=W(tbOoOj-Cd*JG$_OIK-BeTykePBH{ z&nwM!ds^s>i%Vy&|6?k8acX)*(u+0s@7-Z>J)ZDTd&#K`X4MT5XOEk=FF*Y4dgY$v zvz^VKdHg4Pu+@v7E@ZHne{bs!y|(Ae-Q(xq?7zS5kh+6s?#3cBw&w=XdjzF+yswD$ zSRcO9dJPbof9mA7vnLJ9r!O7Sh=q~r}%bIWNBtn)Lt<2f(@i<6O}nm3e46>RR%gfN(;Xk!K1ZEg$dR>KI#JO5$f9?zFL7!u zXIuRE^oiY567v5&iU0Q1dd-dfxksbc#&0}%Vg83r1yNJi@IEi|Y@T0nqhfAt&eIpO zCx^cL_n|;DURe5R%NsM^TXvJ@?(~1| z|Ls>}*_~{Lwu8S_76mfcsk#Q(bsl-Cs+i{;_WS+n4_#}sB83yLoiw>{Ija_1bQ`gdunS8p@9t~|O`;_6}+m2xkGedg`a zZ=&MOIZocc=KR)O@$iOM$`NsL?z^t-mt5Pa*KfwU(de4aKi#8o8?ui(@ZP&FbDZ5w z>H9pho{byq_e@@petdNePYHj1R!GKqXO#`74uv0Mf1`cgZl=b9W^H>LuQ!i2%}$!; zcmMJolhC=XM;E5P&V0z(=6~#if`A=m- zGLm;Q1_iz~%9Agex@A`Pdv}qfS#=*4#Au!pli@zM?!L+DXV)H|tvwJTW)Y;Mu&@57 z{Ux8;sSVnRpK646KIslDnroKxJ-29m@YRD)GL!yRC2hFTDWUqKHeK=B0Wq1y59Z0< zE@N@>@&5Rts`$d;qhgipR};?0?FdrL7MtxD;qYvh)1#ziQehK!u|=wN9}3?p)HU7s zy0O*co|pW}te$CwH(yDG^wp+3o>e27JyBKQ;cqwb?mh9*tQ*xc?l4~75aDUp(r@_w zkk!wQX9-)Gu7_Vj>k=^Yij78}H0Iw%kSj+AN#B>vXr~+25MBbIsii5$meXr)}+wy|cL4@7IEh z-Ba!6)*oQoP6)i5B+c((vG1awNslf$Ci$`!A9^!Eri)iTXVs6o%RRXr{r%3L@~F3|?pO@~k`1L~de}(@chXgqehUfQY>l`@Acy`yN*FmgyI))0B7ra)ibzR$Q*0n?@ zO7N1-p5zCsw4U|!99^+US9jN=iG|U{a@%)KXn4xb7x&gcWNPosXMa2_f8O}AYSxk! zCsR8(pL*-}IW5_J&1h#0kNAq*19k5N7cabUdMU$<2c?}EN&d?W41aCQykI=PUp%~7 zuxoPQ#%VFz_N-61a^#D+Elb3Vg7>bLx~6~E1yk<)!MBAHF>)|HI2y3;y^ ztek6p-R$`@U99@!`*U1%4>mCF{CNFQxaYy9h1^GaUw+f}nq>Uex3%nQ!Az-3ncht) zy!$Rz%#Y}}8)xBpBzea6h7GM5lcRED+z#hm{=Mab2G3Ex3v*)2B=b56(?8USaIS+-Jg)v ze^&h#S-3;K-yv*W&h`|Z$M?ggaH=mm__xVB(m3w$rdvw3LdJ&SUs7h8uRm?UWi^H6 zW}NGxR^tU93c{|`esDT`;?>9Fy7AUBlYFbMzuMY7)qB#@SA{X!o%c9nlZDhalvJob zm=vgE8d%{w>(RWf=tspoml%^)2WFTmWU&2Q6_&Ezb@re2SMIEyUQ~aw{*Trwj!z4I zrfv%iIk7l${~WnTD}44}4-1-jEI_sMf#kM=%geSkvVO1M@=C+MtiW>Pn@KfiBHqPM zkaF$+KJ!n!U(z=B8O8Oy&-Vtnt#Ebu`O0mb%+`K|ZINbyFL_oKtmC`BmEp&#;N(Xy z_K9omnUg&&y0mv!&VRSJ@+VEhH*6`8DqHKcL-WRbZ=c@zg8g#g({eJj4H6>`2)>kz z(PrM~Qp~*gPSGMZoxZxj^$V7M-|lLC%<)`T8kgq$zs*T)9VJZnIk&bND*ep!{T8cu zXTMqGUfx@*0;{7!DxE*_O{^8p{btG7{!mq-)pgshm43(kE*CrI-Yj`^elqLh#hY_C z3QF!j%-JDb?zz@5=<}gte@x#<{h4ubuA}S=Ga2PJ9-D5U|*#ZOd;wc)J{m<}Zy~7MR)x4wkyDF`o-&rzYAgSa9!6f(n~`pSiVA)WwJG zhc910!lNPB5bAYlf&Q#oVU`&g5yh#xvH;7pd7| z+az;Cl^eV^wK-qEX8U{s+xAQHcRmLn@zj4e&ur#`o1X-l*-kKM-g|AkQ(&n~hSj&z z*3EtAZ)fLUYF?GArEqBK-%UGyZ&|~= zHutx|Gv6)$A3y8e^4H6MyBl&EzVfdZd7dkg!KA)oVlki63ZV~cOZlHlXQll$4Y{c1 zUA0%^a^c5=u5ax$7VO=+W`eZz*RQ{RJUP)i{onoD&0#aX99ElPxwoq1*WHgtZ@!$p zI9NRV&_lhXOTSL`gz0bFUY}+$Q~!$19g)*qrp=W;;iqRLH7|}9+?RH5Zv33TA0EHI z@oz)ZieJ0U{#(iX{de-@`)d}jXP(o$QSKHNer)NY#(DEHk0;H2EzS47#n&MyeGbbC zeW~=5^_j~%CVEL)OfR-FO0N;!BCENRby9BD={b-3R?M@}&9jteQ{SMj5u*Co?a`qJ z3mf*-S?ufKJI7~R8RzvtX7+na*3vC=l<$5%6`EmE5_BYVrY38uqvQmcjX{$S1ck7E z`Bb=yVfBJy?KD*@HQ@_;Q{G%~-5MXZ=ak&RD2J}%wxb~tU)#5AS=f@Gyt}IMeC@7% z>{^MR1(GhSPrH^l!7Q=z%`^*#>n*R-{X3%s#1xIY|7-qL4LCfn!n0`!OJa&tns&s& z?;C$4i(I+8|L2wcC%2`2-_?El(DAOZ+i;t?%Zo=U-*Zvjm2AJJr66@GqIK zu=A+m5B+6%Wn$YE))gI_8vg!c#PQn(rcV;@T`IosDN^iUo>cRE<=ZLS^yLpSdzO1V z`*+P;ibG}V2jw+Pr^72QCoV3SQ*0B?KS@EA$yQ%`)>mn7_UXK@d)7!Z*K>X5co16< zarVMto`sRNHy5}3F1>O0<7~6hrclE@}w;x_Sy8iX5 zrTV!`?p>cet+G~q?bm;kD{HS`x_U0mya zy)(97TX^QJqppzKg$MjS!i;GJHRn?OHgB?>aG*`_%jcD^-FKZ7ek$Z>zV(53qV>Aj z{I8#HPO!`CWNDi^`6Rny^;YKe#;|kx;ryGXhu7-Q*Or=orB^_KU+;rdc!1%O8-8zU z0fF-}>7>COkgMw7+k^exIJch1ArAwy&OPKk|z{7p~TE_@L>_%BCkW z93o3w^loY;9GIlhku0~~_Eq)272P)-q;Frh&lTXaiCrQfUl?xc{^sq^4eH18Cf{~T zKA+lS*P}j3MtN^UY(({8o;OzNf}TRoyxBLW2R_x?YqIp|?D_BBn9S~Wzd5(^z3E}6 z2j?n3N6t!WU02^4R8(kXDytS@_E6=1`|J3p@|#R+KC_m#s}|?DZl1sOOmJXaQ{KE) zdgfOTaNJ?!F<*RweamLPBMNJIK1AM@l!}`d>*Dq5Y_`bh6aG6cw8wQvUld{OeeN`A z_xrEG@BOcZ{?t1sc|mBU+YLdX3XhAkS*sq;lli_mRr9Fu#916nS5#ah60c;um0|rV ztmyvpOmcr`ctJq%y3fz&lq}N=Q?+w-&bv3M!WUFi|}C$LxhKvU@E=&P)`lMj1mAG*b`qimm%_-^(>6;3QYB{-{pKr_0_F1Ll z*OP3`2WLMyx?8`UP@>VJbUMFTY#tkrNcnQJf}DR2H7^#0uM1ojYdET%i<#^IZ^ZTG* z-pnlZ<-Gg8|4SFU*y9qekh-kwzU-W=ht^X|Oz%l8d|vwWa+6=nJlT(y4;L6&mAny3 zoEaBWdw9Xh<@*c1;5{0lE^ z=$uke*~+zV;}5P$r{flfU-Ix|Tosn|-(}c2?YPY?yC;ceSg( zug=Ohigyn8GS!}rWDfZE@_E*wiPg_Py?FBF#ifVyOpdlMKcC&y&UEG4;hcGIcggT- zi_cN1+%9lz@`Q}qrJ0X|_ABiEy8a!jgsf8AlB$0T^DkB@ocz9PxoG5(X~$l0Buei7 z`FO*d^YbdqW~>)$sGYp3^qtF3_f`k~mcj>o`TJT8d^hU;zCN$DP1xeihWIUE4_@p1 z|LJaD+P|nM*ed+Rys!EkwLJMrjrG2)8Rus=p=6_jWhe=GotJS@Yw*LY!v(zuEHlmhbjzxgfp%`Ahu;+LJ9N zS)P2bp={Uk?_bv3KYBT2=A+x)!vFsYs|IpTn2@#fikiTM$t-e4-=73e_40jxU~k(_ z-^TQXIrr?>nlFEsl36Mk%bWYBYW_J>^+o@_Ezi!G@haLb$>~#neVX9&75Yzmt(Qq0 z@<|nM*nG<&B~h;+b+1W4*Gl30?Ey!#`Phv%xjXz@I$iSbVJCrqb*7EAce&@kZMpQD zWm%D@U;Oty0tXF0{>)bLsylM`)W4N`wf1wh?tk&)g8la+=g)SDt=?NJtY7))_nVbg zHH`v=%3=?GDR27BUUKJA;mMQz#oeqcazCffxBIjrE~9n##k<+|e*`SpWGF5 z$h=3vZn5FIE7R34vlPTG;=EEh?^+zBgRzSbHUnv+z#MVd;tH6FAh$jV2}Rns;DTv784( z+6AkR4?oT>p45Gx@B4ncLyP0pm)_@NJm#*xMc}AKoWj!PT`x};a^DiGJjkqa`*Tm6 z%(m*nE%iU1ooLcHBJI?BFC}Kyd7YaHl@T?+*i^UQ-u+qn=y|?%mvS@j{_4IvDdNnc zQw)pBH|_iN^W3>}%AXTfubMSKLred|k8Sz)HH^0$dhEZlhCSuQH^=_XXWlxdR_=J0 zAI0_~)$EJsspoT_{HvP$qwUs_e#dF?`RC&bRAg0SMMaKDXR%A8X8BOCv)53b9K^J_~sT zBm^B&Fk2M$*Gv51PEEN~`Nvv2{<&@~Sl=uX{(rHEoJ!cft1}+lyrn6q?IBlj?P{;E zfQG$w{I%#gJFHU5T(+0A*X7vPivLhcVZQB`IgN3Ttla#%v+Jh3Kd;BvenscUW43HT zp0jF;CndM6`+vyk=n?hj9}NE9GKlcCKKZb;({omhWp`ueOdggAU3356W;k)9ZO``D zwA(#vTEjNodDsyart(UE@#@T)v$EHwCrh%<&HOHZOZCCi9eW>NQY|uO>X*`bdM+w+ zVo}@a_002 zV%8j&p6Jrdu4cXD*x7K8gO3Vg+-|u%k%`cEeo@VPJvAv~mt<7(o;x=#rO%RHYqGy? z`ThMT&)&T0Y9D*jj%8EE>$2Ahb}N$OQrc{FT++WS6nXUH;f~)@dUJ$l@Mh;W$7afW z`Q2plS4sB!qQg_(J>T@4@v_VrnasywQ##(&@G+-O-SQ}NQEI?ln={)UZL{SQ5svp! zDq=l9L;q`!_vOpaeOh%+rg}ebd9+{FsQ0M)CZ~WM8IB(f4fk&@;*pkV^myGOD!5hR zML>N=o92UKy(yNzKNxnEM$TWQ9F^8`A%Wq?5x)t$O{T3dYOzju_r5{!>$&8gdS6}J z(vwzAe;_J$_IReB&pwUh1wJ=5Ckyj!HI@^M{aAEx(kVOXc$K_~#S5~YZYU~KUB1Rp zX78is+=3Rtt*5qMz4Os8yxddC*kSqPjBS_hB;I3k(-#qZ`uV){oWBQc|2FO8b6Kdl zhbL^(q0`Rs;m(OKzbn`WSe2|wKfQ0qDrxCS>sHRV+gh_=|$X}1gxRhJs@`L1E(f2R}`>pJ1z?XQO`f6s24tWq?|B4eeg`Y#2Gx0~9|7<-hQ zy;;9P^60GdZdVF6*8ln{C@gtymw$^(Raku2K5q-xE_1chhHD!0WsgZN-sZcLN9Wwm zThGmvPG3(ndiv|hs@I~YFDhNrS!m&7vvJkSshSOmnSqtNeTw(_urF-UYEau3w%23- zt%T&4pEH*K|MPQ~X<2WP(vi*ld7Jy)uWzjsxVBpGg17FMb=o=WTt(NqoJ{)s>yBz* zvZlFG`Co%4-JXfuJKTfP7yVh#8mP52@4D{A&|{^m8^3uuDNNMWSQIL@!#kbdyR9U@d1-G?cE$(`Sb3ZtnjkkJreUAi#3sMJVLRs8P5C+BVnZF+OW^q9)c%NA?W4j4)`C!KT> z64ke5n54?ky4Iy(>DeXz^A_@K5Eq@*TU=+hrzPOH(~6U__hn;iO3iG#wkTSm z+=SzEY_|vO@ja(jU^Mf|&Dlb1H!;ceJh@i29x z^~Fr`%RDGh&7p&ay~uBx}sI2>%@qd}+s^Bg2CU!49v98iPQnv5a*K=QZyk7r#zo16Lc`;+* z$=<_@Pyc;9dGX;FKfZjud35$)@2x3vR!dJL-n4#tQQODo@Rr`|UEh^nPY4l9R1V@^ z;lBL%-92yDgfU0^2WRfk`MlV7r;~P(zhReQ`wQd1Z~YUaPOcD$dhmHi$<*l%`WeR? zj~a0naUNXYJ6$XB!)NC83)-c5&NTAw@b)r2;C-U~+PT`by%l;{%QRUvxM$ybl6>-L z2G=a6K%HmJTNy5?)SWvl_34b>o)(#qEf*d?1^RNhT?>*L z8=M>BUrU{^nQ_2-bF*X4_hs7Qb&CU~FHfzL+?8Ib+AN-wf9Ltv`z8~jFRU?}VRJ;_ z>#S+pPc1nlzWUjR30I@9+x+sp%`v67_@l`pEr%b+a>Ur84z#5?YphPm4w%7W<@Qxz zM&g#R0D%`0dk;!Qh(;Cc{n_?#&Q0%RQHPm-y{!z2D{q_${5VatUSmU1rUB=N7}*5^ z_wDx0ONtK=PEy%(V_`zqx3wQq+g(o9oSGL>`fPrB>m2iGo2=!y_iWy=(9Y_j>6a;j zyn7Eis(<>iy8DNg-?I5{-ts(t{nX^2@ctjKPEOuC_q^TxmoD}B59(UCWv&b6Ja+mo z&#~*8yMD4=>R#t~#_{4I^{pBlu{&L^*WamCT=QlYuj0mloG(UmFN=P04LNqbFKj1k z_@PTZ)!~}r!7>YiOr7I4KH2Q?X{E~4qsH9k2Y-L~!6OzNzG3p#^;d-Nlmz}zk}SH< zAtuqBdDJdfbn`3AAAkQHNwa!zf9JUg({$eGs4PF=xG&o&F*R-@ziCI@tft++k7}!R z+|~d0#P0Ux^WXOUxSVj{F>`Cl+t=&TT#i3!P;MP@^VVR!5Q29@MYw4-B z=J|yi)*iXZy=!OQHFf(x3qFbbUG#XLqMwQ4GqyivSuq8#z8>3usnSb%%f=v8LFLD) zwnA#hrtCaX@X@97>-V^R+xYx)r_I`@izJHvho-mu7X80JO-4p$;d!ys7j@S1 zR7eZ|X*#RfxtO=FUg+X_$oXrluAVz~^X}d1PhTR-7bHm;b6mR^bTxHJXGC9mM9B85 zyLjc=-o<(5*E`v--_dQqbaHrJTm7M!xR)v!@w$sPayTx!zkTPnPHCIWb7}AWkA$2! zw5tF3?YbAi+O=CQeSc#$OVLbH`r_pc=QM9yh6tQ6>icN@A9K5VuTtDEt=CL!dz-J*GN~hod1`dURQRo?w3Zb z>YXDJF2_Yx1id&a*`?3BdoDfG+R^%8o_;KAx4x3wlWE&cY}N(s?vD?8dtl}*X7?#w zte2X6O11=fGeo`kHVU9x~M4BdgYl# zM!Vd0k1;Z_S$0tPlU7E%$Kr0)7vC1?wRP$5+B5G@;f9*Kj;Bu^HeSDP%^IQlJm0;O zCah_jlKY~KP@)FgRN`T_Mq@}hxc*tM){wbFSM_J@3)Q*w{H6A+{uysFm(#U zX+y1}f~&Uco=%?A6?WjP`m?i7YZ@nfF4Sx|P_uyT;_aOY>s2pIbk@&3UpYH-Y18Fs z*$p>bj#RAu`>5{hL+0?uCf&?>8+~>P+$nZn->;|Fr?=tWZ_$uaH|Yr_Y|iYPJ*KB6 zdMCDXt=uFyvpjT?)lr=@X0Cn3Mc;mFz7yMK6{gbFdm`@a(i?4et}k<7JM_}QIauiH zOuxClP0y=agSl!u!xw2x?=E@dv*(K?XYIr}pAWg6x#wc+&?08$S^edkA)m%nt2C~f zGdkN2_6V8jHpS0qw|c_6A^vPl!*qRvqud9~m*10?QGMRL{>aqc7|lqV ze4%vfzf^_J|C`$$S?(3j2{tv>n%Q#VWAmxLWl_qiJMOHm-Y&Se{JUMs`+`k}?oKud z{%C(=-isIAZId*2Z#pb9^H!hx zVd1@`MKN&SgT3*$7l~|~!m#6ob$csY@4R`l5?;=;&o=pZW$VYVTR*1yzTqwVw&?8U zhu`L9FT8m~&b+aGmA<{}e|y!>^B13$FDqZ!xZmyfaeEhk_A56sYnGqY+;L`t^uqVj zxi+h}7CJ>eV7{wn-K<_6`0LGQ|Fw#_&HL9!sj2SoY?-r|{ZY~xDT(c$)uvr~rL5WE zV6A#BdxxS$e9qTJhB6t8zP*TFY<~E$@~n$|yl2-h`fk^p4{sk%WVyM&^Z60!iAFJZ4&B$= zCtdkJ#k77w?Vp?t-8L34cC5dD;r?#_-Gcj8y?R|1XU=!-+&vwkgYNMBJemqq>ryJ<4 zdw<|Y^(HOZ&&O}fZA&+IUmfuH-Gim!I-w;3Ve5<7ey_UNW;)SEM?iPW&57}GvhU*M z9a0U$M>o-w~8K~sXqVv=+V8;_@)Hy;(p&hZ;{R?nXP3CzvisfNt*RL zDKqBVnnW3im8!?D2ux$`*t#adL8!c5;Auj6nT?atu~XknE*!jj>GntOW*zsKDVwIX zZkE`X9yovPyI|c9vz9Az?a4THBKP3y&%uX|B4LE-b^twy%YGo9ka+o}}=D z)}2ca%~=$Zllh?gmeQSz96D05Z@2BXbD3`TaN@?!r5igeJ1=}(d1fuEhD2v;(ER@G zE@HmzmnJ(f8|-{DZ*uFBm@i80eaBtze_<SFQ_}prI&Pc7Ng(A zp4b?x%6t{alJIz=Jvxu>?PwS4sy$a=~PvO#N?WYkT6PW?%z=5cXoZU{)*=e<*hWv?FLWU0P3XM1`0iC=SC?P&OHq%QnzBtJ{B_vpON?t) z?Op10=2?A7N7l5H%!|XX#@Cc>Jowe6>4@s>l5=mrKU5Qrn3}$$>wWB+$qRD&lGbPC zx`^J^D|*uR{8am<-A5M3R(xK>UViEF`x%~RXTJU+>c455R-hfKVCWZv3R1SQ?@|R4#`DACYR);i^~i7*Je5|J|$Uuf1>Svi{HNaEoV0E zTDY-f-E-!(d*$Y;gsXC^yy%;Cn^ES*JL#G&!nQyET%LRWY54E&KQGI&@-5jvZ(qf( z-%Jwx*7{{H{?C7<-f*a5-}j&CGAzu$W(2AKHG2JgMe`A-3+kc8Dtlh7=x*!$UGyd^ zYO2r04L26gZri8J`rV>(_b0y2o|3I>k&pIo%l4jk>%o`&yIQsWr>_h5vbeHjyZ*1s ztxwu{DB6oRaI^X9+8fuxTPw`|eEU6>>(%F-H5n@}TsL~^R-7-MSS^2P&V0e(4YzmJ zZLnO)vSp`JJ)2&V`Mf=^JhtiQulNyJpwz{|RW5n|+owH&Ws9`~k}u5vcJTR0*ojaPvUvLTK9b2KKGW|%u)V#o{b3_`Cg$i7naqZTM4cj_f zEZN1Z`mXKvw>X?XjcZ$ug!db-vY50(#}CUL&hirT$gXWIt(x~{hfgExXBpA27jNdd zd^#Z%RJ(7E`MTZmPh)5OUv6EqH}+`de3kW~_t&g)5|m2USvFs#VaIx}Zo9k6$?Z=< z_!*Yn>)tVKO?Qo0=oQI z@B5w%NRUX4jOA{78e#iF{gp@hX_4w}u1=3;Rd3SUu+?i#ocVXos69MAc^32UEEk@( z>MX~BFX~6s4KKafk^Kq|2-hQ3sY2hCnUSG9T zwziz{?H%9A^_SPg@vd1p<_g28Y43lj&kq4Z%B{*=eKemgbP*>G-x$V15jr#S*$$=^=A zXfj_T!p~@aA$Zl(X))msezd0AaPcX=`Ny8Ve0~4^vYEdQ9hsiWwtJZbZ!D|E^LJrC zs(E**e*2>Lr$O?>AI_YoOqP*3m8YF~?>cTWezYe>FXl}G!~FFhB6o-e@RaWqxTa#* zA9{G*9mWkh8Mn5^G4wXf$zB_s>b~ii|jh(|KwfJc&P*pH7l1e)mJmLv1pHqq3Eu_~C1p{w8l< ze?Rk3>*oydfQwJ|NhOGdwcQLrRr5(pR-%H z1}vA-?&N!M{icTElpP6@V)Lg>I=B3$f70BN7Kws6_PZLU+_<00_V=al)~cDT>krO5 zKC57nnaInoRL+E51(*DTeyBb99X{)#&-2LQE28<2Kg(`CGF576l*?~%cOL%ZmM0_< zSN=ZSWE$ppp51B>|2-DN%mfBmBk?-6Nz&3c1d3%rcMw~7nzfUAjkxnS6@fZcL;i(VlNPsq5Ekzg z4N5FcSd=ar(x{Or_0h*bTRY`q-m|}pXRnoS{w*ZGx6A64{ZS3J7afsWyZt|M*PnTq z$0lIX_na}uW!bw>dx4K14cp~f7Zv`$ovWAR$$w}{^PO1h53WI)p^uDOtp4(?buG90 z%5z`t@VX+Sx#BaXlrvr{4n3K}&}1)EFEfKRy}e-0f!L@S@{=;E*EkAJa+*8kaf0UL zkG^ULw`|F9{Fkc!>%JHB{a-1z0*4y(9?D4g_9^t$?bvgpf1l+odz)Pn*Ys+6{|j*P zeoGMR)jb+>_-pU$quO>JC3Xu0Iv+C_W_DDcYckvNZq4R-?VUz)^N+==O+GV;VYT)5 zUjMCpH>SlIWjVb0b76Vi?=3(6Mt)L?QgvOP#=E9$zv5L`( zm26I%<}Gjw>t@raG!1S(RH0zSI<53lkbdd5ZWXDW{)aEMANt)`t0*-uJ|t#omU!q1 z-(0@r0+al}zb`Ib;Q1QM$=V!rewiQ3?32f4?~z)<(0b&|f*&$w@8)?g%HP!VzUkTH z9Zzmgn}0tbe7bXJl7vxO{PW+_?{8Q<)$@lz^P%K-Thr901wU~4_jTzhmw74faL2uOopfG zbHxM+N5wpge$UJ9oIyWiKj*}`{(R2yUU&cX5^=Tf6R!Cx9TQ&{w8!~rLQK1M`eCO; zQB7kdCmm<;+4}>Ec8Y!!lh`!#&z2)nycw7FhRt0UaNzK%szU2SnntLNLY+K6?B+(bn3Cmnokd;H}6HxqXCUpCtF&*!aLsT*Um`)V(l zwtl}oZd%Q=;zf*_b8XF69t$`%YxZ02Q`WaPnJv07^~IjQ&1#uEGHKH`oqlYPJuCdE z>$kdq>xuOpSLe9b*>XLcUA=ovz2_7r=YXq$3tqiGcl4pe!!tssuCCO2F8V-R^vR~oICW!*&UNMF7$7U&GEcwt!r_5kwx!)!HEBNRC~e=rmFn1 z+mRG<@4;`;tJ5UzcIM|tJTsGF5-z>|J@nm*{kc&dhYy#22y1mOT;-ag7CdW{aPt#| zb0vS-)``uz`hE4?S!cB$#2he}aw*AJ=A5R!Cqdvr?&QAnvEn8yXLeZomhED+yS|KN zN4n0F!#>A^MO0-U#zgBnFI200n@~3YJ#U%)-isWuM%JuC2cF(s- zL9e3=If9)#)ruyrICEc8YewVUsf+uC?3yOotlFR^m9_Sb*u)*DOQKd?by(%=A2BI& zt;R=e%xJOXZ@r-7Ufg77BiiuF&OM>?&zxu#Ib%#J6DQlEuE_ z)4Kjye47;e_?+~-$heO`x3eF%fA{WX!8V^Ctm{`TpJTk6?|261k(vXQ#%8fXXTnsu z+mh#o`AsUi+Me(;Jtl=!T`#sE+GczIlGNN@<0Z8W?zQJP-uoA=aOvgJJPDJ1(sm3| z>un7eeBQ}^;^^h{ErBJQSf(=gIBMP9F3M)F5I2; zaONqM{f%w$7fOZCA76b?MUiRIWwVHTdF;nUbpE>;Jy`uMcJ<^dEX%uANBnXTns!?6 zc(Lx9%Yjc6L@pjmn0TgUYT{%5L(+Tx$lOqRe)4MwYgd3%x$hPg>yDW9tTW7SRG1~- zC`$elwe6hwq8$=F&o~StbS1^A7srYH3e#v2v@+$JQCkxh6YUS?OzTh^Ss_8!Az8e$YU!422r{VXN zgP~k%deMIiHf65QVc61>b$+gUdG)ifqvqQxlBR#_Su$~1`;B!CMH3%5mw3-vawv0w z!&JUZ_S@$(W~p%h?vU#%e`f3}l(TV8=0%pYBewhUPIp)oYJJQN7F!m1An5dhc#Rp= zET(-gpQ?$r&OK~cd9Wk2MA@p=+axMY=KV_+wzHDbo32QfI;-9M&(s}I@^_WypR7{O zE0PYcb$#bP4^vq;+s47=Rn-1Zd!Ow2{A-^4e6N*8<b?tPlWaVY6rTelyNj)H~E zq$|62N1Wo=wL`Nz>DJn-U4_t#ekL}%>b6;(^u}xfj z`{Sl}9x4a_9f`7-JtO19Km(+g|y=ld;r+k@4;tQ_&XHxvd&(^#=YyUoPt9kv;?AiJ9yE*^Z z87F@}Ume|lPQyp*bL}N*iJUK|x<0*heX~eA6sX9AE#I zj}x9N?%j2Q?audm%C*05vhLEeY2Z+7GTG;QtM%LFhuN`f-@pI#u(j?$#4E`qPZRWyIHGSt-B}QXfe~u=n*(K zxmw<8(bSwxN4wN3<3D9e-L^~ezK(<&369{1ua*?vFu#G{gXMl=7dpYMA(TeNf?g9?MVgFBnT z4JoH+l`G9_XBH`S&EnQ7*%q|1q_JO5T=-kMx5|Ak)v`~Xd$J_={C?-${?7T}Pphj- zJd-Rwqzh|y$euU9K<^y)Bd^`(%jbJ6 zDDS#ua7JX;=5-5%3R-qHE6woVwJ780!_C6AVUx;s^RzkkD<96?`GQaD_%GXHSMhZ_ zjy4)3JzcoirZZpmUM)jpf?M&Fz?3EK-lh+ieiMDP-Qd*sFZ~f8#3x^5w{dCrHQ4%X zwZg{<-@GSCiQ6e@-Ix+&p0stE)wZYw{%2WC@~%v@ykpOAqIS(=PbtTF$0)wl%-{CR zi8d;pbLXf~z?_$|huV19*39!uDwBD6_OO%1_NiH4INqLhUgG#(>aPC&)5#t$Vs5gu zXkLEs_|dc<%PnkHelM9b!?bjg*8|2k5Wi+vULBMW=uJxcE*F&|g@6 z)JU|3}!iu>Xo?UBE8gxllLZtDxX z_itaKCKIB~7goYFwWjG++=Q0Z*X(u~b>}LbPqoqQF!_{JwA*%B{k%6h#`h9V9y7e~ z3df^?y_#Gi8r48a!cr&o9EUa`yn6aT-TiFeCNg5Q*s*Y8c8Xo{=XC0IDg2A zd2Tbvzm>DJoab^x$jN{`6F(@PmDiuPc%NEOSJT8xC+99K*?6l~`p%ElD;95Qm1iz% zQ%&|!u3lRI=WYI#H}@}`T5T`>)c1prJLkU}yO}Kav|qHay#M@cXVH^5gZ)#CHy*k5 zY|rcXgTB)hny0Ur@bKC;pLG^if8YIh^ybUii!W2Z-2Hd-3K~vN-bzKJ zP1td7q;t8)8^jF7LR`FjcDl(^n@E<$8fy-J7SS zET6<(^^r1taH9U*^uLpZ??2t=vAK3WOAc%Ajzzl?u6tZM-7ETj_c@zoUur}Txi1dB zHO;qCuHo=RzM!Z(-xj@_zk5>86oYMA+v9#r%DDJ)ru=0?_WjK(EUp=r@38Gu`}pnV zd|ktvHa^)mt3A4pFv=Ot(bG)(Xwh&=w3;_0X5Y7^am&|f>o~q@i4r@dH?u`OD3zm1k>Rq$%QtCu?O67=PXd9=Ij@5-ah?#+k5YFH=(UsQ43;zZkuiVRixO*=~zNG z?q6>DJjZ$4y$B|rY_qqfCSjqzt+l&CTcqVvldehU-{EAwXK^JtX4ctDNqm;Omdq*> zO{*tqS z?pg6F;qSK>k5(`4-uy7Q&&aSlZ1S!A$u(1+M1H&ydiq1?#mJvCqx&Y?dWsnAQ?1)6 zxOJ!Q**9GEOVc72CbsuI_V{X=bHrA>rDS&hFPBT(!`Asa9qd%}>RGW}@=nvAz#9j( zDm|9!a{pxJuGR6J|Eu!Vt6v>Qx#TTpD6M5bnCKL);-~*ky~^9b=zWaNwL?o@*Kvy| zJt`>WJ=W`XxuWj$bExm^Unf;gwdUZ1MK@<2C^?W>+`4+z0-wn2v(u(3aVN6!xvsbSz^JsbR=xSd zqou``p^JW9e>Y*zy=7;N>t|zS5h1$Qpd>Z99W9Adl zjB^HBfs?-7T&G_6YE7?&<<|PH*$S`wr>%*vtk66gtGw0w!;&A>7U~w-5r0JIsD&Ms zD&!Crsy=JDLMmgm@)h5*!sOz$+Q-^HWi45$y}{Rq`?Igems?IAx(R>Rxfn`&_Vq6h znwIcZRq^?XJ$wFq{PSY!-k&$-ai)o|2dZ?PleltFS?TrkXLqLN{kq8Ce*Ey~$(x(Q z_3I7NezQ6Rxv&(^|2e0u_WhR^zspsg?q}*MeXlp~m3P3@s3Y4Hm>1?I?kt(tF7j0B zkyyB>$l*@ymo2(aUmKNgEcfnQ-|TN$a<#~0S>5Bu5~BKM?k>%T?@sPJ%DL)64VRtq z{2v-gj}x@!?$~(bvEg3^4JED#a~6la{UG$}!oiy_UtVmy*}wLM*z;B42gMHG;+QJ@ zRwBlG1{^gs+;yd4 zs(bjAwaX^t&x=s#p25v!!ToI7e8rPu94}6YD!1K`KXWK1d7?JUq2#n5iF_5#)2$V> zH}}Hj`&umO5i6z2vy)tdbXddJlcrajeh(^2&;@9tAN42WM<_N-O4A zo_+qE!2Yl;EAqef`#-R?S@_t*WVPPzh?~DXi;Q)B&okbRTB3BBgGcF5nrM5|jN28R z7o0lw@qA~IaWS(q{4G>&kes==@B7?SE12ee-g>Kc$uz&67o&Kpq-*oM?=AFKcm6K- z^5U7CiuL?;K_^5%Y`f62uxdeDS4vcmW5|qoiA9}{ScTp=-g!E0UB?f`-M1!Zluons zIQi1`O&QbEkDCvOaLqaRWx0#e%lJDX`%+%4l51z#w9t)f)u|U({j?t2n;6eiWKZ3> zcHNsp9$D!%TU%TYCORjJ7+=}rxx}Y8TV{E>=Wgw_^HaWSY$`5oHJY1V%pch5?IAZu za)bF<-6$RRV4({-(^3T9e%2C9EG|y^|73G4ckG2n^&I!+6>e4B@gn`^9i@xYS{bHA zEIq(`@%^QhN-SF9Ps|UU^!e32yY=lBS@X`8veFlV7T?eQRIqaLHd0HyR3m$-+~j8V z6N`CIe{@G*)_48(G=KHpAm^E4Wwy`nzg#iF?7_B^-zPks`o*u(SZe7aAKkD$^*XkN zejA?gc`!3(YW}n|Up{AbjF9wam$`>#O3i-qNn_HjLf!+JZ@CLBdY1>+Pmq?HuJr{z6A~pO$81N5d{tm zu7wUru0k-KLxX(cJ^X!L8Nh^NK!A&5h$Dk)Xs~NgK#;$ir;n>@jAKDTP9`*~x+In) zBD6CwsFZjjbMx{cDVza0_ZAf8m*gks=P;xtX6B@(C}iekmN0|{`6!fvb5K%Ziasm{ zrsWsqCYC7V7b(Egg}dk zqSO?HM1_LHqLR$S9EG&ZoK!T8pwc8WwJcRZBgi!*NC6VVnqaG;WqfK1l0J|R3i69f zbYTUKLSix~ALOK_q^BZ6q&yK)=lFX=tV>iVEX^-TRY=ay%}vZpQ7B3+DJ{xNO@Ssh zkC2c6gl4c$ixV?pvJf{ZfU+5=z%EKnPR%S!O;JcmEJ*|NimV zRC0sFK>jUCO$1fNAP*~m6Fj8WO)XJy40iVP1jmblMo46UtAe8@R23vN0{nwQpdpVU z9^@K~RXo@;$`z(Q5n9hdTmUZWLDha~2_y=^xkVu*GX?CJl+>KeveY7l%o0R}R#23m zl#`mPP@Gy)0t(*J0lKG&fZNUTc7T3`+XofJ_7jot3^m zm}c;CaSX6hNKVWHwL_9J^HQK9#i@x!$r(sqNi8hR1SQ$xj6@KXlbKWmO41X$3QcGaspeQRyO)XMLPAw{dw9rx&%AwgYKbrwkej+kpUVcdi$gvuE z`3jI`L$QuRUOqSzXhIS|QDs3%zCvnVdS+fKI2l2rAvrM*%mWoYAX}4B)Fpz--?YTi z9C)yl<|#l50k}GFZiTA^ zrvgw}nV17gjg<&55n6~eURn%q=%%JXT%1{uky?al z5XcB;M{t-cXn@*0_6pESs3y$*HL+sVNLWkY-(KiUO#Z1KFRGT9%pv%S*wj zc_~n~LUCqZa;id6YI!CkWb@O&o(BhTaY<2XVlGrAsPM5;$jML7%!5^)A>fMEEi)%o z!7sl=!3~@NA%c#OS~e^*KL?zn7$CwfnZ?-(X{9+iphiGq4k(C02^QgUh%!%T#{-@r zq1r>C%_?~P;^_jF0XqT~qp1~{#U;g18NYmm;?m>{P#hOABe>NUL;UD5!K`sH${e zXsL8y_*U(}&{yfeFr(6eVNs<6!f#F=01H+9f2Zl#g4h(NVW`S_E z0|P@f#9Xdw2L_R92L?GPU!&TA!Km7S!KT`Q!L8bXA*$MeA*I@ZA+Oqjp`zM>p}yLI zp{?41p|{$BVM?_F!|ZAYhDFs53@fW07y_yt7&cTpFl?`OVAxmfz;LwMf#FQG1Hg9T;9zJ21Sjc3>#TNlh$H1&6Hys05AAEzK#(j4wzn0+n1EnhM4F`FRYm zo)lP8AtNy_B_|awn3`Bzi4a5Xg29y(=O<^UmMFjrVOY#T%Si?X2GJS^2ALWM2IU$D z2CW(g2E!T$28$X82KyQZ2Dcgq22fH6_J9?z@TiBBB2Z%>oaEA?qSU;S9C(QWb38;E z>iCoz2Zrn#2Zo{=2ZqWT2Zn|k2L`8{{N!vF;UVhB|GLR%UP&Zxpgsh}wJ%U4J$O-lpU_=(A>NM44y1=@&6 zO+k_aIS4}>o>+=AN=v}4Glr1-e1+V^yh??l)U?#1)V$=>Vup~++|(3M_XOENMX70} z#i=O_KKc0t_Vx^ZiMgo?CHeUZIr(|%kYoq(ZGMSDYHmSEB`7?>9j%3Tgks z?JF%#Eh+}50Z`*Vks&xgHx<&@$ShVUE=kNuWe7^m1$7G`ZA+KTVuXLfGxI>n3e@@n zHvuyt9SU%L&VVin3JOrC6w^XvRGAB)xanM z#DZXRJwsDH6NXGv3p3qPJy9XfuUA`fgvH!nISpPnISFDnISXJnIQ*>1`nlpK!(~t4N!)Xd@n5(S26)nWxOQZ0@JjV8K5hEQOg*`)lGN(MABNHd%P-h?YHO0`me zx=}AZGmRlLH!(d`AH>qjDoBTNvkFqv8T24zNks`mNoqxjenAc>8S7<~20+=Qg^Ak%-5|cAPoknYL4;f;KYOxXnIv?Fu)nW!-E-(T11;`Fv zT?Sq*2!j_i<_L-dT-YlykHIZ9iNQCqh{3U-h`~3plEJGqkHM=nhrzKlogp~2fWbex zguySrjKL)}8N(QdLT3h-LT3h#LT3h_LT846LT84MLT84ELT84ULT84ALT84QLT84I zLT84YLT3iw{5*z`(o}}<)D(u0j8X=-qD+S1#1e+!(maL@h0Y9H3Y{5t6go5PDRgEy zQ0UBXq|lk+1Vmp-VkJmxF^CRNP033IvqCaTi@*%GqD+uXaAHYm5tvb$2cj4l7+w@Q zGrTW!X82y{%)nUW%)nLT%ph3g%pg_d%;4@D!Vntb%n!r&Yn!r<%@!r&Vm!rsMh1oosCZ40 zGlL8h149E;yrsyQA%cm4p#v)31LaSE(o>6^8Ky8XFw7`&X1Kt_z%Uo;zJ*YFDU@DS zP45|i3DOPX-q(Rltz{of{&e}HCR@KDP(lR>EnwKk<0W>7QkdmJZ zDvgV?GYbk*QxuZ(^RqKk6~KcLu;KHR{E}qQ_>TfaEvVS%V!);WG%r??n3)5f|3gs? zZSyeXCRXSsrl&HbRup6wr4}xY^f(BMA zVb&`uxTa*5fF?{U^Gk~qKvO|QnZ?<9T%buqoW-znPCj_f1lrIAbq|zPb5gh%Qc}}$ z5=&Bb6w<3Q3m6=Id>DdVgM(3mDcmv0&(qJ{3OZT?8u~6yECUUygFIXeYMFwjETLTt z(8ypusOh1hTCAx6n)wCC4`^Uf*D*acuLP91c)37hSrwHE3=ED*`Jh4LeAs}mh9<}Y zP=p|9&I31u!P78#ka-}`v_i1Ivv;s5cvLpExI~X36s`<1OqU89_)~zZgiLDaF$BQ| z^I<({Xz~Sl2HK*>)C6rW!JGj#w74`$H!n3kza$gVj|L4A<8Tg69WZBsLJ1u6MX6b- z$)Gv&q)PCh8B8Z+TwOyoML{)1Q;z{E>>eEK7~rW;kXob*>jx*6mSm*nm1IJv-=N(X zq|S(6z5<#WP%kMz1#CU2^IlK_3UoaM4bKu#pSiF!vm{j^Co?-W2jrwg$Ur~T0g&E^ zLV02y$jyo15iwBPLcbufxVSvOC`AW48VJgVU>iU#$;pHy7SI4H)P#J{WK|}p002)t zXXfYWX@WXAL^+iqG%qDT89XKq8aIWc4$!oe0%(;%E@+Sfl(v#mLGDXYNUDU+;ps7` zW|Zn7VOYz!Bp)<81fDsBmqSn=Lo<>dl2XtJGAz+Rr4eZpk#=Bd6V)J?O3=I(JYKHj zrs#o}4j_2}HcyJ`TN7B`#O_Ggqp=orSRjie2bR1VKq^k`U;c@h}SOyRY zW80J#<=83Y!e**K(+heGA+A1tt|5A`Uc8H^bBG>zI#3VPej3qO)yNbY%wPsrEJI#? zJb0-DgP(tVK#+e#B!d=%jsgQz5Y)DTG81!hpe#opAE;8*Vo=-^GpOd|r06n$rkub; zFavZD1YG_nm1gFYKpLT-Nu-p_Vo+_9q62O?6pell*5QK>|Bdw$W(+F!&^0I}d z0|rq1gQK4Tv{nT?p~GMesw-?6LXj4b!A6lmjTQ#T>NilKTT}vS;#%qJGoXc?Lo7_h zA=U~a=Mc+)U`4BH8Cymh=vpS~ra9`mS?R^9CWFV3z(HoEnxb0F5RhL~qL5db3!1M5 zkAs4SbgUFqb4nSULB&02wmU5|F9ou^LlxWr17+^`ywsASWN_YQpHvy2l9-p7n&Xg>SW%%@oC+Gs04)jwm7J=e#Vx71#n8$!B{eZc zk&7WHRTr}E20RA_o>PDiDk~~zfSQwvvU)( zQx%Hx^K-cn9)s0DU^76gnJ}fmDHFWX3E9yg`$2|+HL4aXZ2CX*$jTk{EOhK6h6ww9w#l@LPIjLL> z#i==|$tC&)`8hcV8^ES8c&DZoD1e$DpjZJLQj!n$R7rkuF=!gUJh4)diviqE(FfQ6 z3aZ8_5I&d%8!Ylk%}X!IuwuY70qmEWo(Ni02x=36$G&nPdK5s}T}L4q+R=b4&4kUS zf+85apbs)q#*m$wTA-Tcp%S=tNVh9fp*L6g+_EW8(L5kF5PPJn2$%pg=tQb7g^YV*82?dmL zVavR9K?A~&Bn@k-q~xa-gHj+Uqku9NsKpK{nLzG?EdD9hQ*ef?ttm<^F3nBVV+hFr zP56T=dC=@4v@s6qK7i&qKp8AGFTXTBgNuO5{G1d8m`Z5N88&haO5TX>8*FKXDyUZo z?kOdM;;Rz0^sG3w2s)DjUHt%ERH~2)jT{9~ji3kXSSys~rKA=Wmn7z;6e}daqD@^# zApzP)RtLA256%0p1j08M&5$1shJO69sym< z4IW%c%1l>)4F4;l#SCbG`R}(C{xtE-w^PGC@P_pjC^NpzuvpNGnP$&HyC?P>BL+$byD( zz*!PHVW*k`nsJ2z;={?W~V`GHo=`HRoIdz z@Ek5EdE}*5lyEVC-3D3=1e-~N7G)*y!7hmNKyeIOKLkoisVQ9GS@QhS63BoaqGklI z`UJ1{hE%SqIVlRc;F;f48wFg?WK`l{Du?EfNVKEP}@(f7_s2v4!6lhEi zHgm5CPIEiW92tbo9U0Qi9U1b>9T`f^9l_!-Le(e-JVFg48B~pPQc@ID4UBS9G8k0N zb5c?mR84b0>)TCoa#FGxRE<*fR1H#m8B{@hUl`w=LDeJ$OoV_~0U+~jtsNO+tsNO^ ztsNQWT01h_vvy=qw{~RMYwgIOrKJ!As*6C8054WSlcWluq7<}M1U%CQZme)IC@83^ zDujSGKqx4H+3;aORaJ$EwA7*$1qDaYG<D34t7@DA8eIi7+feCZ z1rQ%R=L=zg!is^R$^}G&SLs7K2n;dc;cnGph9U+9PA-Pr#N>?3yi^A8`a1^LfE`E^ z5(c-7GILWwbqu)1C@x7XNmT%)DM={-KLuXh10Ep;&9lcBRahycXO@AYue3m+JTVizHaIQ62(kdEa?yekUGS!_Vk>Yl0GfzLZA61-lRy({;GAOu zE~voe7lcr7_YL9Y0tV+)Xl{h;EVi=iB}WW?A= zFC`}j+{98XRsgTJg|0Q%htQw|3$Lq^Qo(x!Qd7XoP2xfG5)f8#CTNT|9uz_G#So#= zJY*hZfjdkNoK7Gcqacbw)e|y5wW!FbxCGQGfXJt(mc*yzLD&$@i6tdPnMtK3sSrW1 z0cc_%O=XEWrK!d7IjK<1V19gBQEDneEH^b5B*2iAS_GDXm{^=z5)WPT2niO@mIy0Y z{{pFAg0!TN)uk z&C}1tiUG1yP60H#0qWpD_Z=}PGUzcl`*^zgg}^%&kVQYdTwpW6DGanWhnFib)Dx7f z^j%!tJpEj)81!AN81#Mo{k=m2tZwMEdwU zGZ-708z=<1x_kP%GDH|F1UP~m7#<8UFgU=~)rG;w&Bs5S!N=3j)z{y}l_A2#GdKXG z)!)ZO*VQk~GsxeM!7((%!__au6Y3mSKj)yxfDi^h*KoKJaCoB=4<aWM_uF$<7Rwlbsn_Cp$CrOm=3NHQAYA#bjrOO_QA&4or4tI6c{! z;nrklhKG}#8QxBIX81DMnc?STX9kuj&J0{roEe0tI5Wshac0n%;>=(^#hJl=iZg?& zzZ*kvXm9|7qmzG72!pGC5JRvlgP(r@g9|tnI0bn#cm^;y`ZG92hA_A~Gr0ONxH~cg zJ28ZN`uH$}`}>73xcD=;fM`!g$XXJVFqrDhz%tdDfpe-e1OHTK2H~mB3}REA8KkB< zGbl`TW>A^x%%DEinL%r+GlSk#X9mNm&I~3~of*uhIx|>Jb!M=i>dfFW)tSM4sxyPn zRA&a&Vg*k}X9ZAG0me+>VsMS{5AXrWfm=zS_BA*or9fDqIaMxDdJ16(at?C=sRNl2 z?4-b;QIcAe3tA`*nTiKVF{q{}fI4`pDGZ>EDDNCB9U%mCVOr~}$v3|3^T z5UZ*ctza9gYGi6!49W`uuAsyk@9G!E5DME8fxOWNR1F7L=9MH?K$;Ms3G)(U1>hn! zJlHW9v^}`A0NRa$Of+WZ6_=)^WhR5>xD?8vD{Y~ZnxI|^Y={YBAVYYtQM|E{o{NtU zQq>D?J|kox28RbbIv1rTmZZ9tA#I2%$pIP+sE5u&Kn6;eUZ6!{Gu)hD!yG3=az&89o#^G6)nx+H9cqIAp{tDK!mL zgF@%?!EG7XCPF?v`pn6N^Kd5|Rw8k(T$4b3E^ zE-yqCsG$uS5`w7X0?jOeCi=l!W5K=b{L&IsL1_0&A*B?wHeCTS7O$ZR$pfH)0aWFn z;Wv;&ARThhs!vA-PX-l@zYaES*R=Pb(4fdxBgWB}Ay0qu+fZNZ1EA%X49 zgiieWdxHkQN+E2{s0BAq5JkfN&Rv0H@$6kgLF( zPgOy~9i=&->GGUP1yCp>xj_Nk&j*caXXX`vA`q0o5IY$_P398N;uXl=T+ld)V?cl_ z$R6+xUFb?@lv-(oaiFb4q-8IlQ6TVs18~B^IzW~K+Srz-fhbe*^PoF(KuJ6Ws|2VJ zN-aT>0*}9e3ky(I02j7MqjM$spydb{t8_wAb8dP$f!AFRk;FaG$gYuHK&q`0lX<%H3gc9lNo$nLVQ7K$2r^u zLgdCm;rwR|YED4^9-3W*ANnaQaNX(a`^P=~`NVNef0NGwXs zO$BWkEXh}J4h`}F?HY6o2?!4M0W~r~Weyj(xe2lze7t~aF@vMCa|nnJrlAYbKuwm? z5(V(eE5t@3P`4OUKSV(_nZXrwzy@RuW@a&X8kP%b zIsoYe0?^`9E(UNp2HSrRDG#9o>>w+By&<6oEt9|}Cn!|rmx3cRBN24u3wX#s6*MZ8 znx~KgKK2821`Q&ug3L(CEP^^y)xabL)RRZY49F6ofk;T#9=wbe)W2sSXG8$0Nv8l# z5ResHpymIGC0q>dnV{X;;KCD>4#4F&c=jCB--PwQs5Vg+oSj)v0Ll*~nYp0VnYjgt zMVZCI0SVTnzqcX&_gE z>lsbZEVx2aYGpoXS23tK2X97($T5Ic+A3fv-$A>@K&?bj3GbO#TvAk;Tv801)r6F7 zpd$ppwM9O}Hc+Jo%i^FxY4Dj8p!}4aoQh@e2tGOmTHggK7(k6|P)od2HJKqCbUH{* zC1`9a7qsp$MFCXCKvuUgpq4&5sws&2A3RoAP?QQ;SZQQrt_v?0KrstCUJ1T-4`eu` zpn{fonfZC3H6N*+V3a%AnR(YGN)IgFEy{3UI~+uagHQJ4iDIluAN^;F$#)Qc#D1 zw!}kP7a(!ad>_vwM~3&492urhhTymh;>ch;)sf*h8n&3`$Z&OLBLfT@%ynb{;r>OA45vWs#f}UHiyavzE_H-16oE8NA=Q;5185kC0n)Dk zor01J+WiPGOTl$}0H}vs4Bo$<0x5<|K>IhdQxRn@sAd7}HH9B104jNr(hO2!2Gxq- zcxA}ThfXvzK-!hysK{4H1RXR0t_VPFKghWq;D&}G?1%yIO3-4^W>8Q?qL5guP*9Xw zmYH8#tNs0-wv8pzBTC`E%}z!=Fz*s>Ss zR46IU%S+7xwH`nr4j$M6O}sn%`}w&#hd{JL!WryilyyfKA_|~&Rl1I#WlFqUkjPVj zngm}K2JH}ns$5W~5he|`9qcfDLp=k~&NLSGmLTFt3%s0ZGEfavmpL?QVPG!_TawS~ACAVX&$MU{~L9HfoR;0m5Rw1UwJh6V<@pnh&~_6B2ab6}XmX2q;QS&rJla z>;lsYdHK4@pk43q`7JBxJeQS%mcAA*7tXd3q;>+G;{s}1TQNYEmqF@D$PQIlj6-BV z6)bpG4Z?*eR8TDjHJJ241TVNM$EE}(ZK!9!V5nyZ8Uj@O#@89D~fH2AVO-C)q+GoY~&UM`S$XkIRK!5oSVMw=hW zJFqsb0WTLQKtW6WK50uic&@C@7*9D~}-O{2Q@XEK;6kg~G zR$eZwo1X>gbYhHqymZ11T3J#bQc)>47 z4m1gkMINRVEFAJOBKK*HeBJn+CINIwH;3N;>TYP$h!}Yh0h@=FbMOR49 zNlgSz%PJHX8mc)d zxy71D%gUh50##$f=s4S0TP4s`LUf!`tP%rE2qK~b+AENkoXP+>SEHn;G?k$!H8Cfb zA-^E8ur!sSFu#C7hXK?`028{Ic_j>qIqCUDnI##y48AU=y2YT=Xnb8vLAzQj7#LIy z%s{JximgDwTnueEf!S871{M_%VJpxwd2pkKLA4mvc0jai6d+Cq4Hy-HA`iTS6tp%a zF(((w&dbkBPKB~di!!0CWMtvIWLuDJItqpP1yFfdLl?}Yp0()4>L@@$4rYyx0z9}N zLg2mjNNY{=^A(D7^2_xUd_ad!!e*|)%|rd-)MR*L8MJaCBUK?Mu^2SUt5BSpoS&Cc z3{An1F?7h7d_hq@bY=n6eFGKk3Z;4Ak|Q%O9h{9wPz{?z0yU(;r>JFuj$%xf7E8h0MCEn73@lCzEi6t9Gg+J% z9v`~6@D;61Keiv7`i^5PVUam;l@U~t{%F^y1`yPUb^lf9znXGnf-8M(Am%W z8Tq-X`bGJ9`YE6z-t<#alQI+Y^r2^?z-V1#Jrg}sJtG4HGXq0Ib3H?S(AJ)m_>{~d z{oSDf6%=h13_vQ$!!;K`rvO9rzPZE9aN!a&1II;#n896UhM3FD3@%7w z9`~3TW?W`wh`5AM7jci7Va*k0h7=^R6Ze=Ic3eTIf!Kl|6|OQf=v-xHu(`_2;B%Fk zA?7MGL%~&MhK8%m40EnBGpxAE%&_MwGsBsy%nWy~GBbR*%FMuXjhR8=8Z(2zHD(5f zYs?H0*O(b{t}!#zTw`YFxyH;e=NdD^nrqAqJFYP^oVdo!aN`;?!;@>w3}3D>Gl*Pg zW{|ng%%E|dnZf2dGeg96gxd&y&mt}`=ixz5aR;5swI ziR;V^SFSTNJh;xx@a8%*!w)3AEH{`LL~bxMsN7&?FuB3Z;BteRA>sxzL&^nPJHdW`+$nm>KrmU}iXRgPGyV4Q7T1H<%gT++b$-af6wGt-8L&8mFhK!rc3} zX6U%d%rN05GsB#l%nU1TGBa$s$;@!zCNsmCo6HP1ZZb1Gxyj7%;U+V~pPS4K9JiPm zL~b!N$lPLPP`Sm-U~r3>!R8h-gU2mqhLBs#3^BKu88U7$GnCw7W@xy@%+Pa-nPJ8) zW`-rVm>D+QVrJNLi<#lXEoO!*x0o3o++t>UbBmeb%PnRGhTDknWlF>c21iF43W}_}h49T)E=n3l}0}a7)6`3W@ z`6;O(;7$aC6-W#;Apz>PF)%PVgZQA{CAg`?z~Bqw`{t*V=A?pDL2YJW$O4IjEQKET z2P*ZOKw`lqDX_p;3gU-kCTBZ?j%ZgC>4AhCOEJe7+RTvQ$c4R2PBqcfc&zZDLAzR95DYoHU+ydP6RD;O{XXd5DWI%zy5D!}LPz+MU#t;wQzy}gm zW{6KuElCES?XSfUpIMw(Qc}slz+lc0pPQYM333*L6+=8|eK3O^LwrGLNormh11Jr~ zgF1T*t_<IA-)teo(Hlok0BnkzBm=c zR%eI@Sq|Dxl~|Ns%wWI}AD^2PpIllLpPN|0z+l4=A72n3p9)E$3?TbK{4|Jd3=9Db z@gU3N6AKC;_Zl!TFyu4DCl(i{7L_nCFqAUHC#9xm=0WfjKJ}7DGGlM@< zdM-Tfn7~_sz}zCHT=1qhkoq#F+|=CU3~*X02eU!3&cILsW*2~x6GJ74ots|C91IF=9|lknPyh}KU+`KI1_nRKeqYG? z5e86Q0-XS5U|m>Gk``rlFJwv(in1+8x(o);Fh2uBCYS~t)X2b)#ZU~{Xa;ph4g=f@1_n?+V}P-@YmlF-4|J;n z0|SG|1!j^l=;X|z67XgR28|2MqZk?n$l+phftexP)6drzyuy`%A>aZt%`sx(EGTu3 IVq!x80A8Q-q5uE@ diff --git a/pkgs/stdenv/mingw/pkgs/default.nix b/pkgs/stdenv/mingw/pkgs/default.nix deleted file mode 100644 index 5add5b6546e..00000000000 --- a/pkgs/stdenv/mingw/pkgs/default.nix +++ /dev/null @@ -1,157 +0,0 @@ -/** - * MinGW packages. - */ -rec { - - /** - * Curl, binary - */ - curl = {stdenv} : - stdenv.mkDerivation { - name = "curl-7.15.4"; - exename = "curl.exe"; - builder = ./single-exe-builder.sh; - src = ./curl.exe; - }; - - /** - * Make. Binary. - */ - make = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingw-make-3.81"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/mingw32-make-3.81-1.tar.gz; - md5 = "74c2f44ecc699b318edeb07d838feae5"; - }; - }; - - /** - * Tar - */ - tar = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingw-tar"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/tar-1.22-1-msys-1.0.11-bin.tar.gz; - sha256 = "17rbv159g56q3bp8rh5vzv8hw8clxs7vk731cgqg0vy1fzls6yfq"; - }; - }; - - /** - * GCC. Binary - */ - gccFull = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "gcc-full-4.4.0-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/gcc-full-4.4.0-mingw32-bin-2.tar.gz; - sha256= "6c5a125591837817c940f4c66140cd7393b3f5837dd738c7ed315157e6270a60"; - }; - }; - - /** - * binutils. Binary. - */ - binutils = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "binutils-2.19.1-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/GNU%20Binutils/Current%20Release_%20GNU%20binutils-2.19.1/binutils-2.19.1-mingw32-bin.tar.gz; - sha256 = "037vh2n9iv2vccvplk48vd3al91p7yhc73p5nkfsrb6sg977shj2"; - }; - }; - - mingwRuntimeBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingwrt-3.16"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-dev.tar.gz; - sha256 = "1xqpp7lvsj88grs6jlk0fnlkvis2y4avcqrpwsaxxrpjlg5bwzci"; - }; - }; - - mingwRuntimeSrc = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "mingwrt-3.16-mingw32"; - builder = ./src-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-src.tar.gz; - sha256 = "0rljw3v94z9wzfa63b7lvyprms5l5jgf11lws8vm8z7x7q7h1k38"; - }; - }; - - w32apiBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "w32api-3.13-mingw32"; - builder = ./bin-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-dev.tar.gz; - sha256 = "19jm2hdym5ixi9b874xmmilixlpxvfdpi5y3bx0bs88fdah03gvx"; - }; - }; - - w32apiSrc = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "w32api-3.13-mingw32"; - builder = ./src-builder.sh; - src = - fetchurl { - url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-src.tar.gz; - sha256 = "1i1gpwilfc21s3yr4sx39i0w4g7lbij427wwxa34gjfgz0awdkh2"; - }; - }; - - /** - * We need a binary pkg-config to bootstrap the compilation of - * glib and pkg-config: pkg-config needs glib, glib needs pkg-config. - * - * This tarball contains pkg-config and all its dependencies. Once we - * have bootstrapped pkg-config we really need to use a statically linked - * pkg-config (and provide this .exe at the web: it is really missing - * on the web). - */ - pkgconfigBin = {stdenv, fetchurl} : - stdenv.mkDerivation { - name = "pkgconfig-0.23"; - builder = ./pkgconfig-builder.sh; - setupHook = ../../../development/tools/misc/pkgconfig/setup-hook.sh; - src = - fetchurl { - url = ftp://ftp.strategoxt.org/pub/mingw/pkg-config-0.23.tar.gz; - sha256 = "1vab3rdnw16nhma1bln41bbrn6phbpcv9wiz79map8y5znaiv6mq"; - }; - }; - - replace = {stdenv, fetchurl} : - import ../../../tools/text/replace { - inherit fetchurl stdenv; - }; - - /* - pkgs.coreutils - pkgs.findutils - pkgs.diffutils - pkgs.gnused - pkgs.gnugrep - pkgs.gawk - pkgs.gnutar - pkgs.gzip - pkgs.bzip2 - pkgs.gnumake - pkgs.bash - pkgs.patch - */ -} diff --git a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh b/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh deleted file mode 100644 index c7f456951e3..00000000000 --- a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh +++ /dev/null @@ -1,8 +0,0 @@ -source $STDENV/setup - -mkdir $OUT -cd $OUT -tar zxvf $SRC - -test -x $OUT/nix-support || mkdir $OUT/nix-support -cp $SETUPHOOK $OUT/nix-support/setup-hook diff --git a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh b/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh deleted file mode 100644 index 660f8175afc..00000000000 --- a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh +++ /dev/null @@ -1,12 +0,0 @@ -if test -z "$out"; then - stdenv=$STDENV - out=$OUT - src=$SRC - exename=$EXENAME -fi - -source $stdenv/setup - -mkdir $out -mkdir $out/bin -cp $src $out/bin/$exename diff --git a/pkgs/stdenv/mingw/pkgs/src-builder.sh b/pkgs/stdenv/mingw/pkgs/src-builder.sh deleted file mode 100644 index 09dbb152772..00000000000 --- a/pkgs/stdenv/mingw/pkgs/src-builder.sh +++ /dev/null @@ -1,7 +0,0 @@ -source $STDENV/setup - -tar zxvf $SRC -cd $NAME -./configure --prefix=$OUT -make -make install diff --git a/pkgs/stdenv/mingw/setup.sh b/pkgs/stdenv/mingw/setup.sh deleted file mode 100755 index c757eb7ae54..00000000000 --- a/pkgs/stdenv/mingw/setup.sh +++ /dev/null @@ -1,759 +0,0 @@ -# Run the named hook, either by calling the function with that name or -# by evaluating the variable with that name. This allows convenient -# setting of hooks both from Nix expressions (as attributes / -# environment variables) and from shell scripts (as functions). -runHook() { - local hookName="$1" - if test "$(type -t $hookName)" = function; then - $hookName - else - eval "${!hookName}" - fi -} - - -exitHandler() { - exitCode=$? - set +e - - closeNest - - if test -n "$showBuildStats"; then - times > "$NIX_BUILD_TOP/.times" - local -a times=($(cat "$NIX_BUILD_TOP/.times")) - # Print the following statistics: - # - user time for the shell - # - system time for the shell - # - user time for all child processes - # - system time for all child processes - echo "build time elapsed: " ${times[*]} - fi - - if test $exitCode != 0; then - runHook failureHook - - # If the builder had a non-zero exit code and - # $succeedOnFailure is set, create the file - # `$out/nix-support/failed' to signal failure, and exit - # normally. Otherwise, return the original exit code. - if test -n "$succeedOnFailure"; then - echo "build failed with exit code $exitCode (ignored)" - mkdir -p "$out/nix-support" - echo -n $exitCode > "$out/nix-support/failed" - exit 0 - fi - - else - runHook exitHook - fi - - exit $exitCode -} - -trap "exitHandler" EXIT - - -###################################################################### -# Helper functions that might be useful in setup hooks. - - -addToSearchPathWithCustomDelimiter() { - local delimiter=$1 - local varName=$2 - local dir=$3 - if [ -d "$dir" ]; then - eval export ${varName}=${!varName}${!varName:+$delimiter}${dir} - fi -} - -PATH_DELIMITER=':' - -addToSearchPath() { - addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@" -} - - -###################################################################### -# Initialisation. - -set -e - -test -z $NIX_GCC && NIX_GCC=@GCC@ - - -# Wildcard expansions that don't match should expand to an empty list. -# This ensures that, for instance, "for i in *; do ...; done" does the -# right thing. -shopt -s nullglob - - -# Set up the initial path. -PATH= -for i in $NIX_GCC @INITIALPATH@; do - if test "$i" = /; then i=; fi - addToSearchPath PATH $i/bin -done - -# Hack: the /tmp of Cygwin is different from the /tmp in MSYS -if test -d $NIX_BUILD_TOP; then - echo "Nix build top already exists. Strange." -else - mkdir $NIX_BUILD_TOP - cd $NIX_BUILD_TOP -fi - -if test "$NIX_DEBUG" = "1"; then - echo "initial path: $PATH" -fi - - -# Execute the pre-hook. -export SHELL=@SHELL@ -if test -z "$shell"; then - export shell=@SHELL@ -fi - -# Check that the pre-hook initialised SHELL. -if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi - - -# Hack: run gcc's setup hook. -envHooks=() -if test -f $NIX_GCC/nix-support/setup-hook; then - source $NIX_GCC/nix-support/setup-hook -fi - - -# Ensure that the given directories exists. -ensureDir() { - local dir - for dir in "$@"; do - if ! test -x "$dir"; then mkdir -p "$dir"; fi - done -} - -installBin() { - mkdir -p $out/bin - cp "$@" $out/bin -} - - -# Allow the caller to augment buildInputs (it's not always possible to -# do this before the call to setup.sh, since the PATH is empty at that -# point; here we have a basic Unix environment). -runHook addInputsHook - - -# Recursively find all build inputs. -findInputs() { - local pkg=$1 - - case $pkgs in - *\ $pkg\ *) - return 0 - ;; - esac - - pkgs="$pkgs $pkg " - - if test -f $pkg/nix-support/setup-hook; then - source $pkg/nix-support/setup-hook - fi - - if test -f $pkg/nix-support/propagated-build-inputs; then - for i in $(cat $pkg/nix-support/propagated-build-inputs); do - findInputs $i - done - fi -} - -pkgs="" -for i in $buildInputs $propagatedBuildInputs; do - findInputs $i -done - - -# Set the relevant environment variables to point to the build inputs -# found above. -addToEnv() { - local pkg=$1 - - if test -d $1/bin; then - addToSearchPath _PATH $1/bin - fi - - # Run the package-specific hooks set by the setup-hook scripts. - for i in "${envHooks[@]}"; do - $i $pkg - done -} - -for i in $pkgs; do - addToEnv $i -done - - -# Add the output as an rpath. -if test "$NIX_NO_SELF_RPATH" != "1"; then - export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS" - if test -n "$NIX_LIB64_IN_SELF_RPATH"; then - export NIX_LDFLAGS="-rpath $out/lib64 $NIX_LDFLAGS" - fi -fi - - -# Set the TZ (timezone) environment variable, otherwise commands like -# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must -# be set--see zic manual page 2004'). -export TZ=UTC - - -# Set the prefix. This is generally $out, but it can be overriden, -# for instance if we just want to perform a test build/install to a -# temporary location and write a build report to $out. -if test -z "$prefix"; then - prefix="$out"; -fi - -if test "$useTempPrefix" = "1"; then - prefix="$NIX_BUILD_TOP/tmp_prefix"; -fi - - -PATH=$_PATH${_PATH:+:}$PATH -if test "$NIX_DEBUG" = "1"; then - echo "final path: $PATH" -fi - - -# Make GNU Make produce nested output. -export NIX_INDENT_MAKE=1 - - -###################################################################### -# Misc. helper functions. - - -stripDirs() { - local dirs="$1" - local stripFlags="$2" - local dirsNew= - - for d in ${dirs}; do - if test -d "$prefix/$d"; then - dirsNew="${dirsNew} $prefix/$d " - fi - done - dirs=${dirsNew} - - if test -n "${dirs}"; then - header "stripping (with flags $stripFlags) in $dirs" - find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} strip $stripFlags || true - stopNest - fi -} - - -###################################################################### -# Textual substitution functions. - - -substitute() { - local input="$1" - local output="$2" - - local -a params=("$@") - local -a args=() - - local n p pattern replacement varName - - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--replace"; then - pattern="${params[$((n + 1))]}" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test "$p" = "--subst-var"; then - varName="${params[$((n + 1))]}" - pattern="@$varName@" - replacement="${!varName}" - n=$((n + 1)) - fi - - if test "$p" = "--subst-var-by"; then - pattern="@${params[$((n + 1))]}@" - replacement="${params[$((n + 2))]}" - n=$((n + 2)) - fi - - if test ${#args[@]} != 0; then - args[${#args[@]}]="-a" - fi - args[${#args[@]}]="$pattern" - args[${#args[@]}]="$replacement" - done - - replace-literal -e -s -- "${args[@]}" < "$input" > "$output".tmp - if test -x "$output"; then - chmod +x "$output".tmp - fi - mv -f "$output".tmp "$output" -} - - -substituteInPlace() { - local fileName="$1" - shift - substitute "$fileName" "$fileName" "$@" -} - - -substituteAll() { - local input="$1" - local output="$2" - - # Select all environment variables that start with a lowercase character. - for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do - if test "$NIX_DEBUG" = "1"; then - echo "$envVar -> ${!envVar}" - fi - args="$args --subst-var $envVar" - done - - substitute "$input" "$output" $args -} - - -###################################################################### -# What follows is the generic builder. - - -nestingLevel=0 - -startNest() { - nestingLevel=$(($nestingLevel + 1)) - echo -en "\e[$1p" -} - -stopNest() { - nestingLevel=$(($nestingLevel - 1)) - echo -en "\e[q" -} - -header() { - startNest "$2" - echo "$1" -} - -# Make sure that even when we exit abnormally, the original nesting -# level is properly restored. -closeNest() { - while test $nestingLevel -gt 0; do - stopNest - done -} - - -# This function is useful for debugging broken Nix builds. It dumps -# all environment variables to a file `env-vars' in the build -# directory. If the build fails and the `-K' option is used, you can -# then go to the build directory and source in `env-vars' to reproduce -# the environment used for building. -dumpVars() { - echo "Dumping env-vars to $NIX_BUILD_TOP/env-vars" - if test "$noDumpEnvVars" != "1"; then - export > "$NIX_BUILD_TOP/env-vars" - fi -} - - -# Utility function: return the base name of the given path, with the -# prefix `HASH-' removed, if present. -stripHash() { - strippedName=$(basename $1); - if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then - strippedName=$(echo "$strippedName" | cut -c34-) - fi -} - - -unpackFile() { - curSrc="$1" - local cmd - - header "unpacking source archive $curSrc" 3 - - case "$curSrc" in - *.tar) - tar xvf $curSrc - ;; - *.tar.gz | *.tgz | *.tar.Z) - gzip -d < $curSrc | tar xvf - - ;; - *.tar.bz2 | *.tbz2) - bzip2 -d < $curSrc | tar xvf - - ;; - *.zip) - unzip $curSrc - ;; - *) - if test -d "$curSrc"; then - stripHash $curSrc - cp -prvd $curSrc $strippedName - else - if test -z "$unpackCmd"; then - echo "source archive $curSrc has unknown type" - exit 1 - fi - runHook unpackCmd - fi - ;; - esac - - stopNest -} - - -unpackPhase() { - runHook preUnpack - - if test -z "$srcs"; then - if test -z "$src"; then - echo 'variable $src or $srcs should point to the source' - exit 1 - fi - srcs="$src" - fi - - # To determine the source directory created by unpacking the - # source archives, we record the contents of the current - # directory, then look below which directory got added. Yeah, - # it's rather hacky. - local dirsBefore="" - for i in *; do - if test -d "$i"; then - dirsBefore="$dirsBefore $i " - fi - done - - # Unpack all source archives. - for i in $srcs; do - unpackFile $i - done - - # Find the source directory. - if test -n "$setSourceRoot"; then - runHook setSourceRoot - elif test -z "$sourceRoot"; then - sourceRoot= - for i in *; do - if test -d "$i"; then - case $dirsBefore in - *\ $i\ *) - ;; - *) - if test -n "$sourceRoot"; then - echo "unpacker produced multiple directories" - exit 1 - fi - sourceRoot="$i" - ;; - esac - fi - done - fi - - if test -z "$sourceRoot"; then - echo "unpacker appears to have produced no directories" - exit 1 - fi - - echo "source root is $sourceRoot" - - # By default, add write permission to the sources. This is often - # necessary when sources have been copied from other store - # locations. - if test "$dontMakeSourcesWritable" != 1; then - chmod -R u+w "$sourceRoot" - fi - - runHook postUnpack -} - - -patchPhase() { - runHook prePatch - - for i in $patches; do - header "applying patch $i" 3 - local uncompress=cat - case $i in - *.gz) - uncompress="gzip -d" - ;; - *.bz2) - uncompress="bzip2 -d" - ;; - esac - $uncompress < $i | patch ${patchFlags:--p1} - stopNest - done - - runHook postPatch -} - - -configurePhase() { - runHook preConfigure - - if test -z "$configureScript"; then - configureScript=./configure - if ! test -x $configureScript; then - echo "no configure script, doing nothing" - return - fi - fi - - if test -z "$dontAddPrefix"; then - configureFlags="${prefixKey:---prefix=}$prefix $configureFlags" - fi - - # Add --disable-dependency-tracking to speed up some builds. - if test -z "$dontAddDisableDepTrack"; then - if grep -q dependency-tracking $configureScript; then - configureFlags="--disable-dependency-tracking $configureFlags" - fi - fi - - # By default, disable static builds. - if test -z "$dontDisableStatic"; then - if grep -q enable-static $configureScript; then - configureFlags="--disable-static $configureFlags" - fi - fi - - echo "configure flags: $configureFlags ${configureFlagsArray[@]}" - $configureScript $configureFlags "${configureFlagsArray[@]}" - - runHook postConfigure -} - - -buildPhase() { - runHook preBuild - - if test -z "$makeFlags" && ! test -n "$makefile" -o -e "Makefile" -o -e "makefile" -o -e "GNUmakefile"; then - echo "no Makefile, doing nothing" - return - fi - - echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $buildFlags "${buildFlagsArray[@]}" - - runHook postBuild -} - - -checkPhase() { - runHook preCheck - - echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}" - make ${makefile:+-f $makefile} \ - $makeFlags "${makeFlagsArray[@]}" \ - $checkFlags "${checkFlagsArray[@]}" ${checkTarget:-check} - - runHook postCheck -} - - -patchELF() { - # Patch all ELF executables and shared libraries. - header "patching ELF executables and libraries" - if test -e "$prefix"; then - find "$prefix" \( \ - \( -type f -a -name "*.so*" \) -o \ - \( -type f -a -perm +0100 \) \ - \) -print -exec patchelf --shrink-rpath {} \; - fi - stopNest -} - - -patchShebangs() { - # Rewrite all script interpreter file names (`#! /path') under the - # specified directory tree to paths found in $PATH. E.g., - # /bin/sh will be rewritten to /nix/store/-some-bash/bin/sh. - # Interpreters that are already in the store are left untouched. - header "patching script interpreter paths" - local dir="$1" - local f - for f in $(find "$dir" -type f -perm +0100); do - local oldPath=$(sed -ne '1 s,^#![ ]*\([^ ]*\).*$,\1,p' "$f") - if test -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE"; then - local newPath=$(type -P $(basename $oldPath) || true) - if test -n "$newPath" -a "$newPath" != "$oldPath"; then - echo "$f: interpreter changed from $oldPath to $newPath" - sed -i -e "1 s,$oldPath,$newPath," "$f" - fi - fi - done - stopNest -} - - -installPhase() { - runHook preInstall - - mkdir -p "$prefix" - - installTargets=${installTargets:-install} - echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}" - make ${makefile:+-f $makefile} $installTargets \ - $makeFlags "${makeFlagsArray[@]}" \ - $installFlags "${installFlagsArray[@]}" - - runHook postInstall -} - - -# The fixup phase performs generic, package-independent, Nix-related -# stuff, like running patchelf and setting the -# propagated-build-inputs. It should rarely be overriden. -fixupPhase() { - runHook preFixup - - # Put man/doc/info under $out/share. - forceShare=${forceShare:=man doc info} - if test -n "$forceShare"; then - for d in $forceShare; do - if test -d "$prefix/$d"; then - if test -d "$prefix/share/$d"; then - echo "both $d/ and share/$d/ exists!" - else - echo "fixing location of $d/ subdirectory" - mkdir -p $prefix/share - if test -w $prefix/share; then - mv -v $prefix/$d $prefix/share - ln -sv $prefix/share/$d $prefix/$d - fi - fi - fi - done; - fi - - # TODO: strip _only_ ELF executables, and return || fail here... - if test -z "$dontStrip"; then - stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin} - if test -n "$stripDebugList"; then - stripDirs "$stripDebugList" "${stripDebugFlags:--S}" - fi - - stripAllList=${stripAllList:-} - if test -n "$stripAllList"; then - stripDirs "$stripAllList" "${stripAllFlags:--s}" - fi - fi - - if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then - patchELF "$prefix" - fi - - if test -z "$dontPatchShebangs"; then - patchShebangs "$prefix" - fi - - if test -n "$propagatedBuildInputs"; then - mkdir -p "$out/nix-support" - echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs" - fi - - if test -n "$setupHook"; then - mkdir -p "$out/nix-support" - substituteAll "$setupHook" "$out/nix-support/setup-hook" - fi - - runHook postFixup -} - - -distPhase() { - runHook preDist - - echo "dist flags: $distFlags ${distFlagsArray[@]}" - make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" ${distTarget:-dist} - - if test "$dontCopyDist" != 1; then - mkdir -p "$out/tarballs" - - # Note: don't quote $tarballs, since we explicitly permit - # wildcards in there. - cp -pvd ${tarballs:-*.tar.gz} $out/tarballs - fi - - runHook postDist -} - - -showPhaseHeader() { - local phase="$1" - case $phase in - unpackPhase) header "unpacking sources";; - patchPhase) header "patching sources";; - configurePhase) header "configuring";; - buildPhase) header "building";; - checkPhase) header "running tests";; - installPhase) header "installing";; - fixupPhase) header "post-installation fixup";; - *) header "$phase";; - esac -} - - -genericBuild() { - header "building $out" - - if test -n "$buildCommand"; then - eval "$buildCommand" - return - fi - - if test -z "$phases"; then - phases="$prePhases unpackPhase patchPhase $preConfigurePhases \ - configurePhase $preBuildPhases buildPhase checkPhase \ - $preInstallPhases installPhase $preFixupPhases fixupPhase \ - $preDistPhases distPhase $postPhases"; - fi - - for curPhase in $phases; do - if test "$curPhase" = buildPhase -a -n "$dontBuild"; then continue; fi - if test "$curPhase" = checkPhase -a -z "$doCheck"; then continue; fi - if test "$curPhase" = installPhase -a -n "$dontInstall"; then continue; fi - if test "$curPhase" = fixupPhase -a -n "$dontFixup"; then continue; fi - if test "$curPhase" = distPhase -a -z "$doDist"; then continue; fi - - showPhaseHeader "$curPhase" - dumpVars - - # Evaluate the variable named $curPhase if it exists, otherwise the - # function named $curPhase. - eval "${!curPhase:-$curPhase}" - - if test "$curPhase" = unpackPhase; then - cd "${sourceRoot:-.}" - fi - - stopNest - done - - stopNest -} - - - - -dumpVars diff --git a/pkgs/stdenv/mingw/simple-stdenv/builder.sh b/pkgs/stdenv/mingw/simple-stdenv/builder.sh deleted file mode 100644 index 0cbc13e4fab..00000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/builder.sh +++ /dev/null @@ -1,80 +0,0 @@ -if test -z "$out"; then - out="$OUT" - initialPath="$INITIALPATH" - shell="$SHELL" -fi - -setupPath= -for i in $initialPath; do - setupPath=$setupPath${setupPath:+:}$i -done - -PATH=$setupPath -export PATH - -mkdir $out - -cat > $out/setup <> \$sedScript - sedArgs=("\${sedArgs[@]}" "-e" ) - fi - - if test "\$p" = "--subst-var"; then - varName=\${params[\$((n + 1))]} - n=\$((n + 1)) - echo "s^@\${varName}@^\${!varName}^g" >> \$sedScript - fi - - if test "\$p" = "--subst-var-by"; then - varName=\${params[\$((n + 1))]} - replacement=\${params[\$((n + 2))]} - n=\$((n + 2)) - echo "s^@\${varName}@^\$replacement^g" >> \$sedScript - fi - - done - - sed -f \$sedScript < "\$input" > "\$output".tmp - if test -x "\$output"; then - chmod +x "\$output".tmp - fi - mv -f "\$output".tmp "\$output" -} -EOF - -chmod +x $out/setup diff --git a/pkgs/stdenv/mingw/simple-stdenv/default.nix b/pkgs/stdenv/mingw/simple-stdenv/default.nix deleted file mode 100644 index 379cda0a598..00000000000 --- a/pkgs/stdenv/mingw/simple-stdenv/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ system -, name -, shell -, path -, extraEnv ? {} -, extraShellOptions ? [] -}: - -let { - body = - derivation ({ - inherit system name; - initialPath = path; - builder = shell; - args = extraShellOptions ++ ["-e" ./builder.sh]; - } // extraEnv) - - // { - mkDerivation = attrs: - derivation ((removeAttrs attrs ["meta"]) // { - builder = shell; - args = extraShellOptions ++ ["-e" ] ++ [attrs.builder]; # (if attrs ? builder then [attrs.builder] else [ ../fix-builder.sh ../default-builder.sh] ) ; - stdenv = body; - system = body.system; - } - - // extraEnv); - - inherit shell; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b5d4844a6d5..d61c789cb4f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8,15 +8,6 @@ { # The system (e.g., `i686-linux') for which to build the packages. system ? builtins.currentSystem - # Usually, the system type uniquely determines the stdenv and thus - # how to build the packages. But on some platforms we have - # different stdenvs, leading to different ways to build the - # packages. For instance, on Windows we support both Cygwin and - # Mingw builds. In both cases, `system' is `i686-cygwin'. The - # attribute `stdenvType' is used to select the specific kind of - # stdenv to use, e.g., `i686-mingw'. -, stdenvType ? system - , # The standard environment to use. Only used for bootstrapping. If # null, the default standard environment is used. bootStdenv ? null @@ -137,7 +128,7 @@ let self_ = with self; helperFunctions // { # Make some arguments passed to all-packages.nix available - inherit system stdenvType platform; + inherit system platform; # Allow callPackage to fill in the pkgs argument inherit pkgs; @@ -213,7 +204,7 @@ let allStdenvs = import ../stdenv { - inherit system stdenvType platform config; + inherit system platform config; allPackages = args: import ./all-packages.nix ({ inherit config system; } // args); }; diff --git a/pkgs/top-level/mingw.nix b/pkgs/top-level/mingw.nix deleted file mode 100644 index 6c744bfd861..00000000000 --- a/pkgs/top-level/mingw.nix +++ /dev/null @@ -1,27 +0,0 @@ -let { - pkgs = - import ./all-packages.nix { - stdenvType = "i686-mingw"; - }; - - body = { - inherit (pkgs) - aterm - getopt - pkgconfig - realCurl - strategoLibraries - zlib; -# inherit profileTest; - }; - -# profileTest = -# pkgs.stdenv.mkDerivation { -# name = "profile-test"; -# src = ./char-test.c; -# builder = ./profile-builder.sh; -# strlib = pkgs.strategoLibraries; -# aterm = pkgs.aterm; -# buildInputs = [pkgs.aterm pkgs.strategoLibraries]; -# }; -} From 40f7b0f9df5a35d56d4f44fc02067f49d104a191 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 14:56:10 +0200 Subject: [PATCH 06/53] Another attempt to eradicate ensureDir See c556a6ea46e71e1907d78b71fab36df30297b3ad. --- nixos/doc/manual/default.nix | 2 +- nixos/lib/make-iso9660-image.sh | 4 ++-- nixos/lib/make-system-tarball.sh | 4 ++-- nixos/modules/services/amqp/activemq/default.nix | 2 +- nixos/modules/services/hardware/acpid.nix | 2 +- nixos/modules/services/monitoring/nagios.nix | 2 +- nixos/modules/services/monitoring/systemhealth.nix | 2 +- .../network-filesystems/openafs-client/default.nix | 2 +- .../services/networking/ircd-hybrid/builder.sh | 4 ++-- nixos/modules/services/system/dbus.nix | 2 +- .../services/web-servers/apache-httpd/default.nix | 4 ++-- .../services/web-servers/apache-httpd/mediawiki.nix | 4 ++-- .../services/web-servers/apache-httpd/mercurial.nix | 2 +- .../services/x11/display-managers/lightdm.nix | 2 +- nixos/modules/services/x11/display-managers/slim.nix | 2 +- nixos/modules/system/boot/stage-1.nix | 2 +- nixos/modules/tasks/tty-backgrounds-combine.sh | 2 +- nixos/modules/virtualisation/qemu-vm.nix | 2 +- pkgs/applications/audio/espeak/edit.nix | 2 +- pkgs/applications/audio/mixxx/default.nix | 2 +- pkgs/applications/audio/praat/default.nix | 2 +- pkgs/applications/editors/atom/default.nix | 4 ++-- pkgs/applications/editors/dhex/default.nix | 6 +++--- .../editors/emacs-modes/calfw/default.nix | 4 ++-- .../editors/emacs-modes/ocaml/default.nix | 2 +- .../editors/emacs-modes/tuareg/default.nix | 2 +- pkgs/applications/editors/vim/macvim.nix | 2 +- pkgs/applications/graphics/alchemy/default.nix | 2 +- pkgs/applications/misc/keepass/default.nix | 4 ++-- pkgs/applications/misc/librecad/2.0.nix | 2 +- pkgs/applications/misc/librecad/default.nix | 2 +- pkgs/applications/misc/synergy/default.nix | 2 +- pkgs/applications/misc/vanitygen/default.nix | 2 +- .../networking/bittorrentsync/default.nix | 2 +- .../networking/browsers/chromium/browser.nix | 2 +- .../networking/browsers/chromium/default.nix | 2 +- .../networking/browsers/chromium/plugins.nix | 6 +++--- .../networking/browsers/chromium/source/default.nix | 2 +- pkgs/applications/networking/dropbox-cli/default.nix | 2 +- pkgs/applications/networking/dropbox/default.nix | 6 +++--- .../pidgin-plugins/skype4pidgin/default.nix | 2 +- .../networking/irc/irssi/fish/default.nix | 2 +- pkgs/applications/networking/p2p/freenet/default.nix | 2 +- pkgs/applications/networking/syncthing/default.nix | 2 +- pkgs/applications/office/zotero/default.nix | 4 ++-- pkgs/applications/science/math/gap/default.nix | 2 +- .../git-and-tools/git-bz/default.nix | 4 ++-- .../git-and-tools/svn2git-kde/default.nix | 2 +- pkgs/applications/video/makemkv/builder.sh | 6 +++--- pkgs/applications/video/omxplayer/default.nix | 2 +- pkgs/build-support/cabal/default.nix | 4 ++-- pkgs/build-support/kdewrapper/default.nix | 2 +- pkgs/build-support/make-startupitem/default.nix | 2 +- pkgs/build-support/release/functions.sh | 2 +- pkgs/build-support/vm/windows/bootstrap.nix | 2 +- pkgs/build-support/vm/windows/install/default.nix | 4 ++-- pkgs/data/misc/tzdata/default.nix | 2 +- pkgs/development/compilers/ghdl/default.nix | 6 +++--- pkgs/development/compilers/gwt/2.4.0.nix | 2 +- pkgs/development/compilers/mercury/default.nix | 2 +- pkgs/development/compilers/ocaml/3.11.2.nix | 2 +- pkgs/development/compilers/pakcs/default.nix | 8 ++++---- pkgs/development/libraries/aacskeys/default.nix | 2 +- .../libraries/apache-activemq/default.nix | 2 +- pkgs/development/libraries/bwidget/default.nix | 2 +- .../libraries/haskell/ghc-heap-view/default.nix | 2 +- .../libraries/haskell/ghc-mod/default.nix | 2 +- .../libraries/haskell/ghc-vis/default.nix | 2 +- pkgs/development/libraries/haskell/hoogle/local.nix | 2 +- pkgs/development/mobile/androidenv/androidsdk.nix | 2 +- pkgs/development/mobile/xcodeenv/simulate-app.nix | 2 +- pkgs/development/mobile/xcodeenv/xcodewrapper.nix | 2 +- pkgs/development/ocaml-modules/ocamlmake/default.nix | 2 +- pkgs/development/tools/apktool/default.nix | 2 +- .../tools/literate-programming/noweb/default.nix | 2 +- pkgs/development/tools/misc/distcc/masq.nix | 2 +- pkgs/development/tools/misc/grafana/default.nix | 2 +- pkgs/development/tools/misc/opengrok/default.nix | 2 +- pkgs/development/tools/node-webkit/default.nix | 4 ++-- pkgs/development/tools/ocaml/deriving/default.nix | 2 +- pkgs/development/tools/yuicompressor/default.nix | 2 +- pkgs/games/andyetitmoves/default.nix | 2 +- pkgs/games/crafty/default.nix | 6 +++--- pkgs/games/gsb/default.nix | 4 ++-- pkgs/games/openlierox/default.nix | 2 +- pkgs/games/opentyrian/default.nix | 4 ++-- pkgs/games/vessel/default.nix | 4 ++-- pkgs/games/worldofgoo/default.nix | 4 ++-- pkgs/misc/emulators/bsod/default.nix | 2 +- pkgs/misc/vim-plugins/default.nix | 2 +- pkgs/os-specific/darwin/xcode/default.nix | 4 ++-- pkgs/os-specific/linux/apparmor/default.nix | 2 +- pkgs/os-specific/linux/bbswitch/default.nix | 4 ++-- pkgs/os-specific/linux/frandom/default.nix | 4 ++-- pkgs/os-specific/linux/gogoclient/default.nix | 2 +- .../linux/google-authenticator/default.nix | 2 +- pkgs/os-specific/linux/i7z/default.nix | 2 +- pkgs/os-specific/linux/mcelog/default.nix | 2 +- pkgs/os-specific/linux/microcode/converter.nix | 2 +- pkgs/os-specific/linux/netatop/default.nix | 4 ++-- pkgs/os-specific/linux/otpw/default.nix | 2 +- pkgs/os-specific/linux/rfkill/udev.nix | 4 ++-- pkgs/os-specific/linux/x86info/default.nix | 2 +- pkgs/servers/dict/dictd-wiktionary.nix | 2 +- pkgs/servers/dict/dictd-wordnet.nix | 2 +- pkgs/servers/http/thttpd/default.nix | 2 +- pkgs/servers/monitoring/seyren/default.nix | 2 +- pkgs/servers/nosql/influxdb/default.nix | 2 +- pkgs/servers/serfdom/default.nix | 2 +- pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix | 2 +- pkgs/tools/backup/store-backup/default.nix | 2 +- pkgs/tools/filesystems/unionfs-fuse/default.nix | 2 +- pkgs/tools/misc/debootstrap/default.nix | 6 +++--- pkgs/tools/misc/megacli/default.nix | 2 +- pkgs/tools/misc/multitail/default.nix | 2 +- pkgs/tools/misc/picocom/default.nix | 2 +- pkgs/tools/misc/rkflashtool/default.nix | 2 +- pkgs/tools/misc/sl/default.nix | 2 +- pkgs/tools/networking/connect/default.nix | 2 +- pkgs/tools/networking/filegive/default.nix | 2 +- pkgs/tools/networking/reaver-wps/default.nix | 2 +- pkgs/tools/networking/udptunnel/default.nix | 2 +- pkgs/tools/security/fprot/default.nix | 12 ++++++------ pkgs/tools/security/meo/default.nix | 2 +- pkgs/tools/security/tor/torbrowser.nix | 4 ++-- pkgs/tools/system/storebrowse/default.nix | 2 +- pkgs/tools/system/vboot_reference/default.nix | 2 +- pkgs/tools/typesetting/tex/pgfplots/default.nix | 2 +- 128 files changed, 173 insertions(+), 173 deletions(-) diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index a79a77f40df..e118f8b8943 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -67,7 +67,7 @@ in rec { # Generate the HTML manual. dst=$out/share/doc/nixos - ensureDir $dst + mkdir -p $dst xsltproc $xsltFlags --nonet --xinclude \ --output $dst/manual.html \ ${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \ diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh index 89b681ed2cd..675b5bb3514 100644 --- a/nixos/lib/make-iso9660-image.sh +++ b/nixos/lib/make-iso9660-image.sh @@ -78,7 +78,7 @@ done cat pathlist | sed -e 's/=\(.*\)=\(.*\)=/\\=\1=\2\\=/' | tee pathlist.safer -ensureDir $out/iso +mkdir -p $out/iso genCommand="genisoimage -iso-level 4 -r -J $bootFlags -hide-rr-moved -graft-points -path-list pathlist.safer ${volumeID:+-V $volumeID}" if test -z "$compressImage"; then $genCommand -o $out/iso/$isoName @@ -87,5 +87,5 @@ else fi -ensureDir $out/nix-support +mkdir -p $out/nix-support echo $system > $out/nix-support/system diff --git a/nixos/lib/make-system-tarball.sh b/nixos/lib/make-system-tarball.sh index aadd0f6428c..096d96ac1c8 100644 --- a/nixos/lib/make-system-tarball.sh +++ b/nixos/lib/make-system-tarball.sh @@ -48,11 +48,11 @@ for ((n = 0; n < ${#objects[*]}; n++)); do fi done -ensureDir $out/tarball +mkdir -p $out/tarball tar cvJf $out/tarball/$fileName.tar.xz * -ensureDir $out/nix-support +mkdir -p $out/nix-support echo $system > $out/nix-support/system echo "file system-tarball $out/tarball/$fileName.tar.xz" > $out/nix-support/hydra-build-products diff --git a/nixos/modules/services/amqp/activemq/default.nix b/nixos/modules/services/amqp/activemq/default.nix index f1f3d005f30..1862e17de0b 100644 --- a/nixos/modules/services/amqp/activemq/default.nix +++ b/nixos/modules/services/amqp/activemq/default.nix @@ -12,7 +12,7 @@ let phases = [ "installPhase" ]; buildInputs = [ jdk ]; installPhase = '' - ensureDir $out/lib + mkdir -p $out/lib source ${activemq}/lib/classpath.env export CLASSPATH ln -s "${./ActiveMQBroker.java}" ActiveMQBroker.java diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix index a710636c140..03daab0d488 100644 --- a/nixos/modules/services/hardware/acpid.nix +++ b/nixos/modules/services/hardware/acpid.nix @@ -6,7 +6,7 @@ let acpiConfDir = pkgs.runCommand "acpi-events" {} '' - ensureDir $out + mkdir -p $out ${ # Generate a configuration file for each event. (You can't have # multiple events in one config file...) diff --git a/nixos/modules/services/monitoring/nagios.nix b/nixos/modules/services/monitoring/nagios.nix index 97d153153a5..c1f7ba0eca7 100644 --- a/nixos/modules/services/monitoring/nagios.nix +++ b/nixos/modules/services/monitoring/nagios.nix @@ -12,7 +12,7 @@ let nagiosObjectDefs = cfg.objectDefs; nagiosObjectDefsDir = pkgs.runCommand "nagios-objects" {inherit nagiosObjectDefs;} - "ensureDir $out; ln -s $nagiosObjectDefs $out/"; + "mkdir -p $out; ln -s $nagiosObjectDefs $out/"; nagiosCfgFile = pkgs.writeText "nagios.cfg" '' diff --git a/nixos/modules/services/monitoring/systemhealth.nix b/nixos/modules/services/monitoring/systemhealth.nix index b0e59595e13..20d1dadd3bf 100644 --- a/nixos/modules/services/monitoring/systemhealth.nix +++ b/nixos/modules/services/monitoring/systemhealth.nix @@ -13,7 +13,7 @@ let }; buildInputs = [ python ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin # Make it work for kernels 3.x, not so different than 2.6 sed -i 's/2\.6/4.0/' system_health.py cp system_health.py $out/bin diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix index b34ebc3663e..5c539ba306a 100644 --- a/nixos/modules/services/network-filesystems/openafs-client/default.nix +++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix @@ -11,7 +11,7 @@ let }; afsConfig = pkgs.runCommand "afsconfig" {} '' - ensureDir $out + mkdir -p $out echo ${cfg.cellName} > $out/ThisCell cp ${cellServDB} $out/CellServDB echo "/afs:${cfg.cacheDirectory}:${cfg.cacheSize}" > $out/cacheinfo diff --git a/nixos/modules/services/networking/ircd-hybrid/builder.sh b/nixos/modules/services/networking/ircd-hybrid/builder.sh index b8cb836db95..f2c92878a4d 100644 --- a/nixos/modules/services/networking/ircd-hybrid/builder.sh +++ b/nixos/modules/services/networking/ircd-hybrid/builder.sh @@ -3,7 +3,7 @@ source $stdenv/setup doSub() { local src=$1 local dst=$2 - ensureDir $(dirname $dst) + mkdir -p $(dirname $dst) substituteAll $src $dst } @@ -28,4 +28,4 @@ for i in $substFiles; do fi done -ensureDir $out/bin +mkdir -p $out/bin diff --git a/nixos/modules/services/system/dbus.nix b/nixos/modules/services/system/dbus.nix index 8d02a6404ac..928f16c9448 100644 --- a/nixos/modules/services/system/dbus.nix +++ b/nixos/modules/services/system/dbus.nix @@ -14,7 +14,7 @@ let name = "dbus-conf"; preferLocalBuild = true; buildCommand = '' - ensureDir $out + mkdir -p $out cp -v ${pkgs.dbus.daemon}/etc/dbus-1/system.conf $out/system.conf diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix index b8359d4756b..a6f85691253 100644 --- a/nixos/modules/services/web-servers/apache-httpd/default.nix +++ b/nixos/modules/services/web-servers/apache-httpd/default.nix @@ -80,7 +80,7 @@ let # !!! should be in lib writeTextInDir = name: text: - pkgs.runCommand name {inherit text;} "ensureDir $out; echo -n \"$text\" > $out/$name"; + pkgs.runCommand name {inherit text;} "mkdir -p $out; echo -n \"$text\" > $out/$name"; enableSSL = any (vhost: vhost.enableSSL) allHosts; @@ -194,7 +194,7 @@ let ) null ([ cfg ] ++ subservices); documentRoot = if maybeDocumentRoot != null then maybeDocumentRoot else - pkgs.runCommand "empty" {} "ensureDir $out"; + pkgs.runCommand "empty" {} "mkdir -p $out"; documentRootConf = '' DocumentRoot "${documentRoot}" diff --git a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix index 7d59c13b957..0693ca57814 100644 --- a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix +++ b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix @@ -90,7 +90,7 @@ let installPhase = '' - ensureDir $out + mkdir -p $out cp -r * $out cp ${mediawikiConfig} $out/LocalSettings.php sed -i 's|/bin/bash|${pkgs.stdenv.shell}|' \ @@ -103,7 +103,7 @@ let mediawikiScripts = pkgs.runCommand "mediawiki-${config.id}-scripts" { buildInputs = [ pkgs.makeWrapper ]; } '' - ensureDir $out/bin + mkdir -p $out/bin for i in changePassword.php createAndPromote.php userOptions.php edit.php nukePage.php update.php; do makeWrapper ${php}/bin/php $out/bin/mediawiki-${config.id}-$(basename $i .php) \ --add-flags ${mediawikiRoot}/maintenance/$i diff --git a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix index 755b595c783..82da3330b00 100644 --- a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix +++ b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix @@ -9,7 +9,7 @@ let cgi = pkgs.stdenv.mkDerivation { name = "mercurial-cgi"; buildCommand = '' - ensureDir $out + mkdir -p $out cp -v ${mercurial}/share/cgi-bin/hgweb.cgi $out sed -i "s|/path/to/repo/or/config|$out/hgweb.config|" $out/hgweb.cgi echo " diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix index d459c59b048..f8ce06738fe 100644 --- a/nixos/modules/services/x11/display-managers/lightdm.nix +++ b/nixos/modules/services/x11/display-managers/lightdm.nix @@ -26,7 +26,7 @@ let buildInputs = [ pkgs.makeWrapper ]; buildCommand = '' - ensureDir $out/gtk-3.0/ + mkdir -p $out/gtk-3.0/ # This wrapper ensures that we actually get fonts makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \ diff --git a/nixos/modules/services/x11/display-managers/slim.nix b/nixos/modules/services/x11/display-managers/slim.nix index 48feb12d044..9ee4e0dc7cb 100644 --- a/nixos/modules/services/x11/display-managers/slim.nix +++ b/nixos/modules/services/x11/display-managers/slim.nix @@ -27,7 +27,7 @@ let unpackedTheme = pkgs.stdenv.mkDerivation { name = "slim-theme"; buildCommand = '' - ensureDir $out + mkdir -p $out cd $out unpackFile ${cfg.theme} ln -s * default diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index b6249b6c091..f894f5bfbc1 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -140,7 +140,7 @@ let udevRules = pkgs.stdenv.mkDerivation { name = "udev-rules"; buildCommand = '' - ensureDir $out + mkdir -p $out echo 'ENV{LD_LIBRARY_PATH}="${extraUtils}/lib"' > $out/00-env.rules diff --git a/nixos/modules/tasks/tty-backgrounds-combine.sh b/nixos/modules/tasks/tty-backgrounds-combine.sh index 1e0d8758a6e..55c3a1ebfa8 100644 --- a/nixos/modules/tasks/tty-backgrounds-combine.sh +++ b/nixos/modules/tasks/tty-backgrounds-combine.sh @@ -3,7 +3,7 @@ source $stdenv/setup ttys=($ttys) themes=($themes) -ensureDir $out +mkdir -p $out defaultName=$(cd $default && ls | grep -v default) echo $defaultName diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index bccf6583e47..16c3836887c 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -379,7 +379,7 @@ in system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; } '' - ensureDir $out/bin + mkdir -p $out/bin ln -s ${config.system.build.toplevel} $out/system ln -s ${pkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${vmName}-vm ''; diff --git a/pkgs/applications/audio/espeak/edit.nix b/pkgs/applications/audio/espeak/edit.nix index eb34335721f..6627c6eb0e5 100644 --- a/pkgs/applications/audio/espeak/edit.nix +++ b/pkgs/applications/audio/espeak/edit.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp espeakedit $out/bin ''; diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix index b76eecc9e4a..e3422d4ba06 100644 --- a/pkgs/applications/audio/mixxx/default.nix +++ b/pkgs/applications/audio/mixxx/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { buildPhase = '' runHook preBuild - ensureDir "$out" + mkdir -p "$out" scons \ -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \ $sconsFlags "prefix=$out" diff --git a/pkgs/applications/audio/praat/default.nix b/pkgs/applications/audio/praat/default.nix index b8a283125fc..c7a40bf85a7 100644 --- a/pkgs/applications/audio/praat/default.nix +++ b/pkgs/applications/audio/praat/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp praat $out/bin ''; diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 725b4520e69..51844f64179 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -43,8 +43,8 @@ in stdenv.mkDerivation rec { phases = [ "installPhase" ]; installPhase = '' - ensureDir $out/share/atom - ensureDir $out/bin + mkdir -p $out/share/atom + mkdir -p $out/bin tar -C $out/share/atom -xvf $src patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ $out/share/atom/atom diff --git a/pkgs/applications/editors/dhex/default.nix b/pkgs/applications/editors/dhex/default.nix index 45b7de900e2..7a0e9e59d7e 100644 --- a/pkgs/applications/editors/dhex/default.nix +++ b/pkgs/applications/editors/dhex/default.nix @@ -12,9 +12,9 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin - ensureDir $out/share/man/man1 - ensureDir $out/share/man/man5 + mkdir -p $out/bin + mkdir -p $out/share/man/man1 + mkdir -p $out/share/man/man5 cp dhex $out/bin cp dhex.1 $out/share/man/man1 diff --git a/pkgs/applications/editors/emacs-modes/calfw/default.nix b/pkgs/applications/editors/emacs-modes/calfw/default.nix index 8934238ffa3..3015865e3bf 100644 --- a/pkgs/applications/editors/emacs-modes/calfw/default.nix +++ b/pkgs/applications/editors/emacs-modes/calfw/default.nix @@ -16,10 +16,10 @@ stdenv.mkDerivation rec { installPhase = '' - ensureDir "$out/share/doc/${name}" + mkdir -p "$out/share/doc/${name}" cp -v readme.md "$out/share/doc/${name}" - ensureDir "$out/share/emacs/site-lisp/" + mkdir -p "$out/share/emacs/site-lisp/" cp *.el "$out/share/emacs/site-lisp/" ''; diff --git a/pkgs/applications/editors/emacs-modes/ocaml/default.nix b/pkgs/applications/editors/emacs-modes/ocaml/default.nix index 1d81a0b7ff1..9e4496ff1a4 100644 --- a/pkgs/applications/editors/emacs-modes/ocaml/default.nix +++ b/pkgs/applications/editors/emacs-modes/ocaml/default.nix @@ -18,7 +18,7 @@ in stdenv.mkDerivation { installPhase = '' cd emacs; - ensureDir "$out/share/emacs/site-lisp" "$out/bin" + mkdir -p "$out/share/emacs/site-lisp" "$out/bin" EMACSDIR=$out/share/emacs/site-lisp make simple-install install-ocamltags ''; diff --git a/pkgs/applications/editors/emacs-modes/tuareg/default.nix b/pkgs/applications/editors/emacs-modes/tuareg/default.nix index 17957ffc276..3fd592f3dba 100644 --- a/pkgs/applications/editors/emacs-modes/tuareg/default.nix +++ b/pkgs/applications/editors/emacs-modes/tuareg/default.nix @@ -15,7 +15,7 @@ in stdenv.mkDerivation { buildInputs = [ emacs ]; installPhase = '' - ensureDir "$out/share/emacs/site-lisp" + mkdir -p "$out/share/emacs/site-lisp" cp *.el *.elc "$out/share/emacs/site-lisp" ''; diff --git a/pkgs/applications/editors/vim/macvim.nix b/pkgs/applications/editors/vim/macvim.nix index e48cb2590f9..8b8f08b6fd7 100644 --- a/pkgs/applications/editors/vim/macvim.nix +++ b/pkgs/applications/editors/vim/macvim.nix @@ -62,7 +62,7 @@ in mkDerivation rec { ''; postInstall = '' - ensureDir $out/Applications + mkdir -p $out/Applications cp -r src/MacVim/build/Release/MacVim.app $out/Applications rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view} diff --git a/pkgs/applications/graphics/alchemy/default.nix b/pkgs/applications/graphics/alchemy/default.nix index ee8543f7039..263c411a8db 100644 --- a/pkgs/applications/graphics/alchemy/default.nix +++ b/pkgs/applications/graphics/alchemy/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -a . $out/share/alchemy cat >> $out/bin/alchemy << EOF #!/bin/sh diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix index 0098e626b42..89f794850d2 100644 --- a/pkgs/applications/misc/keepass/default.nix +++ b/pkgs/applications/misc/keepass/default.nix @@ -24,12 +24,12 @@ stdenv.mkDerivation rec { installPhase = '' - ensureDir "$out/bin" + mkdir -p "$out/bin" echo "${mono}/bin/mono $out/KeePass.exe" > $out/bin/keepass chmod +x $out/bin/keepass echo $out cp -r ./* $out/ - ensureDir "$out/share/applications" + mkdir -p "$out/share/applications" cp ${desktopItem}/share/applications/* $out/share/applications ''; diff --git a/pkgs/applications/misc/librecad/2.0.nix b/pkgs/applications/misc/librecad/2.0.nix index 2f140db9397..f7743feddbb 100644 --- a/pkgs/applications/misc/librecad/2.0.nix +++ b/pkgs/applications/misc/librecad/2.0.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -R unix/librecad $out/bin cp -R unix/resources $out/share/librecad ''; diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix index b225519f486..6e368f6fb10 100644 --- a/pkgs/applications/misc/librecad/default.nix +++ b/pkgs/applications/misc/librecad/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { configurePhase = "qmake PREFIX=$out"; installPhase = '' - ensureDir $out/bin $out/share + mkdir -p $out/bin $out/share cp -R unix/librecad $out/bin cp -R unix/resources $out/share/librecad ''; diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index 834b514148b..d975d171518 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { # http://synergy-foss.org/spit/issues/details/3317/ installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp ../bin/synergyc $out/bin cp ../bin/synergys $out/bin cp ../bin/synergyd $out/bin diff --git a/pkgs/applications/misc/vanitygen/default.nix b/pkgs/applications/misc/vanitygen/default.nix index e16767d4c26..99b0e70c898 100644 --- a/pkgs/applications/misc/vanitygen/default.nix +++ b/pkgs/applications/misc/vanitygen/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = [ openssl pcre ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp vanitygen $out/bin cp keyconv $out/bin/vanitygen-keyconv ''; diff --git a/pkgs/applications/networking/bittorrentsync/default.nix b/pkgs/applications/networking/bittorrentsync/default.nix index abb94a32bd7..989ceb235b0 100644 --- a/pkgs/applications/networking/bittorrentsync/default.nix +++ b/pkgs/applications/networking/bittorrentsync/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { buildInputs = [ patchelf ]; installPhase = '' - ensureDir "$out/bin/" + mkdir -p "$out/bin/" cp -r "btsync" "$out/bin/" patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index d425c3f0738..ffc23a9d968 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -8,7 +8,7 @@ mkChromiumDerivation (base: rec { buildTargets = [ "mksnapshot" "chrome" ]; installPhase = '' - ensureDir "$libExecPath" + mkdir -p "$libExecPath" cp -v "$buildPath/"*.pak "$libExecPath/" cp -v "$buildPath/icudtl.dat" "$libExecPath/" cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 44fd3c69e53..4dfdca882bc 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -67,7 +67,7 @@ in stdenv.mkDerivation { browserBinary = "${chromium.browser}/libexec/chromium/chromium"; sandboxBinary = "${chromium.sandbox}/bin/chromium-sandbox"; in '' - ensureDir "$out/bin" "$out/share/applications" + mkdir -p "$out/bin" "$out/share/applications" ln -s "${chromium.browser}/share" "$out/share" makeWrapper "${browserBinary}" "$out/bin/chromium" \ diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix index f760b06fe24..e0c45f91075 100644 --- a/pkgs/applications/networking/browsers/chromium/plugins.nix +++ b/pkgs/applications/networking/browsers/chromium/plugins.nix @@ -22,7 +22,7 @@ let else if source.channel == "stable" then "chrome" else "chrome-${source.channel}"; in '' - ensureDir plugins + mkdir -p plugins ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \ ./opt/google/${chan}/PepperFlash \ ./opt/google/${chan}/libpdf.so @@ -53,7 +53,7 @@ let pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}"; in '' install -vD libpdf.so "$pdf/lib/libpdf.so" - ensureDir "$pdf/nix-support" + mkdir -p "$pdf/nix-support" echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \ > "$pdf/nix-support/chromium-flags" @@ -63,7 +63,7 @@ let install -vD PepperFlash/libpepflashplayer.so \ "$flash/lib/libpepflashplayer.so" - ensureDir "$flash/nix-support" + mkdir -p "$flash/nix-support" echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \ "--ppapi-flash-version=$flashVersion" \ > "$flash/nix-support/chromium-flags" diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix index 6a6b299ee51..0d8a4156703 100644 --- a/pkgs/applications/networking/browsers/chromium/source/default.nix +++ b/pkgs/applications/networking/browsers/chromium/source/default.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation { outputs = [ "out" "sandbox" "bundled" "main" ]; installPhase = '' - ensureDir "$out" "$sandbox" "$bundled" "$main" + mkdir -p "$out" "$sandbox" "$bundled" "$main" header "copying browser main sources to $main" find . -mindepth 1 -maxdepth 1 \ diff --git a/pkgs/applications/networking/dropbox-cli/default.nix b/pkgs/applications/networking/dropbox-cli/default.nix index 5262c121bb2..51f3ae2ac8d 100644 --- a/pkgs/applications/networking/dropbox-cli/default.nix +++ b/pkgs/applications/networking/dropbox-cli/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { phases = "unpackPhase installPhase"; installPhase = '' - ensureDir "$out/bin/" "$out/share/applications" + mkdir -p "$out/bin/" "$out/share/applications" cp data/dropbox.desktop "$out/share/applications" substitute "dropbox.in" "$out/bin/dropbox" \ --replace '@PACKAGE_VERSION@' ${version} \ diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index 62dce4c4212..55b7bd7486b 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -70,9 +70,9 @@ in stdenv.mkDerivation { ''; installPhase = '' - ensureDir "$out/${appdir}" + mkdir -p "$out/${appdir}" cp -r ".dropbox-dist/"* "$out/${appdir}/" - ensureDir "$out/bin" + mkdir -p "$out/bin" ln -s "$out/${appdir}/dropbox" "$out/bin/dropbox" patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \ @@ -83,7 +83,7 @@ in stdenv.mkDerivation { find "$out/${appdir}" -type f -a -perm +0100 \ -print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \; - ensureDir "$out/share/applications" + mkdir -p "$out/share/applications" cp "${desktopItem}/share/applications/"* $out/share/applications ''; diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix index 544aa06877a..339e36321b3 100644 --- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix +++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { buildPhase = "make libskype.so libskype_dbus.so"; installPhase = '' - ensureDir $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin + mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin cp icons/16/skypeout.png $out/pixmaps/pidgin/protocols/16 cp icons/22/skypeout.png $out/pixmaps/pidgin/protocols/22 cp icons/48/skypeout.png $out/pixmaps/pidgin/protocols/48 diff --git a/pkgs/applications/networking/irc/irssi/fish/default.nix b/pkgs/applications/networking/irc/irssi/fish/default.nix index 98d5afa0ba9..2471c4885af 100644 --- a/pkgs/applications/networking/irc/irssi/fish/default.nix +++ b/pkgs/applications/networking/irc/irssi/fish/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/lib/irssi/modules + mkdir -p $out/lib/irssi/modules cp src/.libs/libfish.so $out/lib/irssi/modules ''; diff --git a/pkgs/applications/networking/p2p/freenet/default.nix b/pkgs/applications/networking/p2p/freenet/default.nix index 4c74c2c32de..cb53f4b5aa3 100644 --- a/pkgs/applications/networking/p2p/freenet/default.nix +++ b/pkgs/applications/networking/p2p/freenet/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { buildPhase = "ant package-only"; installPhase = '' - ensureDir $out/share/freenet $out/bin + mkdir -p $out/share/freenet $out/bin cp lib/bcprov.jar $out/share/freenet cp lib/freenet/freenet-ext.jar $out/share/freenet cp dist/freenet.jar $out/share/freenet diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix index 8f169180dd5..226b7f6d097 100644 --- a/pkgs/applications/networking/syncthing/default.nix +++ b/pkgs/applications/networking/syncthing/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -r ./bin $out ''; diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix index f0f7d801d8f..b6636cef641 100644 --- a/pkgs/applications/office/zotero/default.nix +++ b/pkgs/applications/office/zotero/default.nix @@ -23,10 +23,10 @@ stdenv.mkDerivation { inherit bash xulrunner; installPhase = '' - ensureDir "$out/libexec/zotero" + mkdir -p "$out/libexec/zotero" cp -vR * "$out/libexec/zotero/" - ensureDir "$out/bin" + mkdir -p "$out/bin" substituteAll "${./zotero.sh}" "$out/bin/zotero" chmod +x "$out/bin/zotero" ''; diff --git a/pkgs/applications/science/math/gap/default.nix b/pkgs/applications/science/math/gap/default.nix index f76640567f6..e7766fab581 100644 --- a/pkgs/applications/science/math/gap/default.nix +++ b/pkgs/applications/science/math/gap/default.nix @@ -38,7 +38,7 @@ rec { phaseNames = ["doConfigure" "doMake" "doDeploy"]; doDeploy = a.fullDepEntry '' - ensureDir "$out/bin" "$out/share/gap/" + mkdir -p "$out/bin" "$out/share/gap/" cp -r . "$out/share/gap/build-dir" diff --git a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix index 3a2270cf972..4c4ff62901e 100644 --- a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix +++ b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix @@ -21,8 +21,8 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out - ensureDir $out/bin + mkdir -p $out + mkdir -p $out/bin cp git-bz $out/bin wrapProgram $out/bin/git-bz \ --prefix PYTHONPATH : "$(toPythonPath $python):$(toPythonPath $pysqlite)" diff --git a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix index c44f2dbcbb6..94c819e711b 100644 --- a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix +++ b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp svn-all-fast-export $out/bin ''; diff --git a/pkgs/applications/video/makemkv/builder.sh b/pkgs/applications/video/makemkv/builder.sh index 0e1898a4556..e4cfcf3d906 100644 --- a/pkgs/applications/video/makemkv/builder.sh +++ b/pkgs/applications/video/makemkv/builder.sh @@ -30,9 +30,9 @@ for i in ${bin} ; do ${i} done -ensureDir $out/bin -ensureDir $out/lib -ensureDir $out/share/MakeMKV +mkdir -p $out/bin +mkdir -p $out/lib +mkdir -p $out/share/MakeMKV cp ${lib} ${out}/lib cp ${bin} ${out}/bin cp makemkv-bin-${ver}/src/share/* $out/share/MakeMKV diff --git a/pkgs/applications/video/omxplayer/default.nix b/pkgs/applications/video/omxplayer/default.nix index b3880067cac..6bc982efa12 100644 --- a/pkgs/applications/video/omxplayer/default.nix +++ b/pkgs/applications/video/omxplayer/default.nix @@ -71,7 +71,7 @@ stdenv.mkDerivation rec { export INCLUDES="-I${raspberrypifw}/include/interface/vcos/pthreads -I${raspberrypifw}/include/interface/vmcs_host/linux/" ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp omxplayer.bin $out/bin ''; buildInputs = [ raspberrypifw ffmpeg pcre boostHeaders freetype zlib ]; diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index bc73d1f73a2..67934ed0c29 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -250,12 +250,12 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version; ./Setup copy - ensureDir $out/bin # necessary to get it added to PATH + mkdir -p $out/bin # necessary to get it added to PATH local confDir=$out/lib/ghc-${ghc.ghc.version}/package.conf.d local installedPkgConf=$confDir/${self.fname}.installedconf local pkgConf=$confDir/${self.fname}.conf - ensureDir $confDir + mkdir -p $confDir ./Setup register --gen-pkg-config=$pkgConf if test -f $pkgConf; then echo '[]' > $installedPkgConf diff --git a/pkgs/build-support/kdewrapper/default.nix b/pkgs/build-support/kdewrapper/default.nix index 6dcf68a324a..64dfd7d0ca6 100644 --- a/pkgs/build-support/kdewrapper/default.nix +++ b/pkgs/build-support/kdewrapper/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { inherit libs; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin KDEDIRS=${program} QT_PLUGIN_PATH=${program}/lib/qt4/plugins:${program}/lib/kde4/plugins diff --git a/pkgs/build-support/make-startupitem/default.nix b/pkgs/build-support/make-startupitem/default.nix index dc78b8a704e..fad6f00d821 100644 --- a/pkgs/build-support/make-startupitem/default.nix +++ b/pkgs/build-support/make-startupitem/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { priority = 5; buildCommand = '' - ensureDir $out/share/autostart + mkdir -p $out/share/autostart target=${name}.desktop cp ${package}/share/applications/${srcPrefix}${name}.desktop $target chmod +rw $target diff --git a/pkgs/build-support/release/functions.sh b/pkgs/build-support/release/functions.sh index 9f2d03519c8..8ac67a19672 100644 --- a/pkgs/build-support/release/functions.sh +++ b/pkgs/build-support/release/functions.sh @@ -9,6 +9,6 @@ findTarballs() { } propagateImageName() { - ensureDir $out/nix-support + mkdir -p $out/nix-support cat "$diskImage"/nix-support/full-name > $out/nix-support/full-name } diff --git a/pkgs/build-support/vm/windows/bootstrap.nix b/pkgs/build-support/vm/windows/bootstrap.nix index e3b44d1b6ab..ebea819b191 100644 --- a/pkgs/build-support/vm/windows/bootstrap.nix +++ b/pkgs/build-support/vm/windows/bootstrap.nix @@ -69,7 +69,7 @@ in rec { -b "${installedVM}/disk.img" \ -f qcow2 winvm.img ${runAndSuspend} - ensureDir "$out" + mkdir -p "$out" cp winvm.img "$out/disk.img" cp state.gz "$out/state.gz" ''; diff --git a/pkgs/build-support/vm/windows/install/default.nix b/pkgs/build-support/vm/windows/install/default.nix index 10690bf6b28..fe8e8f61de0 100644 --- a/pkgs/build-support/vm/windows/install/default.nix +++ b/pkgs/build-support/vm/windows/install/default.nix @@ -22,7 +22,7 @@ let cygwinSshKey = stdenv.mkDerivation { name = "snakeoil-ssh-cygwin"; buildCommand = '' - ensureDir "$out" + mkdir -p "$out" ${openssh}/bin/ssh-keygen -t ecdsa -f "$out/key" -N "" ''; }; @@ -65,7 +65,7 @@ in stdenv.mkDerivation { buildCommand = '' ${qemu}/bin/qemu-img create -f qcow2 winvm.img 2G ${installController} - ensureDir "$out" + mkdir -p "$out" cp winvm.img "$out/disk.img" ''; passthru = { diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix index afee316d0bf..71153d88499 100644 --- a/pkgs/data/misc/tzdata/default.nix +++ b/pkgs/data/misc/tzdata/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ln -s . $out/share/zoneinfo/posix mv $out/share/zoneinfo-leaps $out/share/zoneinfo/right - ensureDir "$lib/include" + mkdir -p "$lib/include" cp tzfile.h "$lib/include/tzfile.h" ''; diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix index cd33d3d79a7..7b103805def 100644 --- a/pkgs/development/compilers/ghdl/default.nix +++ b/pkgs/development/compilers/ghdl/default.nix @@ -34,14 +34,14 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp ghdl_mcode $out/bin - ensureDir $out/share/ghdl_mcode/translate + mkdir -p $out/share/ghdl_mcode/translate cp -R ../lib $out/share/ghdl_mcode/translate cp -R ../../libraries $out/share/ghdl_mcode - ensureDir $out/share/man/man1 + mkdir -p $out/share/man/man1 cp ../../doc/ghdl.1 $out/share/man/man1/ghdl_mcode.1 # Ghdl has some timestamps checks, storing file timestamps in '.cf' files. diff --git a/pkgs/development/compilers/gwt/2.4.0.nix b/pkgs/development/compilers/gwt/2.4.0.nix index 65208b062c2..f0dc9378c4f 100644 --- a/pkgs/development/compilers/gwt/2.4.0.nix +++ b/pkgs/development/compilers/gwt/2.4.0.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { buildInputs = [ unzip ]; installPhase = '' - ensureDir $out + mkdir -p $out unzip $src mv gwt-2.4.0 $out/bin ''; diff --git a/pkgs/development/compilers/mercury/default.nix b/pkgs/development/compilers/mercury/default.nix index 5ea922a371a..21af582c594 100644 --- a/pkgs/development/compilers/mercury/default.nix +++ b/pkgs/development/compilers/mercury/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; preConfigure = '' - ensureDir $out/lib/mercury/cgi-bin ; + mkdir -p $out/lib/mercury/cgi-bin ; configureFlags="--enable-deep-profiler=$out/lib/mercury/cgi-bin"; ''; diff --git a/pkgs/development/compilers/ocaml/3.11.2.nix b/pkgs/development/compilers/ocaml/3.11.2.nix index cffd7c3f54a..64cf8a9f9f7 100644 --- a/pkgs/development/compilers/ocaml/3.11.2.nix +++ b/pkgs/development/compilers/ocaml/3.11.2.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { patch -p0 < ${./mips64.patch} ''; postBuild = '' - ensureDir $out/include + mkdir -p $out/include ln -sv $out/lib/ocaml/caml $out/include/caml ''; diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix index 60071a8f6fa..1fb4318ebb9 100644 --- a/pkgs/development/compilers/pakcs/default.nix +++ b/pkgs/development/compilers/pakcs/default.nix @@ -54,13 +54,13 @@ stdenv.mkDerivation rec { export LC_ALL=en_US.UTF-8 # Set up link to cymake, which has been built already. - ensureDir bin/.local + mkdir -p bin/.local ln -s ${curryFront}/bin/cymake bin/.local/ ''; installPhase = '' # Prepare PAKCSHOME directory. - ensureDir $out/pakcs + mkdir -p $out/pakcs for d in bin curry2prolog currytools lib tools cpns include www examples docs ; do cp -r $d $out/pakcs ; done @@ -80,7 +80,7 @@ stdenv.mkDerivation rec { (cd $out/pakcs/www ; make) # Install bin. - ensureDir $out/bin + mkdir -p $out/bin for b in makecurrycgi .makesavedstate pakcs parsecurry cleancurry \ addtypes cass currybrowse currycreatemake currydoc currytest \ dataToXml erd2curry ; do @@ -88,7 +88,7 @@ stdenv.mkDerivation rec { done # Place emacs lisp files in expected locations. - ensureDir $out/share/emacs/site-lisp/curry-pakcs + mkdir -p $out/share/emacs/site-lisp/curry-pakcs for e in "tools/emacs/"*.el ; do cp $e $out/share/emacs/site-lisp/curry-pakcs/ ; done diff --git a/pkgs/development/libraries/aacskeys/default.nix b/pkgs/development/libraries/aacskeys/default.nix index 088f2cc4b1e..0b20d8a41ea 100644 --- a/pkgs/development/libraries/aacskeys/default.nix +++ b/pkgs/development/libraries/aacskeys/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { buildInputs = [openssl jdk premake3]; installPhase = '' - ensureDir $out/{bin,lib,share/${baseName}} + mkdir -p $out/{bin,lib,share/${baseName}} # Install lib install -Dm444 lib/linux/libaacskeys.so $out/lib diff --git a/pkgs/development/libraries/apache-activemq/default.nix b/pkgs/development/libraries/apache-activemq/default.nix index d55ff9049ed..2f2792dec14 100644 --- a/pkgs/development/libraries/apache-activemq/default.nix +++ b/pkgs/development/libraries/apache-activemq/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { phases = [ "unpackPhase" "installPhase" ]; installPhase = '' - ensureDir $out + mkdir -p $out mv * $out/ for j in `find $out/lib -name "*.jar"`; do cp="''${cp:+"$cp:"}$j"; diff --git a/pkgs/development/libraries/bwidget/default.nix b/pkgs/development/libraries/bwidget/default.nix index 81f4f9a287e..0d1913bc8e7 100644 --- a/pkgs/development/libraries/bwidget/default.nix +++ b/pkgs/development/libraries/bwidget/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { dontBuild = true; installPhase = '' - ensureDir "$out/lib/${passthru.libPrefix}" + mkdir -p "$out/lib/${passthru.libPrefix}" cp -R *.tcl lang images "$out/lib/${passthru.libPrefix}" ''; diff --git a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix index 679ced622d9..38220eeb05e 100644 --- a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix +++ b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix @@ -6,7 +6,7 @@ cabal.mkDerivation (self: { sha256 = "1qi7f3phj2j63x1wd2cvk36945cxd84s12zs03hlrn49wzx2pf1n"; buildDepends = [ binary transformers ]; postInstall = '' - ensureDir "$out/share/ghci" + mkdir -p "$out/share/ghci" ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname" ''; meta = { diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix index f05bfedafcf..31d1d7689b1 100644 --- a/pkgs/development/libraries/haskell/ghc-mod/default.nix +++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix @@ -24,7 +24,7 @@ cabal.mkDerivation (self: { make rm Makefile cd .. - ensureDir "$out/share/emacs" + mkdir -p "$out/share/emacs" mv $pname-$version emacs/site-lisp mv $out/bin/ghc-mod $out/bin/.ghc-mod-wrapped diff --git a/pkgs/development/libraries/haskell/ghc-vis/default.nix b/pkgs/development/libraries/haskell/ghc-vis/default.nix index a15ed9d1c47..d8edd81cda6 100644 --- a/pkgs/development/libraries/haskell/ghc-vis/default.nix +++ b/pkgs/development/libraries/haskell/ghc-vis/default.nix @@ -12,7 +12,7 @@ cabal.mkDerivation (self: { ]; jailbreak = true; postInstall = '' - ensureDir "$out/share/ghci" + mkdir -p "$out/share/ghci" ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname" ''; meta = { diff --git a/pkgs/development/libraries/haskell/hoogle/local.nix b/pkgs/development/libraries/haskell/hoogle/local.nix index 67f38f260e0..eebfd0224d2 100644 --- a/pkgs/development/libraries/haskell/hoogle/local.nix +++ b/pkgs/development/libraries/haskell/hoogle/local.nix @@ -65,7 +65,7 @@ cabal.mkDerivation (self: rec { exit 1 fi - ensureDir $out/share/hoogle/doc + mkdir -p $out/share/hoogle/doc export HOOGLE_DOC_PATH=$out/share/hoogle/doc cd $out/share/hoogle diff --git a/pkgs/development/mobile/androidenv/androidsdk.nix b/pkgs/development/mobile/androidenv/androidsdk.nix index 1a2124754a2..3c9327f1c59 100644 --- a/pkgs/development/mobile/androidenv/androidsdk.nix +++ b/pkgs/development/mobile/androidenv/androidsdk.nix @@ -178,7 +178,7 @@ stdenv.mkDerivation rec { # Create wrappers to the most important tools and platform tools so that we can run them if the SDK is in our PATH - ensureDir $out/bin + mkdir -p $out/bin for i in $out/libexec/android-sdk-*/tools/* do diff --git a/pkgs/development/mobile/xcodeenv/simulate-app.nix b/pkgs/development/mobile/xcodeenv/simulate-app.nix index d25ef0f8e43..c999497d8c0 100644 --- a/pkgs/development/mobile/xcodeenv/simulate-app.nix +++ b/pkgs/development/mobile/xcodeenv/simulate-app.nix @@ -10,7 +10,7 @@ in stdenv.mkDerivation { name = stdenv.lib.replaceChars [" "] [""] name; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cat > $out/bin/run-test-simulator << "EOF" #! ${stdenv.shell} -e diff --git a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix index 71e34ee5127..fd375d6213c 100644 --- a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix +++ b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "xcode-wrapper-"+version; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cd $out/bin ln -s /usr/bin/xcode-select ln -s /usr/bin/xcodebuild diff --git a/pkgs/development/ocaml-modules/ocamlmake/default.nix b/pkgs/development/ocaml-modules/ocamlmake/default.nix index 0170119d94e..3f91901d9b6 100644 --- a/pkgs/development/ocaml-modules/ocamlmake/default.nix +++ b/pkgs/development/ocaml-modules/ocamlmake/default.nix @@ -14,7 +14,7 @@ in stdenv.mkDerivation { }; installPhase = '' - ensureDir "$out/include/" + mkdir -p "$out/include/" cp OCamlMakefile "$out/include/" ''; diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix index a415ffd152d..23941653575 100644 --- a/pkgs/development/tools/apktool/default.nix +++ b/pkgs/development/tools/apktool/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { installPhase = '' install -D apktool.jar "$out/libexec/apktool/apktool.jar" - ensureDir "$out/bin" + mkdir -p "$out/bin" makeWrapper "${jre}/bin/java" "$out/bin/apktool" \ --add-flags "-jar $out/libexec/apktool/apktool.jar" \ --prefix PATH : "${buildTools}/build-tools/android-4.3/" diff --git a/pkgs/development/tools/literate-programming/noweb/default.nix b/pkgs/development/tools/literate-programming/noweb/default.nix index 291bc29e1b7..4f8691c40ad 100644 --- a/pkgs/development/tools/literate-programming/noweb/default.nix +++ b/pkgs/development/tools/literate-programming/noweb/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { sha256 = "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"; }; preBuild = '' - ensureDir $out/lib/noweb + mkdir -p $out/lib/noweb cd src makeFlags="BIN=$out/bin LIB=$out/lib/noweb MAN=$out/share/man TEXINPUTS=$out/share/texmf/tex/latex" ''; diff --git a/pkgs/development/tools/misc/distcc/masq.nix b/pkgs/development/tools/misc/distcc/masq.nix index 117480670c3..753c35b5d3a 100644 --- a/pkgs/development/tools/misc/distcc/masq.nix +++ b/pkgs/development/tools/misc/distcc/masq.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { phases = [ "installPhase" ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin bin=${gccRaw}/bin diff --git a/pkgs/development/tools/misc/grafana/default.nix b/pkgs/development/tools/misc/grafana/default.nix index 346c7fb6ad2..b1566684cf0 100644 --- a/pkgs/development/tools/misc/grafana/default.nix +++ b/pkgs/development/tools/misc/grafana/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { phases = ["unpackPhase" "installPhase"]; installPhase = '' - ensureDir $out && cp -R * $out + mkdir -p $out && cp -R * $out ${optionalString (conf!=null) ''cp ${conf} $out/config.js''} ''; diff --git a/pkgs/development/tools/misc/opengrok/default.nix b/pkgs/development/tools/misc/opengrok/default.nix index 8f77b3d7283..d38c862ecfb 100644 --- a/pkgs/development/tools/misc/opengrok/default.nix +++ b/pkgs/development/tools/misc/opengrok/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper ]; installPhase = '' - ensureDir $out + mkdir -p $out cp -a * $out/ substituteInPlace $out/bin/OpenGrok --replace /bin/uname ${coreutils}/bin/uname wrapProgram $out/bin/OpenGrok \ diff --git a/pkgs/development/tools/node-webkit/default.nix b/pkgs/development/tools/node-webkit/default.nix index be125801bd5..1c891ddf876 100644 --- a/pkgs/development/tools/node-webkit/default.nix +++ b/pkgs/development/tools/node-webkit/default.nix @@ -33,8 +33,8 @@ in stdenv.mkDerivation rec { installPhase = let LD_LIBRARY_PATH = "${nwEnv}/lib:${nwEnv}/lib64:$out/share/node-webkit"; in '' - ensureDir $out/bin - ensureDir $out/share/node-webkit + mkdir -p $out/bin + mkdir -p $out/share/node-webkit cp -R * $out/share/node-webkit ln -s ${udev}/lib/libudev.so $out/share/node-webkit/libudev.so.0 diff --git a/pkgs/development/tools/ocaml/deriving/default.nix b/pkgs/development/tools/ocaml/deriving/default.nix index d53f41b5da5..55bbf3748ea 100644 --- a/pkgs/development/tools/ocaml/deriving/default.nix +++ b/pkgs/development/tools/ocaml/deriving/default.nix @@ -52,7 +52,7 @@ versionedDerivation "ocaml-deriving" version { # not all tests compile !? # (cd tests; make) - ensureDir $out/bin + mkdir -p $out/bin cp -a lib $out/ cp -a syntax $out diff --git a/pkgs/development/tools/yuicompressor/default.nix b/pkgs/development/tools/yuicompressor/default.nix index 5dcc30811e2..1a5485af541 100644 --- a/pkgs/development/tools/yuicompressor/default.nix +++ b/pkgs/development/tools/yuicompressor/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { }; buildCommand = '' - ensureDir $out/lib + mkdir -p $out/lib ln -s $src $out/lib/yuicompressor.jar ''; } diff --git a/pkgs/games/andyetitmoves/default.nix b/pkgs/games/andyetitmoves/default.nix index cf3f6e1563b..ec14325e3d9 100644 --- a/pkgs/games/andyetitmoves/default.nix +++ b/pkgs/games/andyetitmoves/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { phases = "unpackPhase installPhase"; installPhase = '' - ensureDir $out/{opt/andyetitmoves,bin} + mkdir -p $out/{opt/andyetitmoves,bin} cp -r * $out/opt/andyetitmoves/ fullPath=${stdenv.gcc.gcc}/lib64 diff --git a/pkgs/games/crafty/default.nix b/pkgs/games/crafty/default.nix index 54deae2ecfe..0e2796df22d 100644 --- a/pkgs/games/crafty/default.nix +++ b/pkgs/games/crafty/default.nix @@ -621,10 +621,10 @@ stdenv.mkDerivation rec { else "make"; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p ./crafty $out/bin - ensureDir $out/share/crafty + mkdir -p $out/share/crafty cd $out/share/crafty $out/bin/crafty "books create ${startPgn} 60" @@ -635,7 +635,7 @@ stdenv.mkDerivation rec { $out/bin/crafty "book create enormous.pgn 60" rm -f *.001 enormous.pgn - ensureDir $out/share/crafty/TB + mkdir -p $out/share/crafty/TB ${stdenv.lib.fold (tb: acc: acc + "\nln -s " + toString tb diff --git a/pkgs/games/gsb/default.nix b/pkgs/games/gsb/default.nix index 52c3830c22a..757d3cf7681 100644 --- a/pkgs/games/gsb/default.nix +++ b/pkgs/games/gsb/default.nix @@ -32,8 +32,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.gcc.gcc + "/lib64"; installPhase = '' - ensureDir $out/libexec/positech/GSB/ - ensureDir $out/bin + mkdir -p $out/libexec/positech/GSB/ + mkdir -p $out/bin patchelf \ --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ diff --git a/pkgs/games/openlierox/default.nix b/pkgs/games/openlierox/default.nix index 0c7e46ae074..ede7b6fdac4 100644 --- a/pkgs/games/openlierox/default.nix +++ b/pkgs/games/openlierox/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin $out/share/OpenLieroX + mkdir -p $out/bin $out/share/OpenLieroX cp bin/* $out/bin cp -R ../share/gamedir/* $out/share/OpenLieroX ''; diff --git a/pkgs/games/opentyrian/default.nix b/pkgs/games/opentyrian/default.nix index 260b146217c..5e2ecdbcc5c 100644 --- a/pkgs/games/opentyrian/default.nix +++ b/pkgs/games/opentyrian/default.nix @@ -22,9 +22,9 @@ stdenv.mkDerivation rec { "; buildPhase = "make release"; installPhase = " - ensureDir $out/bin + mkdir -p $out/bin cp ./opentyrian $out/bin - ensureDir $out/share/opentyrian/data + mkdir -p $out/share/opentyrian/data unzip -j $data -d $out/share/opentyrian/data "; diff --git a/pkgs/games/vessel/default.nix b/pkgs/games/vessel/default.nix index 9b9dd6c1f43..8a92490b6e0 100644 --- a/pkgs/games/vessel/default.nix +++ b/pkgs/games/vessel/default.nix @@ -24,8 +24,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.lib.makeLibraryPath [ SDL pulseaudio alsaLib ] ; installPhase = '' - ensureDir $out/libexec/strangeloop/vessel/ - ensureDir $out/bin + mkdir -p $out/libexec/strangeloop/vessel/ + mkdir -p $out/bin # allow scripting of the mojoinstaller gcc -fPIC -shared -o isatty.so $ld_preload diff --git a/pkgs/games/worldofgoo/default.nix b/pkgs/games/worldofgoo/default.nix index 13e7e487c8f..c39ffb1de05 100644 --- a/pkgs/games/worldofgoo/default.nix +++ b/pkgs/games/worldofgoo/default.nix @@ -50,8 +50,8 @@ stdenv.mkDerivation rec { + ":" + stdenv.gcc.gcc + "/lib64"; installPhase = '' - ensureDir $out/libexec/2dboy/WorldOfGoo/ - ensureDir $out/bin + mkdir -p $out/libexec/2dboy/WorldOfGoo/ + mkdir -p $out/bin patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath $libPath ./WorldOfGoo.bin64 diff --git a/pkgs/misc/emulators/bsod/default.nix b/pkgs/misc/emulators/bsod/default.nix index 181a89b6667..a6cb42d5c67 100644 --- a/pkgs/misc/emulators/bsod/default.nix +++ b/pkgs/misc/emulators/bsod/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bsod $out/bin ''; diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index 976e4dc687f..4bc9a11a589 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -89,7 +89,7 @@ let vimHelpTags = '' installPhase = '' target=$out/vim-plugins/$path - ensureDir $out/vim-plugins + mkdir -p $out/vim-plugins cp -r . $target ${vimHelpTags} vimHelpTags $target diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix index 73585d59c0b..2a48590154e 100644 --- a/pkgs/os-specific/darwin/xcode/default.nix +++ b/pkgs/os-specific/darwin/xcode/default.nix @@ -31,12 +31,12 @@ in stdenv.mkDerivation rec { patches = optional (osxVersion == "10.9") ./gcc-fix-enum-attributes.patch; installPhase = '' - ensureDir "$out/share/sysroot" + mkdir -p "$out/share/sysroot" cp -a * "$out/share/sysroot/" ln -s "$out/share/sysroot/usr/lib" "$out/lib" ln -s "$out/share/sysroot/usr/include" "$out/include" - ensureDir "$toolchain" + mkdir -p "$toolchain" pushd "$toolchain" ${xpwn}/bin/hfsplus "$(dirs +1)/../main.hfs" extractall \ Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr \ diff --git a/pkgs/os-specific/linux/apparmor/default.nix b/pkgs/os-specific/linux/apparmor/default.nix index 12173e20f3f..8048419a93b 100644 --- a/pkgs/os-specific/linux/apparmor/default.nix +++ b/pkgs/os-specific/linux/apparmor/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { make make check make install - ensureDir $out/lib/perl5/site_perl/ + mkdir -p $out/lib/perl5/site_perl/ cp swig/perl/LibAppArmor.pm $out/lib/perl5/site_perl/ cp swig/perl/LibAppArmor.bs $out/lib/perl5/site_perl/ # this is automatically copied elsewhere.... diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix index e12c80e0886..6c7d6d5330e 100644 --- a/pkgs/os-specific/linux/bbswitch/default.nix +++ b/pkgs/os-specific/linux/bbswitch/default.nix @@ -22,10 +22,10 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/lib/modules/${kernel.modDirVersion}/misc + mkdir -p $out/lib/modules/${kernel.modDirVersion}/misc cp bbswitch.ko $out/lib/modules/${kernel.modDirVersion}/misc - ensureDir $out/bin + mkdir -p $out/bin tee $out/bin/discrete_vga_poweroff << EOF #!/bin/sh diff --git a/pkgs/os-specific/linux/frandom/default.nix b/pkgs/os-specific/linux/frandom/default.nix index 419207882f8..1814a72667a 100644 --- a/pkgs/os-specific/linux/frandom/default.nix +++ b/pkgs/os-specific/linux/frandom/default.nix @@ -20,10 +20,10 @@ stdenv.mkDerivation rec { installPhase = '' kernelVersion=${kernel.modDirVersion} - ensureDir $out/lib/modules/$kernelVersion/misc + mkdir -p $out/lib/modules/$kernelVersion/misc cp frandom.ko $out/lib/modules/$kernelVersion/misc - ensureDir $out/lib/udev/rules.d + mkdir -p $out/lib/udev/rules.d tee $out/lib/udev/rules.d/10-frandom.rules <<-EOF # # These are the rules for the frandom devices. In theory, we could let diff --git a/pkgs/os-specific/linux/gogoclient/default.nix b/pkgs/os-specific/linux/gogoclient/default.nix index 09a449bbede..a627a8cbcc9 100644 --- a/pkgs/os-specific/linux/gogoclient/default.nix +++ b/pkgs/os-specific/linux/gogoclient/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { buildInputs = [openssl]; preFixup = '' - ensureDir $out/share/${name} + mkdir -p $out/share/${name} chmod 444 $out/bin/gogoc.conf mv $out/bin/gogoc.conf $out/share/${name}/gogoc.conf.sample rm $out/bin/gogoc.conf.sample diff --git a/pkgs/os-specific/linux/google-authenticator/default.nix b/pkgs/os-specific/linux/google-authenticator/default.nix index a9278f0c7ce..7667b330f23 100644 --- a/pkgs/os-specific/linux/google-authenticator/default.nix +++ b/pkgs/os-specific/linux/google-authenticator/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin $out/lib/security + mkdir -p $out/bin $out/lib/security cp pam_google_authenticator.so $out/lib/security cp google-authenticator $out/bin ''; diff --git a/pkgs/os-specific/linux/i7z/default.nix b/pkgs/os-specific/linux/i7z/default.nix index 33ac05aef47..80e43f17b3c 100644 --- a/pkgs/os-specific/linux/i7z/default.nix +++ b/pkgs/os-specific/linux/i7z/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/sbin + mkdir -p $out/sbin make install prefix=$out install -Dm755 GUI/i7z_GUI $out/sbin/i7z-gui ''; diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix index 5c36bb09781..463722d2c96 100644 --- a/pkgs/os-specific/linux/mcelog/default.nix +++ b/pkgs/os-specific/linux/mcelog/default.nix @@ -26,7 +26,7 @@ in stdenv.mkDerivation { makeFlags = "prefix=$(out) etcprefix=$(out) DOCDIR=$(out)/share/doc"; preInstall = '' - ensureDir $out/share/doc + mkdir -p $out/share/doc ''; meta = { diff --git a/pkgs/os-specific/linux/microcode/converter.nix b/pkgs/os-specific/linux/microcode/converter.nix index 49babc6ca57..da4d9677217 100644 --- a/pkgs/os-specific/linux/microcode/converter.nix +++ b/pkgs/os-specific/linux/microcode/converter.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir "$out/bin" + mkdir -p "$out/bin" cp intel-microcode2ucode "$out/bin/" ''; diff --git a/pkgs/os-specific/linux/netatop/default.nix b/pkgs/os-specific/linux/netatop/default.nix index a863ee8a4d0..e1cdd919e93 100644 --- a/pkgs/os-specific/linux/netatop/default.nix +++ b/pkgs/os-specific/linux/netatop/default.nix @@ -22,8 +22,8 @@ stdenv.mkDerivation { ''; preInstall = '' - ensureDir $out/bin $out/sbin $out/share/man/man{4,8} - ensureDir $out/lib/modules/${kernel.modDirVersion}/extra + mkdir -p $out/bin $out/sbin $out/share/man/man{4,8} + mkdir -p $out/lib/modules/${kernel.modDirVersion}/extra ''; meta = { diff --git a/pkgs/os-specific/linux/otpw/default.nix b/pkgs/os-specific/linux/otpw/default.nix index fe5f938b75b..c270f0dd0c6 100644 --- a/pkgs/os-specific/linux/otpw/default.nix +++ b/pkgs/os-specific/linux/otpw/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin $out/lib/security $out/share/man/man{1,8} + mkdir -p $out/bin $out/lib/security $out/share/man/man{1,8} cp pam_*.so $out/lib/security cp otpw-gen $out/bin cp *.1 $out/share/man/man1 diff --git a/pkgs/os-specific/linux/rfkill/udev.nix b/pkgs/os-specific/linux/rfkill/udev.nix index 6cf6e4adfa0..054ed471eaa 100644 --- a/pkgs/os-specific/linux/rfkill/udev.nix +++ b/pkgs/os-specific/linux/rfkill/udev.nix @@ -31,12 +31,12 @@ stdenv.mkDerivation { dontBuild = true; installPhase = '' - ensureDir "$out/etc/udev/rules.d/"; + mkdir -p "$out/etc/udev/rules.d/"; cat > "$out/etc/udev/rules.d/90-rfkill.rules" << EOF SUBSYSTEM=="rfkill", ATTR{type}=="wlan", RUN+="$out/bin/rfkill-hook.sh" EOF - ensureDir "$out/bin/"; + mkdir -p "$out/bin/"; cp ${./rfkill-hook.sh} "$out/bin/rfkill-hook.sh" chmod +x "$out/bin/rfkill-hook.sh"; ''; diff --git a/pkgs/os-specific/linux/x86info/default.nix b/pkgs/os-specific/linux/x86info/default.nix index 6cd2a431a60..eaec63f98bf 100644 --- a/pkgs/os-specific/linux/x86info/default.nix +++ b/pkgs/os-specific/linux/x86info/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ pciutils python ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp x86info lsmsr $out/bin ''; diff --git a/pkgs/servers/dict/dictd-wiktionary.nix b/pkgs/servers/dict/dictd-wiktionary.nix index 9e9c05d2f91..370bfd39137 100644 --- a/pkgs/servers/dict/dictd-wiktionary.nix +++ b/pkgs/servers/dict/dictd-wiktionary.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { builder = writeScript "wiktionary-builder.sh" '' source $stdenv/setup - ensureDir $out/share/dictd/ + mkdir -p $out/share/dictd/ cd $out/share/dictd export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive diff --git a/pkgs/servers/dict/dictd-wordnet.nix b/pkgs/servers/dict/dictd-wordnet.nix index 063868ddc6e..b6680e8b21c 100644 --- a/pkgs/servers/dict/dictd-wordnet.nix +++ b/pkgs/servers/dict/dictd-wordnet.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { builder = writeScript "builder.sh" '' . ${stdenv}/setup - ensureDir $out/share/dictd/ + mkdir -p $out/share/dictd/ cd $out/share/dictd for i in ${wordnet}/dict/data.*; do diff --git a/pkgs/servers/http/thttpd/default.nix b/pkgs/servers/http/thttpd/default.nix index e03183cbe49..0bb3d96b37b 100644 --- a/pkgs/servers/http/thttpd/default.nix +++ b/pkgs/servers/http/thttpd/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { ''; preInstall = '' - ensureDir "$out/man/man1" + mkdir -p "$out/man/man1" sed -i -e 's/-o bin -g bin *//' Makefile sed -i -e '/chgrp/d' extras/Makefile ''; diff --git a/pkgs/servers/monitoring/seyren/default.nix b/pkgs/servers/monitoring/seyren/default.nix index 541c377c404..e6e15129568 100644 --- a/pkgs/servers/monitoring/seyren/default.nix +++ b/pkgs/servers/monitoring/seyren/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper jre src ]; installPhase = '' - ensureDir "$out"/bin + mkdir -p "$out"/bin makeWrapper "${jre}/bin/java" "$out"/bin/seyren --add-flags "-jar $src" ''; diff --git a/pkgs/servers/nosql/influxdb/default.nix b/pkgs/servers/nosql/influxdb/default.nix index fa9c48c6ea9..77852b6d2ed 100644 --- a/pkgs/servers/nosql/influxdb/default.nix +++ b/pkgs/servers/nosql/influxdb/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { wrapProgram "$out/bin/influxdb" \ --prefix LD_LIBRARY_PATH : "${stdenv.gcc.gcc}/lib:${stdenv.gcc.gcc}/lib64" - ensureDir $out/share/influxdb + mkdir -p $out/share/influxdb cp -R admin scripts config.toml $out/share/influxdb ''; diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix index 274fc89f94d..9274ba86a70 100644 --- a/pkgs/servers/serfdom/default.nix +++ b/pkgs/servers/serfdom/default.nix @@ -112,7 +112,7 @@ in ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bin/serf $out/bin ''; diff --git a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix index 9ea63a46be3..3abffc46926 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix @@ -116,7 +116,7 @@ rec { buildCommand = '' set -x - ensureDir $out/bin $out/lib $out/libexec + mkdir -p $out/bin $out/lib $out/libexec # Copy what we need of Glibc. cp -d ${glibc}/lib/ld-*.so* $out/lib diff --git a/pkgs/tools/backup/store-backup/default.nix b/pkgs/tools/backup/store-backup/default.nix index e9b98fec710..c986adeafdc 100644 --- a/pkgs/tools/backup/store-backup/default.nix +++ b/pkgs/tools/backup/store-backup/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/scripts + mkdir -p $out/scripts mv * $out mv $out/_ATTENTION_ $out/doc mv $out/{correct.sh,cron-storebackup} $out/scripts diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix index bff5aaf242b..23340f88376 100644 --- a/pkgs/tools/filesystems/unionfs-fuse/default.nix +++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { # This must be done in preConfigure because the build process removes # helper from the source directory during the build. preConfigure = '' - ensureDir $out/sbin + mkdir -p $out/sbin cp -a mount.unionfs $out/sbin/mount.unionfs-fuse substituteInPlace $out/sbin/mount.unionfs-fuse --replace mount.fuse ${fuse}/sbin/mount.fuse substituteInPlace $out/sbin/mount.unionfs-fuse --replace unionfs $out/bin/unionfs diff --git a/pkgs/tools/misc/debootstrap/default.nix b/pkgs/tools/misc/debootstrap/default.nix index aac7855827c..a76a57864d9 100644 --- a/pkgs/tools/misc/debootstrap/default.nix +++ b/pkgs/tools/misc/debootstrap/default.nix @@ -20,7 +20,7 @@ let ]; # TODO install man installPhase = '' - ensureDir $out/sbin + mkdir -p $out/sbin ls -l t=$out/sbin/MAKEDEV cp MAKEDEV $t @@ -78,7 +78,7 @@ stdenv.mkDerivation { functions d=$out/share/debootstrap - ensureDir $out/{share/debootstrap,bin} + mkdir -p $out/{share/debootstrap,bin} ${fakeroot}/bin/fakeroot -- make devices.tar.gz MAKEDEV=${makedev}/sbin/MAKEDEV @@ -94,7 +94,7 @@ stdenv.mkDerivation { EOF chmod +x $out/bin/debootstrap - ensureDir $out/man/man8 + mkdir -p $out/man/man8 mv debootstrap.8 $out/man/man8 ''; diff --git a/pkgs/tools/misc/megacli/default.nix b/pkgs/tools/misc/megacli/default.nix index 2b15d4470c3..ef85c3994a8 100644 --- a/pkgs/tools/misc/megacli/default.nix +++ b/pkgs/tools/misc/megacli/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { [ stdenv.gcc.gcc stdenv.gcc.libc ncurses ]; buildCommand = '' - ensureDir $out/bin + mkdir -p $out/bin cd $out unzip ${src} rpm2cpio linux/MegaCli-8.07.07-1.noarch.rpm | cpio -idmv diff --git a/pkgs/tools/misc/multitail/default.nix b/pkgs/tools/misc/multitail/default.nix index 96d3764abd4..831bc532c33 100644 --- a/pkgs/tools/misc/multitail/default.nix +++ b/pkgs/tools/misc/multitail/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { makeFlags = stdenv.lib.optionalString stdenv.isDarwin "-f makefile.macosx"; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp multitail $out/bin ''; diff --git a/pkgs/tools/misc/picocom/default.nix b/pkgs/tools/misc/picocom/default.nix index bb08091ad57..126725eaafc 100644 --- a/pkgs/tools/misc/picocom/default.nix +++ b/pkgs/tools/misc/picocom/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin $out/share/man/man8 + mkdir -p $out/bin $out/share/man/man8 cp picocom $out/bin cp picocom.8 $out/share/man/man8 ''; diff --git a/pkgs/tools/misc/rkflashtool/default.nix b/pkgs/tools/misc/rkflashtool/default.nix index c985183c1c0..6b74f9ac5d3 100644 --- a/pkgs/tools/misc/rkflashtool/default.nix +++ b/pkgs/tools/misc/rkflashtool/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp rkunpack rkcrc rkflashtool $out/bin ''; diff --git a/pkgs/tools/misc/sl/default.nix b/pkgs/tools/misc/sl/default.nix index 14cc6c4260f..2ed8d89d43e 100644 --- a/pkgs/tools/misc/sl/default.nix +++ b/pkgs/tools/misc/sl/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { buildInputs = [ ncurses ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp sl $out/bin ''; diff --git a/pkgs/tools/networking/connect/default.nix b/pkgs/tools/networking/connect/default.nix index c6291efad31..8723c53c322 100644 --- a/pkgs/tools/networking/connect/default.nix +++ b/pkgs/tools/networking/connect/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; buildPhase = '' - ensureDir $out/bin + mkdir -p $out/bin gcc -o $out/bin/connect connect.c ''; diff --git a/pkgs/tools/networking/filegive/default.nix b/pkgs/tools/networking/filegive/default.nix index a47a0397bf5..f9efc6815b6 100644 --- a/pkgs/tools/networking/filegive/default.nix +++ b/pkgs/tools/networking/filegive/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp filegive $out/bin ''; diff --git a/pkgs/tools/networking/reaver-wps/default.nix b/pkgs/tools/networking/reaver-wps/default.nix index a057985b48c..65d681fdc22 100644 --- a/pkgs/tools/networking/reaver-wps/default.nix +++ b/pkgs/tools/networking/reaver-wps/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; preInstall = '' - ensureDir $out/bin + mkdir -p $out/bin ''; meta = { diff --git a/pkgs/tools/networking/udptunnel/default.nix b/pkgs/tools/networking/udptunnel/default.nix index 88ee926e406..0cb777b01af 100644 --- a/pkgs/tools/networking/udptunnel/default.nix +++ b/pkgs/tools/networking/udptunnel/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { }; installPhase = '' - ensureDir $out/bin $out/share/udptunnel + mkdir -p $out/bin $out/share/udptunnel cp udptunnel $out/bin cp README COPYING* $out/share/udptunnel ''; diff --git a/pkgs/tools/security/fprot/default.nix b/pkgs/tools/security/fprot/default.nix index 2a8531a1795..b43ea402f6d 100644 --- a/pkgs/tools/security/fprot/default.nix +++ b/pkgs/tools/security/fprot/default.nix @@ -11,10 +11,10 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp fpscan $out/bin - ensureDir $out/opt/f-prot + mkdir -p $out/opt/f-prot cp fpupdate $out/opt/f-prot cp product.data.default $out/opt/f-prot/product.data cp license.key $out/opt/f-prot/ @@ -23,12 +23,12 @@ stdenv.mkDerivation rec { patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $out/opt/f-prot/fpupdate - ensureDir $out/share/man/ - ensureDir $out/share/man/man1 + mkdir -p $out/share/man/ + mkdir -p $out/share/man/man1 cp doc/man/fpscan.1 $out/share/man/man1 - ensureDir $out/share/man/man5 + mkdir -p $out/share/man/man5 cp doc/man/f-prot.conf.5 $out/share/man/man5 - ensureDir $out/share/man/man8 + mkdir -p $out/share/man/man8 cp doc/man/fpupdate.8 $out/share/man/man8 ''; diff --git a/pkgs/tools/security/meo/default.nix b/pkgs/tools/security/meo/default.nix index e18b68c7593..820919d1a2e 100644 --- a/pkgs/tools/security/meo/default.nix +++ b/pkgs/tools/security/meo/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp tools/{meo,p11} $out/bin cp meo-gui/meo-gui $out/bin cp meo-gui/meo-gui $out/bin diff --git a/pkgs/tools/security/tor/torbrowser.nix b/pkgs/tools/security/tor/torbrowser.nix index 7be7c79888e..f220a46bddc 100644 --- a/pkgs/tools/security/tor/torbrowser.nix +++ b/pkgs/tools/security/tor/torbrowser.nix @@ -45,8 +45,8 @@ in stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/share/tor-browser - ensureDir $out/bin + mkdir -p $out/share/tor-browser + mkdir -p $out/bin cp -R * $out/share/tor-browser cat > "$out/bin/tor-browser" << EOF diff --git a/pkgs/tools/system/storebrowse/default.nix b/pkgs/tools/system/storebrowse/default.nix index c46372bcd4b..a997e38ba4a 100644 --- a/pkgs/tools/system/storebrowse/default.nix +++ b/pkgs/tools/system/storebrowse/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp storebrowse $out/bin ''; diff --git a/pkgs/tools/system/vboot_reference/default.nix b/pkgs/tools/system/vboot_reference/default.nix index e1c4734bbda..087a3212fc2 100644 --- a/pkgs/tools/system/vboot_reference/default.nix +++ b/pkgs/tools/system/vboot_reference/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp build/cgpt/cgpt $out/bin cp build/utility/vbutil_kernel $out/bin cp build/utility/vbutil_key $out/bin diff --git a/pkgs/tools/typesetting/tex/pgfplots/default.nix b/pkgs/tools/typesetting/tex/pgfplots/default.nix index bc47244a5fa..67739350c6f 100644 --- a/pkgs/tools/typesetting/tex/pgfplots/default.nix +++ b/pkgs/tools/typesetting/tex/pgfplots/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { buildPhase = "true"; installPhase = " - ensureDir $out/share/texmf-nix + mkdir -p $out/share/texmf-nix cp -prd * $out/share/texmf-nix "; } From b3b9c51b34077edda65a07d0fc97e1a385d1fc7f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 14:57:12 +0200 Subject: [PATCH 07/53] Add a deprecation warning to ensureDir --- pkgs/stdenv/generic/setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index ce83b1f6961..4f78713a549 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -120,6 +120,7 @@ fi # Ensure that the given directories exists. ensureDir() { + echo "warning: ‘ensureDir’ is deprecated; use ‘mkdir’ instead" >&2 local dir for dir in "$@"; do if ! [ -x "$dir" ]; then mkdir -p "$dir"; fi From 7fe89be1464dd0263c7c987d2460613f44c7b229 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 16:39:39 +0200 Subject: [PATCH 08/53] gcc: Fix purity Somewhere the no-sys-dirs.patch got disabled, so gcc was looking in /usr/local/include and /usr/lib. Since I can't fix the patch easily, I've borrowed the --sysroot trick from clang-wrapper. This causes builtin paths to be prefixed with /var/empty (e.g. /var/empty/usr/lib), which don't exist. --- pkgs/build-support/gcc-wrapper/gcc-wrapper.sh | 1 + pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 3 ++ .../development/compilers/gcc/4.8/default.nix | 1 - .../compilers/gcc/4.8/no-sys-dirs.patch | 41 ------------------- 4 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh index 2ad7783a442..c53fd44207d 100644 --- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh @@ -77,6 +77,7 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then n=$((n + 1)) done params=("${rest[@]}") + NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE --sysroot=/var/empty" fi diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 74b6273848e..ff3f320e0d8 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -32,6 +32,9 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ # We cannot skip this; barf. echo "impure path \`$p' used in link" >&2 exit 1 + elif test "${p:0:9}" = "--sysroot"; then + # Our ld is not built with sysroot support (Can we fix that?) + : else rest=("${rest[@]}" "$p") fi diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 58732f1a0be..21487a09dcd 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -67,7 +67,6 @@ let version = "4.8.3"; patches = [] ++ optional enableParallelBuilding ./parallel-bconfig.patch ++ optional (cross != null) ./libstdc++-target.patch - # ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its # target libraries and tools. ++ optional langAda ./gnat-cflags.patch diff --git a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch deleted file mode 100644 index 79901703cb8..00000000000 --- a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -ru gcc-4.3.1-orig/gcc/cppdefault.c gcc-4.3.1/gcc/cppdefault.c ---- gcc-4.3.1-orig/gcc/cppdefault.c 2007-07-26 10:37:01.000000000 +0200 -+++ gcc-4.3.1/gcc/cppdefault.c 2008-06-25 17:48:23.000000000 +0200 -@@ -41,6 +41,10 @@ - # undef CROSS_INCLUDE_DIR - #endif - -+#undef LOCAL_INCLUDE_DIR -+#undef SYSTEM_INCLUDE_DIR -+#undef STANDARD_INCLUDE_DIR -+ - const struct default_include cpp_include_defaults[] - #ifdef INCLUDE_DEFAULTS - = INCLUDE_DEFAULTS; -diff -ru gcc-4.3.1-orig/gcc/gcc.c gcc-4.3.1/gcc/gcc.c ---- gcc-4.3.1-orig/gcc/gcc.c 2008-03-02 23:55:19.000000000 +0100 -+++ gcc-4.3.1/gcc/gcc.c 2008-06-25 17:52:53.000000000 +0200 -@@ -1478,10 +1478,10 @@ - /* Default prefixes to attach to command names. */ - - #ifndef STANDARD_STARTFILE_PREFIX_1 --#define STANDARD_STARTFILE_PREFIX_1 "/lib/" -+#define STANDARD_STARTFILE_PREFIX_1 "" - #endif - #ifndef STANDARD_STARTFILE_PREFIX_2 --#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/" -+#define STANDARD_STARTFILE_PREFIX_2 "" - #endif - - #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */ ---- gcc-4.3.1-orig/gcc/Makefile.in 2008-05-11 20:54:15.000000000 +0200 -+++ gcc-4.3.1/gcc/Makefile.in 2008-06-25 17:48:23.000000000 +0200 -@@ -3277,7 +3281,7 @@ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ - -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -- -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -+ -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \ - -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DPREFIX=\"$(prefix)/\" \ From 55e8e0ef9bf2c927edbdcc05097a1e7185184cba Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 12:46:42 +0200 Subject: [PATCH 09/53] gcc: Slight builder cleanup --- pkgs/development/compilers/gcc/4.8/builder.sh | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/builder.sh b/pkgs/development/compilers/gcc/4.8/builder.sh index 7c9b9420dda..f0f428e4dc5 100644 --- a/pkgs/development/compilers/gcc/4.8/builder.sh +++ b/pkgs/development/compilers/gcc/4.8/builder.sh @@ -109,13 +109,11 @@ if test "$noSysDirs" = "1"; then fi fi - # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find # the startfiles. # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx # for the startfiles. - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ @@ -128,8 +126,7 @@ if test "$noSysDirs" = "1"; then ) if test -z "$targetConfig"; then - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \ BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \ ) @@ -138,13 +135,11 @@ if test "$noSysDirs" = "1"; then if test -n "$targetConfig" -a "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing # limits.h in this stagae - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ LIMITS_H_TEST=false \ ) else - makeFlagsArray=( \ - "${makeFlagsArray[@]}" \ + makeFlagsArray+=( \ LIMITS_H_TEST=true \ ) fi @@ -163,6 +158,7 @@ preConfigure() { # Patch to get armvt5el working: sed -i -e 's/ arm)/ arm*)/' newlib/configure.host fi + # Bug - they packaged zlib if test -d "zlib"; then # This breaks the build without-headers, which should build only @@ -189,8 +185,8 @@ preConfigure() { fi # Eval the preConfigure script from nix expression. - eval $providedPreConfigure; - env; + eval "$providedPreConfigure" + # Perform the build in a different directory. mkdir ../build cd ../build From 89f8af55f11b01e68cbfc6d10537413140261721 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jun 2014 19:51:43 +0200 Subject: [PATCH 10/53] Darwin: Use xcrun to get the path to the SDK Recent versions of Xcode don't install headers in /usr/include but in a directory like /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include So use that instead, falling back to /usr/include in case of an older version of Xcode. --- .../development/compilers/gcc/4.8/default.nix | 23 ++++++++++++------- pkgs/stdenv/nix/default.nix | 9 +++++++- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 21487a09dcd..10d6992ede1 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -303,14 +303,21 @@ stdenv.mkDerivation ({ "\"--with-host-libstdcxx=-Wl,-rpath,\$prefix/lib/amd64 -lstdc++\" \"--with-boot-ldflags=-L../prev-x86_64-pc-solaris2.11/libstdc++-v3/src/.libs\""} ); - ${stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) - '' - export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` - export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" - export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" - export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" - ''} - ''; + '' + stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) '' + export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g` + export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET" + export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" + export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + if xcodePath=$(/usr/bin/xcrun --show-sdk-path); then + configureFlagsArray+=(--with-native-system-header-dir=$xcodePath/usr/include) + makeFlagsArray+=( \ + CFLAGS_FOR_BUILD=-F$xcodePath/System/Library/Frameworks \ + CFLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + FLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + ) + fi + ''; dontDisableStatic = true; diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 78e5b84a841..84bcea7f643 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -16,7 +16,14 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " fi - ''; + '' + (if stdenv.isDarwin then '' + export NIX_CFLAGS_COMPILE="--sysroot=/var/empty" + if xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null); then + NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + else + NIX_CFLAGS_COMPILE+=" -idirafter /usr/include -F/System/Library/Frameworks" + fi + '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From 0fd9db3cfbae877dcf7a07886c45197386cfef4d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 14:27:57 +0200 Subject: [PATCH 11/53] gcc-4.8: Get rid of lib64 Having a separate lib64 is bad because it requires special-casing in lots of places. Previously done in e4a11b4d92424c42f61ee55cf505ac1217944f4a, which apparently got lost going from 4.6 to 4.8. --- pkgs/development/compilers/gcc/4.8/builder.sh | 9 +++++++++ pkgs/development/compilers/gcc/4.8/default.nix | 2 ++ 2 files changed, 11 insertions(+) diff --git a/pkgs/development/compilers/gcc/4.8/builder.sh b/pkgs/development/compilers/gcc/4.8/builder.sh index f0f428e4dc5..3d24d34a2f2 100644 --- a/pkgs/development/compilers/gcc/4.8/builder.sh +++ b/pkgs/development/compilers/gcc/4.8/builder.sh @@ -200,6 +200,15 @@ postConfigure() { } +preInstall() { + # Make ‘lib64’ a symlink to ‘lib’. + if [ -n "$is64bit" -a -z "$enableMultilib" ]; then + mkdir -p $out/lib + ln -s lib $out/lib64 + fi +} + + postInstall() { # Remove precompiled headers for now. They are very big and # probably not very useful yet. diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 10d6992ede1..8865ca7c955 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -504,6 +504,8 @@ stdenv.mkDerivation ({ inherit enableParallelBuilding; + inherit (stdenv) is64bit; + meta = { homepage = http://gcc.gnu.org/; license = "GPLv3+"; # runtime support libraries are typically LGPLv3+ From 06536251c9c697eba324b18d9df8d0d95938048f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 13:08:09 +0200 Subject: [PATCH 12/53] readline: Don't use gcc-apple --- .../libraries/readline/no-arch_only.patch | 14 ++++++++++++++ .../libraries/readline/readline6.nix | 4 +++- pkgs/top-level/all-packages.nix | 18 ++---------------- 3 files changed, 19 insertions(+), 17 deletions(-) create mode 100644 pkgs/development/libraries/readline/no-arch_only.patch diff --git a/pkgs/development/libraries/readline/no-arch_only.patch b/pkgs/development/libraries/readline/no-arch_only.patch new file mode 100644 index 00000000000..b23eab5d9d7 --- /dev/null +++ b/pkgs/development/libraries/readline/no-arch_only.patch @@ -0,0 +1,14 @@ +diff -ru -x '*~' readline-6.2-orig/support/shobj-conf readline-6.2/support/shobj-conf +--- support/shobj-conf 2009-10-28 14:20:21.000000000 +0100 ++++ support/shobj-conf 2014-07-01 13:03:28.000000000 +0200 +@@ -168,8 +168,8 @@ + SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' + SHLIB_LIBSUFF='dylib' + +- SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`' +- SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' ++ SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup' ++ SHLIB_XLDFLAGS='-dynamiclib -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + + SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 + ;; diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix index 0826e6c5f7c..e6b49e413b8 100644 --- a/pkgs/development/libraries/readline/readline6.nix +++ b/pkgs/development/libraries/readline/readline6.nix @@ -12,7 +12,9 @@ stdenv.mkDerivation (rec { patchFlags = "-p0"; patches = - [ ./link-against-ncurses.patch ] + [ ./link-against-ncurses.patch + ./no-arch_only.patch + ] ++ (let patch = nr: sha256: diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bd5bb4f1832..fff4371a263 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5969,23 +5969,9 @@ let readline5 = callPackage ../development/libraries/readline/readline5.nix { }; - readline6 = callPackage ../development/libraries/readline/readline6.nix { - stdenv = - # On Darwin, Readline uses `-arch_only', which is specific to - # Apple-GCC. So give it what it expects. - if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + readline6 = callPackage ../development/libraries/readline/readline6.nix { }; - readline63 = callPackage ../development/libraries/readline/readline6.3.nix { - stdenv = - # On Darwin, Readline uses `-arch_only', which is specific to - # Apple-GCC. So give it what it expects. - if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + readline63 = callPackage ../development/libraries/readline/readline6.3.nix { }; librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { }; From 0d8014f6fcdf7fbbea93f5bf8fd1750da66d4d2c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 15:53:30 +0200 Subject: [PATCH 13/53] Darwin: Search for libraries in $sdk/usr/lib This required adding a new environment variable NIX_LDFLAGS_AFTER that ensures that the -L.../usr/lib flag happens last. --- pkgs/build-support/clang-wrapper/ld-wrapper.sh | 4 ++-- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 ++-- pkgs/stdenv/nix/default.nix | 10 ++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/pkgs/build-support/clang-wrapper/ld-wrapper.sh b/pkgs/build-support/clang-wrapper/ld-wrapper.sh index ae45c62d460..105d1670eb6 100644 --- a/pkgs/build-support/clang-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/clang-wrapper/ld-wrapper.sh @@ -48,8 +48,8 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) + extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extraBefore+=($NIX_LDFLAGS_BEFORE) fi diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index ff3f320e0d8..5b8af068a00 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -48,8 +48,8 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra=(${extra[@]} $NIX_LDFLAGS) - extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE) + extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extraBefore+=($NIX_LDFLAGS_BEFORE) fi diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 84bcea7f643..ba693443b05 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -17,12 +17,10 @@ import ../generic rec { xargsFlags=" " fi '' + (if stdenv.isDarwin then '' - export NIX_CFLAGS_COMPILE="--sysroot=/var/empty" - if xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null); then - NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" - else - NIX_CFLAGS_COMPILE+=" -idirafter /usr/include -F/System/Library/Frameworks" - fi + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" + xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From f46108aaf020173ec4fdf532d4c2cf26eabeb2a6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 16:22:34 +0200 Subject: [PATCH 14/53] Remove last reference to stdenvType --- pkgs/games/0ad/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/games/0ad/default.nix b/pkgs/games/0ad/default.nix index efbd59dbbe3..39124d28f0a 100644 --- a/pkgs/games/0ad/default.nix +++ b/pkgs/games/0ad/default.nix @@ -1,4 +1,4 @@ -{ stdenv, stdenvType, callPackage, fetchurl, python27 +{ stdenv, callPackage, fetchurl, python27 , pkgconfig, spidermonkey_24, boost, icu, libxml2, libpng , libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc , openalSoft, mesa, xproto, libX11, libXcursor, nspr, SDL @@ -16,8 +16,8 @@ let zeroadData = callPackage ./data.nix { inherit version releaseType; }; archForPremake = - if stdenv.lib.hasPrefix "x86_64-" stdenvType then "x64" else - if stdenv.lib.hasPrefix "i686-" stdenvType then "x32" else "ERROR"; + if stdenv.lib.hasPrefix "x86_64-" stdenv.system then "x64" else + if stdenv.lib.hasPrefix "i686-" stdenv.system then "x32" else "ERROR"; in stdenv.mkDerivation rec { From 0da7fadce32289e926415629a697028aa7296b96 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 1 Jul 2014 16:55:14 +0200 Subject: [PATCH 15/53] stdenv: Fix __ignoreNulls Commit 262c21ed464a2593b54ec274a3b84083c0795f2d purported to enable ignoreNulls, but it was bogus because it set the flag on the wrong derivation (i.e. stdenv rather than the result of mkDerivation). --- pkgs/stdenv/generic/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index 6047ecf853c..0d8355e89cc 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -55,8 +55,6 @@ let propagatedUserEnvPkgs = [gcc] ++ lib.filter lib.isDerivation initialPath; - - __ignoreNulls = true; } // rec { @@ -103,6 +101,7 @@ let stdenv = result; system = result.system; userHook = config.stdenv.userHook or null; + __ignoreNulls = true; # Inputs built by the cross compiler. buildInputs = lib.optionals (crossConfig != null) (buildInputs ++ extraBuildInputs); From 289895fe2ceae2ade5aad635018eaeeaeaa669c6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 14:55:44 +0200 Subject: [PATCH 16/53] Fix SNAFU using $NIX_LDFLAGS_AFTER --- pkgs/build-support/gcc-wrapper/ld-wrapper.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh index 5b8af068a00..822c4a03a21 100644 --- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh @@ -48,10 +48,12 @@ extra=() extraBefore=() if test -z "$NIX_LDFLAGS_SET"; then - extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) + extra+=($NIX_LDFLAGS) extraBefore+=($NIX_LDFLAGS_BEFORE) fi +extra+=($NIX_LDFLAGS_AFTER) + # Add all used dynamic libraries to the rpath. if test "$NIX_DONT_SET_RPATH" != "1"; then From fd1a5d8531dd76097e493db20c6e123ff2cf257c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 19:52:25 +0200 Subject: [PATCH 17/53] Set MACOSX_DEPLOYMENT_TARGET This variable sets the minimal Mac OS X version required for running binaries produced by the Darwin toolchain. Since it defaults to the version of the user's SDK, setting it explicitly should make our builds more deterministic. It's now set to 10.6 because that's what hydra.nixos.org runs. --- pkgs/stdenv/nix/default.nix | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index ba693443b05..cb4c0fd0a61 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -7,16 +7,14 @@ import ../generic rec { '' export NIX_ENFORCE_PURITY=1 export NIX_IGNORE_LD_THROUGH_GCC=1 - - if [ "$system" = "i686-darwin" -o "$system" = "powerpc-darwin" -o "$system" = "x86_64-darwin" ]; then - export NIX_ENFORCE_PURITY= - export NIX_DONT_SET_RPATH=1 - export NIX_NO_SELF_RPATH=1 - dontFixLibtool=1 - stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" - xargsFlags=" " - fi '' + (if stdenv.isDarwin then '' + export NIX_ENFORCE_PURITY= + export NIX_DONT_SET_RPATH=1 + export NIX_NO_SELF_RPATH=1 + dontFixLibtool=1 + stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" + xargsFlags=" " + export MACOSX_DEPLOYMENT_TARGET=10.6 export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" From a4f9b9c8b5ec9ef106671ffdf93e0059835d0ec1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Jul 2014 20:10:40 +0200 Subject: [PATCH 18/53] Partially merge gcc-wrapper and clang-wrapper Having a separate clang-wrapper is really unfortunate because it means that we'll forever forget to apply changes to both (e.g. commit 289895fe2ceae2ade5aad635018eaeeaeaa669c6). This commit gets rid of the redundant copies of ld-wrapper.sh and utils.sh. --- pkgs/build-support/clang-wrapper/add-flags | 2 +- .../clang-wrapper/clang-wrapper.sh | 6 +- pkgs/build-support/clang-wrapper/default.nix | 4 +- .../build-support/clang-wrapper/ld-wrapper.sh | 164 ------------------ pkgs/build-support/clang-wrapper/utils.sh | 24 --- 5 files changed, 6 insertions(+), 194 deletions(-) delete mode 100644 pkgs/build-support/clang-wrapper/ld-wrapper.sh delete mode 100644 pkgs/build-support/clang-wrapper/utils.sh diff --git a/pkgs/build-support/clang-wrapper/add-flags b/pkgs/build-support/clang-wrapper/add-flags index 3b064547153..7a9711290aa 100644 --- a/pkgs/build-support/clang-wrapper/add-flags +++ b/pkgs/build-support/clang-wrapper/add-flags @@ -21,4 +21,4 @@ if test -e @out@/nix-support/libc-ldflags-before; then export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE" fi -export NIX_CLANG_WRAPPER_FLAGS_SET=1 +export NIX_GCC_WRAPPER_FLAGS_SET=1 diff --git a/pkgs/build-support/clang-wrapper/clang-wrapper.sh b/pkgs/build-support/clang-wrapper/clang-wrapper.sh index b39aa2d721e..57715274f1e 100644 --- a/pkgs/build-support/clang-wrapper/clang-wrapper.sh +++ b/pkgs/build-support/clang-wrapper/clang-wrapper.sh @@ -1,10 +1,10 @@ #! @shell@ -e -if test -n "$NIX_CLANG_WRAPPER_START_HOOK"; then - source "$NIX_CLANG_WRAPPER_START_HOOK" +if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then + source "$NIX_GCC_WRAPPER_START_HOOK" fi -if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then +if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then source @out@/nix-support/add-flags.sh fi diff --git a/pkgs/build-support/clang-wrapper/default.nix b/pkgs/build-support/clang-wrapper/default.nix index 4b2a5a1182e..7a5d87127d9 100644 --- a/pkgs/build-support/clang-wrapper/default.nix +++ b/pkgs/build-support/clang-wrapper/default.nix @@ -29,8 +29,8 @@ stdenv.mkDerivation { builder = ./builder.sh; setupHook = ./setup-hook.sh; clangWrapper = ./clang-wrapper.sh; - ldWrapper = ./ld-wrapper.sh; - utils = ./utils.sh; + ldWrapper = ../gcc-wrapper/ld-wrapper.sh; + utils = ../gcc-wrapper/utils.sh; addFlags = ./add-flags; inherit nativeTools nativeLibc nativePrefix clang clangVersion libcxx; diff --git a/pkgs/build-support/clang-wrapper/ld-wrapper.sh b/pkgs/build-support/clang-wrapper/ld-wrapper.sh deleted file mode 100644 index 105d1670eb6..00000000000 --- a/pkgs/build-support/clang-wrapper/ld-wrapper.sh +++ /dev/null @@ -1,164 +0,0 @@ -#! @shell@ -e - -if test -n "$NIX_LD_WRAPPER_START_HOOK"; then - source "$NIX_LD_WRAPPER_START_HOOK" -fi - -if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then - source @out@/nix-support/add-flags.sh -fi - -source @out@/nix-support/utils.sh - - -# Optionally filter out paths not refering to the store. -params=("$@") -if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \ - -a \( -z "$NIX_IGNORE_LD_THROUGH_CLANG" -o -z "$NIX_LDFLAGS_SET" \); then - rest=() - n=0 - while test $n -lt ${#params[*]}; do - p=${params[n]} - p2=${params[$((n+1))]} - if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then - skip $p - elif test "$p" = "-L" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-rpath" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "$p" = "-dynamic-linker" && badPath "$p2"; then - n=$((n + 1)); skip $p2 - elif test "${p:0:1}" = "/" && badPath "$p"; then - # We cannot skip this; barf. - echo "impure path \`$p' used in link" >&2 - exit 1 - elif test "${p:0:9}" = "--sysroot"; then - # Our ld is not built with sysroot support (Can we fix that?) - : - else - rest=("${rest[@]}" "$p") - fi - n=$((n + 1)) - done - params=("${rest[@]}") -fi - - -extra=() -extraBefore=() - -if test -z "$NIX_LDFLAGS_SET"; then - extra+=($NIX_LDFLAGS $NIX_LDFLAGS_AFTER) - extraBefore+=($NIX_LDFLAGS_BEFORE) -fi - - -# Add all used dynamic libraries to the rpath. -if test "$NIX_DONT_SET_RPATH" != "1"; then - - libPath="" - addToLibPath() { - local path="$1" - if test "${path:0:1}" != "/"; then return 0; fi - case "$path" in - *..*|*./*|*/.*|*//*) - local path2 - if path2=$(readlink -f "$path"); then - path="$path2" - fi - ;; - esac - case $libPath in - *\ $path\ *) return 0 ;; - esac - libPath="$libPath $path " - } - - addToRPath() { - # If the path is not in the store, don't add it to the rpath. - # This typically happens for libraries in /tmp that are later - # copied to $out/lib. If not, we're screwed. - if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi - case $rpath in - *\ $1\ *) return 0 ;; - esac - rpath="$rpath $1 " - } - - libs="" - addToLibs() { - libs="$libs $1" - } - - rpath="" - - # First, find all -L... switches. - allParams=("${params[@]}" ${extra[@]}) - n=0 - while test $n -lt ${#allParams[*]}; do - p=${allParams[n]} - p2=${allParams[$((n+1))]} - if test "${p:0:3}" = "-L/"; then - addToLibPath ${p:2} - elif test "$p" = "-L"; then - addToLibPath ${p2} - n=$((n + 1)) - elif test "$p" = "-l"; then - addToLibs ${p2} - n=$((n + 1)) - elif test "${p:0:2}" = "-l"; then - addToLibs ${p:2} - elif test "$p" = "-dynamic-linker"; then - # Ignore the dynamic linker argument, or it - # will get into the next 'elif'. We don't want - # the dynamic linker path rpath to go always first. - n=$((n + 1)) - elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then - # This is a direct reference to a shared library, so add - # its directory to the rpath. - path="$(dirname "$p")"; - addToRPath "${path}" - fi - n=$((n + 1)) - done - - # Second, for each directory in the library search path (-L...), - # see if it contains a dynamic library used by a -l... flag. If - # so, add the directory to the rpath. - # It's important to add the rpath in the order of -L..., so - # the link time chosen objects will be those of runtime linking. - - for i in $libPath; do - for j in $libs; do - if test -f "$i/lib$j.so"; then - addToRPath $i - break - fi - done - done - - - # Finally, add `-rpath' switches. - for i in $rpath; do - extra=(${extra[@]} -rpath $i) - done -fi - - -# Optionally print debug info. -if test "$NIX_DEBUG" = "1"; then - echo "original flags to @ld@:" >&2 - for i in "${params[@]}"; do - echo " $i" >&2 - done - echo "extra flags to @ld@:" >&2 - for i in ${extra[@]}; do - echo " $i" >&2 - done -fi - -if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then - source "$NIX_LD_WRAPPER_EXEC_HOOK" -fi - -exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]} diff --git a/pkgs/build-support/clang-wrapper/utils.sh b/pkgs/build-support/clang-wrapper/utils.sh deleted file mode 100644 index 753b3772e95..00000000000 --- a/pkgs/build-support/clang-wrapper/utils.sh +++ /dev/null @@ -1,24 +0,0 @@ -skip () { - if test "$NIX_DEBUG" = "1"; then - echo "skipping impure path $1" >&2 - fi -} - - -# Checks whether a path is impure. E.g., `/lib/foo.so' is impure, but -# `/nix/store/.../lib/foo.so' isn't. -badPath() { - local p=$1 - - # Relative paths are okay (since they're presumably relative to - # the temporary build directory). - if test "${p:0:1}" != "/"; then return 1; fi - - # Otherwise, the path should refer to the store or some temporary - # directory (including the build directory). - test \ - "$p" != "/dev/null" -a \ - "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \ - "${p:0:4}" != "/tmp" -a \ - "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" -} From 421ce6439c2e685065fe9c256b751225de51e0b3 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Wed, 2 Jul 2014 20:16:43 +0200 Subject: [PATCH 19/53] gdk-pixbuf: check for empty $out in setup-hook.sh. Closes #2818 --- pkgs/development/libraries/gdk-pixbuf/setup-hook.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh index c983f9f6a61..06e820633b8 100644 --- a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh +++ b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh @@ -1,6 +1,6 @@ findGdkPixbufLoaders() { - if [ -z "$IN_NIX_SHELL" ]; then + if [ -n "$out" ] && [ -z "$IN_NIX_SHELL" ]; then # set pixbuf loaders.cache for this package From 8aacdfee7c0b211b736bce9362ed584020868845 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 8 Jul 2014 15:43:05 +0200 Subject: [PATCH 20/53] =?UTF-8?q?gawk:=20Remove=20unnecessary=20=E2=80=98g?= =?UTF-8?q?awk-=E2=80=99=20copy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This saves > 600 KiB. --- pkgs/tools/text/gawk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index b231f2875c0..f2db91d3036 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -8,8 +8,6 @@ stdenv.mkDerivation rec { sha256 = "0hin2hswbbd6kd6i4zzvgciwpl5fba8d2s524z8y5qagyz3x010q"; }; - patches = []; - doCheck = !stdenv.isCygwin; # XXX: `test-dup2' segfaults on Cygwin 6.1 buildInputs = [ libsigsegv ] @@ -20,6 +18,8 @@ stdenv.mkDerivation rec { # only darwin where reported, seems OK on non-chrooted Fedora (don't rebuild stdenv) ++ stdenv.lib.optional (!readlineSupport && stdenv.isDarwin) "--without-readline"; + postInstall = "rm $out/bin/gawk-*"; + meta = { homepage = http://www.gnu.org/software/gawk/; description = "GNU implementation of the Awk programming language"; From da9b5109967b49fb502a307240dfaa2aaceba1ce Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Tue, 8 Jul 2014 18:00:00 +0200 Subject: [PATCH 21/53] Move at_spi2_core and at_spi2_atk outside of the gnome3 attrset --- .../services/desktops/gnome3/at-spi2-core.nix | 7 ++-- .../gnome-3/3.10/core/at-spi2-atk/default.nix | 21 ------------ .../gnome-3/3.10/core/caribou/default.nix | 2 +- .../gnome-3/3.10/core/gnome-shell/default.nix | 2 +- pkgs/desktops/gnome-3/3.10/default.nix | 4 --- .../3.12/core/at-spi2-core/default.nix | 32 ------------------- pkgs/desktops/gnome-3/3.12/default.nix | 4 --- .../libraries}/at-spi2-atk/default.nix | 0 .../libraries}/at-spi2-core/default.nix | 0 pkgs/top-level/all-packages.nix | 9 +++--- 10 files changed, 9 insertions(+), 72 deletions(-) delete mode 100644 pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix delete mode 100644 pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix rename pkgs/{desktops/gnome-3/3.12/core => development/libraries}/at-spi2-atk/default.nix (100%) rename pkgs/{desktops/gnome-3/3.10/core => development/libraries}/at-spi2-core/default.nix (100%) diff --git a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix index 615f272e7b9..6e4c59f4bb3 100644 --- a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix +++ b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix @@ -4,9 +4,6 @@ with lib; -let - gnome3 = config.environment.gnome3.packageSet; -in { ###### interface @@ -33,9 +30,9 @@ in config = mkIf config.services.gnome3.at-spi2-core.enable { - environment.systemPackages = [ gnome3.at_spi2_core ]; + environment.systemPackages = [ pkgs.at_spi2_core ]; - services.dbus.packages = [ gnome3.at_spi2_core ]; + services.dbus.packages = [ pkgs.at_spi2_core ]; }; diff --git a/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix b/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix deleted file mode 100644 index fc0c4f2a6bc..00000000000 --- a/pkgs/desktops/gnome-3/3.10/core/at-spi2-atk/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, python, pkgconfig, popt, atk, libX11, libICE, xlibs, libXi -, intltool, dbus_glib, at_spi2_core, libSM }: - -stdenv.mkDerivation rec { - versionMajor = "2.12"; - versionMinor = "0"; - moduleName = "at-spi2-atk"; - name = "${moduleName}-${versionMajor}.${versionMinor}"; - - src = fetchurl { - url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "0crn3k6qvn6fjvgm68dj5ska1ppfgmdkaia2db1jp0b9y74nfm1v"; - }; - - buildInputs = [ python pkgconfig popt atk libX11 libICE xlibs.libXtst libXi - intltool dbus_glib at_spi2_core libSM ]; - - meta = with stdenv.lib; { - platforms = platforms.linux; - }; -} diff --git a/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix index 41a997c1f71..ba5dc7e7b90 100644 --- a/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix +++ b/pkgs/desktops/gnome-3/3.10/core/caribou/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2 -, libxklavier, libXtst, gtk2, intltool, libxslt }: +, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core }: stdenv.mkDerivation rec { diff --git a/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix index d468e06d429..2b5ff4cc5a2 100644 --- a/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix +++ b/pkgs/desktops/gnome-3/3.10/core/gnome-shell/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret -, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns +, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core , libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip , pulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }: diff --git a/pkgs/desktops/gnome-3/3.10/default.nix b/pkgs/desktops/gnome-3/3.10/default.nix index 4376493c95b..89e16490df9 100644 --- a/pkgs/desktops/gnome-3/3.10/default.nix +++ b/pkgs/desktops/gnome-3/3.10/default.nix @@ -10,10 +10,6 @@ rec { #### Core (http://ftp.acc.umu.se/pub/GNOME/core/) - at_spi2_atk = callPackage ./core/at-spi2-atk { }; - - at_spi2_core = callPackage ./core/at-spi2-core { }; - baobab = callPackage ./core/baobab { }; caribou = callPackage ./core/caribou { }; diff --git a/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix b/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix deleted file mode 100644 index d60a0ff7480..00000000000 --- a/pkgs/desktops/gnome-3/3.12/core/at-spi2-core/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ stdenv, fetchurl, python, pkgconfig, popt, intltool, dbus_glib -, libX11, xextproto, libSM, libICE, libXtst, libXi, gobjectIntrospection }: - -stdenv.mkDerivation (rec { - versionMajor = "2.12"; - versionMinor = "0"; - moduleName = "at-spi2-core"; - name = "${moduleName}-${versionMajor}.${versionMinor}"; - - src = fetchurl { - url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "12gvsgdaxnxskndlhlmdkc50cfqgmzfc4n8la9944fz5k3fhwmfv"; - }; - - buildInputs = [ - python pkgconfig popt intltool dbus_glib - libX11 xextproto libSM libICE libXtst libXi - gobjectIntrospection - ]; - - # ToDo: on non-NixOS we create a symlink from there? - configureFlags = "--with-dbus-daemondir=/run/current-system/sw/bin/"; - - meta = with stdenv.lib; { - platforms = platforms.linux; - }; -} - // stdenv.lib.optionalAttrs stdenv.isDarwin { - NIX_LDFLAGS = "-lintl"; - } -) - diff --git a/pkgs/desktops/gnome-3/3.12/default.nix b/pkgs/desktops/gnome-3/3.12/default.nix index f5369b2a3c3..e31c85fee8b 100644 --- a/pkgs/desktops/gnome-3/3.12/default.nix +++ b/pkgs/desktops/gnome-3/3.12/default.nix @@ -16,10 +16,6 @@ rec { #### Core (http://ftp.acc.umu.se/pub/GNOME/core/) - at_spi2_atk = callPackage ./core/at-spi2-atk { }; - - at_spi2_core = callPackage ./core/at-spi2-core { }; - baobab = callPackage ./core/baobab { }; caribou = callPackage ./core/caribou { }; diff --git a/pkgs/desktops/gnome-3/3.12/core/at-spi2-atk/default.nix b/pkgs/development/libraries/at-spi2-atk/default.nix similarity index 100% rename from pkgs/desktops/gnome-3/3.12/core/at-spi2-atk/default.nix rename to pkgs/development/libraries/at-spi2-atk/default.nix diff --git a/pkgs/desktops/gnome-3/3.10/core/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix similarity index 100% rename from pkgs/desktops/gnome-3/3.10/core/at-spi2-core/default.nix rename to pkgs/development/libraries/at-spi2-core/default.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5be835ae139..616f6a34a98 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4230,6 +4230,10 @@ let attr = callPackage ../development/libraries/attr { }; + at_spi2_core = callPackage ../development/libraries/at-spi2-core { }; + + at_spi2_atk = callPackage ../development/libraries/at-spi2-atk { }; + aqbanking = callPackage ../development/libraries/aqbanking { }; aubio = callPackage ../development/libraries/aubio { }; @@ -4811,9 +4815,7 @@ let cupsSupport = config.gtk2.cups or stdenv.isLinux; }; - gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { - inherit (gnome3) at_spi2_atk; - }; + gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { }; gtk = pkgs.gtk2; @@ -9671,7 +9673,6 @@ let thunderbird-bin = callPackage ../applications/networking/mailreaders/thunderbird-bin { gconf = pkgs.gnome.GConf; - inherit (pkgs.gnome3) at_spi2_atk; inherit (pkgs.gnome) libgnome libgnomeui; inherit (pkgs.xlibs) libX11 libXScrnSaver libXext libXinerama libXrender libXt; From 88d9224f6de6e4ec399fc7a4a6d5deb7083573b0 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 12 Jul 2014 11:20:21 +0200 Subject: [PATCH 22/53] caribou 3.12: fix at_spi2_core argument --- pkgs/desktops/gnome-3/3.12/core/caribou/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix index 4d2f390c042..3a6c3f0dd35 100644 --- a/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix +++ b/pkgs/desktops/gnome-3/3.12/core/caribou/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2 -, libxklavier, libXtst, gtk2, intltool, libxslt }: +, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core }: stdenv.mkDerivation rec { From 0b82b9532229a28758df482218222d90d910c494 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 12 Jul 2014 20:45:09 +0200 Subject: [PATCH 23/53] gnome-shell 3.12: fix at_spi2_core argument --- pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix index 2fb1e091aa0..9ff7fdb1740 100644 --- a/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix +++ b/pkgs/desktops/gnome-3/3.12/core/gnome-shell/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret -, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns +, python, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core , libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip , pulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }: From 3fff7cf9a2b7090d49b9953a4ae14b704464371f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 14 Jul 2014 17:33:53 +0200 Subject: [PATCH 24/53] nixUnstable: Update to 1.8pre3666_5bcb982 --- pkgs/tools/package-management/nix/unstable.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index b81ab7cad42..19243bad902 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.8pre3636_9d0709e"; + name = "nix-1.8pre3666_5bcb982"; src = fetchurl { - url = "http://hydra.nixos.org/build/11854244/download/5/${name}.tar.xz"; - sha256 = "13h32d4nbkhvxhj9nyamxf6mfsi7mzvjz1bhyy63088vx468nhmm"; + url = "http://hydra.nixos.org/build/12516859/download/5/${name}.tar.xz"; + sha256 = "6b968ec6db727dad2dc1fb6d31395996bd7cad14fddadfa996661c1f2c142c32"; }; nativeBuildInputs = [ perl pkgconfig ]; From 78b5dea799f4e1d8fae93f771eb778e53cfcbb9a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 14 Jul 2014 17:34:13 +0200 Subject: [PATCH 25/53] Revert "nixUnstable: Update to 1.8pre3666_5bcb982" This reverts commit 3fff7cf9a2b7090d49b9953a4ae14b704464371f. --- pkgs/tools/package-management/nix/unstable.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix index 19243bad902..b81ab7cad42 100644 --- a/pkgs/tools/package-management/nix/unstable.nix +++ b/pkgs/tools/package-management/nix/unstable.nix @@ -5,11 +5,11 @@ }: stdenv.mkDerivation rec { - name = "nix-1.8pre3666_5bcb982"; + name = "nix-1.8pre3636_9d0709e"; src = fetchurl { - url = "http://hydra.nixos.org/build/12516859/download/5/${name}.tar.xz"; - sha256 = "6b968ec6db727dad2dc1fb6d31395996bd7cad14fddadfa996661c1f2c142c32"; + url = "http://hydra.nixos.org/build/11854244/download/5/${name}.tar.xz"; + sha256 = "13h32d4nbkhvxhj9nyamxf6mfsi7mzvjz1bhyy63088vx468nhmm"; }; nativeBuildInputs = [ perl pkgconfig ]; From ebd4594c2c1b2cc8071e7f7b2a80bd870d93ec80 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:09:30 +0200 Subject: [PATCH 26/53] glib: Fix compilation on Darwin and use default gcc http://hydra.nixos.org/build/12458779 --- .../libraries/glib/darwin-compilation.patch | 24 +++++++++++++++++++ pkgs/development/libraries/glib/default.nix | 7 ++++++ pkgs/top-level/all-packages.nix | 6 +---- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 pkgs/development/libraries/glib/darwin-compilation.patch diff --git a/pkgs/development/libraries/glib/darwin-compilation.patch b/pkgs/development/libraries/glib/darwin-compilation.patch new file mode 100644 index 00000000000..f215eef798a --- /dev/null +++ b/pkgs/development/libraries/glib/darwin-compilation.patch @@ -0,0 +1,24 @@ +Fix compilation on Mac OS X with gcc 4.8. + +diff -ru glib-2.40.0-orig/gio/gdummyfile.c glib-2.40.0/gio/gdummyfile.c +--- glib-2.40.0-orig/gio/gdummyfile.c 2014-02-03 18:40:41.000000000 +0100 ++++ glib-2.40.0/gio/gdummyfile.c 2014-07-15 10:58:31.000000000 +0200 +@@ -454,7 +454,8 @@ + result = g_malloc (escaped_string_end - escaped_string + 1); + + out = result; +- for (in = escaped_string; in < escaped_string_end; in++) ++ in = escaped_string; ++ for (; in < escaped_string_end; in++) + { + character = *in; + if (*in == '%') +@@ -551,6 +552,7 @@ + + decoded->scheme = g_malloc (p - uri); + out = decoded->scheme; +- for (in = uri; in < p - 1; in++) ++ in = uri; ++ for (; in < p - 1; in++) + *out++ = g_ascii_tolower (*in); + *out = 0; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 9a592d4f954..14e72495968 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -49,6 +49,8 @@ stdenv.mkDerivation rec { sha256 = "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"; }; + patches = optional stdenv.isDarwin ./darwin-compilation.patch; + setupHook = ./setup-hook.sh; buildInputs = [ libelf ] @@ -67,6 +69,11 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin " -lintl" + optionalString stdenv.isSunOS " -DBSD_COMP"; + preBuild = optionalString stdenv.isDarwin + '' + export MACOSX_DEPLOYMENT_TARGET= + ''; + enableParallelBuilding = true; inherit doCheck; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4799eebf544..794c7599295 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4800,11 +4800,7 @@ let gtkmm; }; - glib = callPackage ../development/libraries/glib { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + glib = callPackage ../development/libraries/glib { }; glib-tested = glib.override { doCheck = true; }; # checked version separate to break cycles glibmm = callPackage ../development/libraries/glibmm { }; From 828e386e6899aae29bb91a29f18cacf11206249e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:17:51 +0200 Subject: [PATCH 27/53] junixsocket: Fix build on Darwin --- pkgs/development/libraries/java/junixsocket/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/development/libraries/java/junixsocket/default.nix b/pkgs/development/libraries/java/junixsocket/default.nix index e49e626aa00..317ba601cfb 100644 --- a/pkgs/development/libraries/java/junixsocket/default.nix +++ b/pkgs/development/libraries/java/junixsocket/default.nix @@ -14,9 +14,6 @@ stdenv.mkDerivation rec { preConfigure = '' - substituteInPlace build.xml \ - --replace /usr/bin/ "" \ - --replace macosx darwin substituteInPlace src/main/org/newsclub/net/unix/NativeUnixSocketConfig.java \ --replace /opt/newsclub/lib-native $out/lib ''; @@ -25,7 +22,7 @@ stdenv.mkDerivation rec { ANT_ARGS = # Note that our OpenJDK on Darwin is currently 32-bit, so we have to build a 32-bit dylib. - (if stdenv.is64bit && !stdenv.isDarwin then [ "-Dskip32=true" ] else [ "-Dskip64=true" ]) + (if stdenv.is64bit then [ "-Dskip32=true" ] else [ "-Dskip64=true" ]) ++ [ "-Dgcc=cc" "-Dant.build.javac.source=1.6" ] ++ stdenv.lib.optional stdenv.isDarwin "-DisMac=true"; From caa74a146da8ef2a6a314593989837fd80bbc27b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:51:07 +0200 Subject: [PATCH 28/53] openjdk-darwin: Update to 7u60b30 --- .../compilers/openjdk-darwin/default.nix | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/openjdk-darwin/default.nix b/pkgs/development/compilers/openjdk-darwin/default.nix index 251b3868dd7..fc8493d4cf3 100644 --- a/pkgs/development/compilers/openjdk-darwin/default.nix +++ b/pkgs/development/compilers/openjdk-darwin/default.nix @@ -1,16 +1,18 @@ -{ stdenv, fetchurl, setJavaClassPath }: +{ stdenv, fetchurl, unzip, setJavaClassPath }: let jdk = stdenv.mkDerivation { - name = "openjdk6-b16-24_apr_2009-r1"; + name = "openjdk-7u60b30"; + # From https://github.com/alexkasko/openjdk-unofficial-builds src = fetchurl { - url = http://landonf.bikemonkey.org/static/soylatte/bsd-dist/openjdk6_darwin/openjdk6-b16-24_apr_2009-r1.tar.bz2; - sha256 = "14pbv6jjk95k7hbgiwyvjdjv8pccm7m8a130k0q7mjssf4qmpx1v"; + url = https://bitbucket.org/alexkasko/openjdk-unofficial-builds/downloads/openjdk-1.7.0-u60-unofficial-macosx-x86_64-bundle.zip; + sha256 = "af510a4d566712d82c17054bb39f91d98c69a85586e244c6123669a0bd4b7401"; }; + buildInputs = [ unzip ]; + installPhase = '' - mkdir -p $out - cp -vR * $out/ + mv */Contents/Home $out # jni.h expects jni_md.h to be in the header search path. ln -s $out/include/darwin/*_md.h $out/include/ From 946dfe1a371af80cd4bf4536e737bbd5a4361bb7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 15 Jul 2014 11:51:27 +0200 Subject: [PATCH 29/53] ecj: Build on Darwin --- pkgs/development/eclipse/ecj/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/eclipse/ecj/default.nix b/pkgs/development/eclipse/ecj/default.nix index 786fcdba18a..0f52e879863 100644 --- a/pkgs/development/eclipse/ecj/default.nix +++ b/pkgs/development/eclipse/ecj/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation rec { # http://www.eclipse.org/legal/epl-v10.html (free software, copyleft) license = "EPLv1.0"; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; }; } From f77abc8b7a8b4279258862a7b6d3810e73d4b092 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 10:49:46 +0200 Subject: [PATCH 30/53] go: Fix build http://hydra.nixos.org/build/12538479 --- pkgs/development/compilers/go/1.3.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/go/1.3.nix b/pkgs/development/compilers/go/1.3.nix index b9178d5e61c..fafa045e562 100644 --- a/pkgs/development/compilers/go/1.3.nix +++ b/pkgs/development/compilers/go/1.3.nix @@ -69,7 +69,7 @@ stdenv.mkDerivation { # http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011891.html # Fix for "libgcc_s.so.1 must be installed for pthread_cancel to work" # during tests: - export LD_LIBRARY_PATH="$(dirname $(echo ${stdenv.gcc.gcc}/lib*/libgcc_s.so))" + export LD_LIBRARY_PATH="$(dirname $(echo ${stdenv.gcc.gcc}/lib/libgcc_s.so))" mkdir -p "$out/bin" export GOROOT="$(pwd)/" From 4f7289eec98b19004cb26229cbb1373c624fc4d7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 11:01:32 +0200 Subject: [PATCH 31/53] Don't use ensureDir --- pkgs/applications/misc/camlistore/default.nix | 2 +- pkgs/applications/science/logic/twelf/default.nix | 8 ++++---- pkgs/development/compilers/go/gox.nix | 2 +- pkgs/development/compilers/sbcl/bootstrap.nix | 4 ++-- pkgs/development/compilers/sbcl/default.nix | 2 +- pkgs/development/compilers/smlnj/bootstrap.nix | 4 ++-- pkgs/development/tools/etcdctl/default.nix | 2 +- pkgs/development/tools/gocode/default.nix | 2 +- pkgs/development/tools/packer/default.nix | 2 +- pkgs/misc/vim-plugins/default.nix | 2 +- pkgs/os-specific/linux/iomelt/default.nix | 4 ++-- pkgs/servers/etcd/default.nix | 2 +- pkgs/servers/fleet/default.nix | 2 +- pkgs/servers/nsq/default.nix | 2 +- pkgs/tools/misc/logstash/default.nix | 10 +++++----- pkgs/tools/typesetting/djvu2pdf/default.nix | 4 ++-- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/pkgs/applications/misc/camlistore/default.nix b/pkgs/applications/misc/camlistore/default.nix index 80d8dd801a9..56131425ab4 100644 --- a/pkgs/applications/misc/camlistore/default.nix +++ b/pkgs/applications/misc/camlistore/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp bin/* $out/bin ''; diff --git a/pkgs/applications/science/logic/twelf/default.nix b/pkgs/applications/science/logic/twelf/default.nix index 1079c378321..c6c7e4d9c1a 100644 --- a/pkgs/applications/science/logic/twelf/default.nix +++ b/pkgs/applications/science/logic/twelf/default.nix @@ -17,15 +17,15 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin rsync -av bin/* $out/bin/ - ensureDir $out/share/emacs/site-lisp/twelf/ + mkdir -p $out/share/emacs/site-lisp/twelf/ rsync -av emacs/ $out/share/emacs/site-lisp/twelf/ - ensureDir $out/share/twelf/examples + mkdir -p $out/share/twelf/examples rsync -av examples/ $out/share/twelf/examples/ - ensureDir $out/share/twelf/vim + mkdir -p $out/share/twelf/vim rsync -av vim/ $out/share/twelf/vim/ ''; diff --git a/pkgs/development/compilers/go/gox.nix b/pkgs/development/compilers/go/gox.nix index 705cb6e5c28..da40b7570fe 100644 --- a/pkgs/development/compilers/go/gox.nix +++ b/pkgs/development/compilers/go/gox.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ go ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin export GOPATH=$src go build -v -o $out/bin/gox github.com/mitchellh/gox ''; diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix index c3335ea6d22..015d7dd95da 100644 --- a/pkgs/development/compilers/sbcl/bootstrap.nix +++ b/pkgs/development/compilers/sbcl/bootstrap.nix @@ -15,9 +15,9 @@ stdenv.mkDerivation rec { }; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p src/runtime/sbcl $out/bin - ensureDir $out/share/sbcl + mkdir -p $out/share/sbcl cp -p output/sbcl.core $out/share/sbcl ''; diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 579d5ec11eb..8133ae3ffd3 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { preBuild = '' export INSTALL_ROOT=$out - ensureDir test-home + mkdir -p test-home export HOME=$PWD/test-home ''; diff --git a/pkgs/development/compilers/smlnj/bootstrap.nix b/pkgs/development/compilers/smlnj/bootstrap.nix index 27fdf75cc25..39a1bbd0df3 100644 --- a/pkgs/development/compilers/smlnj/bootstrap.nix +++ b/pkgs/development/compilers/smlnj/bootstrap.nix @@ -22,10 +22,10 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin rsync -av bin/ $out/bin/ - ensureDir $out/lib + mkdir -p $out/lib rsync -av lib/ $out/lib/ ''; diff --git a/pkgs/development/tools/etcdctl/default.nix b/pkgs/development/tools/etcdctl/default.nix index a37ef26f541..5e6438d0f5f 100644 --- a/pkgs/development/tools/etcdctl/default.nix +++ b/pkgs/development/tools/etcdctl/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv etcdctl $out/bin ''; diff --git a/pkgs/development/tools/gocode/default.nix b/pkgs/development/tools/gocode/default.nix index 6057c288cf6..30e4b79ee38 100644 --- a/pkgs/development/tools/gocode/default.nix +++ b/pkgs/development/tools/gocode/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv gocode $out/bin ''; diff --git a/pkgs/development/tools/packer/default.nix b/pkgs/development/tools/packer/default.nix index 5cea753dd9c..073de5137f8 100644 --- a/pkgs/development/tools/packer/default.nix +++ b/pkgs/development/tools/packer/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { XC_ARCH=$(go env GOARCH) XC_OS=$(go env GOOS) - ensureDir $out/bin + mkdir -p $out/bin cd $src/src/github.com/mitchellh/packer gox \ diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index 58859e4571a..9f553b480e7 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -406,7 +406,7 @@ in rec }; unpackPhase = ":"; installPhase = '' - ensureDir $out/share/vim-plugins/vim-a + mkdir -p $out/share/vim-plugins/vim-a cp ${src} $out/share/vim-plugins/vim-a/a.vim ''; }; diff --git a/pkgs/os-specific/linux/iomelt/default.nix b/pkgs/os-specific/linux/iomelt/default.nix index df267d304c1..fccf7b6b1cd 100644 --- a/pkgs/os-specific/linux/iomelt/default.nix +++ b/pkgs/os-specific/linux/iomelt/default.nix @@ -9,8 +9,8 @@ in stdenv.mkDerivation { }; preBuild = '' - ensureDir $out/bin - ensureDir $out/share/man/man1 + mkdir -p $out/bin + mkdir -p $out/share/man/man1 substituteInPlace Makefile \ --replace /usr $out diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix index 1fb21f2b8ab..8b4903c8602 100644 --- a/pkgs/servers/etcd/default.nix +++ b/pkgs/servers/etcd/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv etcd $out/bin/etcd ''; diff --git a/pkgs/servers/fleet/default.nix b/pkgs/servers/fleet/default.nix index 627c1ff0cf9..e3a53c85052 100644 --- a/pkgs/servers/fleet/default.nix +++ b/pkgs/servers/fleet/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv fleet $out/bin ''; diff --git a/pkgs/servers/nsq/default.nix b/pkgs/servers/nsq/default.nix index b1570d96c7b..4d32c3203c7 100644 --- a/pkgs/servers/nsq/default.nix +++ b/pkgs/servers/nsq/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin mv build/* $out/bin ''; diff --git a/pkgs/tools/misc/logstash/default.nix b/pkgs/tools/misc/logstash/default.nix index 15c99fff54c..7f43ccdb625 100644 --- a/pkgs/tools/misc/logstash/default.nix +++ b/pkgs/tools/misc/logstash/default.nix @@ -15,11 +15,11 @@ stdenv.mkDerivation rec { dontPatchShebangs = true; installPhase = '' - ensureDir $out/bin - ensureDir $out/vendor - ensureDir $out/lib - ensureDir $out/locales - ensureDir $out/patterns + mkdir -p $out/bin + mkdir -p $out/vendor + mkdir -p $out/lib + mkdir -p $out/locales + mkdir -p $out/patterns cp -a bin $out cp -a vendor $out cp -a lib $out diff --git a/pkgs/tools/typesetting/djvu2pdf/default.nix b/pkgs/tools/typesetting/djvu2pdf/default.nix index c7729ac676f..5455df5f106 100644 --- a/pkgs/tools/typesetting/djvu2pdf/default.nix +++ b/pkgs/tools/typesetting/djvu2pdf/default.nix @@ -13,9 +13,9 @@ stdenv.mkDerivation rec { propagatedUserEnvPkgs = [ djvulibre ghostscript ]; installPhase = '' - ensureDir $out/bin + mkdir -p $out/bin cp -p djvu2pdf $out/bin - ensureDir $out/man/man1 + mkdir -p $out/man/man1 cp -p djvu2pdf.1.gz $out/man/man1 ''; From b9e9e90a02769a5f946ed3ce1ffe7c1662a2914b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 11:24:00 +0200 Subject: [PATCH 32/53] readline-6.3: Fix build on Mac OS X < 10.9 http://hydra.nixos.org/build/12476331 --- .../libraries/readline/no-arch_only-6.3.patch | 13 +++++++++++++ pkgs/development/libraries/readline/readline6.3.nix | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/readline/no-arch_only-6.3.patch diff --git a/pkgs/development/libraries/readline/no-arch_only-6.3.patch b/pkgs/development/libraries/readline/no-arch_only-6.3.patch new file mode 100644 index 00000000000..7c46dbad962 --- /dev/null +++ b/pkgs/development/libraries/readline/no-arch_only-6.3.patch @@ -0,0 +1,13 @@ +diff -ru -x '*~' readline-6.3-orig/support/shobj-conf readline-6.3/support/shobj-conf +--- support/shobj-conf 2014-02-24 03:06:29.000000000 +0100 ++++ support/shobj-conf 2014-07-22 11:18:52.000000000 +0200 +@@ -194,9 +194,6 @@ + # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 + *) + case "${host_os}" in +- darwin[89]*|darwin1[012]*) +- SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' +- ;; + *) # Mac OS X 10.9 (Mavericks) and later + SHOBJ_ARCHFLAGS= + # for 32 and 64bit universal library diff --git a/pkgs/development/libraries/readline/readline6.3.nix b/pkgs/development/libraries/readline/readline6.3.nix index 2f99b9d7218..e3f07b3ddc0 100644 --- a/pkgs/development/libraries/readline/readline6.3.nix +++ b/pkgs/development/libraries/readline/readline6.3.nix @@ -13,7 +13,9 @@ stdenv.mkDerivation (rec { patchFlags = "-p0"; patches = - [ ./link-against-ncurses.patch ]; + [ ./link-against-ncurses.patch + ./no-arch_only-6.3.patch + ]; meta = { description = "GNU Readline, a library for interactive line editing"; From 0b996d886b32d1e6baf33406848e3ddeed7efe00 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 12:01:01 +0200 Subject: [PATCH 33/53] opencv: Enable fewer dependencies by default In particular, this prevents KDE from pulling in gfortran, numpy and atlas. We don't want anything important depending on atlas because it has a crazy non-deterministic build system. http://hydra.nixos.org/build/12555947 --- pkgs/development/libraries/opencv/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix index ea858417b2f..7dafcfce948 100644 --- a/pkgs/development/libraries/opencv/default.nix +++ b/pkgs/development/libraries/opencv/default.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg -, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages }: +{ lib, stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg +, pkgconfig, gstreamer, xineLib, glib, python27, python27Packages +, enableBloat ? false }: let v = "2.4.7"; in @@ -11,8 +12,9 @@ stdenv.mkDerivation rec { sha256 = "0hravl3yhyv4r4n7vb055d4qnp893q2hc0fcmmncfh7sbdrnr3f4"; }; - buildInputs = [ gtk glib libjpeg libpng libtiff jasper ffmpeg xineLib gstreamer - python27 python27Packages.numpy ]; + buildInputs = + [ libjpeg libpng libtiff ] + ++ lib.optionals enableBloat [ gtk glib jasper ffmpeg xineLib gstreamer python27 python27Packages.numpy ]; nativeBuildInputs = [ cmake pkgconfig ]; From 402688b752a4b2c5548a1d07aed4fbbde2b55e87 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 22 Jul 2014 13:35:16 +0200 Subject: [PATCH 34/53] gcc: Fix multilib builds http://hydra.nixos.org/build/12578050 --- pkgs/development/compilers/gcc/4.8/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 8865ca7c955..6357e8f6a0c 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -500,9 +500,9 @@ stdenv.mkDerivation ({ else null; passthru = - { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo enableMultilib version; }; + { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; }; - inherit enableParallelBuilding; + inherit enableParallelBuilding enableMultilib; inherit (stdenv) is64bit; From a1a381150636387d55143213f1b4c0d53d14be4d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 10:48:27 +0200 Subject: [PATCH 35/53] flac: Disable tests These take a stupid amount of time. --- pkgs/applications/audio/flac/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index 1c8dc56de61..fe4b43539d4 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { buildInputs = [ libogg ]; - doCheck = true; # takes lots of time but will be run rarely (small build-time closure) + #doCheck = true; # takes lots of time meta = with stdenv.lib; { homepage = http://xiph.org/flac/; From 922af7f1588e78041ef7102f0c505a6a055a7b04 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:00:41 +0200 Subject: [PATCH 36/53] libsndfile: Fix build on Darwin Fixes #3347. --- pkgs/development/libraries/libsndfile/default.nix | 9 +++++++-- pkgs/top-level/all-packages.nix | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index 8b0eeeb8e57..f97bd040a54 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -12,8 +12,13 @@ stdenv.mkDerivation rec { # need headers from the Carbon.framework in /System/Library/Frameworks to # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin - "-I/System/Library/Frameworks/Carbon.framework/Versions/A/Headers"; + preConfigure = stdenv.lib.optionalString stdenv.isDarwin + '' + NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + ''; + + # Needed on Darwin. + NIX_CFLAGS_LINK = "-logg -lvorbis"; meta = with stdenv.lib; { description = "A C library for reading and writing files containing sampled sound"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 87957069049..df1ac5dc24a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5463,11 +5463,7 @@ let # To bootstrap SBCL, I need CLisp 2.44.1; it needs libsigsegv 2.5 libsigsegv_25 = callPackage ../development/libraries/libsigsegv/2.5.nix { }; - libsndfile = callPackage ../development/libraries/libsndfile { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + libsndfile = callPackage ../development/libraries/libsndfile { }; libsodium = callPackage ../development/libraries/libsodium { }; From 4c2c0499f3a428caba4a857dd8e23d7e23398a7d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:25:38 +0200 Subject: [PATCH 37/53] enscript: Build with the default GCC --- pkgs/tools/text/enscript/default.nix | 7 +++++++ pkgs/top-level/all-packages.nix | 7 +------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/tools/text/enscript/default.nix b/pkgs/tools/text/enscript/default.nix index 7bb7060d5c2..156ff7aea6b 100644 --- a/pkgs/tools/text/enscript/default.nix +++ b/pkgs/tools/text/enscript/default.nix @@ -8,6 +8,13 @@ stdenv.mkDerivation rec { sha256 = "1fy0ymvzrrvs889zanxcaxjfcxarm2d3k43c9frmbl1ld7dblmkd"; }; + preBuild = + '' + # Fix building on Darwin with GCC. + substituteInPlace compat/regex.c --replace \ + __private_extern__ '__attribute__ ((visibility ("hidden")))' + ''; + buildInputs = [ gettext ]; doCheck = true; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index df1ac5dc24a..cc2ab0c177c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -949,12 +949,7 @@ let encfs = callPackage ../tools/filesystems/encfs { }; - enscript = callPackage ../tools/text/enscript { - # fix syntax errors - stdenv = if stdenv.isDarwin - then clangStdenv - else stdenv; - }; + enscript = callPackage ../tools/text/enscript { }; ethtool = callPackage ../tools/misc/ethtool { }; From b52da47cf1b8c7c0abfbeae28ff5b3c37cc49da2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:28:26 +0200 Subject: [PATCH 38/53] audiofile: Use default gcc --- pkgs/top-level/all-packages.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc2ab0c177c..5040b3b1d3d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4259,11 +4259,7 @@ let aubio = callPackage ../development/libraries/aubio { }; - audiofile = callPackage ../development/libraries/audiofile { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + audiofile = callPackage ../development/libraries/audiofile { }; axis = callPackage ../development/libraries/axis { }; From eb6c0826c539ba20db94b1f088323729c42be6c1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:45:44 +0200 Subject: [PATCH 39/53] libsamplerate: Use default gcc --- pkgs/development/libraries/libsamplerate/default.nix | 12 ++++++++---- pkgs/top-level/all-packages.nix | 6 +----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 708d8989304..183caefff85 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -15,10 +15,14 @@ stdenv.mkDerivation rec { #--disable-fftw disable usage of FFTW #--disable-cpu-clip disable tricky cpu specific clipper - # need headers from the Carbon.framework in /System/Library/Frameworks to - # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin - "-I/System/Library/Frameworks/Carbon.framework/Versions/A/Headers"; + postConfigure = stdenv.lib.optionalString stdenv.isDarwin + '' + # need headers from the Carbon.framework in /System/Library/Frameworks to + # compile this on darwin -- not sure how to handle + NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + + substituteInPlace examples/Makefile --replace "-fpascal-strings" "" + ''; meta = with stdenv.lib; { description = "Sample Rate Converter for audio"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5040b3b1d3d..ecc392df80f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5255,11 +5255,7 @@ let librevisa = callPackage ../development/libraries/librevisa { }; - libsamplerate = callPackage ../development/libraries/libsamplerate { - stdenv = if stdenv.isDarwin - then overrideGCC stdenv gccApple - else stdenv; - }; + libsamplerate = callPackage ../development/libraries/libsamplerate { }; libspectre = callPackage ../development/libraries/libspectre { }; From bf0d518c6733873a67989c4781d56f8b0fccbc46 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Jul 2014 11:47:46 +0200 Subject: [PATCH 40/53] stdenv-darwin: Shut up some warnings from SDK headers The Carbon headers spew out zillions of multichar / deprecations warnings, which isn't very helpful. So turn them off. --- pkgs/stdenv/nix/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index cb4c0fd0a61..b540456afa4 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,9 +15,8 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty" xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks" + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" '' else ""); From ac8775dd968f49a37260c53690d072faf91aca6f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 24 Jul 2014 21:53:46 +0200 Subject: [PATCH 41/53] $xcodePath -> $SDKROOT SDKROOT is standard. In particular, this fixes the cmake build on Mac OS X 10.9. --- pkgs/development/compilers/gcc/4.8/default.nix | 10 +++++----- pkgs/development/libraries/libsamplerate/default.nix | 2 +- pkgs/development/libraries/libsndfile/default.nix | 2 +- pkgs/stdenv/nix/default.nix | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 6357e8f6a0c..0664cc0ebd5 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -309,12 +309,12 @@ stdenv.mkDerivation ({ export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET" export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET" '' + stdenv.lib.optionalString stdenv.isDarwin '' - if xcodePath=$(/usr/bin/xcrun --show-sdk-path); then - configureFlagsArray+=(--with-native-system-header-dir=$xcodePath/usr/include) + if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then + configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include) makeFlagsArray+=( \ - CFLAGS_FOR_BUILD=-F$xcodePath/System/Library/Frameworks \ - CFLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ - FLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \ + CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \ + CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ + FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \ ) fi ''; diff --git a/pkgs/development/libraries/libsamplerate/default.nix b/pkgs/development/libraries/libsamplerate/default.nix index 183caefff85..85d51d0ad71 100644 --- a/pkgs/development/libraries/libsamplerate/default.nix +++ b/pkgs/development/libraries/libsamplerate/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { '' # need headers from the Carbon.framework in /System/Library/Frameworks to # compile this on darwin -- not sure how to handle - NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + NIX_CFLAGS_COMPILE+=" -I$SDKROOT/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" substituteInPlace examples/Makefile --replace "-fpascal-strings" "" ''; diff --git a/pkgs/development/libraries/libsndfile/default.nix b/pkgs/development/libraries/libsndfile/default.nix index f97bd040a54..74140d5f335 100644 --- a/pkgs/development/libraries/libsndfile/default.nix +++ b/pkgs/development/libraries/libsndfile/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { # compile this on darwin -- not sure how to handle preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' - NIX_CFLAGS_COMPILE+=" -I$xcodePath/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" + NIX_CFLAGS_COMPILE+=" -I$SDKROOT/System/Library/Frameworks/Carbon.framework/Versions/A/Headers" ''; # Needed on Darwin. diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index b540456afa4..2301b8b8f2b 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,9 +15,9 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" - export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib" + SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" + export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); initialPath = (import ../common-path.nix) {pkgs = pkgs;}; From fb4e2e112fffa76d92433d8ffc7b7c5e19888c79 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 09:14:13 +0200 Subject: [PATCH 42/53] Export SDKROOT --- pkgs/stdenv/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index 2301b8b8f2b..afdd353a329 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -15,7 +15,7 @@ import ../generic rec { stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 - SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) + export SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); From 3e4a382d6753a057256c7ef1e9f52ae9e07bd677 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 09:37:23 +0200 Subject: [PATCH 43/53] Doh --- pkgs/stdenv/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix index afdd353a329..a496a819a6d 100644 --- a/pkgs/stdenv/nix/default.nix +++ b/pkgs/stdenv/nix/default.nix @@ -16,7 +16,7 @@ import ../generic rec { xargsFlags=" " export MACOSX_DEPLOYMENT_TARGET=10.6 export SDKROOT=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true) - export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$xcodePath/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" + export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$SDKROOT/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" '' else ""); From 8f3dc34618efc87e6d39f979278cc03f50b1c8ed Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jul 2014 18:09:53 +0200 Subject: [PATCH 44/53] gcc-apple: Mark as broken It doesn't work with the --sysroot flag passed by gcc-wrapper, and it doesn't build with recent Xcode versions (if the SDK is not in /). --- pkgs/development/compilers/gcc/4.2-apple64/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/compilers/gcc/4.2-apple64/default.nix b/pkgs/development/compilers/gcc/4.2-apple64/default.nix index 229f68fd841..f5496cb5ef7 100644 --- a/pkgs/development/compilers/gcc/4.2-apple64/default.nix +++ b/pkgs/development/compilers/gcc/4.2-apple64/default.nix @@ -44,4 +44,6 @@ stdenv.mkDerivation rec { langC = true; buildInputs = stdenv.lib.optionals langF77 [ gmp mpfr bison flex ]; + + meta.broken = true; } From 8a10d8bbc33a331f15f41d54aca031fc7b7c9f67 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 29 Jul 2014 17:03:32 +0200 Subject: [PATCH 45/53] autoconf: Disable tests These take waaaay too long. --- pkgs/development/tools/misc/autoconf/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/autoconf/default.nix b/pkgs/development/tools/misc/autoconf/default.nix index 08fcd95afb5..05544b22b08 100644 --- a/pkgs/development/tools/misc/autoconf/default.nix +++ b/pkgs/development/tools/misc/autoconf/default.nix @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { # http://thread.gmane.org/gmane.comp.sysutils.autoconf.bugs/6822 for # details. # There are many test failures on `i386-pc-solaris2.11'. - doCheck = ((!stdenv.isCygwin) && (!stdenv.isSunOS)); + #doCheck = ((!stdenv.isCygwin) && (!stdenv.isSunOS)); + doCheck = false; # Don't fixup "#! /bin/sh" in Autoconf, otherwise it will use the # "fixed" path in generated files! From 0769fc5b77eb76c6a794187f173c48f912fc837c Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 14 Jun 2014 10:59:35 +0400 Subject: [PATCH 46/53] Set CONFIG_SHELL to stdenv.shell in the default builder, just like SHELL --- pkgs/stdenv/generic/setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 4f78713a549..c3b9033b49a 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -103,6 +103,7 @@ fi # Execute the pre-hook. export SHELL=@shell@ +export CONFIG_SHELL="$SHELL" if [ -z "$shell" ]; then export shell=@shell@; fi runHook preHook From b76a7504bb5580facafac99f26bba37adba8acbc Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 4 Aug 2014 12:38:51 +0200 Subject: [PATCH 47/53] cabal: cosmetic fix to syntax highlighting in Emacs --- pkgs/build-support/cabal/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix index df03c8854cb..69423004d65 100644 --- a/pkgs/build-support/cabal/default.nix +++ b/pkgs/build-support/cabal/default.nix @@ -265,7 +265,7 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version; fi ${optionalString (self.enableSharedExecutables && self.isExecutable && self.stdenv.isDarwin) '' - for exe in $out/bin/* ; do + for exe in "$out/bin/"* ; do install_name_tool -add_rpath \ $out/lib/${ghc.ghc.name}/${self.pname}-${self.version} $exe done From 9253a95f6b3f65ecc701ebb10620acfb6d251f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 3 Aug 2014 17:51:50 +0200 Subject: [PATCH 48/53] glibc: fix CVE-2014-0475 by upstream patches https://sourceware.org/bugzilla/show_bug.cgi?id=17137 --- .../libraries/glibc/2.19/common.nix | 2 + .../libraries/glibc/2.19/cve-2014-0475.patch | 170 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch diff --git a/pkgs/development/libraries/glibc/2.19/common.nix b/pkgs/development/libraries/glibc/2.19/common.nix index b153d91934b..8a461485186 100644 --- a/pkgs/development/libraries/glibc/2.19/common.nix +++ b/pkgs/development/libraries/glibc/2.19/common.nix @@ -58,6 +58,8 @@ stdenv.mkDerivation ({ ./fix_path_attribute_in_getconf.patch ./fix-math.patch + + ./cve-2014-0475.patch ]; postPatch = '' diff --git a/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch b/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch new file mode 100644 index 00000000000..a4f983de8f6 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.19/cve-2014-0475.patch @@ -0,0 +1,170 @@ +Picked from upstream commits, but excluding changes to news and tests: +d183645616b0533 and 4e8f95a0df7c2 +Also see https://sourceware.org/bugzilla/show_bug.cgi?id=17137 + +diff --git a/locale/setlocale.c b/locale/setlocale.c +index 9458468..6455b8b 100644 +--- a/locale/setlocale.c ++++ b/locale/setlocale.c +@@ -272,6 +272,8 @@ setlocale (int category, const char *locale) + of entries of the form `CATEGORY=VALUE'. */ + const char *newnames[__LC_LAST]; + struct __locale_data *newdata[__LC_LAST]; ++ /* Copy of the locale argument, for in-place splitting. */ ++ char *locale_copy = NULL; + + /* Set all name pointers to the argument name. */ + for (category = 0; category < __LC_LAST; ++category) +@@ -281,7 +283,13 @@ setlocale (int category, const char *locale) + if (__glibc_unlikely (strchr (locale, ';') != NULL)) + { + /* This is a composite name. Make a copy and split it up. */ +- char *np = strdupa (locale); ++ locale_copy = strdup (locale); ++ if (__glibc_unlikely (locale_copy == NULL)) ++ { ++ __libc_rwlock_unlock (__libc_setlocale_lock); ++ return NULL; ++ } ++ char *np = locale_copy; + char *cp; + int cnt; + +@@ -299,6 +307,7 @@ setlocale (int category, const char *locale) + { + error_return: + __libc_rwlock_unlock (__libc_setlocale_lock); ++ free (locale_copy); + + /* Bogus category name. */ + ERROR_RETURN; +@@ -391,8 +400,9 @@ setlocale (int category, const char *locale) + /* Critical section left. */ + __libc_rwlock_unlock (__libc_setlocale_lock); + +- /* Free the resources (the locale path variable). */ ++ /* Free the resources. */ + free (locale_path); ++ free (locale_copy); + + return composite; + } +diff --git a/locale/findlocale.c b/locale/findlocale.c +index bbaf708..22e8b53 100644 +--- a/locale/findlocale.c ++++ b/locale/findlocale.c +@@ -17,6 +17,7 @@ + . */ + + #include ++#include + #include + #include + #include +@@ -57,6 +58,45 @@ struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST]; + + const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR; + ++/* Checks if the name is actually present, that is, not NULL and not ++ empty. */ ++static inline int ++name_present (const char *name) ++{ ++ return name != NULL && name[0] != '\0'; ++} ++ ++/* Checks that the locale name neither extremely long, nor contains a ++ ".." path component (to prevent directory traversal). */ ++static inline int ++valid_locale_name (const char *name) ++{ ++ /* Not set. */ ++ size_t namelen = strlen (name); ++ /* Name too long. The limit is arbitrary and prevents stack overflow ++ issues later. */ ++ if (__glibc_unlikely (namelen > 255)) ++ return 0; ++ /* Directory traversal attempt. */ ++ static const char slashdot[4] = {'/', '.', '.', '/'}; ++ if (__glibc_unlikely (memmem (name, namelen, ++ slashdot, sizeof (slashdot)) != NULL)) ++ return 0; ++ if (namelen == 2 && __glibc_unlikely (name[0] == '.' && name [1] == '.')) ++ return 0; ++ if (namelen >= 3 ++ && __glibc_unlikely (((name[0] == '.' ++ && name[1] == '.' ++ && name[2] == '/') ++ || (name[namelen - 3] == '/' ++ && name[namelen - 2] == '.' ++ && name[namelen - 1] == '.')))) ++ return 0; ++ /* If there is a slash in the name, it must start with one. */ ++ if (__glibc_unlikely (memchr (name, '/', namelen) != NULL) && name[0] != '/') ++ return 0; ++ return 1; ++} + + struct __locale_data * + internal_function +@@ -65,7 +105,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, + { + int mask; + /* Name of the locale for this category. */ +- char *loc_name; ++ char *loc_name = (char *) *name; + const char *language; + const char *modifier; + const char *territory; +@@ -73,31 +113,39 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, + const char *normalized_codeset; + struct loaded_l10nfile *locale_file; + +- if ((*name)[0] == '\0') ++ if (loc_name[0] == '\0') + { + /* The user decides which locale to use by setting environment + variables. */ +- *name = getenv ("LC_ALL"); +- if (*name == NULL || (*name)[0] == '\0') +- *name = getenv (_nl_category_names.str ++ loc_name = getenv ("LC_ALL"); ++ if (!name_present (loc_name)) ++ loc_name = getenv (_nl_category_names.str + + _nl_category_name_idxs[category]); +- if (*name == NULL || (*name)[0] == '\0') +- *name = getenv ("LANG"); ++ if (!name_present (loc_name)) ++ loc_name = getenv ("LANG"); ++ if (!name_present (loc_name)) ++ loc_name = (char *) _nl_C_name; + } + +- if (*name == NULL || (*name)[0] == '\0' +- || (__builtin_expect (__libc_enable_secure, 0) +- && strchr (*name, '/') != NULL)) +- *name = (char *) _nl_C_name; ++ /* We used to fall back to the C locale if the name contains a slash ++ character '/', but we now check for directory traversal in ++ valid_locale_name, so this is no longer necessary. */ + +- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 +- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) ++ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0 ++ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0) + { + /* We need not load anything. The needed data is contained in + the library itself. */ + *name = (char *) _nl_C_name; + return _nl_C[category]; + } ++ else if (!valid_locale_name (loc_name)) ++ { ++ __set_errno (EINVAL); ++ return NULL; ++ } ++ ++ *name = loc_name; + + /* We really have to load some data. First we try the archive, + but only if there was no LOCPATH environment variable specified. */ From d4c946829f5de3b603f84236240ab8d7bbb6a94e Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Mon, 4 Aug 2014 19:41:54 +0200 Subject: [PATCH 49/53] fontconfig: revert to sysconfdir=/etc. Closes #3453 --- pkgs/development/libraries/fontconfig/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index 5e211c74d5e..f0c4da75567 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -20,6 +20,7 @@ stdenv.mkDerivation rec { buildInputs = [ pkgconfig expat ]; configureFlags = [ + "--sysconfdir=/etc" "--with-cache-dir=/var/cache/fontconfig" "--disable-docs" "--with-default-fonts=" @@ -39,7 +40,7 @@ stdenv.mkDerivation rec { doCheck = true; # Don't try to write to /var/cache/fontconfig at install time. - installFlags = "fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false"; + installFlags = "sysconfdir=$(out)/etc fc_cachedir=$(TMPDIR)/dummy RUN_FC_CACHE_TEST=false"; postInstall = '' cd "$out/etc/fonts" && tar xvf ${infinality_patch} From aa0da0e1a8c201537d4089cf8666793066e569ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 4 Aug 2014 20:33:39 +0200 Subject: [PATCH 50/53] mesa: bugfix update Squashed this one as well, as mesa bugfixes tend to be very reliable. --- pkgs/development/libraries/mesa/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 5695967bc3d..bbad10898bf 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -24,7 +24,7 @@ else */ let - version = "10.2.4"; + version = "10.2.5"; # this is the default search path for DRI drivers driverLink = "/run/opengl-driver" + stdenv.lib.optionalString stdenv.isi686 "-32"; in @@ -35,7 +35,7 @@ stdenv.mkDerivation { src = fetchurl { url = "ftp://ftp.freedesktop.org/pub/mesa/${version}/MesaLib-${version}.tar.bz2"; - sha256 = "06l18j9vshq2xzhnp6zd6pw0dlfy0qg1cw4zyn1w51gb8h9398h6"; + sha256 = "039is15p8pkhf8m0yiyb72zybl63xb9ckqzcg3xwi8zlyw5ryidl"; }; prePatch = "patchShebangs ."; From 9a5adb93d46b7a5be2fe81e11e12be2cc24988de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 4 Aug 2014 21:11:35 +0200 Subject: [PATCH 51/53] libav: maintenance + security update Supposed to fix CVE-2011-3946 and CVE-2013-{0851,0852,0868}. --- pkgs/development/libraries/libav/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libav/default.nix b/pkgs/development/libraries/libav/default.nix index cd80d61d191..8ee8c087b2f 100644 --- a/pkgs/development/libraries/libav/default.nix +++ b/pkgs/development/libraries/libav/default.nix @@ -28,7 +28,7 @@ let result = { libav_0_8 = libavFun "0.8.13" "1fr3rzykrlm1cla0csm9hqa3gcqp19hf5rgn70nyb9w92r67v685"; libav_9 = libavFun "9.14" "07gn4lbqx6wfhb2h2ddj88hcsacwmzb4syalg211m55xmp1g1fp4"; - libav_10 = libavFun "10.2" "06wvk51cnllw6367qagc90sva4jr5d0r6jx8183wcwzwzgv01w29"; + libav_10 = libavFun "10.3" "1fq83rc5534fjqjlhkw5i9k54dmyqn2pgvyillm6pws8rkn9yb5r"; }; libavFun = version : sha256 : stdenv.mkDerivation rec { From 5c276c4f68125e7d53e0467a3e74969dbd05b51b Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 8 Aug 2014 09:46:57 +0200 Subject: [PATCH 52/53] openssl: update to version 1.0.1i See https://www.openssl.org/news/secadv_20140806.txt for a long list of CVE numbers. Fixes . --- pkgs/development/libraries/openssl/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 93f7cbe1a1f..8c88df984f0 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -2,7 +2,7 @@ , withCryptodev ? false, cryptodevHeaders }: let - name = "openssl-1.0.1h"; + name = "openssl-1.0.1i"; opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ] (throw "openssl needs its platform name cross building" null) @@ -43,7 +43,7 @@ stdenv.mkDerivation { "http://www.openssl.org/source/${name}.tar.gz" "http://openssl.linux-mirror.org/source/${name}.tar.gz" ]; - sha256 = "14yhsgag5as7nhxnw7f0vklwjwa3pmn1i15nmp3f4qxa6sc8l74x"; + sha256 = "1izwv1wzqdw8aqnvb70jcqpqp0rvkcm22w5c1dm9l1kpr939y5rw"; }; patches = patchesCross false; @@ -65,7 +65,7 @@ stdenv.mkDerivation { makeFlags = "MANDIR=$(out)/share/man"; # Parallel building is broken in OpenSSL. - #enableParallelBuilding = true; + enableParallelBuilding = false; postInstall = '' From 777617f987c1e3e44f0f399582bc1b2e2f113c42 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 8 Aug 2014 19:28:24 +0200 Subject: [PATCH 53/53] ncurses: Build with standard gcc --- .../development/libraries/ncurses/default.nix | 28 +++++++++---------- pkgs/top-level/all-packages.nix | 7 ----- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 7627fb79e99..87953c1158d 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, unicode ? true}: +{ lib, stdenv, fetchurl, unicode ? true }: let /* C++ bindings fail to build on `i386-pc-solaris2.11' with GCC 3.4.3: @@ -10,7 +10,7 @@ let So disable them for now. */ cxx = !stdenv.isSunOS; in -stdenv.mkDerivation (rec { +stdenv.mkDerivation rec { name = "ncurses-5.9"; src = fetchurl { @@ -18,13 +18,7 @@ stdenv.mkDerivation (rec { sha256 = "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh"; }; - clangPatch = fetchurl { - # Patch referenced from https://github.com/Homebrew/homebrew-dupes/issues/43 - url = "http://lists.gnu.org/archive/html/bug-ncurses/2011-04/txtkWQqiQvcZe.txt"; - sha256 = "03lrwqvb0r2qgi8hz7ayd3g26d6xilr3c92j8li3b77kdc0w0rlv"; - }; - - patches = [ ./patch-ac ] ++ stdenv.lib.optional stdenv.isDarwin clangPatch; + patches = [ ./patch-ac ]; configureFlags = '' --with-shared --without-debug --enable-pc-files --enable-symlinks @@ -41,6 +35,8 @@ stdenv.mkDerivation (rec { export configureFlags="$configureFlags --includedir=$out/include" export PKG_CONFIG_LIBDIR="$out/lib/pkgconfig" mkdir -p "$PKG_CONFIG_LIBDIR" + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace configure --replace -no-cpp-precomp "" ''; selfNativeBuildInput = true; @@ -50,8 +46,8 @@ stdenv.mkDerivation (rec { preBuild = # On Darwin, we end up using the native `sed' during bootstrap, and it # fails to run this command, which isn't needed anyway. - stdenv.lib.optionalString (!stdenv.isDarwin) - ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; + lib.optionalString (!stdenv.isDarwin) + ''sed -e "s@\([[:space:]]\)sh @\1''${SHELL} @" -i */Makefile Makefile''; # When building a wide-character (Unicode) build, create backward # compatibility links from the the "normal" libraries to the @@ -71,6 +67,8 @@ stdenv.mkDerivation (rec { ln -svf ncursesw5-config $out/bin/ncurses5-config '' else ""; + postFixup = lib.optionalString stdenv.isDarwin "rm $out/lib/*.so"; + meta = { description = "GNU Ncurses, a free software emulation of curses in SVR4 and more"; @@ -90,9 +88,9 @@ stdenv.mkDerivation (rec { homepage = http://www.gnu.org/software/ncurses/; - license = stdenv.lib.licenses.mit; + license = lib.licenses.mit; - maintainers = [ stdenv.lib.maintainers.ludo ]; - platforms = stdenv.lib.platforms.all; + maintainers = [ lib.maintainers.ludo ]; + platforms = lib.platforms.all; }; -} // ( if stdenv.isDarwin then { postFixup = "rm $out/lib/*.so"; } else { } ) ) +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6af488d5217..3e77a1231bf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5754,13 +5754,6 @@ let ncurses = callPackage ../development/libraries/ncurses { unicode = system != "i686-cygwin"; - stdenv = - # On Darwin, NCurses uses `-no-cpp-precomp', which is specific to - # Apple-GCC. Since NCurses is part of stdenv, always use - # `stdenvNative' to build it. - if stdenv.isDarwin - then allStdenvs.stdenvNative - else stdenv; }; neon = callPackage ../development/libraries/neon {