From 8aef144523e24fa37c386d2a988248a2e4dda0ab Mon Sep 17 00:00:00 2001 From: openeuler-basic Date: Thu, 26 Dec 2019 19:52:40 +0800 Subject: [PATCH] init --- generic-rpm-config.spec | 209 ++++++++++++++++++ genericOS.patch | 193 ++++++++++++++++ macros.fpc-srpm | 3 + macros.ghc-srpm | 7 + macros.gnat-srpm | 14 ++ macros.go-srpm | 170 ++++++++++++++ macros.nim-srpm | 1 + macros.ocaml-srpm | 11 + macros.openEuler | 31 +++ macros.openblas-srpm | 2 + macros.perl-srpm | 15 ++ macros.pybytecompile | 19 ++ macros.python | 81 +++++++ macros.python-srpm | 107 +++++++++ macros.python2 | 41 ++++ macros.python3 | 43 ++++ macros.rust-srpm | 1 + redhat-rpm-config-118.tar.gz | Bin 0 -> 61142 bytes ...-fcf-protection-for-gcc-7.3.0-x86_64.patch | 25 +++ 19 files changed, 973 insertions(+) create mode 100644 generic-rpm-config.spec create mode 100644 genericOS.patch create mode 100644 macros.fpc-srpm create mode 100644 macros.ghc-srpm create mode 100644 macros.gnat-srpm create mode 100644 macros.go-srpm create mode 100644 macros.nim-srpm create mode 100644 macros.ocaml-srpm create mode 100644 macros.openEuler create mode 100644 macros.openblas-srpm create mode 100644 macros.perl-srpm create mode 100644 macros.pybytecompile create mode 100644 macros.python create mode 100644 macros.python-srpm create mode 100644 macros.python2 create mode 100644 macros.python3 create mode 100644 macros.rust-srpm create mode 100644 redhat-rpm-config-118.tar.gz create mode 100644 remove-fcf-protection-for-gcc-7.3.0-x86_64.patch diff --git a/generic-rpm-config.spec b/generic-rpm-config.spec new file mode 100644 index 0000000..5c902e6 --- /dev/null +++ b/generic-rpm-config.spec @@ -0,0 +1,209 @@ +%global vendor %{?_vendor:%{_vendor}}%{!?_vendor:openEuler} + +Name: %{vendor}-rpm-config +Version: 29 +Release: 20 +License: GPL+ +Summary: specific rpm configuration files +URL: https://src.fedoraproject.org/rpms/redhat-rpm-config + +# Core rpm settings +#fedora 29 snapshots from https://src.fedoraproject.org/rpms/redhat-rpm-config +Source0: redhat-rpm-config-118.tar.gz +#https://src.fedoraproject.org/rpms/fpc-srpm-macros/blob/f29/f/macros.fpc-srpm +Source1: macros.fpc-srpm +#https://src.fedoraproject.org/rpms/ghc-srpm-macros/blob/f29/f/macros.ghc-srpm +Source2: macros.ghc-srpm +#https://src.fedoraproject.org/rpms/gnat-srpm-macros/blob/f29/f/macros.gnat-srpm +Source3: macros.gnat-srpm +#https://src.fedoraproject.org/rpms/nim-srpm-macros/tree/f29 +Source4: macros.nim-srpm +#https://src.fedoraproject.org/rpms/ocaml-srpm-macros/blob/f29/f/macros.ocaml-srpm +Source5: macros.ocaml-srpm +#https://src.fedoraproject.org/rpms/openblas-srpm-macros/blob/f29/f/macros.openblas-srpm +Source6: macros.openblas-srpm +#https://src.fedoraproject.org/rpms/perl-srpm-macros/blob/f29/f/macros.perl-srpm +Source7: macros.perl-srpm +#https://pagure.io/fedora-rust/rust2rpm +Source8: macros.rust-srpm +#https://github.com/gofed/go-macros +Source9: macros.go-srpm + + +#python https://src.fedoraproject.org/rpms/python-rpm-macros/blob/f29/ +Source10: macros.python +Source11: macros.python-srpm +Source12: macros.python2 +Source13: macros.python3 +Source14: macros.pybytecompile + +Source99: macros.openEuler + +Patch0: genericOS.patch +Patch1: remove-fcf-protection-for-gcc-7.3.0-x86_64.patch + +Provides: python-rpm-macros = %{version}-%{release} +Provides: python2-rpm-macros = %{version}-%{release} +Provides: python3-rpm-macros = %{version}-%{release} +Provides: python-srpm-macros = %{version}-%{release} +Provides: fpc-srpm-macros +Provides: ghc-srpm-macros +Provides: gnat-srpm-macros +Provides: nim-srpm-macros +Provides: ocaml-srpm-macros +Provides: openblas-srpm-macros +Provides: perl-srpm-macros +Provides: rust-srpm-macros +Provides: go-srpm-macros +Obsoletes: python-rpm-macros +Obsoletes: python2-rpm-macros +Obsoletes: python3-rpm-macros +Obsoletes: python-srpm-macros +Obsoletes: fpc-srpm-macros +Obsoletes: ghc-srpm-macros +Obsoletes: gnat-srpm-macros +Obsoletes: nim-srpm-macros +Obsoletes: ocaml-srpm-macros +Obsoletes: openblas-srpm-macros +Obsoletes: perl-srpm-macros +Obsoletes: rust-srpm-macros +Obsoletes: go-srpm-macros + +Requires: efi-srpm-macros +Requires: qt5-srpm-macros + +Requires: rpm >= 4.11.0 +Requires: dwz >= 0.4 +Requires: zip +#Requires: (annobin if gcc) + +# for brp-mangle-shebangs +Requires: %{_bindir}/find +Requires: %{_bindir}/file +Requires: %{_bindir}/grep +Requires: sed +Requires: %{_bindir}/xargs + +# -fstack-clash-protection and -fcf-protection require GCC 8. +Conflicts: gcc < 7 + +Provides: system-rpm-config = %{version}-%{release} + +%global rrcdir /usr/lib/rpm/%{vendor} + +%description +specific rpm configuration files for %{vendor}. + +%package -n kernel-rpm-macros +Summary: Macros and scripts for building kernel module packages +Requires: %{vendor}-rpm-config + +%description -n kernel-rpm-macros +Macros and scripts for building kernel module packages. + +%prep +sed -i "s/generic_os/%{vendor}/g" $RPM_SOURCE_DIR/genericOS.patch + +%setup -T -c +tar -xf %{SOURCE0} --strip-components 1 +%patch0 -p1 +%patch1 -p1 +mv redhat-hardened-cc1 %{vendor}-hardened-cc1 +mv redhat-hardened-ld %{vendor}-hardened-ld +mv redhat-annobin-cc1 %{vendor}-annobin-cc1 + +%install +mkdir -p %{buildroot}%{rrcdir} +install -p -m 644 -t %{buildroot}%{rrcdir} macros rpmrc +install -p -m 444 -t %{buildroot}%{rrcdir} %{vendor}-hardened-* +install -p -m 444 -t %{buildroot}%{rrcdir} %{vendor}-annobin-* +install -p -m 755 -t %{buildroot}%{rrcdir} config.* +install -p -m 755 -t %{buildroot}%{rrcdir} dist.sh rpmsort symset-table kmodtool +install -p -m 755 -t %{buildroot}%{rrcdir} brp-* + +install -p -m 755 -t %{buildroot}%{rrcdir} find-* +mkdir -p %{buildroot}%{rrcdir}/find-provides.d +install -p -m 644 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov + +install -p -m 755 -t %{buildroot}%{rrcdir} brp-* + +mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d +install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* + +mkdir -p %{buildroot}%{_fileattrsdir} +install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr +install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov + +install -m 644 %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} \ + %{SOURCE9} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE99}\ + %{buildroot}/%{rpmmacrodir}/ + +%files +%dir %{rrcdir} +%{rrcdir}/macros +%{rrcdir}/rpmrc +%{rrcdir}/brp-* +%{rrcdir}/dist.sh +%{rrcdir}/%{vendor}-hardened-* +%{rrcdir}/%{vendor}-annobin-* +%{rrcdir}/config.* +%{rrcdir}/find-provides +%{rrcdir}/find-requires +%{rrcdir}/brp-ldconfig +%{_fileattrsdir}/*.attr +%{_rpmconfigdir}/kmod.prov +%{_rpmconfigdir}/macros.d/macros.* +%doc buildflags.md +%exclude %{_rpmconfigdir}/macros.d/macros.kmp + +%files -n kernel-rpm-macros +%dir %{rrcdir}/find-provides.d +%{rrcdir}/kmodtool +%{rrcdir}/rpmsort +%{rrcdir}/symset-table +%{rrcdir}/find-provides.ksyms +%{rrcdir}/find-requires.ksyms +%{rrcdir}/find-provides.d/firmware.prov +%{rrcdir}/find-provides.d/modalias.prov +%{_rpmconfigdir}/macros.d/macros.kmp + +%changelog +* Thu Dec 26 2019 openEuler Buildteam 29-20 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:delete unneeded provides + +* Wed Nov 27 2019 fanghuiyu - 29-19 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:change to generic-rpm-config + +* Fri Nov 15 2019 jiangchuangang - 29-18 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC: remove fcf-protection for x86_64 from rpmrc + +* Wed Oct 30 2019 hexiaowen - 29-17 +- add custom macros + +* Wed Sep 25 2019 hexiaowen - 29-16 +- add rust-srpm-macros and go-srpm-macros + +* Fri Sep 20 2019 hexiaowen - 29-15 +- add version-release for python-rpm-macros + +* Fri Sep 20 2019 hexiaowen - 29-14 +- add python-rpm-macros fpc-srpm-macros ghc-srpm-macros gnat-srpm-macros +- nim-srpm-macros ocaml-srpm-macros openblas-srpm-macros perl-srpm-macros + +* Thu Aug 29 2019 hexiaowen - 29-13 +- fix typo + +* Tue Aug 27 2019 hexiaowen - 29-2 +- delete annobin + +* Wed Jul 18 2018 openEuler Buildteam - 29-1 +- Package init diff --git a/genericOS.patch b/genericOS.patch new file mode 100644 index 0000000..8fbc0bf --- /dev/null +++ b/genericOS.patch @@ -0,0 +1,193 @@ +diff -urN a/buildflags.md b/buildflags.md +--- a/buildflags.md 2019-08-08 06:06:41.000000000 +0000 ++++ b/buildflags.md 2019-08-09 06:55:22.060000000 +0000 +@@ -208,7 +208,7 @@ + + For hardened builds (which are enabled by default, see above for how + to disable them), the flag +-`-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1` is added to the ++`-specs=/usr/lib/rpm/generic_os/redhat-hardened-cc1` is added to the + command line. It adds the following flag to the command line: + + * `-fPIE`: Compile for a position-independent executable (PIE), +@@ -231,7 +231,7 @@ + + To support [binary watermarks for ELF + objects](https://fedoraproject.org/wiki/Toolchain/Watermark) using +-annobin, the `-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1` flag is ++annobin, the `-specs=/usr/lib/rpm/generic_os/redhat-annobin-cc1` flag is + added by default. This can be switched off by undefining the + `%_annotated_build` RPM macro (see above). + +@@ -314,7 +314,7 @@ + (optional, see above). + + For hardened builds, the +-`-specs=/usr/lib/rpm/redhat/redhat-hardened-ld` flag is added to the ++`-specs=/usr/lib/rpm/generic_os/redhat-hardened-ld` flag is added to the + compiler driver command line. (This can be disabled by undefining the + `%_hardened_build` macro; see above) This activates the following + linker flags: +diff -urN a/dist.sh b/dist.sh +--- a/dist.sh 2019-08-08 06:06:41.000000000 +0000 ++++ b/dist.sh 2019-08-09 06:55:22.060000000 +0000 +@@ -11,7 +11,7 @@ + # If we successfully detect the version number, we output the + # dist tag. Otherwise, we exit with no output. + +-RELEASEFILE=/etc/redhat-release ++RELEASEFILE=/etc/generic_os-release + + function check_num { + MAINVER=`cut -d "(" -f 1 < $RELEASEFILE | \ +diff -urN a/find-provides b/find-provides +--- a/find-provides 2019-08-08 06:06:41.000000000 +0000 ++++ b/find-provides 2019-08-09 06:55:22.060000000 +0000 +@@ -15,7 +15,7 @@ + + # + # --- any other extra find-provides scripts +-for i in /usr/lib/rpm/redhat/find-provides.d/*.prov ++for i in /usr/lib/rpm/generic_os/find-provides.d/*.prov + do + [ -x $i ] && + (echo $filelist | tr '[:blank:]' \\n | $i | sort -u) +@@ -44,7 +44,7 @@ + unset is_kmod + fi + +-[ -x /usr/lib/rpm/redhat/find-provides.ksyms ] && [ "$is_kmod" ] && +- printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-provides.ksyms ++[ -x /usr/lib/rpm/generic_os/find-provides.ksyms ] && [ "$is_kmod" ] && ++ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/generic_os/find-provides.ksyms + + exit 0 +diff -urN a/find-requires b/find-requires +--- a/find-requires 2019-08-08 06:06:41.000000000 +0000 ++++ b/find-requires 2019-08-09 06:55:22.060000000 +0000 +@@ -33,7 +33,7 @@ + done + + # Disabling for now while the Fedora kernel doesn't produce kABI deps. +-#[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] && +-# printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms ++#[ -x /usr/lib/rpm/generic_os/find-requires.ksyms ] && [ "$is_kmod" ] && ++# printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/generic_os/find-requires.ksyms + + exit 0 +diff -urN a/macros b/macros +--- a/macros 2019-08-08 06:06:41.000000000 +0000 ++++ b/macros 2019-08-09 06:57:55.040000000 +0000 +@@ -3,7 +3,7 @@ + #============================================================================== + # ---- per-platform macros. + # +-%_vendor redhat ++%_vendor generic_os + %_os linux + %_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} + +@@ -77,7 +77,7 @@ + %configure \ + %{set_build_flags}; \ + [ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \ +- [ -f /usr/lib/rpm/redhat/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/redhat/$(basename $i) $i ; \ ++ [ -f /usr/lib/rpm/generic_os/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/generic_os/$(basename $i) $i ; \ + done ; \ + [ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \ + for i in $(find . -name ltmain.sh) ; do \ +@@ -136,7 +136,7 @@ + + # Build root policy macros. Standard naming: + # convert all '-' in basename to '_', add two leading underscores. +-%__brp_ldconfig /usr/lib/rpm/redhat/brp-ldconfig ++%__brp_ldconfig /usr/lib/rpm/generic_os/brp-ldconfig + %__brp_compress /usr/lib/rpm/brp-compress + %__brp_strip /usr/lib/rpm/brp-strip %{__strip} + %__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump} +@@ -147,7 +147,7 @@ + # __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude + # __brp_mangle_shebangs_exclude_from - files to ignore + # __brp_mangle_shebangs_exclude_from_file - file from which to get files to ignore +-%__brp_mangle_shebangs /usr/lib/rpm/redhat/brp-mangle-shebangs %{?__brp_mangle_shebangs_exclude:--shebangs "%{?__brp_mangle_shebangs_exclude}"} %{?__brp_mangle_shebangs_exclude_file:--shebangs-from "%{__brp_mangle_shebangs_exclude_file}"} %{?__brp_mangle_shebangs_exclude_from:--files "%{?__brp_mangle_shebangs_exclude_from}"} %{?__brp_mangle_shebangs_exclude_from_file:--files-from "%{__brp_mangle_shebangs_exclude_from_file}"} ++%__brp_mangle_shebangs /usr/lib/rpm/generic_os/brp-mangle-shebangs %{?__brp_mangle_shebangs_exclude:--shebangs "%{?__brp_mangle_shebangs_exclude}"} %{?__brp_mangle_shebangs_exclude_file:--shebangs-from "%{__brp_mangle_shebangs_exclude_file}"} %{?__brp_mangle_shebangs_exclude_from:--files "%{?__brp_mangle_shebangs_exclude_from}"} %{?__brp_mangle_shebangs_exclude_from_file:--files-from "%{__brp_mangle_shebangs_exclude_from_file}"} + + %__os_install_post \ + %{?__brp_ldconfig} \ +@@ -193,9 +193,9 @@ + # Use XZ compression for binary payloads + %_binary_payload w2.xzdio + +-%_hardening_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ++%_hardening_cflags -specs=/usr/lib/rpm/generic_os/generic_os-hardened-cc1 + # we don't escape symbols '~', '"', etc. so be careful when changing this +-%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld ++%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/generic_os/generic_os-hardened-ld + + # Harden packages by default for Fedora 23: + # https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11) +@@ -204,12 +204,14 @@ + %_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} + %_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}} + +-%_annobin_cflags -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ++#%_annobin_cflags -specs=/usr/lib/rpm/generic_os/generic_os-annobin-cc1 ++%_annobin_cflags %{nil} + + # Add extra information to binary objects created by gcc for Fedora 28: + # https://pagure.io/fesco/issue/1780 (accepted on 2017-10-30) + # Use "%undefine _annotated_build" to disable. +-%_annotated_build 1 ++#%_annotated_build 1 ++%undefine _annotated_build + %_annotated_cflags %{?_annotated_build:%{_annobin_cflags}} + + # Fail linking if there are undefined symbols. Required for proper +diff -urN a/macros.kmp b/macros.kmp +--- a/macros.kmp 2019-08-08 06:06:41.000000000 +0000 ++++ b/macros.kmp 2019-08-09 06:55:22.060000000 +0000 +@@ -2,8 +2,8 @@ + redhat_kernel_module_package 1 + kernel_module_package_release 1 + +-%__find_provides /usr/lib/rpm/redhat/find-provides +-%__find_requires /usr/lib/rpm/redhat/find-requires ++%__find_provides /usr/lib/rpm/generic_os/find-provides ++%__find_requires /usr/lib/rpm/generic_os/find-requires + + #kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] + # [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... +@@ -12,10 +12,10 @@ + kernel-devel + + %kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \ +- %define kmodtool %{-s*}%{!-s:/usr/lib/rpm/redhat/kmodtool} \ ++ %define kmodtool %{-s*}%{!-s:/usr/lib/rpm/generic_os/kmodtool} \ + %define kmp_version %{-v*}%{!-v:%{version}} \ + %define kmp_release %{-r*}%{!-r:%{release}} \ +- %define latest_kernel %(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel | /usr/lib/rpm/redhat/rpmsort -r | head -n 1` | head -n 1) \ ++ %define latest_kernel %(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel | /usr/lib/rpm/generic_os/rpmsort -r | head -n 1` | head -n 1) \ + %{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \ + %global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \ + flavors="default" \ +diff -urN a/redhat-rpm-config.spec b/redhat-rpm-config.spec +--- a/redhat-rpm-config.spec 2019-08-08 06:06:41.000000000 +0000 ++++ b/redhat-rpm-config.spec 2019-08-09 06:55:22.060000000 +0000 +@@ -110,7 +110,7 @@ + + Provides: system-rpm-config = %{version}-%{release} + +-%global rrcdir /usr/lib/rpm/redhat ++%global rrcdir /usr/lib/rpm/generic_os + + %description + Red Hat specific rpm configuration files. +@@ -952,7 +952,7 @@ + + * Mon Jul 7 2003 Jens Petersen - 8.0.25-1 + - update config.{guess,sub} to 2003-06-17 +-- define VENDOR to be redhat only when /etc/redhat-release present ++- define VENDOR to be redhat only when /etc/generic_os-release present + [suggested by jbj] + - put VENDOR in vendor field in our config.guess file for + ia64, ppc, ppc64, s390, s390x, x86_64 and elf32-i386 Linux diff --git a/macros.fpc-srpm b/macros.fpc-srpm new file mode 100644 index 0000000..d755825 --- /dev/null +++ b/macros.fpc-srpm @@ -0,0 +1,3 @@ +%fpc_arches %{ix86} %{arm} x86_64 ppc64 +# fpc_arches lists the architectures where the Free Pascal Compiler is +# available in Fedora. diff --git a/macros.ghc-srpm b/macros.ghc-srpm new file mode 100644 index 0000000..766ab9e --- /dev/null +++ b/macros.ghc-srpm @@ -0,0 +1,7 @@ +# Macros needed for building srpms of Haskell packages +# from ghc-7.8 ghci is supported on all arch's +# former archs: armv5tel ppc sparcv9 +%ghc_arches_with_ghci %{ix86} x86_64 armv7hl ppc64 ppc64le aarch64 s390 s390x %{mips} +# ghc_arches is not used in current packages but still here for back compat +# former archs: alpha ppc sparcv9 armv5tel +%ghc_arches %{ix86} x86_64 armv7hl ppc64 ppc64le aarch64 s390 s390x diff --git a/macros.gnat-srpm b/macros.gnat-srpm new file mode 100644 index 0000000..02df504 --- /dev/null +++ b/macros.gnat-srpm @@ -0,0 +1,14 @@ +%GNAT_arches %{GPRbuild_arches} ia64 ppc alpha %{ix86} +# GNAT_arches lists the architectures where GNAT is available in Fedora. Ada +# packages won't build on other architectures until GNAT is bootstrapped for +# them. +# (Although not all of these architectures have active maintainer teams in +# Fedora, it seems appropriate to keep this list in agreement with the one in +# gcc.spec.) +%GPRbuild_arches x86_64 ppc64 ppc64p7 ppc64le s390x %{arm} aarch64 +# GPRbuild_arches lists the architectures where GPRbuild is available in Fedora. +# If an architecture is included in GNAT_arches but not in GPRbuild_arches, then +# either GPRbuild hasn't been bootstrapped for that architecture, or there might +# be some architecture-specific problem. +# x86 is excluded from GPRbuild_arches because of +# https://bugzilla.redhat.com/show_bug.cgi?id=1444614 diff --git a/macros.go-srpm b/macros.go-srpm new file mode 100644 index 0000000..c1e6e75 --- /dev/null +++ b/macros.go-srpm @@ -0,0 +1,170 @@ +# Copyright (c) 2015-2018 Jakub Cajka , +# Jan Chaloupka , +# Nicolas Mailhot +# This file is distributed under the terms of GNU GPL license version 3, or +# any later version. + +# This file contains macros for building projects in golang for packages +# with golang compiler or gcc-go compiler based on an architecture. +# Golang is primarly for primary architectures, gcc-go for secondary. +# +# This file provides only macros and must not use any other package except +# redhat-rpm-macros. + +# Define arches for PA and SA +%golang_arches %{ix86} x86_64 %{arm} aarch64 ppc64le s390x +%gccgo_arches %{mips} +%go_arches %{golang_arches} %{gccgo_arches} + +# Where to set GOPATH for builds +%gopath %{_datadir}/gocode + +# Define go_compilers macro to signal go-compiler package is available +%go_compiler 1 + +# Sanitize a Go import path that can then serve as rpm package name +# Mandatory parameter: a Go import path +%gorpmname() %{lua: +local goname = rpm.expand("%1") +-- lowercase and end with '/' +goname = string.lower(goname .. "/") +-- remove eventual protocol prefix +goname = string.gsub(goname, "^http(s?)://", "") +-- remove eventual .git suffix +goname = string.gsub(goname, "%.git/*", "") +-- remove eventual git. prefix +goname = string.gsub(goname, "^git%.", "") +-- add golang prefix +goname = "golang-" .. goname +-- remove FQDN root (.com, .org, etc) +goname = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/") +-- special-case x.y.z number-strings as that’s an exception in our naming +-- guidelines +repeat + goname, i = string.gsub(goname, "(%d)%.(%d)", "%1:%2") +until i == 0 +-- replace various separators rpm does not like with - +goname = string.gsub(goname, "[%._/%-]+", "-") +-- because of the Azure sdk +goname = string.gsub(goname, "%-for%-go%-", "-") +-- Tokenize along - separators and remove duplicates to avoid +-- golang-foo-foo-bar-foo names +local result = "" +local tokens = {} +tokens["go"] = true +for token in string.gmatch(goname, "[^%-]+") do + if not tokens[token] then + result = result .. "-" .. token + tokens[token] = true + end +end +-- reassemble the string, restore x.y.z runs, convert the vx.y.z +-- Go convention to x.y.z as prefered in rpm naming +result = string.gsub(result, "^-", "") +result = string.gsub(result, ":", ".") +-- some projects have a name that end up in a number, and *also* add release +-- numbers on top of it, keep a - prefix before version strings +result = string.gsub(result, "%-v([%.%d])", "-%1") +print(result) +} + +# Map Go information to rpm metadata. This macro will compute default spec +# variable values. +# +# The following spec variable MUST be set before calling the macro: +# +# goipath the packaged Go project import path +# +# The following spec variables SHOULD be set before calling the macro: +# +# forgeurl the project url on the forge, strongly recommended, if it can not +# be deduced from goipath; alternatively, use -u +# Version if applicable, set it with Version: +# tag if applicable +# commit if applicable +# +# The macro will attempt to compute and set the following variables if they are +# not already set by the packager: +# +# goname an rpm-compatible package name derived from goipath +# gosource an URL that can be used as SourceX: value +# gourl an URL that can be used as URL: value +# +# It will delegate processing to the forgemeta macro for: +# +# forgesource an URL that can be used as SourceX: value +# forgesetupargs the correct arguments to pass to %setup for this source +# used by %forgesetup and %forgeautosetup +# archivename the source archive filename, without extentions +# archiveext the source archive filename extensions, without leading dot +# archiveurl the url that can be used to download the source archive, +# without renaming +# scm the scm type, when packaging code snapshots: commits or tags +# +# If the macro is unable to parse your forgeurl value set at least archivename +# and archiveurl before calling it. +# +# Most of the computed variables are both overridable and optional. However, +# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag). +# The previous %{dist} value will be lost. Don’t call the macro if you don’t +# wish %{dist} to be changed. +# +# Optional parameters: +# -u Ignore forgeurl even if it exists and use instead. Note +# that the macro will still end up setting as the forgeurl +# spec variable if it manages to parse it. +# -s Silently ignore problems in forgeurl, use it if it can be parsed, +# ignore it otherwise. +# -p Restore problem handling, override -s. +# -v Be verbose and print every spec variable the macro sets. +# -i Print some info about the state of spec variables the macro may use or +# set at the end of the processing. +%gometa(u:spvi) %{expand:%{lua: +local forgeurl = rpm.expand("%{?-u*}") +if (forgeurl == "") then + forgeurl = rpm.expand("%{?forgeurl}") +end +-- Be explicit about the spec variables we’re setting +local function explicitset(rpmvariable,value) + rpm.define(rpmvariable .. " " .. value) + if (rpm.expand("%{?-v}") ~= "") then + rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}") + end +end +-- Never ever stomp on a spec variable the packager already set +local function safeset(rpmvariable,value) + if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then + explicitset(rpmvariable,value) + end +end +-- All the Go packaging automation relies on goipath being set +local goipath = rpm.expand("%{?goipath}") +if (goipath == "") then + rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}") +end +-- Compute and set spec variables +if (forgeurl ~= "") then + rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n") + safeset("gourl", forgeurl) +else + safeset("gourl", "https://" .. goipath) + rpm.expand("%forgemeta %{?-v} %{?-i} -s %{?-p} -u %{gourl}\\n") +end +if (rpm.expand("%{?forgesource}") ~= "") then + safeset("gosource", "%{forgesource}") +else + safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}") +end +safeset("goname", "%gorpmname %{goipath}") +rpm.define("gosetup %forgesetup") +-- Final spec variable summary if the macro was called with -i +if (rpm.expand("%{?-i}") ~= "") then + rpm.expand("%{echo:Go-specific packaging variables}") + rpm.expand("%{echo: goipath: %{?goipath}}") + rpm.expand("%{echo: goname: %{?goname}}") + rpm.expand("%{echo: gourl: %{?gourl}}") + rpm.expand("%{echo: gosource: %{?gosource}}") +end} +BuildRequires: compiler(go-compiler) +ExclusiveArch: %{go_arches} +} diff --git a/macros.nim-srpm b/macros.nim-srpm new file mode 100644 index 0000000..8d5b12b --- /dev/null +++ b/macros.nim-srpm @@ -0,0 +1 @@ +%nim_arches %{ix86} x86_64 %{arm} aarch64 %{power64} diff --git a/macros.ocaml-srpm b/macros.ocaml-srpm new file mode 100644 index 0000000..7a5d744 --- /dev/null +++ b/macros.ocaml-srpm @@ -0,0 +1,11 @@ +# Note that OCaml is compiled on all architectures. However +# on some (rare) architectures, only bytecode compilation is +# available. Use these macros to find out if native code +# compilation is available on a particular architecture. +# Architectures that support the OCaml native code compiler. +%ocaml_native_compiler aarch64 %{arm} %{ix86} ppc ppc64 ppc64le riscv64 s390x sparc sparcv9 x86_64 +# Architectures that support native dynamic linking of OCaml code. +%ocaml_natdynlink aarch64 %{arm} %{ix86} ppc ppc64 ppc64le riscv64 s390x sparc sparcv9 x86_64 +# Architectures that support profiling of native code (ocamlopt -p). +%ocaml_native_profiling %{arm} %{ix86} ppc ppc64 ppc64le sparc sparcv9 x86_64 + diff --git a/macros.openEuler b/macros.openEuler new file mode 100644 index 0000000..03c682d --- /dev/null +++ b/macros.openEuler @@ -0,0 +1,31 @@ +#custom macros + +%disable_rpath \ +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \ +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +%delete_la_and_a \ +find $RPM_BUILD_ROOT -type f -name "*.la" -delete \ +find $RPM_BUILD_ROOT -type f -name "*.a" -delete + +%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete + +%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {} + +%package_help \ +%package help \ +Summary: Documents for %{name} \ +Buildarch: noarch \ +Requires: man info \ +\ +%description help \ +Man pages and other related documents for %{name}. + +#%sbin_installinfo_rm bc.info +#%sbin_installinfo_rm bc.info.gz + +%install_info() \ +/sbin/install-info %1 %{_infodir}/dir || : + +%install_info_rm() \ +/sbin/install-info --remove %1 %{_infodir}/dir || : diff --git a/macros.openblas-srpm b/macros.openblas-srpm new file mode 100644 index 0000000..c4f9fdc --- /dev/null +++ b/macros.openblas-srpm @@ -0,0 +1,2 @@ +# Architectures that OpenBLAS supports +%openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64 s390x diff --git a/macros.perl-srpm b/macros.perl-srpm new file mode 100644 index 0000000..a284fcf --- /dev/null +++ b/macros.perl-srpm @@ -0,0 +1,15 @@ +# Copyright (c) 2012 Petr Pisar . +# This file is distributed under the terms of GNU GPL license version 3, or +# any later version. +# This file contains macros that can be used for building source RPM package +# from git source repository. This file must present in minimal build root to +# take effect. +# This file must not use Perl or any non-minimal-build-root package. The +# purpose is to enable bootstrapping perl. + +# Perl bootstrap For rebuild of Perl and all related packages is needed +# switch, which enable only vital build requires. This could help cyclic +# dependencies, for example: perl-Test-Minimum-Version <-> +# perl-Perl-Minimum-Version Defined for bootstraping, undefined otherwise. +# Usage: %%if !%%{defined perl_bootstrap} ... %%endif +#%%perl_bootstrap 1 diff --git a/macros.pybytecompile b/macros.pybytecompile new file mode 100644 index 0000000..a41b3a2 --- /dev/null +++ b/macros.pybytecompile @@ -0,0 +1,19 @@ +# Note that the path could itself be a python file, or a directory + +# Python's compile_all module only works on directories, and requires a max +# recursion depth + +# Usage: +# %py_byte_compile +# Example: +# %py_byte_compile %{__python3} %{buildroot}%{_datadir}/spam/plugins/ + +# This will terminate build on SyntaxErrors, if you want to avoid that, +# use it in a subshell like this: +# (%{py_byte_compile }) || : + +%py_byte_compile()\ +python_binary="%1"\ +bytecode_compilation_path="%2"\ +find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -m py_compile\ +find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -m py_compile diff --git a/macros.python b/macros.python new file mode 100644 index 0000000..70eb148 --- /dev/null +++ b/macros.python @@ -0,0 +1,81 @@ +%py_setup setup.py +%py_shbang_opts -s + +# Use the slashes after expand so that the command starts on the same line as +# the macro +%py_build() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python} %{py_setup} %{?py_setup_args} build --executable="%{__python} %{py_shbang_opts}" %{?*} + sleep 1 +} + +%py_build_egg() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python} %{py_setup} %{?py_setup_args} bdist_egg %{?*} + sleep 1 +} + +%py_build_wheel() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} + sleep 1 +} + +%py_install() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} +} + +%py_install_egg() %{expand:\\\ + mkdir -p %{buildroot}%{python_sitelib} + easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python_version}.egg %{?*} +} + +%py_install_wheel() %{expand:\\\ + pip install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps +} + +%python_provide() %{lua: + function string.starts(String,Start) + return string.sub(String,1,string.len(Start))==Start + end + package = rpm.expand("%{?1}") + vr = rpm.expand("%{?epoch:%{epoch}:}%{version}-%{release}") + if (string.starts(package, "python2-")) then + if (rpm.expand("%{?buildarch}") ~= "noarch") then + str = "Provides: python-" .. string.sub(package,9,string.len(package)) .. "%{?_isa} = " .. vr + print(rpm.expand(str)) + end + print("\\nProvides: python-") + print(string.sub(package,9,string.len(package))) + print(" = ") + print(vr) + --Obsoleting the previous default python package + print("\\nObsoletes: python-") + print(string.sub(package,9,string.len(package))) + print(" < ") + print(vr) + elseif (string.starts(package, "python" .. rpm.expand("%{python3_pkgversion}") .. "-")) then + --No unversioned provides as python3 is not default + elseif (rpm.expand("%{?python3_other_pkgversion}") ~= "" and string.starts(package, "python" .. rpm.expand("%{python3_other_pkgversion}") .. "-")) then + --No unversioned provides as python3_other is not default + elseif (string.starts(package, "pypy-")) then + --No unversioned provides as pypy is not default + elseif (string.starts(package, "pypy3-")) then + --No unversioned provides as pypy is not default + elseif (string.starts(package, "python-")) then + --Providing the current default python + print("Provides: python2-") + print(string.sub(package,8,string.len(package))) + print(" = ") + print(vr) + else + print("%python_provide: ERROR: ") + print(package) + print(" not recognized.") + end +} + +%python_enable_dependency_generator() \ +%global __pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires \ +%{nil} diff --git a/macros.python-srpm b/macros.python-srpm new file mode 100644 index 0000000..c4bdd1c --- /dev/null +++ b/macros.python-srpm @@ -0,0 +1,107 @@ +# python3_pkgversion specifies the version of Python 3 in the distro. It can be +# a specific version (e.g. 34 in Fedora EPEL7) +%python3_pkgversion 3 + +# Set to /bin/true to avoid %ifdefs and %{? in specfiles +%__python3_other /bin/true +%py3_other_build /bin/true +%py3_other_install /bin/true + + + +# === Macros for Build/Requires tags using Python dist tags === +# - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages +# - These macros need to be in macros.python-srpm, because BuildRequires tags +# get rendered as runtime requires into the metadata of SRPMs. + +# Converts Python dist name to a canonical format +%py_dist_name() %{lua:\ + name = rpm.expand("%{?1:%{1}}");\ + canonical = string.gsub(string.lower(name), "[^%w%.]+", "-");\ + print(canonical);\ +} + +# Creates Python 2 dist tag(s) after converting names to canonical format +# Needs to first put all arguments into a list, because invoking a different +# macro (%py_dist_name) overwrites them +%py2_dist() %{lua:\ + args = {}\ + arg = 1\ + while (true) do\ + name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ + if (name == nil or name == '') then\ + break\ + end\ + args[arg] = name\ + arg = arg + 1\ + end\ + for arg, name in ipairs(args) do\ + canonical = rpm.expand("%py_dist_name " .. name);\ + print("python2dist(" .. canonical .. ") ");\ + end\ +} + +# Creates Python 3 dist tag(s) after converting names to canonical format +# Needs to first put all arguments into a list, because invoking a different +# macro (%py_dist_name) overwrites them +%py3_dist() %{lua:\ + args = {}\ + arg = 1\ + while (true) do\ + name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ + if (name == nil or name == '') then\ + break\ + end\ + args[arg] = name\ + arg = arg + 1\ + end\ + for arg, name in ipairs(args) do\ + canonical = rpm.expand("%py_dist_name " .. name);\ + print("python3dist(" .. canonical .. ") ");\ + end\ +} + +# Macro to replace overly complicated references to PyPI source files. +# Expands to the pythonhosted URL for a package +# Accepts zero to three arguments: +# 1: The PyPI project name, defaulting to %srcname if it is defined, then +# %pypi_name if it is defined, then just %name. +# 2: The PYPI version, defaulting to %version. +# 3: The file extension, defaulting to "tar.gz". (A period will be added +# automatically.) +# Requires %__pypi_url and %__pypi_default_extension to be defined. +%__pypi_url https://files.pythonhosted.org/packages/source/ +%__pypi_default_extension tar.gz + +%pypi_source() %{lua: + local src = rpm.expand('%1') + local ver = rpm.expand('%2') + local ext = rpm.expand('%3') + local url = rpm.expand('%__pypi_url') +\ + -- If no first argument, try %srcname, then %pypi_name, then %name + -- Note that rpm leaves macros unchanged if they are not defined. + if src == '%1' then + src = rpm.expand('%srcname') + end + if src == '%srcname' then + src = rpm.expand('%pypi_name') + end + if src == '%pypi_name' then + src = rpm.expand('%name') + end +\ + -- If no second argument, use %version + if ver == '%2' then + ver = rpm.expand('%version') + end +\ + -- If no third argument, use the preset default extension + if ext == '%3' then + ext = rpm.expand('%__pypi_default_extension') + end +\ + local first = string.sub(src, 1, 1) +\ + print(url .. first .. '/' .. src .. '/' .. src .. '-' .. ver .. '.' .. ext) +} diff --git a/macros.python2 b/macros.python2 new file mode 100644 index 0000000..d6c74c2 --- /dev/null +++ b/macros.python2 @@ -0,0 +1,41 @@ +%__python2 /usr/bin/python2 +%python2_sitelib %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())") +%python2_sitearch %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") +%python2_version %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))") +%python2_version_nodots %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))") + +%py2_shbang_opts -s + +# Use the slashes after expand so that the command starts on the same line as +# the macro +%py2_build() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python2} %{py_setup} %{?py_setup_args} build --executable="%{__python2} %{py2_shbang_opts}" %{?*} + sleep 1 +} + +%py2_build_egg() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python2} %{py_setup} %{?py_setup_args} bdist_egg %{?*} + sleep 1 +} + +%py2_build_wheel() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python2} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} + sleep 1 +} + +%py2_install() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python2} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} +} + +%py2_install_egg() %{expand:\\\ + mkdir -p %{buildroot}%{python2_sitelib} + easy_install-%{python2_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python2_version}.egg %{?*} +} + +%py2_install_wheel() %{expand:\\\ + pip%{python2_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps +} diff --git a/macros.python3 b/macros.python3 new file mode 100644 index 0000000..25c6f62 --- /dev/null +++ b/macros.python3 @@ -0,0 +1,43 @@ +%__python3 /usr/bin/python3 +%python3_sitelib %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib())") +%python3_sitearch %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") +%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3])") +%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3].replace('.',''))") +%python3_platform %(%{__python3} -Ic "import sysconfig; print(sysconfig.get_platform())") +%py3dir %{_builddir}/python3-%{name}-%{version}-%{release} + +%py3_shbang_opts -s + +# Use the slashes after expand so that the command starts on the same line as +# the macro +%py3_build() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python3} %{py_setup} %{?py_setup_args} build --executable="%{__python3} %{py3_shbang_opts}" %{?*} + sleep 1 +} + +%py3_build_egg() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python3} %{py_setup} %{?py_setup_args} bdist_egg %{?*} + sleep 1 +} + +%py3_build_wheel() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python3} %{py_setup} %{?py_setup_args} bdist_wheel %{?*} + sleep 1 +} + +%py3_install() %{expand:\\\ + CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\ + %{__python3} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*} +} + +%py3_install_egg() %{expand:\\\ + mkdir -p %{buildroot}%{python3_sitelib} + easy_install-%{python3_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*} +} + +%py3_install_wheel() %{expand:\\\ + pip%{python3_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps +} diff --git a/macros.rust-srpm b/macros.rust-srpm new file mode 100644 index 0000000..f2bae9d --- /dev/null +++ b/macros.rust-srpm @@ -0,0 +1 @@ +%rust_arches x86_64 i686 armv7hl aarch64 ppc64 ppc64le s390x diff --git a/redhat-rpm-config-118.tar.gz b/redhat-rpm-config-118.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cfce2053eb8950270ea4cc25f3291b7f684cbd37 GIT binary patch literal 61142 zcmV(!K;^$5iwFQJze`;J1MFM*d*Viu&adXL=rAN07IF9-^}SPWQ=HaRaaNn@m5I*MSsL2D-6b#?Rx`fXjLk& zOW*vXpE5q%o15wzpXG0LU0L5;TiagW+}^5uQ?9IUlsCR%oBymBkAGqr@sP1^Lf?;` zoA3e)EWPwRLbb^REUL?XG6!?olnj47FWn;e|gJTgAq+-_@I}x*N zR!*e`jw@V8Mzu>R`YbI==NISMPCEbQ%l$>EL!a+U!}Mh;bEGyUs} zKr)Ln%VX(G!Ya)!*!SPFPKx0p?2*r=x7ZzvLY6(R_FV2=RWGuv)A2C)INzy*XvJBU z#eNZ?Cz9n5IdqX z;Ul)EqUvH8EndM4q&B{D?8?Zd%@MNT6NK=O0ZV@;J6;-7z9dI*{?o;M`hg)nxkxG{ zZs0=Y)Ytw0@%V2>x##(a4wh|K{!WacAiuS-@nrt5tXG!f|JLUAzvKVE;*-bOcKsl7 zd{0(W|G~cd@~t)Sd@GhBIsPifoWPBTFf=F3SHG(&lbepL=I)s_&_8R2=Kcky_wUdD zg3sgruP=+kSjfK*|DN~%%GxH~TlD`;T>abs{}rEC-!cUN0snygqDYK^(juR!qX$f| zx#xS1&0T;PiMtA$6ji#~^Ml*a8IB@W+1XjM))2PYekcTM`-5o0fkyWI*z0qOEd|!} z>|!bvIY5IE9|yH8&9^FLtGt$_RD3#efG{cf(l@b@hRrU!^AZ?>K+VfYo8AA-j!pc%vtnU1Z5ivi65si%}h1qao(0V;+e zAJfif8|)JZBgP{?AVdO&*z&}2U0^|m_&kV#=r9vpJ~mI^AD^AF`q5|hv3_z=KRW%q zi@DJVn4F1gp*aDNx(*m)Pa*fBTZj(g!^X+pdr$z;95hcqLw>g3JUwc(+id^%gw$u%0GS(I%(JXj8q1%Bv9VoCbBJQ|S@A)&1Q$jMg&qn;3iVRyg z*N_Y52Alf&nSlp)eV{hlA?D6hxJw|_^8t}1R{^3w2)P0?*4(pp|gKU@>Qu(bS5`taupFX881g)hQylLKz;`B@nM7 zZ5%4&N~)x!{33f)1sTmMC^r~$7`kV>abJ0WGIwLLlB$NOENT z=k!4wBbGQ=!M$aZ5G4(47Q1g@g|{d(!E6_sca-X=q*7(n8WIT2dW*>omymMeSD#JD zpvsCwBGuUC!$w+6V#II=tR4`)^q({ zH*g`$G`%bdgFO$59aLO)nbPd{t?JdFL`S7FjyvFosf~ zyVP+Y%zT7Z0Zho4H7cOG9SJu`3N~G-Xcf}9sVu4Lp!pHar%-RHSU;WLrDKLI9J(o0?sZw`$*Dy&;1a#LA=*-QBRLZt#(UDql z^ng-%TzZ*|<)RSD z?cV1sB7C@xO|tIko{U#pKqGZ*G8(Sbuw>u*=jgu)_`>~SVpUK?Z;AIT$jAqb$3}f z#?t!k{EZwn#gw6RG6}ylg$lFAUt(&!wUXARw+`zALuAV@r-!X~&68RQ1os$XUq~sn z%hh4pd^W zoeG@(?)Xs8h5)l=G8xOs7y|MO3_;j& zD3ou^EJgYE+=6ov!KS89WV{AuKXa;?ol!$si*@Zl8y25U1MdezO*S6UZ z|LoU0%--42X=_Dw!B;ajJ)f}r2NKyiHZu$u$@jED-H}#NcV0Sd%uY|!0!ZG<>Yh5NSs4pSXU&#Jeu zIvnvooS!`3E{1V5#BfpcV?tFMR{6EHwvnSmwW=Lyz)D3PMbyMl%RPMpt@`QvT892s z6B1>I3OUlS%35bf^}|N@u)g=cdDNhwp!Q&mmwf*2jxElNy(`b3c!vI@anPu@=jg+y z=#!a?^zF~>)5hV9TrQE%=*`SU@(+!ZHp+n+{qaz?MCU$mwE2@Y4V-}$BS?7 zfRpK8DW6LL!88}@376Yfs%vCy&_MLxVjNW9*jH@mIz7N%5Pl@2NG$;1r5+L!vJS$; zh=+ZG(klnew|g}p^;Bv_0OYXDvgM^#klWY~KUj_9{W%W?>!dvXVSsoP(?gNbk2E~Z zlB?bB*&Z#>?dHr%u}y+umU{Lyo7ZojJO zX6`fqIftPDRQi>8Wlhb8f)5@$M7_6S{Er-s&`=c^o+@twNzTwyRTM&*rE5Mqz8(qz zRsK-Xp{ju!=tRQ9ipvLV%=f;!bmG(B#y)2Q#$vQhC{$TJ5)pj3ny+f3&_CI#*OUDm zivScwB$JlU>O|EnJP2IK4MdUyoJ3{DDD3$m(W~;pRH{)NAPH1i-pX5^h`>>}gM4A` zH}~TxUm&`C*|&h-%6&QrmD_x+C+*pR)yQ!ky}gaZvr)=NpTD`4EO2s&>p2zD+^}U zt)m#7MWtZT4enS+=gE?!aGo)2pO{0>LSHaX<$5D??vldBBj&H<(iW|VcsLe4GEB9V zn)+!OCX^17N%@624`#^Gx^QPxOS*D zGrdp5$CP9PbDDf~v4tJ0Xt+YKLom~@f`7Di64LRX1`yXH4U{Z#TJbf`|I+lBPqF3#dXuCW$80`9P~Vls{OdqRgn4USfHC*zpf zswhoa98q*~5WT4KMLpWsJKo<%OrOQq9QBgaYd^^_h2mUs%Iriybsp3A^y@?F;R(gz z=BGDi-c&)fU6oQ7hqc}a#LgMZykgCb#3PD z4F*V`$P%#>p{qL-o;KuB49GwTT+Ng43CdKVg9M74^xmI{YXiwpnfVGA&}^bLZ@DDh zv$@t@fk~g-##jNY2Oy80AyJoutE?G2rnA6@g~V%QbnEI~FM&pjdalcduz(|!{`L0N z2^gi+vP7C)KKkVDqV^M{G9Tee=T`Tkn8$%()Q+hlFQR6s6xNncL%*1{*E;K-er`3a z!}`(Letqxs?4)sG{n9u&Y8+U{t;R|Hw0ZQi0ZCPz%+2GR5H*U|CnUC@KBbKjy$BYn zNTi4!UuKyC>_ei(%9m;(5t%LI)8esNVCZ@PN z1)L>4y$EexnkAo&#a2(vU)KM!5Qxy;3?6=63N!!ZV)!6H9Qc|X2To6f(e0lR1xXFl zJ1-Z-)oZ*!8gX^y&qR5Q^^7aceF4k1?>haL@{~0Bt4v{UL10%8op6b7fN&B9_LSY& z311-LLq1Q+_cDfU!mT$i+%QdDWWe2E#H+{c{fc3sn@9_5s_>NGD3&SmELHb25GtKN z;NaFZY==*-SoVv4WR+RJ&nA&3zgf)xB_10y9!a#S+ct_oRTcPbkLrov3v-Y-kRb&j z1$KG@B{;w4j;o@y?-4z=T&gHca~j558>WDl$@`7T1J=sU&L*;TbM_K~4tbO)P^O`* zPYA=<^Rzg9ew$Q4)W=2PA5dp~q=KtTRJVE{^yA@3_0OqtsHjXcApwEHbPHcsfS691 z1k|jIP*^``y{~tZ2s*F7WY@R# zZ!XL)ZW)UDb0k}j)3o-UBnoW4Ott+os_l6ywbI(N`&n3JORuu_{C>6;*C@W;duynk z77bLdm#FFohU)E~q1yXosNVevs-3zaD&g18vwPc_r&QWle^!4By4Wu67>eiC*xp$v z!s@K$6}=gDqz0gV*504J>!jv=creevm*t74Pfr{;!tJy9mpKg0r)3&?L1jt?04_p@ z9#^8C>TznSTnkr`R*GwcvLs96Dy_>A=(zP?C+*X-4j(ckKDW@1cz1>&eaSAD1NO ziJ&G-<5TmLsi$H+F`zyfr8AQU__gmKatCqf_^|}Q_ben7Uq5Q0SX|WEPd%>7p#IWN zXtS(rvf}jNTaq8^bmAT4*^iFb_b0M@bec5zP)|@5fq+fv6(vGevL^lS9nK9yK|WHi z;c;CJs27?Xo3)PH%}*#8dOB;oQMg;T1;K~9UPH0iR##`$r$-2?<)+_lK{C)M1lS!R zV5_c}X++bTTmvknBv!X zmedGPynInR7-*loE@Qh3!wJh# z5b#Q|VvSH#qtwH9d@~M$MZV@?8tLsOZi9 zoCJK(EAqkr5ci~AZ5+#f#=l~s_*yW}+J#V*I2^IqR;~dZ1Oz{f#UKqZLCa)D!Xh^R z{Z&;j(>>E830wEwoDy=F*7u(Va6`2?<*zfoG)C_s0X*PNxh|KTO%H*Wg;)oCf2- zIX#!ep?KzwV&&1cSFhpm;n3IVf-Qtm(A&n*$6A)6;_aLsGMxm{jcl#V-%qu%qFWNv zZPS&D`Fy%e;aaPrl7?%-!@RH(MGjTK3wk=BwTLu=q_ORGKeTJrZWrS<$5zQ2c=s+j zLtwQ$(_I2B+5*0egL@VmN@gy>R>*bm0gtJ4LcyLCdn!^^VF_?q3Y$ndkazPo$WKIy#4WESYf1pw*AHOz`10pp8r zVscz&^%_)X-*9uH4T?=iQRfNg%PLn%P3+>D0)YFif?)NUInR0Q!VOnk5PPjJ&Lh5RutdZfCCQFC4 znTddeq?%7##FbTajH15DL_02N^K$oB(XG7$lAjye-#S&3E=G7u#MLc-IKDFi`P=#c zBI*?5arsR{D&}?HWY!5+)qE*m$^G#mYiRp)G!7RwJXh$NT3xY|X8;M967&4M398_^ z2?rHv)R_N`G4gchV~i$CG|cC50mVBv^mB`MUJFvhkGF&waR9kZ_RLA(`*e zt5-4Cmr68nV$hTk!}e|n$zV|{rJVrhhJ=cBdkPpEY)uTDhIf9ls~I}@=)1FJx|^AL zLT@r-h* z?mU?G9&P9xG~-NgsZBCyvlBnu42WkI-jF9+K#mjX#yI%z*zq9XY;fk3U@*As!L2Q% z7z!(c%>o+0iIP&7@b17RQValG_eSWLA-ysNI6k*RYy4)o0( zliSk39WsAy-k%pPT(l4`7s1tHY?Gn*#IT6zdkz5>TvD)}oup|0N2u91&H(19PA@7{ zC`N@pLJuw^PK=r;QfY}Y6Dj((1gSfx4@ZJVN))N2M45>ceOsm%_3qONm{CUtk%e6b z)f>2POhCv?^ti2Nck z;$)n^``xk%Hl0N*@5DNpL?&ahx7Y;`-_aM%@kZ7<{>uq&d#_PP7g#p@`{Ckp!}|Jy zJ3&TOSv9P%VF|EbHLza^jJZlGUYXYV-8h_du?NUMT^3{4?C)&EDx-z`W1HL+&o=PL z=gBkHGc-Tw52lj&SBM&hPooTD>!NhI!Ee{=#f@Jhw@owpv*YSQ^bbMxJJEyqRjq8G zx0>)dRlY2u3yWq6vixrznX{fN;n$}ZIrD}7Cd4{vZi6ZL zX`LKqY;-4McC{;xhj}%05%$fMMhcLNN>&tHpw#EFSHD_M>Mo#k$NYtM0P{M4+eV{} z``1D9ysK}tVp|*XdO0c>I8^B zHE6y$6x?Z!D|4V?r$h71^NtQ1{oARq{{L+4y#t1=fV|E^UW27Og4-+JDm*kQqf5BB z@U)MQcK17-qvJOQEge^2yo^k?OPdW{m)c(JA_HZCyysCoQu|D?Oq zI&2<)?6wY1_K)8-clV!W2nX%PHo1eF8AH$ASmD1#urs8lC@P|k?BC`PX>yHVZB_BA z*1ql;7M0L-Fdzaa)!1gemQE$Exjm@Y?Z)1C;KOZ&&v6_*Q2^WH*>Odi34Qj>G!Y0H z%^fid+`+`L07_g4glhs~U3Pk%?=iH96z^~D{UjK}GNBJ~#HaB2%)s?TK$$22OtnHg zCH>JrBuR20Y7|Z6taWxkMDkrkjI`yt(AkR1KeTg(w_eTz@n-MWLTHd!Xo4aAEYXzBkc>dgi}MzTVy6JBLA9Ay@H$}&BzU9VvibORSmXU@d92l{9*YDsk7ye9Br%)%iOpadK>l zn+LL8CYvU(P5RF3aabvDGVZx}Sm4rOJc=r^;iP#aONrDhlCCL{IWVCMY*P1bZZSNE ze8s)dI%;gzzTzLK1pcYprSqxl_trP)6SZiaM3}WTe>w@*GpeN!nqPrgx0zuTsB)40 zn@c>1cL}M-B&u9RzS3(30VVQY=JPs4i;%_^cVng)qp1I@&+LCQ@~Un@OH@ei!Zx4B z7uC($)+KZ=&Kq=dYVD~`Rf7=tuyVT?@hH_oR<5JClribA^tV(J@_Y?1OBQ*qL334n z&SU}z_F)!%jYvMpC@8Ca^ymI@Hnjr~hV<{OjoKojay}ziixVq!5Dt8Q{`zE9av%Qg z;Rxk}iJQleFY6l)E-GH2k-4`GrJ)sQDDQ@_z{KB|g<|1HSGZ`>l8al}!SwNu?P1r$ zU;+Ycm6X5V#0K0Dx?p`$@>`6=b_UI<%9sdV)g2g$7|k#Aa^hZ2xxp zEVMLj>yIA<0i^_KNIFCwwG6Doc8)rx9=nG5mV;4`_1RwgyindQ78^VHqkJcy(5?`e z;gtUca275q)k`=hfi^U?QOd`G@BHMMedoi;F9(VA4hCH16kLfB6R@?dI)cA%=T1fI z-?vZC*#cO~43obo?g(RyIg~I`-4oSHY1`6f#rrl}r%a_R{m+!@bT(5VV_J)DxAuMFpT92Phc;N)bS%tPPI3f)tQ4 z(O6S>R+=w(29$_RC11`LS;!WCtW^^qzsQf-Y~mwZ<3C$8Tdh(tUnVAmLj-FAv)Zuu zAZ~E}%JGoBDU*qfeyRXN<2ql6K`Dl5YOF4;o6gbc@$SAZ+)Vm#T2RojQVMr$_`qeI zNL_}r_A6CX!jAR1v%y)TjAz*0&?t;}gjtrTik%`fJ`oU1FDnAF2uhjX03}*aadFl< z07Q})jk!ME8Wzf4)_R6dNszZJo?+JrP>KPR<^#ZFYb@>)jbrQ=CLt2f3?+!_DqWmz zI$>6=QjS*}#i{`p&U7$|SBuqpihht? zu{_-^A}IyO^RtM>sffdfl4W7|2bLYLkWnimm$W(+mtn335sMUNrrZoPbxF!XeZiv( z1rQ#2cm8x{Q?!F4TwZucn~1LFxq^6VJ9AC)mEva6W^SKCfc!4&j`3K*L*>PqJXOA82g%)k?&iNn8x@-M zSzd`DT+k>#|Fzq5rhIE|b>P739_-fY|F+y97?0fXG#oq%Z7Ww&PJ$`RR;QmAunIU1 zUM7{ay>Wmkf;f2KhOor}W73^w&AA6K~;o0SkVY(|FXSpHxAnS z1y2~3ZMgCk)iMK~q3_1;^LIWrM+7mV^McP?BFhZz7>74;G<5}yfph|bRHq7ncKu=z zjc_C8PCl1fCan392tcVcyiZse=GIRtxO{Yc>0#XOg#0!PPWFCofFE_Z-ICqd9giN| z88c2`;(*VZ4DWrZaGYuG8x=p@{WC59Ae% z8ZJrpMgI`*jonIhF)vsrYFDM2-mpr232b!@TRk1y60B*Q&0*}g`O*HEJ7_nw5q})| zxnAHr!j$n0)?zJW>rn>G2RxUzmbsqE{>MSQ7BVR-*TG&*M`oksXj zT15jWwrlsOQyBW1*AHMGJ!t&<-%H|crFc;+UB-gQ*lKvYCF4$%55UFS(?8%cc}lit z>ApPtu~0*S6OLMm(*FUJdIuDk)GUZVFD;YC!xE0r+yO;x_fzg>`WM{)r@5#ccz=q1 z0m^u8jLl-AN2__gPyhSvUkOFM>zMEIcXSvX_B)-uLIwWj;Vhy^?%H;v8TQ;!|C6;p zymnDxUsw>S-_%1Z z1Hc&;$c!H4wCSYAmmApwI_*X6@(qpRQQ1m_OdL|qJ(z8BmXJ?R6fJECnvfxiG;OCS zq)xmZ%wM$Sx}&K#auFC4T<#y#swZiadPxecrm`+b;qnXwY82%~rMh_uTbBs-{$-Ok zuS9X(Sd8A=(ow`XL+)b}q+Zh_%OyDP2NR4Ji@66z+St9*;eRq1zcm4&EMx&?1Fr`c zeKNrMfty2nj0}1j-&oC)S0~mfEbx33!jCAPAHI(T=y4>kPoZ5k z+LEY4S@)}jv4Iiu%d|=Ph7FE;9z^*W&5(iX8^c?Z;6EBVXgA&+o=X2n@iq$^a8A^i z!A?Q_`XX1j#Ke%VvsaR@mtQee?b9N*UKco^fvbWo`5My%6`6!+#vz;JbAg(3k?L;I zfvvN{6WK=TbU$BwE?m+ZDonJ>Tr{TWv){PP;J+y@3I2WcjKfcKgh5m~@J0&~Q?X+x zk&+4>Rbf_Aw&kVd6qaJo$O%W*y>>Nxv9vC-(vMK0Oj;@t7W^*!!V8~K4^8h+(tuqkt^UVk+B-r7iLFKcPU(E+=E^;>gWI#^xW$eO~ z%-W_7(nEk!?@9)|2S?o!n4FmxE<*EADX##NTfSdS%Wi^))gZcaXU^?-v>Ie|PA$d+ z=hQqT&Z-Wp`_g#08cf4VIatx09KsI0B1{Ak;cD1-PQLGml%6QR>HQ*+m%9{~mn~;I#j+y3;f#yz<=1vMtNfAFL0^`2_ zu?9ew6{!wpnU`PT_Yox`WkBIn2)`Y+x~T{-qSBRmbK$XZ>JlR3r*GVmxKqp0XcI^^ls{V^#^Zb8>R?ekhY)%B z`~XSz;TKPpIBPztd+HLH)SFCwwqfvPYfljl}6Tu;M%OK)zO_`UUlZC zEvwI|o7C+2e$Uju{PMbF7yG?b3`@e-ssqE^kz6R3==pf&U|9|aPL_w*BB8QXor{?C zOT*5xfGx(2&h_)~-l2wdH7wq(3XvbbP*BOLx^m)SX0er^dT^E*0?aWm2MO0e{iqB! zo4BLUSy97CD%|^c*g7xxlUbuGHaz%YRr5ubDoljb2?s8G%a9Z|5|FUM3p4AqqBApFP>iAEg6`d3f2qVzo+hKVu~-O z_9!{~4%!$tK}|Xxc{6&LmF0^a-`s?E<1uL{G4NkLr+7yXM}`)@Kf+sp;5^q;NGYW( zd`O<$KdB$e`8+keWjRAitmcnHZ{j`h)N4%Tg+wB~*BGDcVQ(R!jo>u{r^mA>Eze|3 zX}I(B^k^_-iP-1~QEYU+JpBSRS1q7%=YLodHEyJ?m`0JeW{PJOMvd_+0K!sr1oR0lhQLG<2%iPLdd&bh;cQW*F; zKk4Kultr|2a@1b90>a7IH()_!IZOJv5Cf}fz!5$UC@^l(iWc=ux3b3(dcBlI;y|UW zg1JpEljT(?*HWI+!jKCdDlN*AK-lcP#TMIP*dK@ezi#7sNf`oWNEh63hrP(WE;*QQ z_a|HVLHi|BYKw@;!!Zb213h9A_OknUz@+jD=mLESEJ+r*rSKv3IP+JG4iVRk@Xpw5 zP@qz@;rxjk&Q^Z*8lNs2;l@PU8vf|G0cOssO>E|L^fb6h4dY?%3F z;VLKJe#D8u-aiftz3V)7l^k+qrbX#V^7a|`NGy=v*@WS0-pGS!7d;U1f<^P{$>4Hufop!LDMfioKqMfP&La_BWQ z?*IxPX4zBs{&?4Ji|6*TelIJf4_*m`2+Hn9&-V#)o{Y#AuV?rJ=g|tC8y6pPcEWHv zq(^;WtYq@n2Br2y|9X)ul-{#GIPIKZayuFB0zwbv0FAPXk{B4Vj5RZK3}h@!-t-!? zJ&;4{yS<$#6D`Xg3X-tbkKPawX-XZd7mUL&M~W^f(s2uL+Bt)!?Eyl_b$dy_8+%<$;l1Td>IFJ!QCu~cMkyuqz# zeGFL-6WUP*BX&$|!V$1p8fpR0b1@tMmF;3d=#;r9Bt_d~f$^hpp=|hZo z{;R|M|2ojm8|r0=`4g0+U^du&SjMJH zQb|-JRjI2=9E_Q7uJ+x&*>~&v_P*UuvYup~WXB(QsDnxZx;>uhHLaP(QXV2BBO@at zGb1B*-)z6#k&<>vdYhx2I29H@J)^x=uxCfd;+vg4L3?ppP#cSUGFPVrr%#G*gpI`l zDaBOb;l2xJroGxu?WrA*>iDGF-Lc(a?V00+ld$&k^>>ewTI__|$){sxS}nC-y!k=u zOE2I|`=t}u!=CuYIdiDpWBl_3H+myGIB}vHZ7UwtwDG5m>22PYyYeA=$BE7m{SRtm zGzrr_5FZPx_p`PF)OSp(WIn$5UmC^GvAzD2@T}LZshU8mmejB3K;&)xcjmZB!Q8Va z!`jP$@P3j5bDAd<{L|^kMYjZI@Pb(Y26-ZPE} zS;%_wJV9BT0cGu0 zQ0~oua_?49)@MLjzZI1GGoakR9hCi9V1ir0*?hJ&1CZTyZVrjH8&V^V?Q!V$F7j^X z<(vpqiR<1*6$=F z+Jz>HCW9@<&Xc7pF`VU9r${WN7GFHvxufVkUCJ1N$bx7p;Ux?|jT_F{BMt;oL$M$> zIliWI?sO-tUUj>W%Ow5TIoa3Cg0G21cucFKyal#N^}?~Ktk3td>^=im-h!h9ARd#j zX&7i93xgORQuM@p7)zg!h649;Fu+|AAX9TU!ll4Mhi5K}=cUo%ykKG^I2o<>kC#d(o zet(^0xkgM7zL~vF3`B-;%WQ$PxR}+sDS1iQTfcbMh;rF4cw)~UjZ@Wh(cP`r*5mf> z>s?%$D+gssf$cfI6%oHUBg+e?-sWdu9c4}yEBcXu_R0t?Epfi!(1DFj&b$(t($ zqc%iDR^nL^PjYiV$4JD_CepbvoO!OVwH7-DQL>aG z{yDIk>FBb(aWg(FqG1o4jj3u|yIViZspNQ0hF88lpjNoGRznGxZ(mI%A-czEGA#`s z24g^|l|kr-Z(mu>98hbsL7krrb3rZ5u976lbhYg_2eYfVQ8xJP);6CQ(7$hgNN;l; z7yn(SkdnH`mv%3P^HoTVL61xKhZnbaz&CZo@!ifrO1-@Ptm--^xSQHAHx43wItoQ1 z!YfK`>r(u%c}Ah{bRiwSC{rf+$a$&#!^gAnOx=1()1{M(YpkDe2aZBF zaoSN^D&>S;MLR+7`esljr|RbZ^#)3Ikgclr!QbsjCyqB_C@1R$T0SD)4&9;e9g5eU z^CE>wW>4*VPCtPKtDuE0sX~wb+!7BT;^jf9(Z=DavYeCgHpkdiBwH`w{qJW330sB&^}f`QPD6(Qt%nz) zgTvCvxJMo8A+9cU7#-~U!=Zl$GE$B${eOBF1(@;&BN@^WgoSy=2}!uYaRfUGqCJrw z_x2`2t2LI^m`@bS@Mcab>8Uh~a7fvLo^1!Pg^XddTJH6TN915B*AeN#F)TsrZOk8q zf-yDO5JrTJs_EOQPg1BTzWqtp36gb!o7D-Eb;6s~IZf6%y{1lK%B2d|o=VL~>9m0s zK3prAnyFEMMGL>yNPkdIXXQ5{L!qZ@%!!g-$VRJ8R?B4NHON_0D4MKUjp;}wIgP2T zyqePOT0P;Z&eWXB$`UjsWx=M|hgzwnBvHVq2T2uKBnl{{xsb9UOynD@Lde_#3*=^@ zfHyqYeV^Ka3lSW)DG8@TZBem%J?j`Rd=^;{T743*oDhmd%q~lcU#bxQVnd#&EsAFP zZ7dekCFG>0BIWjlRc^FK_|wZ2BC$gyxat;tE&S;p_@Qk-ZO*M=JhGICYBulJ!;4Yq zL>BMRe|sCWPim~Mt?|F~$^P5C*I55kb7ig7T3=aPzt{Xzqq(-ey8b88`0Y(!|CwOW zg!oh7`_a5|*X93CKMP-J4+5AE&uAHpaQ-9DX8b-!P9tvU`1B7=Y!kuI^*F2EA+jiT z372X_%G%%~0m5{l?cf4^eIZ$%z6s?(JCOFR^^xBraadR2A5xo-ganoPaYQThF@usp z=NUEZavi6qqTFK-FOTG~irQnuJ*PQMUD=msTVb2(4cKat;3z-d)c%A(jqUD?HrK$Kp^n6x2KSE_J>GFr1_DO(i&-=nE z^hnJtOo3z%tU+wQ~QKQbE9;r@)mR}SMu4rsf9|qjk>ITr#rO6(9~rT z6Fqe*|68st(WVd#kStfDG!8UWxbt-D<@T<)6fX`C>ftad5`@?B4=Q*G7e|$PE-f ztFz?)>S}XJ{;xLvkpExgBOj2F)C@V|JdHZG8%aA7$5@ftzS`a9|P(C`s`>`XnD+;wr%K~lacIw2bb=gQA z1ub3B)Ks?_*VohqX?o_O1!DMGpmbLeyKeSItYN~(mh_F!3ry5^dQYXSYWvnWs$evIMTn`pUpnVw8vAy+0x)G20!Oz;`Bu1eRlfYn z3fp<~)&;N9wZ}T>5dfS@0H^Kpr4EHORa{e?iU+cIK*d#Ry0|=)P>d+b6~YGobS&$a zzE~_@>K%bqzSO&mL;84&;wM!yNhcU^=5&j`hJL_?vY!MTGJ#>5KP7+gs}w@?v7)o; zT05qw8N5^h>SC$~SE_fqFck~9U**e~xH|DN)7n+~u9o0P_M%lxMHMI_QQkGYJdFOdy1@nQ9>)C)Eab<0efolw>3FuQb{E zNOWE@VXR~!S??(F_eJrj zPI@o?t3~Iqn}iDJLi;N(G3=h7B0-`9m)WFxz2u7e6<6|{m?*M!GjX!j#5AO~RW5rj zMrFFXnku0`3A#?DI;}dF)tJ^uK9nl&M43L9O@u8{lSfVr4VE)&#cDY*G2-dpZ|Zu!Sp_zV7fzU%>*ulb$XPR_H=E*lGuv1SqUR^t zf{@1PaX?G*QQV)B{#q2N5;4{#{Z*DowNOg@DvG4QBk6#B8YJZrRl~aA$#sDwELQF- z5l=}m#jY8@Yt^fNo*w?s`sC~Xpl}UgT0cu0*XaL^=E_P||EKSN=>K2hLs~NiJF9Qg zvQ8`^IilwVSCS)8s9oEm=3R2db4+UCskSR6REjSI;^1M1=-Kt4)$BxG>Vzmj|r8 z%I7_&PSp@SFkgQcuQ`iHh;l|*GHnv6+xmVq~we=lWh7t@i?*N7yC6vo?6Wo9K+nz)|r*Tz9Mn3rwlF`Bxf%y~%+0y3~US2tH!NopA zk{~EmTmwSZWW$LV+K{Ns<_3P01jl@@z~TE8RdICZpLs*y?&Y+(oJSblWB_as78PZ} z?kHJ?L3O1`3L%MYfE;!({Yhvb z$X@eYrQsYB@-^|?_x}F3|BSe6NeZ&r4lWpwO90Q@@Ynz%suF>kMTHXnm(=@Vplhv0hU@W6hzO5PMuB^ha``RxdtzYDQQzh|@DGYYb^*UvP){_EV8nPA`z4#%f1&Vh#$yImNv*+je)!xV$Gg_=CltQ5bW3v0l*;?RjVP7uCCIzVK*#uGnk}UL75l?Su)mMa!Sff6t*m| zJY|svL&X!^nr6~7hh$jbXpx|KYvOfT57huD8~xPvmRVX>sQ@)V%D-noKpy!g^F^&D ziu6DF$CM;eX+kQhhz$BT!fPKW*;FoHa{Vk+9Q?(AIqC4wLze|+64R7AzsvrW_z%g6 z(HQ!voio+7{*=_MvP6J8r0P+U*lM2Cnj8T6%!&)Sz`caMd9A%}}? ze#JYUbcVDpvC8iRc;%B82WbvX$du$%x_9W>z>S7>=UusGy(jv>gd(pP=bNHbvYPBwEOcj* zP~*=8jQ=h?et%bCoFJ%@-)Wl8rRyx(zGRd|Ok(NrRAW>5```ZGJFE7-s=7vBDWy)F z8T%=k#&qRxnzmWqF6urMmlL$9COe_kwCog_-H}bwXOf*!_sLp7O7Va>F?4zZ zr_CxGY?fF{mzR{~OC>PTr#*SMdFo>^_Y6TK9pI-xeYKRWGro46x*LWx3+pTQ@2@mw zQbrgVQjE7IObj84um|dVY$Yn1!s!heRVZ4xnoOwU$@UUtRFj*Sw}PeRuenq;&Cuoo zu&Glsu$R(-nc!w(L9(+F4hf(V5cAP(0L=%d?`)@*Lw*06p^+}Hr~>(sN^9sukS?Dg zNgxyNy&~RYcg&cA{B%>EduWV2DSSy?j@)jTu6_VbQXQa#tQ{6rts(;eD)W;*MPCk;=!k0$K9KHeSJiK#7*S2m0* z<{XZq0>n|+aOLt7M&Sm0nc#DR#$1D?)GA*>C9=%)O^ok!Z6$VyAB;xJf-H1t|8P;4 zud*BSF+HR~I8f}{*_ z5+?k;$^$^)18~yJPe1Bvi&Gp~0cjSN2i`29{m?FrpT*q#J-%DK!ro7TBVpT=P3VV7WmTy=j+gHI=DSb3|q*-001#$Oxw{$QxCcCZ~O z{@R5&7aECKT9KE&#KN3tdFJw*k0Vy-e}%Pq-u|rn1vg|&iyJJYHMxF1UbxK)`j3=n zcYmJ(?e3IB`>cZN^tO^KAGzNmx#r8EjvI9*T{yp_q+cz6zVJrisT)0Iq-P47RJZf&!pwNY6+OlZU|6A7y&zzGj(ovr)ixoIra3guqi97JY zaiWhl%ppS2J@)-DVo7W!wjX{F6H?ymcj;f1=%FU+Mx&c#`p zleB<@&XiwJ-cIKV(p)h*iF{>Wr^BZZ)tK?+fMOzCPdnw|%e=m$ak!whBfdgllOkyW zRE}@)rP%pu4xux*eaf_t4Z#ehVFl>2g#hScWEK-#-CHK@r>6GpnaMg^>rLvt7^)=H z%nkePW)j9g>Jj+XjT$4<4quRtjZIP)Bp1M)xn8sww8SFd17KxszS`bI`Ysm@TPSsMA zett!8eLK^fG)Ao$J6N8yq&+w;Uo4DlZ$cb@!7AX;CC)c~T=3oNLU&0|>g=peO9sS} zJGEU7s9II%Vjf~aC<&?!d$#!w>$0bbFcm8m#Q{A zpXOLRLA3dAhyQl@?{og^@!vQ6_m^LZR&1%Bv0RVQJKa5K^P_!}_Z#p$<-fc9_kjP7 z{|#SB{`dXNegB0>+dqd^NV&hIjqBcjt~FLO@4wa?Ypp-te|?G1f{=rJ1W`(RxgneS zbJ$OnvWuILpQZVK&l%$-l@}SOS@1ni(po+<*ut|8s2;iwoWZlSSFnt47Hs;pmi^s* z@fVWZ2hx4YU$)=CD<)oCu&q2-tce48P{2y~-s|tT_NCP&vhS@@slYvzUdd#4#ObQ3 z19xOl-B-SDoadFiS16RzL?~an=lAbjDSxiKgB)F%#>$r*U*O*Am4x}b7Ki!sKjm4c zb^@nXzoCt5{r|1p%g+DS+Py#K|Cjh^|9>6$*eh(mIM^sH9(s$?;hS=h2iI*C4(nlU ziN*9g@4JV!6Th@rHU8k>Sb`lVl`7syloSZ%6*`~{c!q9&Xe@D%NZabazgrcX;^?Rw zbdM^vyVZ8%{IDqwTkY{;RlL_xO|)W}fO%*Ve;xD`0JxL05Ci~jwcU|DwAj_};w3-S z=~s%F1eJ1FrHyRkyxh2de(1rKT#MbwU8RA&dUmw=>ea?GA-w}l3+-yuXc5_#6oYxg1)M9C+v|3ubT1=gEYnmHi#|a=ZYW&cR zq9MQbac!@dLtA_dR?;)J!Bf!~(P}ES+F^D2Z~bufaOJRd*sKp0XP%G84H(EKx9`SZ zrQblwc{gXH{TXaznA2dzokI(y3=+!I%x_?f&@e_g>4Z^GDXlD5O3kHK^=@>tcRY z#-h!I;oCm4T~EGy#s&glGLXX?f!2M@Ma+=p1^|8)db1kfg{dkYJt|!){4=0rjBUa(uUFzVsaZ6ggL#)BQ! zy;Xq?rPl*-2t2M1i$&3V^ygLzuIC%DP7sJ@5-i6y(PWT5kGs8T>0c;Bfjd&tSShrN z<#3ToE)_9_5XfYsp=J_xBO+kmjsg4OUOa3pioTjtJh!b~BFPA@^Et3pvD7bWeHYF? z_e8OFxAJ(SEh3um^=c80`XCQnZ{k3DFNl3-DT9VbSkzfdFU7nF2`nRY3~ z-f7vYqCBE<3WKfbYP5P76qIn8(FAkGP1~{hGpbLuM}H$)$0`tA!s?3h1rx4{3?{eY z!J{FpwjL^~eiCiU_XBsJIhR0SIEC6Q6idl^F?M^DweZ#9x3#6B_LEqxGP6i1#ZnSz zF_#>AR^$>x*PKQ7xblripPHAqXfQPZ86bIM5Gzgw-c(zN6jWSVS`y!H?(c5zzHEz9 zpD$531|?r8;>ibM*ucBb1uju&o+^N_?IiBT%9pI*MpCMDk7-*4FT@yNPKkUxNU<<; zBO;ecPvEY7i-Ka8s-1;}`qI@r?6>y!U+**Sz*N-|G|Qmjk$gHWuRj;-i=v{b zQk5vMWN2owF_ipDT+SOE5(FRWmB(%P_N+dpFQoK-3h7U^UVI>~5{OR$hlm&t?Jh|d zzGStBMcPB3>Rz}DlU zd@DVvAGV(G4tu)URAVarS2S0z0+?*=uqm74_LLtVJ%F@u$YE2_PO+6(R-R|@=7{tt z9aDy@8++Hu;G;Vn+BLcRWYhZa*grd>j9Pc#K6ZN>&9(c@^|kd|q0U>GCnk)IL0b=? zJ?glF37qbXY4<{_9b+xOW33xs9NoAv(~7KKISfCQs@c@mVN)TYRCEIkj#W!>d+Eu; z4Y_Ej*zAghuTllgq?{ojc;~_9VrrCdh{DbZc;i6OlHwL)lxjeEdQ*Ogx_BgPdvXFV z3x3HJnY-Jsim^Z-5uff|rlD(kIHP;TYkHH{m&8J%7P}m&#^*c_#ls4Yx(Sb1JW5TX zFD%wi8dVi9s00D@yFTjA{mi}p>z#f49Bo{4|F^Q*%%1B z7WxW2htGC9XHMtDjRw()wS+v?xbpC(0u*VB>1cweNgX?6;}-ekb>vSxK8!GSE1-hx zmGn>D@z0YEcG%n{a=OtZaPUm`%)t}iP@K9!G=Vv2uNNRx;(`drSnr1J$d$1<*oGJ6 zC$tm^$ALcx>`_gK?|HXHNfP0q1TiAjF@TRp+l+^*f_1^hBZaX~5)zIfV5l69V89kE zD}QS67|Gs`*e%6KT8R^=)t65#XUq{a^{}(kJx{teOLmc?u{jf?)^9a0QejVUkiTGVnjFf6;8SF0gTm70_)kd!nJd6Ed9os`? z1}LklkX8wAbLAsK@ra-wQIVsb>m2c*-nk>1N_?hBfIcR>nCW0_>I(E_AMIh}4;-|p zTN~NuaZ9|%za!RkYw#xM>6>xa>ju(G2=(FE9pI{8){5YC?!<|w$&w)-@p(;7DxH&@ zrfTAaBEXBB;f1)rK5~cLv1O*X3QfPD*;#v%)b!=Y?$8bX+N?E6Xi(N)SDTHUr%H;g z)mld4S}$jFe@VG;E=;tYG3<^z-nL@5U^Ax2T&Ib<-lu zEXh>_)8HZUNpY0|F+!Z=In`4g|93QO%h&%@V4Kg>#x?hUr2e(C`d?%9kNdwb@`3$_ z*|R#qP*`ULt-t8y-bF}f$1$G$9`NH%yx=14abZH=fjenyLf>Ed)jlSG{E7*dY)RsLwaq5a!q>XtY`}Ym?vnT1a85Ldtg9H64>IJDzJzj_( zXoF(?z@h~ON;aY(F7wj~(j54?r99}y%a;od5@l-E;uw>Op2r>RX(uMf{@9VKh+f;J z|KqX!+#S;U`=$eWpGIwuj@pJ{%Ws z?LYg5YHU8;ezpDPM_~VA`_1mw!GU=3dS7gcz0LhM+t1#<+T0g=Z}<0JA8e5pci_mF z-wShSD-{~(Vm*ge*`e~!{v!>iQr3Aj3!JXQR&q8i$K#8ejoHxGZV#gb2_LBUcgup~ z=wdaV8chxos>gF#YvRM0Cym9ye?H-@qSmIy;04pnvW$~2Me-z!>6r#~;Hk(#+ zrLhj;zdhKj;nJ6|bx7lh+U-}s>zA`iTgo>v@FqtC&Z|Bs6cEUqq}@?B4n`L8?Sv4c z3sEUKr$KXB;GY&OJf0jqD98g0s&}L+Qu#YvI7HDfE_f$!NRRbQ&{QfQ9&S8J{B9u- zrJzZ|I&QKYp1H)u0F0X;{kn9HX3krLKB6gIN)V{C@mCSnKfL>3TOT*A|7ciWzrS0r zKhXKDx%qg% z@(>XJ$ojJYs?rQtTrJCiE1rBJ@Efjyafs%s1%B14M1b_teemY_*8aXIzQr}@p;wgM zkx|5{FN7UW9!8e1t*XikB;W#$lYqzo0n~lZkxm0fHVF*{{Yv~<<6U7Ju*)fdR4Lg+ z(@vGjK72%@V`f9TnZD~F`WfM&NBRlds%@zD-c>?cZldZt6tSA`3FgszhWTJFRx-VG zWIcMIE&K;`?u2?}+U;VrTP5@$B{Pv#tGImJ+mieeT0#3o~{Mzc5ZH zJzrRGsOHMZL&o)S>`y!n)TW+~;!cEivEL(j)<|9qOY0$mHyN|X0DY`S`lHQLfkfd1WVqg2pEok6$D*n~==g4D-0?cey`8Mjut)>^}KTNkjp z-KNfMPUjALvs$n{&nID;X`p35sCj7b=ub;;x1(9sKlj6o(?cMRnzt9B#Uada)5 zH_{OE(6XkAD|N&}gTtcG5%W^s)^r7Z=emj?>Oigo3!|;#dMr-7TU4GtginL6Tk?;BGycLs|a13B_ zS4}P{=;^FAlXYqj2LT=zb3X1>r85x1Bg5KjF|xh0k0!NgQcp%>lNw`v3fnM~9%Ibz zFHCw0S2OLNGFiv|(CuD`ke{PV=5S#TGE#a?GBC^WLIx5!JWahz`VN+n{S_6`y#l9;-BMM-S^?vvo`jo>W+p?v6*t+dDqFw%HyLZ0 zj7+`z?X)UtGQMs@3$%x>9m)(`mwI7ytI=yMq!%1h>n1$lcU;#G}0kmIL`5u6p0PZHSsS*?9yoZjH`m8p@vOMO& z{+(h)Ze@2Gqj%MWeU3)Z~l}AI@ z8QS5DY^K7DEEW$lG6PawXJq{nt)+63wP{e&&1S8UNQX5Ir8jD;iNufYIPt5Z zS9`Y)WuRJ6o;C8sOkAscc|>*CgA=CwtQ?wlxjESA<>$b`XKuzhJRAWzt53>(_r&TF z@sA;+U|0qj3rTAAyZvOE)(>7jdnWGJ3eSk$X(2#FTPQvcDXmd!T8&z(RVeH!aR<3U z%lIgvzljYIyT7)|mr7N=Diq3tq2IxAS0c8<}nRQcDmUhZz zr8?kUhTLUaiQzZOv9k5#z|TtF^8jL6VhvFnbhXho3Q~f5vg#^$rn!njgyQ} z@rgtQ)W-s z5KB_uxB(H;I40DXLRoI*%fK+6c=2#3(Gw@g85aMRbd7&&Wie4>YKl$e#WN_*G81G5 zZ)DSrhMdODs9jm|)fM@sMlhz%%)!-PmgFw%+H%-`U0XS1?WD9gjN zp+6`ri5*%MHzxzy#b6_IUwms1om273Vbk%4Cqw@7Bz}?iNLV-mvzi4pm+ zI7o{*jQ1DRd%!AMd^2%mi>fQz15zYjl0NTvC%$;-4%F99V7uOvsgpO^{5{h%_4J(@ z#et^v{czc`NLyFN_^wA8ub#hnwfXWO+1zs+d{MUc>f{)J6&RKZk zS_dCT&I#bP0PmR}jvRy`6iP`(0YBl55cI*q$x_>)%ZpAZ2jQuclJN!&aJx#D+ z_lZX-!e+V-NS)u4$3UHn2=6S%G<=baW~xt^rq7Je+!MF{OdgTfcl{&Savm9oM-t*u z79#cPdm3%@s?kym!~^~po?H*dKjYu29yPf~IlH?yPZYT4J)+zrnHxWOPdXvEQX%-R zFC6$IRRa?d3O$<{(+|1-xlrf!BI(d2@fumbw341%c%NbX&6s54?`4^N9RM=iYY#7$ z@$!t1T?yoc4o{)ZCa79(66p5yR*P4qT9UY;bvp)aFoE}-{{L_9UANlCvPRMGZ~PQ$ zLOMVpx{D&DitZ#ZfOK{3B%hIO87tV5T9UaWVZX~6<2=K8f&F4<-qzBREQ3v| ztIs|=bagCg-EVWv`y8V@)E+wVjo-)p6-;A$>R;g%KzC0}RH-tugFVA8FmdBHE8Eq^ z`Zx5VvQ52shx})RCNqRF?v;li@s9w)M&;?K><*^fUR$^K zmu(MPj)I+qX}tr>f16659~u#Zv7}ubQi=E zi1b7h@sYQMF5cOs)z7zoI+}9(wWTh@3PU!Q5;Me4!8A)X(8`moRLOQu#J=2oYkRw1 z*!%-_!8U`pH)s<1e$)KS}Rq}SKc8_T$_ z)U~;VvK6^KGkdI3fA|>d8nXKC6>PE8f?Qj35#wB@^lvbZdge|(MvetuQP0C(B+o@{ zZP#>5=Mr!OfTh|;yT@-X+nPSXMwY*kw;5KUY5*y9DfEiKf+Bz|J)}*NsAop0FJSCJ zZF{MsQ_;&;C@h_=_W`Tb+18EBNS%M51{mb*k&yJ zzhEDlx)0r-UmyIm_s@TJcTZ0Ck53N{-=5$;*ds>d79`MvYPH$P9F^+B$)!O{m1hOpl*8oQ!e6M ztrOvfz}IfdgjWby<>8c4TLDaFkt$^m!oyhO1N96=UdJRduK!E7Z`El1+tyE?{@4E# z`PP0M;}-9^_}i(?X|7_|W`>&IWHi=2zO-O@>@Nx-+*AUVTRZ`c?M`Q#xnKx(u}e(9 zv=;|K6_W{rfjlwF>@?a}%Xj`XIaAUo6t_Yh?2K10`s8f8VMGZ82sFi@D zE{pnrt<++8{*vQPTU)|*)=k?aHofnT|C;sF32;%|PU_zw65P!v34N=VpMjNmTIrQLrK zxNkt;E7cV1#K!6mpR{Jd+0QF^$>GP(#_4C)ZzN#9Z5>9qS&xEn?4Ur!dLH11AN$Z~ z*}sB+)NmUGO%|!ENwX@+1U!mgAiMr0%7 zdx7vxLHEZn>~A>jiS^!cDeX&2*y?$Z2s`b_dSH`W0>r&zaDnbguX%zu6ez zl688bIbgJrqAUW=jLK8B|z zvSuO}xROo+DF8@NujH2X#)G{+woU=tg0?4!b?e_S;LgUr)CevZ+2fmvCvjcniXFM7#pThtLHkl7RJQyIol~OW?V7{KWP! zc%RMP-L$6u6#Y@+9KyZD!hAdteRNETHU|ZLem(646ECuk(e>lldOp6G`h&>1`0=t{ zjxVUUDR@=p9xAXNZw_oPqX~|vy~=9t*GhxiJW1RT?Hzsw#M2=sgU{o0e$LNSRkzLY z{=`%U{e!Y*g$hk*YFFSG5u>Wh`B+4yqnUCJ$Af-mfM%7|_R`l=W7|a5klybHsEERD z>tL#&y1k=!y!R1bCbfPHCZAr?q9YVWuT|XwU#rE1F`Lk4I76o(+olhr%*`+wzRe+R31jOSd_Y1 zlf$$WU%SyZQEw&oWGiDo$Z0oWGnM-C3)wQ{GEbf;&28Cnlvc7x`wV~?sDcXWk%B-f{`A(!mg|n2@~LzI3_D5J#Qy&C^Dwy24sR` zZI1$_bM^*hEu^2G>-AZt9YIS`ei}?%QgZ;UO*6=CzcyXVC%4(!76yLQ&{UFu6u{#I-$T0c@KrBXk)wc^MuL5%) zgOO}?9s=mb%}6n6j*?7GXb)`nE_)6j9Eqnoa8j`T+RH8^?zh0G=f)yhr2^`;@wZEi2TokUMZ>O+Nz)INyq*@f$2+`H%gRP;thux_~B zs@v6er?al)C2}P_c_LI1n=>hf6%}Z1*IU($x?FYfPN$Ik$&>Jgc-ExusR&|0vE|mM zZ8AsAbnWqWyVYu@`~%XcTf8R~y*qPTon{RkEwPp>90&j=zKZF}Vre|5mG*X{nQ48& zgHhW~n;tBEE=a#dhIxw4Ti-Z9Og~4~7BBvfK!T0SNao_+uXRjBk)>}!duAoH)$Llf zQ(rg1DeI>iLcpn1V9B6`e^ZY)e~ z))>wr^HS-vpjQS2>ga+XRnQoU^)ZHz!wIO@TlJb|I1rAxz1RdW&`roW0{Sw*6~H)F z09VjD_C~ciU{H`d`>44?Af>~teIvB1H69A>scx3$)+#qfK>8ghh#b{-%mfAijt0)qs zy8so4Z-ejj{K!~ECoY=M}~UZy@N@1$;n#WB!&SxI+uo7iM%l~*%3DM@J7!VZ!yDL>!2yK zWppMJ!GgfYZ|e!e{nr5O5BHqO*rFQ@9jV6zQ^~PRir7{h0hE_rcm?ejZ#xxs(Jexl zx-q@&3Ls|dnqh++8bl@-FBJCF7vfKC#?v0!Pg7JmR?=Z?aC^Jjs@B)Pt(*09iEwHF zj}a=oXmLauBn-2QNhs$>UHU!himP&4d23g8#cZsgiBH%K3LwhcUpC>nxhb?fEG zi>B7!N5R;0V6O4)N2H*xobfm}-eyWYt=PZ1C~1Dd(Yfr{?N4EZH!C?(s?q@bD2p<<_i z2Is4$R&kLHTTw7(5THqXY)zGqG>)Ms3s$TAfP1ym>a?qPd;db6i7=pu?w}XPQ@6k+ zBC{&svY*-PDQj}!$!=`Vn{37FtTZ38jT#8B(DJZQ^owChMJGK*HHLHaW*rf$mx3ic z-mWy8?Ru6U+IUbu+9|7?Hm}l>)zkrT(DNT{=oW@xp($>+%%1o{LoD7C-Io^8SFkzy z;Z!7}8E-=Rw&T4@!Q`xNJPEr#l!!6#S1PPk)GVtp!eJ=yl>x#K`z*c!5HW&7(I1%~ zvTB>ssix3v%n6?rdha8TIQA}Gbc%MTG&-fN>-TZPr0oW25|KX=apb$PLu~9H261~r>#WoyqQnEPgA%@?viNW^561-*_Dwma}*4w^o19Myr>!V+Ov0X-iq@KGQreGD6x_Hmlo}ZQ;f4qLdlAXs=jbnm4Q|gN5AH zM#r!)p#Ih#)L(?MVk|;LB#9_7MDi@u?+2k$W`|Qux=KoM-PUoci|-1v_sZ60yIE~C zYQM)AwCekLjSRej{umfgxSQTe|S>QSXo) z)Gjy5HH$t89s`GV?d?zEu9Rc2XMND(-W1D)o;yTROjndq6SKCt@25dL@&fDcNHYWz zxTzERFvld3hk$p)kt5PnytK&1mo%C2>VkhF?Z;sm{gh6-)~>gIuU@w1_mX`^kX{tO zCA^u0^R`^C+nxG$y=H2wSat68VoWpXZd0*L)~5ctQ0La`-M2pz%Kq};<;c*pNfZ?hrDLaTlDKM!inK*$Wo{2c~omJ>?OZoI^8-gpuwn z!iYp@j))zxu$bsKNbApDXvLlnaFuo-BTp6~Pnyx^CCl!|X1mcwsPQ-1)v-`-a528w zeS7d~|Kzm%<`rvOFiAHgYkavpNlo$6U9#0itJ!KbN~S-btllNvJhZQ&jZ|loW>0t{ zLVQ~s4MB`K;AzROuzsgLN9flD+S^2Be{!d>skHWqsv`^@dxy4w-7s=t&6l3>dac@0 zFqWu^DsSK4=L)Dl>$cS0CI-+@CkCQq>x72ccRy-WLCG779Sr$PhT|kl`_lD& zKr?>!#>CQnKA`s>9iVQ;fAPy{l%aU@JcjHV7io>>wR-SQ9tbo{IZ!0t~6McrCz z)D>gY*wDfoO|E?z{IR+%7{j~c*II8g)eNaF#$l*-QVxR|H)O{;@ISHtvZI52 zcF%#2d#Li=AC{GK{5gknEA)_G<#^+*0otx?VUKL+T|!#-Th(T}-fEUd$z+_-ENLy% z^){>51gzDk+1}kR{mt>xu&6AUN~(Lqd=F-0$#ki5c0 zFK)!?orHm}E=7{EAPc#|9o`E7OSOJ=kgkZW=U4pjBiz5e=_CuSst7xOCbApaQ4Rq3 z?25~OqXAY>Uvx&A1&jFwRukuAhb2p>dadNMk;~zmS)~hirw#@aW0b5bS40@dWtxV3 zUG@TWXMtNm9InIuzyp_O9%=3cj-tBEC=8~T5y6TR)v(G02zOF*KN*DR_Ni>$8P<5E zy-Zi?cXS2rrzlYU5LcpnP?(!iHnG}@9Lm2DQzhnY@~J=h@l)VW_&v8xYIigZ07W&d zTz?RNF?A&lW1!=k9^0O+~s;@$;K3p$hu6Ta3Cyhrr8Y-njFtag-B9}Ge$JB zD58-VD=7lh(Ux=+3o4_~+g`GtErl{8_|mAl^gw+276y+}XFqMVvaG<5nkHijM3>wv zE4(;YJj|XuaxOgpIw;c)BkvMLlbNWAYmb}Ttwz0`;i)n}T(&2KVNyWWsjosMpr%s< zuOym_LX^vRp)DeJ8=w&~#hb0pcCDd%K%Ca*LwZ26PhZTJvr1LSyC#=0)Lx@mYiFF_ z)gRIv!oV<9bhZsmXNzRcF{+zHvN;JHWVKtA-AL^rt&{l!EVsxfH!bq`H$g`qIzpbc z24@j|9ye>%Y6JaUHkvT>ZG6~nHET8c(rGnFfMN3PNZr+m*y~NSse{iEPp?(3uxhpA zyViw!6T1)oa>UR9rxh~gCj8H07@1av zyhP*c(4C)9&EsuA%+(PL=DE+$=7K9e?DgjiKZ1>}q0O3!T~}nBci*5`CEQ4G_%`5L z2RK3211iKwL3Ky4W368Tfb}Sr4B_p^zL(tCL&q1FeLP?7ITtb}YPPmAFq6Ca*d2I7 zG=fMGx_IQl^`H z`+K7Zp!=`x&DeV0zk;71o$++ydu7&>~d+OPqr0-Qy8DfBl~b4tN2$3bwRoo|x$ zH4>7{1BP3geCz;hrU_oFuB!+(FGR{vokI;1&tME0F_qFVV;nuFYnr)+(ELlG+yw;pNyN1-F$Is<7QCE+G3gA(@rAO_&v}Wm>YCklHcb zI%IIw){?zy&TQ3c(N^US)@!JRZn5W!Y!5xa+$?dHFML5ok!1@5c#QhF!u0KOdtUi( z8DB%46;^)Ij&$r#EK5^dOTxM|7x?K5Vj(-e`a*o*W6qyZ3*Z8b@OtJJ#P7m3! zR~GjX$*m!@eOE|Uz93^0LuJ;`p9O6G^|Eke#rKfm%tp(TrgTcW!$~k8d;3%@ z74$w0rjw9n9Z_GcLz)RZWZG#|>I+Xp&2&BjTP8!IrYgk611u?@@3>)#BD~TN$?znV z+KF8H0t3^C#{RnQy;hs7w5`9PrIz(~B-s%Vf4bnOfbJ2 z%g82FTc>Z1ULG97h{@6o&O1Q+E9(trjc^?GW~-VSH!U@v9ZiGN{UU*~5D-zc|qH{~zAQo^Pq0%dwj_5sAA}k;+kCQMO=E=%CKua?j7TzK?btf?c}{45&Ue zm3hX@d=>`kgmVmE;&qPR9`ObwFgJ~8x=~giiGNk}1Ef9H!`TxN(bd&enQI?J-lZ_Q zw=!N<7?LeGga%_^WK@O#3D)(JJcVhNjG-5Vo77Y8S()Vmb6TX4eAjWqB` zZHmINli=`TMF&&B4RPLL={XocXK0Pl#M_m?_XMQeaqM2P{WA+lf@nYpXF0vjBB52= z)=zN7{GIon^<3@3!YQbyJF8HAT-2{vL7q9V!K4qhWLzxKmToOJ>7)#MJ=k)vHPAi=D0BBiz|2Wa}N@7&$ zz)KhQ#D(?KC>SF)*~8zWPP7DXnYWjS1H-~Uyf(>fL#gf|Uhw1zG7Ib{PlShQGU6CI zp%d2I^Cfn$jaWFC?xEE?i$U35kozg2pvedcQzN5f^UHsA}Eh zv01Xs?mu6;eWi_u>_vjksdgbFGa08_mfCFh-)U4k9$&IkMSVGA-N>K767?tmT0o`0 zPs`jTR@c0LkZ9;^j3+@!@4Va4Ar2P`=)I4Jv8r0&#Z;Ga`~avrnbHgpg`z> z#0Wv-s3tDq(2#3@jMJRv;>|G8fahH-j$|8T4rVr%r$&L}2e+E~HAtPH{r$~R5dolZ zsrurz8!i+LUprX8T!H)7aKFbnkfy96t@<)MGev{h(a8%HX#<z7TXFdg-+Ka*ZvKjRym)_b`LO8vYtSN+<=8m;B(Y8sPW+pg4_ z)|#@mP33czA)hmX7mCHu0*z5q4T;%u&J+@IydnF?7liYK0SE#TleJf-SOW3i<)6RBR0jzf<>*!zd08` zJOA0*jXpX4(^x4-YJ!5a^l2+K7URHDuNgitK}ezPZzjE9Y#LGvi0W$YiOoDVc)~DN z$l*f&03@v!L87S}(%~L0G=(WRfvwtkUu%ABRp@5HP}~_Wbjmdtb72>&UVK4uWri)n zCz@D1n!I+ZovaH?y6)?XHPkV;0^&cKP(<{Ke0VY+hgKVn4%TpmC-GHoUA15O<`S*9 z^{MJbh~Uh~KndBA7%8doSVo3>G{tB#ak9mH(=Fj|IC3i@1H>>jwq$Y^Q+=UMG8n;0 zK_N83l1mpbIYd-}rn9b46!wq(w=WNmNzwoW7UqX;$w#4mU@UM{yn3f)1CBv{m0i}C z!qkL?%E)m`b;lmqV+K}PJ8{#;2g-DzN*hCTB1fIsNUFQcUg2t4hDRer-wP@>ydo88 zQhc;Bc^^;Dk=xD^%1^ydA7|zuGik{1n`W0)`|yP7Jg3#z#G|#zy3?DaBF_I_>kwIZ zjk@C@Kn9#uj5amB#^Ina8|T!fxG0PeYTWKcW zp(tUk@os_4wRLd~j+*-nm;yhmQ!(Mdr0HZL9)#+o8U3I7LQsO(;wWZVHO#@XF+Fq~ z(M4enL+-zkIupA556~tAC|V3`>S_1I2I$bXnTz$ATTwxfgXrAx(X51E`ButX!BO>< zjxJ!lzSl>%>L4>zgL56eYr$rfJ1SACo#!LnLPzLh)B;AzHnvcw@a9Ts3F`1iEpGU& zgSx#hozacc8#x}_(D-4t?T%(v&iBoJHS%D~==*tck+_r4Y?Ses`r>GTxSLYVvicV{ zXNxL=cJgF5$~C)EZfdNXoPQ8}tu4`FOZ=c=2x2CW>7F(=kVPRTfNJU*zIbrAQiCmS zaG?cl%08m_1UA)anL%U_b<;*eO2?C0X>cp2-o!dWzjraZQJ#deO)$R6(V)2j&C?<; zOiBUr$|Vy56bPX{03uweN{^LwB8!rShxLYWQ*|;G$|i0g!;I^!jJ!fcNa9nv;OsI= z`PRMC{AYr0nOVTF&gOox>PzmIPCBA|#ls<_Xk{+#7=SwA!^)nUrojvd78_YRGmF_~ z)p4UbtBcp!5^4_ahi;e785=`(mEy4G+Hf&{h0w(XVzC??e zkZ_8*ZxMQ7NSvRHa8vP9?(xQYEKg%SGyoh4V0BC!yxGM*9>!4ZU1{XA#@2M zE=Gb=NMRI{ZW=bf(l_}gJ7T{Q7$feYGCWin_3qfch91H_`PzwMR;GbZ2i0e&TfJ}b$lHGj3NYfW&OLb{&TVsmmm`@5edI#I#nZ{dqzA=$AqFp zwd<{pO4X=>nOtjrL&Hh}$n=c%LudFnfqVUNtG(Ts#tu-M>pDaU6ZeFdjRE1S@!?5-{RINjp;@0@ZxeWT| zVpSKsGO3BGaqv1ihaLc9t`u_Ky{+rbXu2ws8(0{Ks zD)858H0T%pa=*1ktKIsqYQ0&jwd>7xtNLG+YNJ)J{g+kwy*hB$A6%$toc~{_;d58M z`_lh6{dTvx_FA99}HI3m8sqpd9 zo9^M!X_uQN%Pi>Hr8AzwiRC)Ppw=?lpppIX!?I&j@y4^GQ>|QI7q+9+TW8vOqpBdD zCmD*r;`%8fr_7`iLmg}_9sy<>2JC`RPXHO7=uQl0x?tG{u$yIPQ-@xoG9#QKbRw7^ z_cWfGBNjXDndMwNLBrBXW&p2MR$}aw*Rj%6mz`Dw1`|&wqHHR|q8<>d552yl>+6Ap zV?-7_LI{q8fzl=NEyZpu$pEk4hf4Ikvc4P)W>+j6T{t_w1VfSiMDC!?odgwR_R{N@ zcWx!oh0hvqBeWQFow&=EwOyHb{>*a6*!ZZe?WHnWl>O@vR-JhmBX^8m69+DHensS? z#<_*cs4(2(LBw(bH}!7alwGx{w$x_2tV8zofvVk52fN4v`UJVn&KPyQZ(usJM-2C7 zW}-+hTyjGtx&jqO7Y{s-0I>}1?LKES2Qv(Xy0VLDjz5$v8O)27)i3P-(15hUH(rg_01kU?KD&TJ;JxU92rD$k`@I>tNn+-kjmQ5cs@=QC(eg))f z9nRYzpdR4gd&?eX!xJ!$zO}lBn$}c!)m!JTK!e?Aa*IV)J@ug<;)lycDuF^g_Cesg zR^c=h?>u8V-doq!pI%ri*G2cw3g=OS%THZdW@DUSl!9_R%1s8L+g;deFe0yv%RUV) z+qIs?|FfToQ2t^y|6!%DJOA@3j#*W2j5@P)N>2X*zS6_3NbvCk{@z+2K71%W$_wsa zAO$3!#0#U&sZLwU)weaLpR!=tySMUA@tHL`Bb~^%jZ%6e6<_mNdLH_hqyf{DPKeW# zIG=PAV~16$eoM#fB#xxYqfQcs@7b&@9B;WwjM0raynB*MgF+Zfehuz^0 z%zW7|IwQN@#0>mojDcKn@&M?O@U1t_H3g3Mrxf5C;O5@ZyQi^oqd+<=$_#DOV)qhL zpR5So0p1Fa8E3w7SecbPt)K@LfZSoo?p3NSxPXtuQpH6KYbocVt?gF5LrnJN3Q8Dj zHbOzP%L5=!qM^rDJdH?4S4C%mkvz$Hgs+tN%S7(rH2`*>t(8?o`hI$M0C?Y9n5q*5 z8Z^ZKIdVxaR?Y~l!A{&dcN5%jR`>1E@!{V7$;sjIN%!#W>$hhshDA-V%}J~Lgq z&E^EG^*!pDt*q)CD+Gnr~ zwPJso$%hrL|JyJdiZO460ifbH26GAiXa635rN@t$a^W4HCApNXJ!2eW7m*HRpX6j| z5#7mMx$NQfmghD*smF(hrz>=aZOLj!6U&ZF)Y?6x-Rk%b*yB<2(i$b`$#lKS# zHiLRLDuXJZ)kZS~OodXFlQjosvhioaJMif?lf5hcoVvt!EH0b%`IJ^fkD{WGtCiJ+ zx=KxGPQ5v0qS-F826#6OMO#pn`13aNAgUx~0byGqBxa_jF1vZki(v06fOZVGE4j{T zo7Z_gQyE|raY49s&k++ExjlG_m4`RWw$vxwQS$Y^QY1*WY*FzLFNJFdz>D+FePI1gln_Rw8W;OjP@prBQn@Fz&g$OU$C zMFh+gea*lvm1R!WEHE-M6$QlJ(S>Ir!0k)}IT$dLo|{-qSNCL*o{UjCJ2ALW{Kd?E zd#ef*T!2PeZq;s$PN)kN+bk5-;Cygkt|?M2@R~`##Xe|dMFR@}aB;%XM3mMOlL*MS zRS*|#?eODYVKS6%3}ZHsZALeSL_k>aV{4byDMUu1z`ocEu~JWQv~yK~bS*3lb*>x$ z7WQ-Div-%bw;|Q7V48UGK#xFsp)?{|%xfF(BpMb4ZxU}j><-}I_5RC)pZ8BrPfQh3 zC1rT?vWe6S%hGVp*r`u9_4d<&baq8GFI`&w=l_`R!iqdx#c55-=haoMeEoUg1$Yor zRt&Q{A4v?UqI;mgqcrlKPpx3}H~g zR)Rhnk}afItu-{%4ik=Rhanx&ga88>@OrE~LClkNgR=gLS16t}^IXcMyf*H1DqXVMTeGN|y8Fs%9zE^?$M-P;_2PR#3eXmSk)!Gv9|zNQ1ag0QF9N3O zq8kp@CL(JZ^h#~6L&sc)&_Tvk*$ZR=$mhXUwcV-A%zxXiVnB+b`NvKY1EzQZa>=v; z={I8uav5&?mrUMl}E>25CTk*jf|I1g^$ej-vmjO-FyRT@8EG{jFS%=U<;AukYoMDtKsU`Ng< zKGQVZ<2#M5^5QMlP~N{ruLpn{yykg>^3(iSw8XM-2s%~wJSX8)UDuzv$F>vO{LTo0 zk{x9@zmM$08k$4c==ol(i01@G6=Ty`gHrka^Xr43_Wt?L?(WISKIAxjdt%u`K=xdb zgUk)aSRCce2Nu(u!oSY*<0l{VO1H6t&42qTzkbx^dBG(ZvGDGK7g7 zPo14G^892CNOk}N4KN9+O(ZnjW&em3&gW7&rD zcj1vTh<_Quz~e2Pq9f76-}MJ_IOA8UW}HTJNrOrqI@Si6;j%|l!03A}9o0S>JLywR z6_%cG54-9EpoD8j>#$xf@mY2dH5H@dZr8}$?N0`blIA`#{SO-h#WR=iVjtaFPoHc& zwZ1}Kw-4&AHat+hRUa1VE##f)tbALbuUw#@s}d%g;*Kky4D3No_mb!&mAH0KH+AMr zNA=fR=u#>qa=DjF^ik_|7xhskF4RZJJljS1cvladzDP+?tzjDGyzchABwbp_F%65m z0pPc*43xU5fT^3toUdeh4OzxP5W=WfHwG0f2>&JF8?%#Fzu<@473h2xrwAud9AMv* zFV)*;EJA}U$dHdwXTYB3CdeP?rIu_X%kB%gUU){Nd)CqIoF!kGZ9*^Oye9O{&NOjc z&;%~o3N6sL>wn&*|69I9W%+M!<8J-mN~I2IS^eK8Jbl;y{UiS54*bW_?&&X@l#vjV zF#>=zh#5=U-@ABecHe?-flMMod0U0 z-EQX3e+`nqpZ`DL@A04LKI%E~2#=>)ctF5^amVPtM0pG|UDIYgKpr2xLA9*CAiRmZ z^HE~0_1D>J204OSAX3?;(tj`bI~@g4j4pLwyY6H(^d?<)553+qmFZwOjT=VX zJdB4kOeiD|D%Lr19P~YcW|_zs+A}ced9R#EnU!^FXy7_y0gY95=^*G*hRZ-~Dx4UYT-#-mLF)mVLRnxHEWavzBPok>M~ z3$;F2Q&)u#F?+~r>`8zW15Rxslf^CqM`Gik#{*L}oJKx0%NGHlcyT~&Qd~Kzhw#n- zJsRN#)D8sV9Z^TYIDKfG+}FDhXjbSk_XJlXOcz;_;*mpF2~?o;d&t9tF|G)E0T9AZ zJXi?imk?c@8?WfZ{IYMI9KJgJb@zDRIykY8jt~EF@N)m9wX%Bx?<x0wZHUV!weT%ief@*iI zqut}vgS~gJcaN>3cgIJEC;QNamr(BQ;oF0^ua2Rm{Wtq>Ps`9Ue6#ld0WZjhe*K!7 z+kFRPIHo@C9UlF5eDL!xr`9iruV3!N$Dj65$NpgVr`P-391L#n_3pu&P3z_Eo86!H zsoWvdb4=N!hrj-^PoJR0UHESgIT=t9%+B87+tXwCunD6*KGlVPJviClw04gVPHJ5(UX5^>japU;McC)8XOi*Q4G2uRpH! zyz{T4>AAZ;aVK9%1oPEJ3Mq`d*!_BeGWf55T^l3FS&!j)IvIbxcK!F2cOU<{W6U) zerqQ2!;>egnUUNgZAdJeT$M&6t3SfKqSW}??FyEoJY3PdVyf$fUDIju^!V|rR9}?3 zV?SM4d1`jJplSJ(?J|E%`wS=&x?mZj{74F07HRJ3R-srG3Zw}GxK@os)u$iqw0_Co zM@6|68OaKV3H{RyyI%hWiq`4J ztmuxS##B-+Egp0sL=?#9H?d=MeW{o&h(t~}TGQ;BOWa30O zTCYuao?AQN-ECpV!VmIC;l<^2Nw~dv~4U^6`n4JsVnK3<5?q( zzH~H&K#QUV-vzo#IJw-k(XjF*gi4prq&Idm&Ev4=<)ix2d3gd`ifAOnEEfS>B~qSN zYpPj~h)~W4La~(w62hG9!B4Uj>~@_oH!(wJf^i@LfrW-qOa|0dx%5OS|11i8c|L8p zvbK6a7;iB!D^HxzE(HAMp)mJ_WjpSxMJrh;{Q4IQ14nQ97#!v6S8E5CCwn&Uf=cN+ zmSmz|tXUt#`h$4N@_DPE@huWhZ<*7yZmrAQT*I(vr06b8fu?K+2qPIt*`~J>j0v%;zKionRB8j(63SNE- zrsA3a(K^q+1PU`DRIT(5OW;>#OWaz|CF;drtmkYJ`d4(P?7}j^Mp&VA zx!|B1Cazy9fHA;^EU}#Xy&QSk{Io-bFF+rKDZp#DE?Y-|1`XCToD_W=R{tt*LVnA< z+)<0k6q#F%u?q96%5MH2R~D=gm$j%;fK zD;<#{>_9!p#U>ZRiPMX1&gy$(gHT6U`25bHfsu=xMecWM^(GIP&0!ZFKbrsv+ z0gMlSH^`a*pyzF_x~X4WArJr$sZyH{#xvD^$hADT%3S~E<@-I9ZvH>?SA6~@Ams1V z#@+J&O1;(0pZ`X?`d$C$5BW3Y|BqE5P*(39;jOlCJYaIJMH1p2>*u4_%0~c3dQ>_D zNq{(esL*!uij}gdu%SER_JWqV$ecUQKR7cNOq16!ekm z5Ph-8feXs*cK{>bw1)jnE5d=TVT;IS-BeZrdx4TzAO8Yh(a{+CWx907H)sH`iyl;< zesYb*fkwcdTF0IE6jCqW-mY>;RsJ{>!zA!l@fepy^l?_R%j9 zInB93Kg<-sZ#YE_OsQkG51W`Zomp8&p2$Nq7`XCKZV#CV<4``+xkR~CI^KW1zk9Ne z>Xa`EVwaRk!>P}{W69{ci<80PuQ$5~Z~w7>{Nk(+P1^%&Wo-pry;QB|)~Zn}Ddj#w zk37gRjJMwZcg5Z=f85$SUy(1X^!(LQ^_01uGebhODvc?Il>IO3>3gW><5M(<&tyT2 zJJ;uEG?qTA!YjwnpI?ByB39~3w!={4pVFMWgG&bkTFz$TW?vqhoW6bcrm$I8wd?BY z*7j3Duc~@|`MM=wd3IE?t?sQ$9%1FwlAh7GS9|IcSI=MJV5rY9k?PyN@zI5^sdEac zJ8E{KLM=FT2_-!JlTzz|5tMRjjSt!klImV29`G@3?7-$%=H z|FFJOx&BbKKGb%?r|Z_oy!wTzFm*}zu&Of^I9C^dxBG!_58S>tamM5*)Oz}bvHG=@ z%Jq{<=lVl}`V%Xg)@l|0Ut7P;*7AC~Pm>FHMGdP_P14X)N#8>`LRr|Y^ZW2SXYBUJ;j2v){k zl8n&}{J?Ykm4X??KiwbZ8|WU&R{*|t^t_0)zk{j>oBt&tf(BiRC*&?%?S+$?`e?E9? zeX(AhSTC%V4+&~=9HuX~nas-_SGBEZWUD(LlBdYidAh?LFgC^9bz_GuY|_v6S;j&Q zr{keF9xIsX>IF%V0xP5T*zCgThCT(baCTw=a86*tKUp<&dr&n7@O;f&dRpZ5nPjbO zY9`N)r@C2{@c=;i6DxY=_J))B#!GEN64YBUwCYm5oC>MWYF)Y2HRfFI18_5Sw8}rQ zzTvv4Q?7n_Y^bOy_qIlZtP1<$?oF)K+$tY$@7T&z;bZb}i06)?_lT;kcE3Rf=VpSN z8XD#BytG1JDvuv;Y~7asiGS;MvA*#hZ*@pRD?T4E%!Vnz(TdwW-P zQ?PT*qhT&0>ME|!c6X}BK@&ND=Jbq7|JG>Epi0Pqvv~V7KTgtc!pn?})Ya&qt4oay zj&AJ_9w0PUFg!Sl|7isD``>@`?+*G;fx2&Q;~x62R%_<%|6A2c`#b&jNBrgN|4C*q z;(DYYIA|&b)M4Ova{3Z(BZt**!)X$eEj&t!FHu`iUyqNoPW$i%ML!?0L~k+et;rD+ zTf>x<8aPVRQga+hRqE4KHo;M<*DucST0^n&(+?{jw?2IM@aL`bm9tWbbm5DA1Bs~5 z&@8w9{AWYftP%jmCXw~@{Z4P}_!m1L;g0;^&-FN@j|>}gp<@-Cod9L<;>s{{vSg;? zk`6mk5O^Bos+SG`|JD{81r+KN;*>5|K$FKoKz?KC9(_g8nqT|Ws*NdbK5ADgmU;# z1Izy({uST#x>vA#=ZK#)x7_&R-^e{{_}_YJ*H5c0C;=DASlOyCF>q5 z?gjIG0|X)JSSonVcBNQ0a-tjbcbe`SP0vt3S=e5@yC|%zJ09llOL&wfFfL!NCL-P+ zJ^F9HdVr3n=nQ~Ils6z(dE*0g`$M_Bv6?G~ZowY?H>c;**byt$+;z|aAmsf&61*&? z|IzPPzoCtL<-arMzYPVxpZ`DNZv&RLs}#0a0|a9N{An0^F8v-I?8|#!-uLL&4{ZEo zV}@J$`#n7v5xtKYeGqhyj3=Z$Z{#|c z=pF_Qln2%{B=?l4|2I9ySTTy`@7Z|J{hrfD4%c(%9N&J7r?FcexPK{& zD@yh;>9PGYm44&(M~*wTeu~gy_PM-v_q+7r$ALQ@r`|b{i$=kog%@SSupkj1Py%Yd zuC1pGDlEsoDh3=-o+FoeKAHE#6qJXZZp?mAq%7Z9Mi@x{A!QjMYNMf0oVu z-JU(O9xKKBtixBu$78lIN4CdxEPcK zD&xvBB4#!XR|{qc)dy~Wj8g>v#_@~QsI0B0&h`i=gD!m%6 z^r0B>Lm%PxU0d^CRGwM>^VKhpDfcbB{P4p%>&!gTQ?ark?z3cU{th}NupPARdSuQ8 z25F>x(2Ts!yXoI|yT*3>qD0coD*s*kR{aEKqRb+s0c^a7@?HR2uH?B}gC zgI$IKw8~hr2h(xEO~RZ%B9`hSX4v|c?f%QsbCNE-W^Eb^ldh<_Te$CBLibTB2-K5o zL+BnXho_ZIN=r9`7GfDipL=yHtkn(87JqDgMesj>9bdJ2Zr?$l7!=uAx&9eBm#(#u zTm>82tOhzAm#vL{Fg+h_^coF$q6%5#XO2P!mDYMdY0K-GqF?x7Ys=c|-YQuPVYM5>6`{2WeDhk%6na$8R z^8bdGRQ)0afRbMg-GHywEaaGnGtc+`{`=s5_;)Y=cgFs^`Cb3_5Bd}NZ#=SoxXz$K zS|n*ek+m!s*+4MzHTO+DQcQ@%^VgrQKSNpNBa+OSzHdBJ0c)%L{`&mm=dCTwu0Sxm z`e{=Z1;Uwz+Zf)Fs{;Rd-jQvle(fZE+{X_ml5o2dYqagxhJO~pKlQLh_aOcESjU-3GG~dnqIdSfb6q!I!o6(X zUkHBs;q(RMEhv7^cFLA-wIt;Ril&~>Oj7&S~V4_4a#o zW9%-t8>rDvrVE|lrwa?MZL2Xefe$IxskJK0?T1ctff8mBC-UNZwtnc?n8~i%6{F-R z44rEEp2qGfT77uY+Cz)hmg%qwNxbl$r6X(uv(;-6BShENxeDCzH&=1rao1I}8dQbT z^Il{&6{juSle?;k?zv~p;k0JTE;AYV($K3#+s3Q~rI(q2RtB$%CYSZQ3lC#Jdr_Nd z1Qee_L$O${nnv$I)im>t<{F^gCA9 zTC}d#y)})NstU2PVVJ2D72Rek^_Q*HcME z+#e%HexdvmZ|p2s^~f3AiKAqQo%;5Ds76&S%jf;QYEA8h&(->(xHPNv+>i1t-^hG? z&zxz|F}f4Leq$SmZd~5YT|htFuK4dHMJg2Li(f|iD7sUyfpC9Qw9CE|I^-p9Xhl<> z)ff`2$hl-88-C#^m{B<4s%@KftzVRMtw5LgF?u{#j2Gq^6=pbh$rca{C|mt-SEkD}SMiLf>ngnm=jLlIlBvB=rqNhG+>yyQa{Z^- zzxVoo{~gpn@7MpXwDS62_4;@D-yiaq)&GPAH`PDkb&mFDR@L)Azm32DJ@D_&^UpV# zJwdwr8{oiw=f6JV|Fhk0eYgMqL;fCHC#2&8OYDvT8+8F!60JY<|4s4Ac{d=kvuh2! z2r#7}x*^R+j3FnfPvDszQDHkHOq9(uD5}5-L-O)7aWRVeFeqEBJ&Bq;Kp6Yy=r6}j zu3Xo*#2q=tRks{cYJ_^x0r50;htqKxb;hL{Q5wgpNoibt{|>0~f5qpY?f}AZ%ad<% z{Y!s$pZ|KhR-du|sC>8o{A2#;v<-s(l!D5_7Qlm&eqr|wV($s`lXvM2rq0+>gpfs> zq=fz;M!^-5EvPn#`pe}~>HX>9-bXz3?_#8BFsK%jGhC?j3IKo#TPxbxSlXE;0q#Yt z4XLYXNUd{GHw~A(iMi2^-8y^1dv_YSX95;5))0#>gr}fH%q8PsGf=yx1%3DTbq}~ps*_54pt;JIqgcFy}(6$v#T3#S1JX^>9 zID=2qI1x_>$%tHGq;3&#h9n3bDx~jH+zd3fb%#R$n49e8je3KVf(4DaNW(-~XM3++ z@BVypwplvc`{zI9**bfbKB)}k#^dbuOZ7_Ho~!oP;`%2!h3jeDeWK9zgZi!9IL;ZtRjG2g?iCZe3jw$XvSzE~7rJi?X2f9u)zEM6%&Yn=(8OAK6 zFdi_l-E-JN#;^+8D9syEdR~luPZQvb@e;dqyfN_tl2L?;vvfrGx`gex0X_P{-R(2K z;Y^21*~^_kYmI8;2xJZgDuE%Zt)RQQ4rAKIjIbnd2YY=sIne!plF+7Nf!v;99KTo7 z2$y`qQBq{SN#|d{LVn&h^P96|=?++DFvRZR(P>wDhVEwEgpYz3^R_8xhJJlLGx#5V zm>K>w7W0Xi+3HYZ$>Q$mQ((m-z;TSpFxwdl+Xx#`hs9dM3II$Y4WDarlhzR0Fy}ly zTyt8HTh$m08MC_s4LSec4surHiGG8*J#y$hMpeYPXidH=?;+kGOiTR|{;oBp}2tp0ZttJEP zBS=&?4Y@_4@AR2aDemT3$ub-p?cuqf;0@42yA5(|gM)y<%GB~wPNN9N5CgW`SGTX8 zd*1D6)kB_za7t3IIx)FYIGaJ~&Qil6EMH>8ngLPh^)JZOi(o9eYhsuXplhFks$hvq zQ^eWbL7CiLLWM?O)vlIlz6t3Xb=A#gK)`tF5igdCPU40k87hO3FDouEvC7{D8Ty4 zL3F-#>QH7C9m+d!_4$Jo zFVMFU?ytv>t=G=y8>@%7C*I>TXaad%Bn~@4B6s5Wu!pJ3W22RZ(u@VWS?am4d6i)yO&H*OE*#%Jf>DXq#3O?t0ulum z(>iZlnWS)3tTK z>K$|-l6C5P5uo<~wV|Ui%?X}r-*++Cm;0~+(||I(>s+6q3580_bsD(}YGV_!zo{J1@jW95Af5wl6{_d~wQyEfRmv!&kOvq| z7&jZhXg4BygR_y_GS`7*oMAWv0Gj)e*JGD=1LQ}HVgHPSD`I)LWTFX^K9v2#(dJ+? z7*opFf6pz!0j8~LtL>QJB&KV@5DxDw^9abS?)q@bh_AzwvvuX56{!tHtX>oT9Nob*ABz=PzaH zj-_j+O{_-Z z(~=OxMu&-mX`e3BS>UYBpmdjj3EAb$65^%Iln}bdz{4IgG_wI2w6P*++LnsXXkB3g zD*BD6X~`r|kgr%Kw*aIgs1zKLmj>^DUU&rW=f3yZ9T2`D_IM0Kq1Iu-@W(tLw5tSk zOUUvP*(tB3rJ+$a|IR{2P39t)p$$3oFcUVzOo2QmuCZhVUrrLBfD*A7=b(Ce1Le{3 zQt2?{+X0Qj^Ev2X0_-O=G2o;uV!#KWBn+1HI#BlNum~pzwN-?LG2CyeXQ{z^$#klT zXIx129$uk}pKt|eFx+>zGazHn8+*x(vWqV%qe+;|XbMC1CKCISP*Gg{J{qE1YXSt; zbDfZJT+!`CmrW0OvvkvYW{?Pr21sBEl@~ahL1`u>jx;6Syr3WDSz0sgBE{Ie@tuj3 zaCy>8*lp^DzNk|_%o!J?Yl;;FUvU4tJng>S-+#IPvIJX#kf%)nQaGn$vXTxg7h`+F zrPq%fAT#219OJ>OcW?JFOekQ0Vs0-NA2F*5C7^jQH-KWT$+@IxqI_3Ha0&DUp9Z)W z!xagg;6s6THEqjHOF$Pp`)AJg9k-SObTMu5E-y(JzQzpktSX^WRGY3qB9~*xR*HYR z$!jx&HN$I+cX`kU3PqN>Br73Dms}#Gj2rSiieS6wBrv+?x&s{dfzLfbp9G8^VG8ri z*p2AKiwUH?JUN8bAhbPCIIC}yk3Go#min9YamV1r29S;p}Wx~Ma#LIFL9*|!8uq$U^ z1@W6yRWQ!k>BB7yQ#W((&D##8lE9A4W-_lJ-i%yc_9XF=0NVNv2g}_osix8YD=foj z?s|MiFmV9u#=J3JBu08w4!H!*`~8x+o7M$88aoMIAM8RHW^M}iQEb)9we51%uGY%K zeyv0JCf?LUm>$e!R+sj&yd%6&fc};Fe;8AhIH`*F!yF6QR{%;;NbaG65u73$R$U=& z>v^^yGyUwt+S!hE3fKqE3ibhIazF3w(E$a@PRL`pF&60udFMr)VeznfWfoX5ynWGf2WHE1v89wY61?r`$u$D8Em4fFPX&WE` z6AW}MP!Z|~1P34lM+#@Vp`jmOrRX3>t^$~Bm<8+w*NHcULIHak|J`zzN`w0*H&g_7Ro zZUW(d_b|eEdbPv8k6Z-A%CqY<>bty*ib+TwHjv?!IK-{Z%oE;vJYj%WB76g+h!`9( z-sCjz;imnv`|9xc^x)NR-IK$2$9wxP5Tu=OTTor1-9a&`;ULpmb_p~%OG4v_&&OV` zzr%rY33tbI&1BKH|HPg2Lt>=hIUxS3L{9Hbk-7%l&Oc8^u{hhH)g~`Wj!X$01w;W5 z$8l5{B;-prm zhaBWuFvcLd(H#ijLOJ6*2p^r~%wV+AWi2EdaWUhBkYmN(m&QYAh!_t64toQGJ8x*@ zO0{$}hEvR}JD4!2(4cjhsf;<-P6cyiHuKCTCZ{{d-1i1J+2@fni3M;B-Rr)~Cj>Uk zk@y?dA1&76CBEx4M3?k5ti7}v^Mq!r(`SGe0*)`_UE%=m!Hn2&2^F1SqaE~MBljQl zpbvzEKMhkN6jKup0PQZ=>|_%7_CKV&y{k%RIw0-Xsu^21k^&P#c6q^QQApuO=reyX z=9|ozOXUR!Z!Ka?AlMhK;y{V|aczB@l&P&x(@CffOcJQ84o6(j91(EHeGiinZtSiM zp&L%)5lXlY67DhK1>6UdH^MtXiJzeLHD-FCaPSP}saM4IKSu6F==ffrR)&N%dlt$# zdRQohA9ULHlrw9!y>QUJjRe}5e2c}Z4!RhGr+n!-*4Y?{?oX5OY~2KcKfgZs3Gl`4 z?#apiF~w4cUA@no%CUDoO0Hb|m#*eWNfzW#;y@4r4`9Vqw>CAH>oL=u4mSZpx#ThS z90iqN4@dwG;9^E82He7=cNOcaoLD!wFNnK>6iI;Vq1YzKi?Ix`$uli<7EToFA^_@u zBJ^_~$zCr}=a|*&MX^4JV22=A0!DuTyCPz3lXUVmjD{AuBx8v==o>5Y8h4tg$#Xmy8wiZW~7ERYvQ}NYlKq zxLXV%C(ZZ)!*<<8+-;`x)kpptiUnPNGd*r4%h>Z2k+H@vpL?_>I?q z(DGuOU16YFg^%W&H-hjJty$Kq2=Qj57%3Bi1qTBI4JRR<<@BHm z>d`2;DrHIG$vTriBu+iE@gk336h*TraHM{gIddXb(=#Z5Z!m}j7Z}4LD_*JE?`8p_ z87&rj?!yWRaVw!ww4}fwI}PrFwFZUOH`!Mi&I99A$QhB18Usy)HZt^xg&nzau%I$oS*pXNmw}pOoL8y%9dI|VjAZ-IzTFSEx{ zjn#>P9_D-A%JdOB4ybOKSuz3*GDn9lI}K3I?C8u|W9a}NSm6`u%7w3pBp!4H`TSm= zCEaS?lMIwM#ry1KFbcwu7)Wcfdl*$ixTu7;j5MasQ$@8z9E)Ntnr9_wLwViWOADL_ zuBa<$Zm-CyQ!z0+^W<$iFogK~XPbigF@KFI8?4)ltqdoPt1x;-e8NpGrW68{>ID-j zRN|DR3#?#A{7y9wW?n-N21s-FOfeqm?6Y4@*SCz7GTC|H@y-xK+NlZuvD zva|pCRY~}y_o@V(DwYb+mQu;ODEf#9XH&X;FMLvRAp%dbV@eF84DN(Ml=d{JACQC$ zatW7F0q(OWc`4gjs%QW-q=K+Y7_)0K$%HcM&#>-P7B3gXy6nJlAC_sI5Z2C`p>J`_qA~Bu`_8%;c35FEmsGP$2;=F4EDy^hJPO zL+_uo9PG0*79XElSd`um*}K776KyHX&8A43+6rQ0Vl*ohZ{i*o+j5G;%L%b!Uwv~s| z$0s13+4LG+h7*o#ecrbOh_yPP#bRVNpYzRbO)f5B8A8MvIH6nyuqgqa=VT3g{ za7ImvQk-y^IbyN`3SsmiOMK#VLX~he8_WbE=}>XhVK>r3p~iVKbO!54@mf|XM9C#b zRbzx!IntdSDBa0=hbz4pZT`zAfhlO#xk0JYx`{};1}06}cg;a7`Z!g(&VWdLT41Nj z5it&paaxRBOoY^pR@7qY9d36gnv8~_HJG}p=f)Ny$LC6|h3H#`Nic~3^@zJ$eo8%TvrsD% z?=0g4k)KkV6n&_HQZf~P^@c*N_7`vQttQ%CsU*m@XKRVqxkEXJ7H27y zYT&TDyGMH`czsdlet!FI>osOB%R1mWF;@ZK&xCSiF)mZY4l+h3(}@O1dq?lAG3+k} zEO3R=-LOV^9q_wULNsG1bk;gYjVkF3KMED zRh%UQ+eUQy8Rxxn2vZk*B#F7H@deej#yZ2Av#k4&GlP$Btg)ljnW59Hw}U-o;%cfi z5|RBiorGzm*hvtRG%JerglW-SYSlB5wPVu>7@^oEXT)}hI!G6k2ZnS6sc+0PLD}%6 z;C-ALGV$cVkeJo1wm!p3+WuIF#_)(@iBYc$FxZ&kd^~mKXqf&t`FJY2*d5=HGN*4~ zZIq4h5X3#;5_TDC8EWE;2#RWsGSfo;tFV#P))j~@yLX-swzCvc;1>3bJ?t{xs&_Ir zbaeRZ{&9yXWZo*6Oxs2IgOk#%jEF4>o(QwZrBw&%rZEp!-e1U>7L^qC4x45QQ1y-~ z*p!F|A~jFtz_&HLi=>w{o=}g_DWsaXOL;X2gKh;%>b3E< zfC_|Re8SodW^JVEL&{Ick;FUJ^FJx=l#Hbc-M}R_jZ2}}uj4a~DKYOeokS_9wadw9 zf#M67Qf?SigKU<V+3sM0bkU3|tf7zKc$?g}KM+#9LTjWrmB z4FkJnLrEtQp6rRZl(Y?~?KGowdhGQ1s?~NUNcLsaC2|^Wq|eG=i7%PRB|AhG--al) zq;N8^s6A#Yz%76(b&NwR*R<$%M)!<+t3q{3CvYxEF`KBnHO;^f$;M}kGfwq(reLV=a$UlBWgd$Tq2n#Ucdk*jt=&j0KGAY9^Q#k=|Ce=6XuKOMY%*?oKX>zP`QlBI#Ez!NKD^de## zvcH9Oh#b$c zzheIn{8$D=>Gx>kPX7L)iT_e>H^2LT_#^&|_5oDCYEZRX{Ba_L$PSKSj-&V;+R+7@P_^9rDP=vMYLrRQ1rrl z99u`z9>x)W?e$$hCad=lzr-VUc<`7C%p1rv%k_xqpvbPeYC`HmixjA14PY;sDheBk z@O9EpRwc_6YmkPmn4EY^>jCPkb`*qyLVJla0uv4+v&|n{zaE_aa`^7l+I{<*_3Q5O z@$TEx-=1lf7V)=;Hk^cGG?Tf)d&E!hCV|3l_K){|ff7J8zCJkp4R7RE2d8iMPfn~? zhsV~gb+mhYda(EI_3p8C^zQiR@MPc6K8BfvI_AtRM&n^ZsEO1JPn01Mx+-yq(msM#J7SG?(2E*81FEwV>R6&XHD7vwV|4O zS8mfdH)|_DAHBY;uOQwJWsk_e6I6#RdPi~Stmkqu$)_J>9cA^hFv|c`P*Nb6t4yT= zAF*H5#ddPjj+W{O(@v%#sx#4KYMZjztYq8a8|smdQKZjUHehSm>?Q{3B+XEg2&0Cs zH9-}jbCPGp3CtYpbyLhr+Q%f^u3~M62w|=~oGx7r(Yk67(kbo@*M|q4G$E$_zANVW zzX{wt7e^@we_+`&93#|U;9ZAekR1#I%ZKLNOUkix>G-}g(x(SLUb(%kzlJXaNq`T} zoEN=u(CY$;>-o=yFH-bj2Cfs+CRTF$bk{1mEp8me>%&7%gtXWdQU+ohAHAc2qq+S} zoVXKyV=Z}!clTH*8FaefI!L*pJcg!u10eARwWKZ>obr9NR8VH+L=z!BW_GBge2c!eMj*tN{mqbt}^=2pa07WS=E)EEn`95uQz z3iWc(q|DRrTIYc?){Cu{0^{a7p`KKwq)!~5Ll^^H&+gVnga8PaNu*fhio%Mi z2Qz6}pBZ-5BUrWW>2F8-_M6?e?_TZhoxVHXKei8#_K$Z@58nRVJ^AhAbpH*)5VCMc z?W|aY>AP1*BEgMn6Ii{w+Q07~zukXbR6Cp5vXLZO_+i91yqZ~(z~^b09SO|i#C>rl zaat=YX5hNb^2XNY=F_uMX^Ln2#ma}$JABx&Rx8%~!z0xC{D?c&e)9@P3;n7iy-TBvmFvM75hI(myh^p%n_P{nz~6Pkh& zYi(8Ij_YW|wLI>rm?$~qGIlez5UleQ-muik=X)Jck*Un;hP8z?aHV^!oN0ZvnrT8e zkap7OJq6LGXq6n`8}Rij zvZ4#Q3C1r8V*C`uHQSxgbVSMI!uEqpM-BkYxUDCTzVw{f>vv__FSQ(1Tn?;)HoVL- zOZL;oGE49~G-ywKa>SN4EF-(GTCQhxOLdw9+h$5(P<1HsQK=&MR^bLMZ`fP5ss_W= zVzy_NgbYuQ8@fz#lc%w9IQnEmq<~C}@DFdTo=YNUMlaB$ig0OUaZ@eI6N*m)z6;m9 ziwAB$W+e-|UaeHfkrUjIzp@%L6;GSzDB_Mk9XceajPC0Jnb%&qR1MjaiyfF!*O~3I zXxQ>8<@5Q-j;Hq=5y6?zaL2* zS21;myIyap?p5VsMMPT22@utiBL?6V>`!xDViW*8HuO5 zGXg})quhgF9Kvqnw$4W^%!ikAqL{GS-h_HexhHUuqI^b8E70vOjrE#qyYQz#>QQH$ z8(y}46!gZLdwk)lm9_4Tr!MkfR93t1U#PU$qi*y)XrD%Tfsw53E4NQS zp5Ftc@%|>D^fXylZ&y*Qn!3Ek(-hxP6hK2Xjb&?7@8rY1WuieZTLwPdQE22%uXQ8% za^=>H{t*0SCGr=UItm5XLS7mvqEAFGm%nvQE?fVB zRyT4hSNoRwrh^Nr@4*$oIamFG$6EQDdILz?bwPLFa|oB3O`_cM$O%VA>)+P>@eQD; z)pkdX0pEidK4da9v&qd&Vm3`Bg-Ov!?(UgfnMU_eO*goT;WoPSROxK^l&K&z0bv-Y z{hJ_zf&jmtysxP9lkF`AqO~b(msEh6xdKJKymW~zD||)f4u~;=Nw;JP4Ms$=XddDu zkF8^k7LlSb=1BROT3|!ku0Ufk3+RzVX+W+h&&$3+1;6Z(aD;?WqqF`Y?Il8-H~9(S1MeedNc> z_cdu6pX=~!q_y9}zp9zb$fAGiHU7|Z zlYhg|k)LY$eWm(QUU07T(|i9)eOLV-x!2BlAVcu#ZOrX;TJ*EcKRT}$Qa8PS)hZQP zfr~2O&-66rnHlSu8BbJS;Q`kPej@oHYz>ZIh5Akbq2Z^~kv%zauK$G}diamV+%hkO z9ZnGK#$Pw2e-r0iD!{<7{L^#g!R@Jsu{@03Ga$szl}r|VoyoGD&64Y;7dy1v`gtZX z$|Oex8CsbPty~7Z2=qLYXjYGJvl&{M471h8y{eUcoy`)ps~1-OgPF~orT(j>U{)P_vtHx6O>_}L%CG~@J3=ZBsYu=YK=Gx4XUerd<^lQiwa zKF0z1P*Tnsa(p`QDTrvO_~Q@gK^@<45LU6b_={5(exiS*N>U&X@qEh@Eu4O)p30j# zZ{bbkOn}0s7YejUBU2$4`SZAqy@~`t#&pv85ed6^gd}L=BR|#}AD#4xhKKKo;2Zz8sR7WSW7k;C$0z}BoY$@vsBDV%(*x=t+Ar?HlM06vdG zJc?5iv5Gd9SgWlQF>n<`18YU!&C7erJO`tRTLOOog^-j6x70xPhylS^NjuF)TXvf+<0;`{1z%KPotE0q4e|0(&n&ChTp>5NDT@kilr z&~xP6_?P^6Gl+B-kVK-dNF?#YSXTw)5q)yU*RiKQ4(k=9b0}fhu5kNEH1R_uy#vCD zf3MS>Lc|k&CGtss2D*s9YAQ;<0`+7*BPFHZ(>W7rO1UpeIXl$$yQdsI4X)MZsn+d37AN3kP?6g}eW|z7$G_Ipqdrf3lkn$G zhkJ`u8b2U%#!pCs=`xyF<1~YIOS6QrBqF7zA7u|SwWc49(GbOEzR7`9R9iNQ2{j{w zqTF)XkXkcyG4+zW_P7k-m5-Y$K|WN)uhkPoLz6&uqwtiKstaj7h;X z0g1%yn+#SHjk+k4jp|hhN6IUtqfP?ik-r17zz=atosmdSemtTNivCkCNJE;>GMz$E zs%Ii8l!s4;Dj9#@0c9jV2 z!WQkSyPQ+^m9)_V^gW5Skdh=&8HXp(-Fm0hiwCp4Mdt-M0uS;@Z|lUbYcqEfe^8qO zaoQxYF8AVYdj`5O^oHv7AM?SGU*}-F%0RqUTJma ziN`Qqm6^aW=L}v5@$8bpj1Xm-DQWQG|k7fm*7&#VT7{sZ91?;GTDzM`X zRRL-G%wIrCE*P*BD?Es^C5=UmipEJtmsXU97^UNjC!dNA0DjKT=XBoaNx?_eJ-wFv zJ!g!T-?L>HpAm7h6dT;Y9IJvDUsDBk z*PE2`DoK3P&Si}*dwBS^p36R6y1Lf9+FB2&Y`Xxs!ADZ_Qm_{_Xd*bvIG{qdCnPQVr7bKwp{uFH;`kq}qcRbW(N%?T<&xOU9LudA47Cp%mA!u$A zIoHFuuw~ALT82gyQa&v_r)aiZ0jPtIa|bqXNDTmg=H5=2sIqGnT`ZK-*9Amr;#|uQ z(^?ZxGD-$1QUD=|Wdq4ZL!^dVB}Gwqg@*zFM${q~!+|9MBGLIeYO0RfqIJ~LI>rg! z-*u6GixRD!f9HH3kQI)9TtMsGQtOaGf0#4VD%otjQ*;A&vYFK#Tvr8g;}=|}E%P!R z7>8=`={zhD2zgDjz$6A#gmS7<;dPBx6@QDikC4Z`=~$sgy&%3eN^eN%4azfTR*d52 zAl+uAatTCmfz(XhYnffY8pJDc=&t087j;}!u;jg)Z=yE|{Q0yf1A#91`-JSe*Sve+c%k?f;-rCA}Jb*-J8 zEy=9=s!~`l6=^RM`+qbkICv}=$d#SMX1Qy)w-zgS%{LsEY|d@5c~^_1A3q1KaALuM z8->I+p0goFp_y$y`cL_?`8QQcMaAt z=N7^jg;(*TDr8^AgmU7~LcC1OsLC_lfIp2Q0E|d>e2y1F#;T35RvSw3)kjs)H-056 z1xRe@G}2?2CSyP=vCSf^gySlM!I&aF#{Dz|g)Pf^)vQm@quP$^nQ{AYGrCvG$@Vn8uYHBH=$ zf-+enwtQP!+J5ap)p|spe|~iz7gmfPFr!(l5H-utCXy{%sE8#u%W~0~)50Ewy_kEY zr^bs?WMkIK1Ku{?cyCYD?*nW<9^s1BH;VSx9b1dx4HeyD`MR;&slsosF2^qgS_FMr z&KX=3;E#;19}I`OR1}VisLn!S%$DrB@U`dmf+7SEQ)bF?ZdEugWRYi)eafT@R3Ekq zP;P6I*v1OLF}imzLmrj=vap}}#-;3+D!1?S3rJ#8*~w`uLPk}l9|101M1D1(Pmo%0 zjk3i)%+^A;4d+gaq7ju_uvt)1tTDDDx92MA-Gqo@8jL?}B0=$~qo1~m#z6ZI?Vfd4 zu2R!1e5n==9glgva%Vv@O%{ParOvxM=ho4`Y!@^QA0cDEGy`+Rx_Yv~cGh#oifP4n zwZb4btn7siWOI$SHuIrOWV1GVv(IL#7hUoGsCZ8?g=3P7{p)mrNADZWkHzI?$V{^w z?5CUUR?!wlB{wu?RQrjtra)`4LYz@Gh90(qV#*WOn}p8)Qq8H%s&H7q%1132GA`E( z9oQ(>b|(dSb(+c?yYn;aG@UuRBXg9^9E8mZtIY&qtI{t5e~NMlF4WzXAstYE2akuv zsyuX33Ti?7j@*3`#Eqg|Fe`kbj8cd=QfyB|JgK=S8!qs|aC-%-rmMNPQ0ZL7{ zCJ$o*p;wyopa26S{+GECQ&KKOx}iXxM0DePl$DFkTgq?3SHoTb^}y(Ol6X2(fl@rp zt&s=)R*(us6XhWD5K~IlMYaoA-sx?w@)XrZxt10Gg%XAYdWrT47xYhyE~0C|3Xv4^ zoPPZ-_P9|E92%?%%eUBc#YskE5}5Eqx2WH(f|@+kG?C|8`skV8i+WX5R{^5#wF~mG z*rrK87xKd@NIV&={Djj{IQ`9sPe05XH_pwql&%y{T48IghqvZ=+?dR+`Ql~MiU;}) zO&6-9&|)lIVF8#4{mk`4Kz6+d@)}H@knQZke$Oq;nnB*B08bGX`Mu;PQgOzzkK+2x zt$v)>JPSpyGgrYKJ%q#u^bzRZ;_86#o#_$jAX)RWKd5zcj^OR?St2FSf?j23N>y{m zTv3sw`y0=b!x;Oom?O}fp*_NsClC!tLkfQu;X*_y^@or53x~`CMDZ?34o8#sXa_Nm zdlP#YQcSmy&iESp^b3L>)VCW82X;geJ$Awb!IrhDB#q#YegNOtBn}< zip=;-1^MjuBMtexOXMx(9>s$q297o@faFqMw;^_mIFdB`uI5O(o<@2^v1`uGNY%b5 zZvkI79?ccF#iM4?h~e|h*+i}FqMS3JCDp;cipZ~tH;Dt~^Qi!HQ&~%Sk5F7$+@7<; zbK>`!E-@{j`tfVNpGj>#^_U@2;v{mCBDGe+oh7w2%fQg~p{xXs7NSKP9WyKozT&B0 z04jv;fJ7r3K$UxPQom7$sGccSu-wJP8fmfmyw)!6XsbT2t(ihbOO3*om=>7dRHLw| z!ct~i#UhxQVp&NGjttije&#aoGfQ<(&s3d+yz>KM+!$ajn)-ebvx^}_TKcj8Afmy; zJf*hyW-@V;s6YcC2Yd1=r%AntDK5sQbDK+wlX|y1q~lETi0&AYOwIgYe-ZoPaq6#5JV?VS$X+yg#Xl zP+dT9LoTBIlU}6c%dp_Iu`2w{RKvcBvTeTXRGDSk$EN}YBz!eEkcM6RrE^^%J4HK| zK@r39vPjD$oBL8% z<(XITs?{vA=x8QWY?z(5BH~5T*-iIE&_Z-elpVe8`&qXekP3>eEfUa9a{8z{BVVX*2?= zg<{Z|RcvC&0tz7zOC&T7l82FO!yv@C)Megci)=8>2ELE=%NbjhIULDsMx;&drC27# z1}JE-N-kAZU8F8rP#dd}ruAJG={Kgph-gX#{FsTN*hK8-j$DlQ$FQ304*2E%9!@Iy zkZ{nr3*BKPbMBBF1&zk3#n(;M=mlAN6@ZJJ0oWpLhf-fd8Mi`YJX%Ek12s}WFIWq^ z2f80eB1a3e+1URA{tMe%Z6`GGEfN->^0;=)Yi6!ingvyh$A^3gNJn8>c!mEueH)(U z+y~0yht`mbg>y?NE|ytnL(MAhtvAjE1|{auDr7cEF?_}t;q}Hg!vhU6_K(T|^dI5@ zMR}c6kSi0lNWm!67iGq;_I$^a8}`6E2a0#R^kpIC${Sm7R?_PNA^2nx4AATKvQ_Gm zP-(ws+(F7JHs^cO9Ag^gxX2^tjA!t2sYEWn>bHXyBbe z@ZJb6q~i)b636HhiamnPaK$~31Uu!OVTL6l|DB2u+Msw^V&!Y(+B71Wp&K3@hpddw zt*22CiD?|$zwx`wnyMT1-t=?%PJgOjRkp88*L^ko?{bQ2D@VZD@nzIV{qq`>Jt7C! z7*HjfTCPp6R1P38wuscYyKg$%S523s{Zq^2^l^d=lj)f$$G}Gzf`$SuDM#_J^>E8z z6_kmhJ~`vWjnH@NrE9%;cXDd&zkO*PytQ_%jZFhs!(2@&A(96j#DY5-CHZM29R*6gyau#W zo`|C0Sw+(idK$@mPcCyqCHKzwfa2b?li_$8tF_~YDB;Dw<`vFNz9*B(Hu5}m5~_o@ zN2DIrSF?D}gPn5Diw5(pvckN31NAcYVE-mJGiBY2i$FK20*c^^`HVx8QL;nmT>C+M zEuB+(FE}yRYP$qeiI_0v9Tm`$m^GkdX(|IG0%z4vn_$)eWI7jA z%Z&_GSpnDOFb!x@A{#ij0NTBN`VtL#{DwxNx!gDBSJDwwALETJkswqhKn6$xQH`<# z+(~ZgCf>jcWom_7OrKi~8Ho|}#m3Rd8r< zAtPeFzHCWyU#@cMS&`!tjU1Q|Ibj1QQt7x$-CXAhQmDNX#1~#7J3_(3P|c0j^vS`T zY-}2_HsnWW?pl9jgG1X(a%&O9T>qt15IWhnt5NcbZ>ER+tn>3n+ec zOZh-Tnz;E{@ZF*0_o75i#V8=Cwa)%SCN9T*bMLxJ@3}}BKlqpUnxBWnQooe40ee=% z>{K|X1MernDsd_}(a?~yRoJF=ZmH6BqqKl2 zH9CH!*nm0*>cpiP3=KJ4@2Qe63ml3PoW7Ta zNl1N<*yzU82%x~Pdd6_~l%7AR45=HRTyy7Jc{nZ9C|GiTnM-VFJZgy}-1 zas?ZZu|!Ns@NFo$A0txlv5;yb8NB~}nm)EB#5=4jCDIr26%zD}>b1&+Z z7BE+ka;;2*@jJb!lw#uyTUlq=S?i3P2?itXdS9mQWbDtElfYF8^rCk^kpn8pw3;Wy z`*e^VTOr6!WWKUyKwvQQ#ELN1BS*77v!7ZLxiIy?3u&-r%EepgX}pz@PcOhW68aTh zgLrXP5e9<0htoY9Elq-uqk~^&S!A4kVT^Vno}sr>*N9lG!#7^KaAieSe;P%upNwxX z=w=vO=%$Ps4j@t38Lk%@v4i1zNKvXe*zT2cvpK^iw}My&d>iOmR1Fl-_-#OO)}2HG zus@A3!m-Eke3R%V#WYqjL4jA8K3|KWS*T_OFNBqK30jNc(J6uo*5OJtNkT->3kGTc zCDt@V`J;mlMlcmnC>3VfY{v3p43*@}a-+(Y8Q7b{%JhOujAno3L6fm}jseznym06! z$E3Tz1r$+G8{}0QcEVGr&v!2|&L+nG4w$tR!Zao2(p)xS%zj+e2{IIP!fDax4Y*f= z$k%Y3NW*Gbfodn3Y_M5L1}QL8V|U`E*OK;UX1EblzKwEPTjE@Jwolpv?`)ECN?1^x za#C2F)GAJyfvr7v$lkPFYXfBq7Hpg7rYtg!w2q8yTfArLD=igCavkEbP^B{~sG%o$ z(&}u8r!Ecoh&YyXrSPCH2jcjZD`o|v!IH^RH|wWpcLnP-al@jCrWlFYLixmkQe==& zG|wBTrj9XuX{LL6o>@*pbBwSB;GYU~&+)xAe9l~!se8?hf_bTytGd;mzGiwURxWS?`eaQ(bu2ZjEjWlP(${V?8g89_o!kd#a3U&8VBbW`-Ttb;c zs7<2WQ*Ve*#SPS@;CJy8xMBLp*)U8o3(&g_4A!V8BIE52_Vl^lr{_lJB>rO&dc$s; z`mDvq2&0jvUT=tRn4*;UT(2*3iqr3`##)3TZs=&5v-7KbtcwzeC7#yh zRZq}$n07o>!kszB8$j6>CXn1t&z{pa=9^4(i!j6jh)Fon(3^u1(XDqik^~eDvM@j9 zOB0`!_>8aPDyoZzD^IaikYYt~*~YXUHhC#)FR( zr+3A%ihY&l@iT1@Uq59{-ZgD0 z(LXPTij$Zwk5&=Xc@*(Dua07Ygkl_KO0qVTF6rcFOG(Jnb(zHXE=$T!>gU&IroQE< zzO){(#81aOv#qsOah9vMu;_Uu-jdU{waRsFt(+Nvqf}57xrj)0AxL>0;5kQf33(v# z4t#QfNZPU1oWZ~z1;K^&^eRH#?V&ez=|gNiMeoNp5D^Gnfn3mU_-~Z#SS#cn8Na-E zx{}Q?#Bec~<;l*C{iITx;6H<0CKw3hprZTmSo*K;f8YPU|9$`a{`dXw```D!?|Vf@V literal 0 HcmV?d00001 diff --git a/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch b/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch new file mode 100644 index 0000000..beab11e --- /dev/null +++ b/remove-fcf-protection-for-gcc-7.3.0-x86_64.patch @@ -0,0 +1,25 @@ +From b2723527bfbfa90d5fc77bf171a13e934d707471 Mon Sep 17 00:00:00 2001 +From: jiangchuangang +Date: Fri, 15 Nov 2019 11:13:48 +0800 +Subject: [PATCH] remove -fcf-protection for gcc-7.3.0 x86_64, -fcf-protection require GCC 8. + +--- + rpmrc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rpmrc b/rpmrc +index 630c8c0..0b516aa 100644 +--- a/rpmrc ++++ b/rpmrc +@@ -6,7 +6,7 @@ optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasyn + optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection + optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection + optflags: ia64 %{__global_compiler_flags} +-optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection ++optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection + + optflags: alpha %{__global_compiler_flags} -mieee + optflags: alphaev5 %{__global_compiler_flags} -mieee -mcpu=ev5 +-- +2.19.1 + -- Gitee