# Maintainer: Alexey Pavlov # Maintainer: Ray Donnelly # Maintainer: Naveen M K # Contributor: Saul Ibarra Corretge # Contributor: Frode Solheim _primary_python="yes" _pybasever=3.14 _realname=python if [[ "${_primary_python}" == "yes" ]]; then pkgbase="mingw-w64-${_realname}" pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3" "${MINGW_PACKAGE_PREFIX}-python${_pybasever}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3" "${MINGW_PACKAGE_PREFIX}-python${_pybasever}" "${MINGW_PACKAGE_PREFIX}-python2<2.7.16-7") replaces=("${MINGW_PACKAGE_PREFIX}-python3" "${MINGW_PACKAGE_PREFIX}-python${_pybasever}") else pkgbase="mingw-w64-${_realname}${_pybasever}" pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}${_pybasever}") fi pkgver=${_pybasever}.3 pkgrel=1 pkgdesc="A high-level scripting language (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64') license=('spdx:PSF-2.0') url="https://www.python.org/" msys2_repository_url="https://github.com/python/cpython" msys2_references=( "cpe: cpe:/a:python:python" "cpe: cpe:/a:python_software_foundation:python" ) depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" "${MINGW_PACKAGE_PREFIX}-expat" "${MINGW_PACKAGE_PREFIX}-bzip2" "${MINGW_PACKAGE_PREFIX}-libffi" "${MINGW_PACKAGE_PREFIX}-mpdecimal" "${MINGW_PACKAGE_PREFIX}-ncurses" "${MINGW_PACKAGE_PREFIX}-openssl" "${MINGW_PACKAGE_PREFIX}-sqlite3" "${MINGW_PACKAGE_PREFIX}-tcl" "${MINGW_PACKAGE_PREFIX}-tk" "${MINGW_PACKAGE_PREFIX}-zlib" "${MINGW_PACKAGE_PREFIX}-libb2" "${MINGW_PACKAGE_PREFIX}-xz" "${MINGW_PACKAGE_PREFIX}-tzdata") makedepends=( "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools" "autoconf-archive" ) #options=('debug' '!strip') source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz" "EXTERNALLY-MANAGED" 0001-build-add-with-nt-threads-and-make-it-default-on-min.patch 0002-build-Define-MS_WINDOWS-and-others-when-compiling-wi.patch 0003-sysmodule-Implement-flags-_is_mingw-is_mingw_ucrt-an.patch 0004-configure-add-MACHDEP-and-platform-on-MINGW.patch 0005-build-Add-default-cross-configuration-for-MINGW.patch 0006-configure-enable-largefile-support-by-default-for-Mi.patch 0007-build-Add-PC-to-CPPFLAGS-and-to-SRCDIRS-on-Mingw.patch 0008-build-add-MINGW-support-for-posixmodule.patch 0009-exports.h-Add-support-for-MINGW.patch 0010-configure-add-options-so-that-shared-build-is-possib.patch 0011-build-Add-PYD_PLATFORM_TAG.patch 0012-build-Add-dynload_win-support-for-MinGW.patch 0013-build-Use-.pyd-extension-suffix-fix-import-lib-insta.patch 0014-build-Configure-SOABI-and-EXT_SUFFIX-for-MINGW.patch 0015-build-Define-MS_DLL_ID-for-sys.winver-on-MINGW.patch 0016-build-Ignore-main-program-for-frozen-scripts-on-MING.patch 0017-socketmodule-add-MINGW-support.patch 0018-build-enable-winreg-msvcrt-_winapi-winsound-and-_ove.patch 0019-sysconfig-make-_sysconfigdata.py-relocatable.patch 0020-sysconfig-treat-MINGW-builds-as-POSIX-builds.patch 0021-sysconfig-Change-the-get_platform-method-in-sysconfi.patch 0022-build-semi-native-build-sysconfig.patch 0023-ctypes-Add-support-for-stdcall-without-underscore.patch 0024-ctypes-add-suppor-for-ctypes.pythonapi-under-MINGW.patch 0025-ctypes-find_library-c-should-return-None-with-ucrt.patch 0026-site-Customize-for-MINGW.patch 0027-site-Change-user-site-packages-path-to-include-the-e.patch 0028-python-config-output-Windows-paths-for-the-shell-var.patch 0029-python-config-use-the-Python-variant-of-python-confi.patch 0030-mingw-prefer-unix-sep-if-MSYSTEM-environment-variabl.patch 0031-build-Remove-MAXPATHLEN-default.patch 0032-build-dont-link-with-gettext.patch 0033-use-gnu_printf-in-format.patch 0034-build-remove-usage-of-MS_COREDLL.patch 0035-getcompiler-expose-MINGW-toolchain-related-informati.patch 0036-build-fix-signal-module-build.patch 0037-build-build-winconsoleio-and-_testconsole.patch 0038-multiprocessing-expose-sem_unlink-to-fix-multiproces.patch 0039-build-link-win-resource-files-and-build-pythonw.patch 0040-pycore_fileutils-add-MINGW-support.patch 0041-configure-fix-inet_pton-check.patch 0042-importlib-bootstrap-path-sep.patch 0043-configure-set-MINGW-stack-reserve.patch 0044-tests-fix-test_bytes.patch 0045-timemodule-add-MINGW-support.patch 0046-configure-Disable-checks-for-dlopen-dlfcn.patch 0047-venvlauncher-Build-venvlauncher.exe-from-PC-launcher.patch 0048-venvlauncher-try-looking-for-the-versioned-.exe-firs.patch 0049-venvlauncher-Skip-find-python-in-Registry-for-mingw-.patch 0050-configure-don-t-check-for-clock_-functions.patch 0051-CI-test-the-build-and-add-some-mingw-specific-tests.patch 0052-configure-Default-to-without-c-locale-coercion-on-Wi.patch 0053-tests-Fix-some-failing-tests.patch 0054-build-def-VPATH-when-compiling-Python-sysmodule.c.patch 0055-configure-correctly-find-native-python.patch 0056-build-Add-extra-flags-for-_bootstrap_python.patch 0057-getpath-add-support-for-mingw.patch 0058-build-Don-t-build-_posixsubprocess-on-Windows.patch 0059-ssl-module-add-MINGW-support.patch 0060-configure-Include-winsock.h-when-checking-for-netdb-.patch 0061-configure-always-build-_multiprocessing-on-Windows.patch 0062-configure-build-mmap-module-on-win32.patch 0063-configure-set-BUILDEXEEXT-and-EXEEXT.patch 0064-configure-fix-building-some-test-modules.patch 0065-Always-convert-to-before-passing-though-pathcch-func.patch 0066-pylifecycle.h-remove-conflicting-_Py_CheckPython3-de.patch 0067-dynload_win-add-env-var-for-reverting-the-legacy-DLL.patch 0068-dynload_win-Port-GetPythonImport-to-MINGW.patch 0069-dynload_win-make-sure-to-only-use-backslashes-for-pa.patch 0070-dynload_win-don-t-run-_Py_CheckPython3-for-MINGW-bui.patch 0071-build-Build-and-install-libpython3.dll-stable-ABI.patch 0072-configure-define-_DEBUG-for-a-debug-build.patch 0073-configure-fix-multiprocessing-module.patch 0074-build-add-MINGW-support-for-selectmodule.patch 0075-configure-disable-various-modules-on-MINGW.patch 0076-configure-Add-libraries-to-fix-ctypes-on-MINGW.patch 0077-configure-Enable-_uuid-on-MINGW.patch 0078-configure-make-incompatible-pointer-types-a-warning.patch 0079-tests-test_makefile-normalize-path.patch 0080-Fix-include-naming-for-cross-build.patch 0081-Fix-format-warning.patch 0082-Fix-pragma-warnings.patch 0083-math-pyhash-MINGW-support.patch 0084-tests-Fix-test-for-library-name.patch 0085-dictobject-MINGW-support.patch 0086-build-Fix-export-Py_GetBuildInfo-symbol.patch 0087-build-Allow-profile-tests-failure.patch 0088-build-add-support-for-building-C-modules.patch 0089-build-build-fix-the-wmi-module.patch 0090-Fix-exports-for-_suggestions-module.patch 0091-compileall-Normalize-paths.patch 0092-configure-enable-64-bit-time-support-for-32-bit-buil.patch 0093-configure-Work-around-broken-pc-file.patch 0094-makesetup-make-sure-a-library-path-is-passed-when-bu.patch 0095-venv-also-install-the-versioned-launchers.patch 0096-configure-set-_WIN32_WINNT-version.patch 0097-tests-fix-sysconfig.test_get_platform.patch 0098-pycore_time-fix-missing-timeval.patch 0099-mmapmodule-define-DONT_USE_SEH.patch 0100-build-Add-ABIFLAGS-to-targets-when-needed.patch 0101-sysconfig-patch-nt-schemes-again.patch 0102-configure-define-_PYTHREAD_NAME_MAXLEN-for-MINGW.patch 0103-configure-allow-older-autoconf.patch 0104-tests-allow-sys.abiflags-to-exist.patch 0105-configure-fix-AC_PATH_TOOL-usage.patch 0106-makesetup-make-sure-to-link-the-built-libpython.patch) # Helper macros to help make tasks easier # apply_patch_with_msg() { for _patch in "$@" do msg2 "Applying ${_patch}" patch -Nbp1 -i "${srcdir}/${_patch}" done } prepare() { cd "${srcdir}/Python-${pkgver}" apply_patch_with_msg 0001-build-add-with-nt-threads-and-make-it-default-on-min.patch \ 0002-build-Define-MS_WINDOWS-and-others-when-compiling-wi.patch \ 0003-sysmodule-Implement-flags-_is_mingw-is_mingw_ucrt-an.patch \ 0004-configure-add-MACHDEP-and-platform-on-MINGW.patch \ 0005-build-Add-default-cross-configuration-for-MINGW.patch \ 0006-configure-enable-largefile-support-by-default-for-Mi.patch \ 0007-build-Add-PC-to-CPPFLAGS-and-to-SRCDIRS-on-Mingw.patch \ 0008-build-add-MINGW-support-for-posixmodule.patch \ 0009-exports.h-Add-support-for-MINGW.patch \ 0010-configure-add-options-so-that-shared-build-is-possib.patch \ 0011-build-Add-PYD_PLATFORM_TAG.patch \ 0012-build-Add-dynload_win-support-for-MinGW.patch \ 0013-build-Use-.pyd-extension-suffix-fix-import-lib-insta.patch \ 0014-build-Configure-SOABI-and-EXT_SUFFIX-for-MINGW.patch \ 0015-build-Define-MS_DLL_ID-for-sys.winver-on-MINGW.patch \ 0016-build-Ignore-main-program-for-frozen-scripts-on-MING.patch \ 0017-socketmodule-add-MINGW-support.patch \ 0018-build-enable-winreg-msvcrt-_winapi-winsound-and-_ove.patch \ 0019-sysconfig-make-_sysconfigdata.py-relocatable.patch \ 0020-sysconfig-treat-MINGW-builds-as-POSIX-builds.patch \ 0021-sysconfig-Change-the-get_platform-method-in-sysconfi.patch \ 0022-build-semi-native-build-sysconfig.patch \ 0023-ctypes-Add-support-for-stdcall-without-underscore.patch \ 0024-ctypes-add-suppor-for-ctypes.pythonapi-under-MINGW.patch \ 0025-ctypes-find_library-c-should-return-None-with-ucrt.patch \ 0026-site-Customize-for-MINGW.patch \ 0027-site-Change-user-site-packages-path-to-include-the-e.patch \ 0028-python-config-output-Windows-paths-for-the-shell-var.patch \ 0029-python-config-use-the-Python-variant-of-python-confi.patch \ 0030-mingw-prefer-unix-sep-if-MSYSTEM-environment-variabl.patch \ 0031-build-Remove-MAXPATHLEN-default.patch \ 0032-build-dont-link-with-gettext.patch \ 0033-use-gnu_printf-in-format.patch \ 0034-build-remove-usage-of-MS_COREDLL.patch \ 0035-getcompiler-expose-MINGW-toolchain-related-informati.patch \ 0036-build-fix-signal-module-build.patch \ 0037-build-build-winconsoleio-and-_testconsole.patch \ 0038-multiprocessing-expose-sem_unlink-to-fix-multiproces.patch \ 0039-build-link-win-resource-files-and-build-pythonw.patch \ 0040-pycore_fileutils-add-MINGW-support.patch \ 0041-configure-fix-inet_pton-check.patch \ 0042-importlib-bootstrap-path-sep.patch \ 0043-configure-set-MINGW-stack-reserve.patch \ 0044-tests-fix-test_bytes.patch \ 0045-timemodule-add-MINGW-support.patch \ 0046-configure-Disable-checks-for-dlopen-dlfcn.patch \ 0047-venvlauncher-Build-venvlauncher.exe-from-PC-launcher.patch \ 0048-venvlauncher-try-looking-for-the-versioned-.exe-firs.patch \ 0049-venvlauncher-Skip-find-python-in-Registry-for-mingw-.patch \ 0050-configure-don-t-check-for-clock_-functions.patch \ 0051-CI-test-the-build-and-add-some-mingw-specific-tests.patch \ 0052-configure-Default-to-without-c-locale-coercion-on-Wi.patch \ 0053-tests-Fix-some-failing-tests.patch \ 0054-build-def-VPATH-when-compiling-Python-sysmodule.c.patch \ 0055-configure-correctly-find-native-python.patch \ 0056-build-Add-extra-flags-for-_bootstrap_python.patch \ 0057-getpath-add-support-for-mingw.patch \ 0058-build-Don-t-build-_posixsubprocess-on-Windows.patch \ 0059-ssl-module-add-MINGW-support.patch \ 0060-configure-Include-winsock.h-when-checking-for-netdb-.patch \ 0061-configure-always-build-_multiprocessing-on-Windows.patch \ 0062-configure-build-mmap-module-on-win32.patch \ 0063-configure-set-BUILDEXEEXT-and-EXEEXT.patch \ 0064-configure-fix-building-some-test-modules.patch \ 0065-Always-convert-to-before-passing-though-pathcch-func.patch \ 0066-pylifecycle.h-remove-conflicting-_Py_CheckPython3-de.patch \ 0067-dynload_win-add-env-var-for-reverting-the-legacy-DLL.patch \ 0068-dynload_win-Port-GetPythonImport-to-MINGW.patch \ 0069-dynload_win-make-sure-to-only-use-backslashes-for-pa.patch \ 0070-dynload_win-don-t-run-_Py_CheckPython3-for-MINGW-bui.patch \ 0071-build-Build-and-install-libpython3.dll-stable-ABI.patch \ 0072-configure-define-_DEBUG-for-a-debug-build.patch \ 0073-configure-fix-multiprocessing-module.patch \ 0074-build-add-MINGW-support-for-selectmodule.patch \ 0075-configure-disable-various-modules-on-MINGW.patch \ 0076-configure-Add-libraries-to-fix-ctypes-on-MINGW.patch \ 0077-configure-Enable-_uuid-on-MINGW.patch \ 0078-configure-make-incompatible-pointer-types-a-warning.patch \ 0079-tests-test_makefile-normalize-path.patch \ 0080-Fix-include-naming-for-cross-build.patch \ 0081-Fix-format-warning.patch \ 0082-Fix-pragma-warnings.patch \ 0083-math-pyhash-MINGW-support.patch \ 0084-tests-Fix-test-for-library-name.patch \ 0085-dictobject-MINGW-support.patch \ 0086-build-Fix-export-Py_GetBuildInfo-symbol.patch \ 0087-build-Allow-profile-tests-failure.patch \ 0088-build-add-support-for-building-C-modules.patch \ 0089-build-build-fix-the-wmi-module.patch \ 0090-Fix-exports-for-_suggestions-module.patch \ 0091-compileall-Normalize-paths.patch \ 0092-configure-enable-64-bit-time-support-for-32-bit-buil.patch \ 0093-configure-Work-around-broken-pc-file.patch \ 0094-makesetup-make-sure-a-library-path-is-passed-when-bu.patch \ 0095-venv-also-install-the-versioned-launchers.patch \ 0096-configure-set-_WIN32_WINNT-version.patch \ 0097-tests-fix-sysconfig.test_get_platform.patch \ 0098-pycore_time-fix-missing-timeval.patch \ 0099-mmapmodule-define-DONT_USE_SEH.patch \ 0100-build-Add-ABIFLAGS-to-targets-when-needed.patch \ 0101-sysconfig-patch-nt-schemes-again.patch \ 0102-configure-define-_PYTHREAD_NAME_MAXLEN-for-MINGW.patch \ 0103-configure-allow-older-autoconf.patch \ 0104-tests-allow-sys.abiflags-to-exist.patch \ 0105-configure-fix-AC_PATH_TOOL-usage.patch \ 0106-makesetup-make-sure-to-link-the-built-libpython.patch autoreconf -vfi } build() { declare -a _extra_config if check_option "debug" "n"; then _extra_config+=("--enable-optimizations") # Upstream defaults to -O3, so we can do too CFLAGS+=" -O3" # FIXME: https://github.com/msys2-contrib/cpython-mingw/issues/10 if [[ $MINGW_PACKAGE_PREFIX == *-clang-* ]]; then _extra_config+=("--with-lto=full") fi else CFLAGS+=" -O0 -ggdb" CXXFLAGS+=" -O0 -ggdb" _extra_config+=("--with-pydebug") fi mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" ../Python-${pkgver}/configure \ --prefix=${MINGW_PREFIX} \ --host=${MINGW_CHOST} \ --build=${MINGW_CHOST} \ --enable-shared \ --with-system-expat \ --with-system-ffi \ --with-system-libmpdec \ --without-ensurepip \ --enable-loadable-sqlite-extensions \ --with-tzpath=${MINGW_PREFIX}/share/zoneinfo \ "${_extra_config[@]}" make } check() { cd "${srcdir}/build-${MSYSTEM}" # Some basic tests to ensure nothing major or MSYS2 specific features are broken ./python.exe "../Python-${pkgver}/mingw_smoketests.py" MSYSTEM= ./python.exe "../Python-${pkgver}/mingw_smoketests.py" } package() { cd "${srcdir}/build-${MSYSTEM}" make -j1 install DESTDIR="${pkgdir}" # gdb pretty printers for debugging Python itself; to use: # python # sys.path.append('C:/msys64/mingw64/share/gdb/python3') # import python_gdb # reload(python_gdb) # end if [[ "${_primary_python}" == "yes" ]]; then [[ -d "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/ ]] || mkdir -p "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/ cp -f python.exe-gdb.py "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/python_gdb.py fi # some useful "stuff" install -dm755 "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/{i18n,scripts} install -m755 "${srcdir}/Python-${pkgver}"/Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/i18n/ install -m755 "${srcdir}/Python-${pkgver}"/Tools/scripts/{README,*py} "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/scripts/ # License install -Dm644 "${srcdir}/Python-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}${_pybasever}/LICENSE" # PEP668 install -Dm644 "${srcdir}/EXTERNALLY-MANAGED" -t "${pkgdir}${MINGW_PREFIX}/lib/python${_pybasever}/" # fixup shebangs for fscripts in idle3 idle${_pybasever} pydoc3 pydoc${_pybasever}; do sed -e '1 { s|^#!.*$|#!/usr/bin/env python'"${_pybasever}"'.exe| }' -i "${pkgdir}${MINGW_PREFIX}"/bin/${fscripts} done # default aliases for all scripts/binaries if [[ "${_primary_python}" == "yes" ]]; then # Default names are aliases for Python now cp "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe "${pkgdir}${MINGW_PREFIX}"/bin/python.exe cp "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe "${pkgdir}${MINGW_PREFIX}"/bin/pythonw.exe cp "${pkgdir}${MINGW_PREFIX}"/bin/python3-config "${pkgdir}${MINGW_PREFIX}"/bin/python-config cp "${pkgdir}${MINGW_PREFIX}"/bin/idle3 "${pkgdir}${MINGW_PREFIX}"/bin/idle cp "${pkgdir}${MINGW_PREFIX}"/bin/pydoc3 "${pkgdir}${MINGW_PREFIX}"/bin/pydoc fi # delete anything that could conflict with the primary Python if [[ "${_primary_python}" != "yes" ]]; then rm "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe rm "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe rm "${pkgdir}${MINGW_PREFIX}"/bin/python3-config rm "${pkgdir}${MINGW_PREFIX}"/bin/idle3 rm "${pkgdir}${MINGW_PREFIX}"/bin/pydoc3 rm "${pkgdir}${MINGW_PREFIX}"/bin/libpython3.dll rm "${pkgdir}${MINGW_PREFIX}"/lib/libpython3.dll.a rm "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/python3-embed.pc rm "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/python3.pc rm "${pkgdir}${MINGW_PREFIX}"/share/man/man1/python3.1 fi } sha256sums=('a97d5549e9ad81fe17159ed02c68774ad5d266c72f8d9a0b5a9c371fe85d902b' '3981fed74ee7d43ad69bd67e634e03d7bf6890558a87062380112e195688728a' '88bebb5831b6bf02c8bbdf720afe6d2f079ee6a884d32a4d79d360e13fdfcb02' 'b1e4738eb58e8493bee2cd3d6f1e11a0c664f99ec0ca45b4b5ccb4cb3d5f3b96' 'cf8e14cb2eb020680fa403e5e8836a1ccdaba691572fecf07ae6bbe8893fa884' '75c1ce82a6fc317cdfbf23c914e155df8302f17882f49b17008e02304086a325' 'b4efa498b016338b97edadf33463592817474d9c624dee971bcf8c798f3dd705' '66511bf61e6f2cad7a789a441b096060c5277331e6f335cca5557f12f8deb3c7' '0270fb4fde7125fffa8f04652bff2cd0ecae5b039ae403127fb2fe0e56efe3ab' '8025c58b73398c32cf902d5d5e0d0c265fca4d0e018b6ec2b1d7691418c76902' '05cc771d3b7237df7a63616ac0c708ea141b5164d68b0569ae1e98c7d0b9e0b7' 'bac38120d337f8b9e1d5511398aa13691000f40dcc6ea5531cd4982e24ad7b71' '1243fbc81a103f7f528897d10ba78cd8d65b611fe19262c66e7f3191794d520a' 'a5925c17fc6759cfe1415cc079b773e0313994a85678d67ce40a308ed84471eb' 'dd371a2af01754b7bcdd9356b5169b284774256ccc072b71d1ae0824f1b79966' 'aa381cd970184ab51741e9a8eb2d2eebdde621ad0f3a9d8e34bda9118f98d6a6' '08a09b33b358f9b9506b0062d82cdfd54da9095ddfd07374f7b518d728777702' '5e3545873164fa186653b631221aafcb11dab537a2b6c71f1ad98e3ce72ca5bd' '4367b7877ea3245d90cad1a9b8b943fa59bc514620ba582c1fa08ac3b5c66f8d' 'c4c68270c2d6a2a430e7dbc740aa1d1123828b71967a27b25a38f7e04dcff131' '0c6d871f0b5e48c46c571d4103f18ce5b67a5f8884afe859078cb42854fa0069' 'd72c65e333ff63386fdba66027efad60b0d6ae39d2830af7aff0a318c19c2cfd' '06f8d0c361b964326e729c4eb1c58f345d5bf3a91aaa46c773cd041ca90756ae' '8b3c4d567e3f8fbc525210d70b46cd326f0980fe994977d889020e0bfb453730' '0a7f9eeff6c2caf6b819d378a0d0e9e8e214713e99f61b6be607c6fef97a58e0' '315f729c8735020e19cbdf56e9114d062faff57cf661d505e0f46234b1d857ee' '3eea52603af1bcc1b6f108bba1548b2f8073486c7d7091d8c4c054e9d37ec639' 'ada6454a2064cd258a7afe79675ca3d70fb2d2f6e5f572f0bd127b08abb3c992' '217cb6c30a52b9a4a31b567195c10a9772fc6ddbdcf3e03e1bba9d58bb2e2314' '40073c83a7280da2896a541ee3f68f779c449336edee04d580912bf882259515' '3d5b753bdee85d90863b732cd455c32523758027bd4896446eed044e978f4c81' '8f3e51c27923088a6a5cccb99c545fd78e7f7e66915f647be9d47ec7a5e46866' 'ff74b9bb8be9a4f6ce44d16ec768dc5e7511e75bacd9ad5687e9f963a591558b' 'd10137cecd8e39f1433fabea947684c16ef30731ef5dbaf428bc0e08ca76f823' 'dc072f30897a49a8bf72ba410c262950332f9a90578b0e534f76056f39651d7f' '2905a13e7c529257a1a52623b129ee08cca73e4c516b01fa12135da3b204f9f1' 'd350f53978acc48e8086ee490a24e48af4ba3e290eacc1c1d67d2ddf7c3beb20' 'e3416cb32b8d9fda87c93c896f0e48f7c919488c91bfd63169e94163e698c73d' 'c33a6ffba8b697ee7a650625f4c2f41a357fb2a2eeca5ca6d84d558a990eeaae' '4ec8d154285d83e5a534d30d105b8685bc28f4ca297636f226f572ffec40cb44' '15765fdff5c6f604548ab0d0d5c0a6972dd503f37f0a288807bb0beb79d27831' 'b4915d761cf538ac4f149b4ec2d6553c1c523129ce70971c6175866750aa906d' '652c6752cc5f3b4c8244cb2b43c01aa6824a872d638d9eb36e2fffb17085fa9a' '8a85fcaba75004723b680975d6c988aa78d1438680f4911ea6949325d86d3ba6' 'cf1310e2e3ff0906bd6b67c8c594966ee05737fae14a14f2f5dbdbc29662177e' '65e3423829def546b5370b46bb13ea5008ca1c5ceea4be6fd2a0c7f5f1154e98' '22830c52d9d2602651e29cded01c5bca6bc48814d151cb500983cff14f45aa38' '33f6ab0ffe387f0764a8b74e30a1ab8af0348feb21804aea262bca921b22e2d9' '6d89592f9f4d52ecc2a20db0e65d68b2ab9f4db15b1f6d50a3dc35a7a7ecdf86' '49361bf22f80dd076fb93b42657bd44117a8f7d431cbbe388497c54c5f8b2009' '26e4507f156d252d14574a6f9ede73164f82eaea07ffe9842ea06ec5d2dc0591' '3aa936a8707237b887eedc310858d759d4676e5778b7ad55ef3365709ec82ba5' '9990238f22bc79970d83da5aec2433b693ff74d009625c779413329057a8bf70' '4d6ad58b056ffc80c40904c5ec4b004091b24e91458ccd2c7bab657f764ae30d' 'df2437a3af8087a51aecb63aeefed7d1b9d2c13297406e6e41e6a69fa557de76' 'cbe84a7ce9d96c501db538fed53a4210ec35633981a39c13887795d7ee9ffdf9' '415b862f2a6bc9aae766b433534b98c7965d2260241b66130e9598c9737517e6' 'a2250ea30a21f984968dd1b3f21aac68bb75ad53c3bf7e5920fd28a4bac65d94' 'da2978e5067f7458955ded6ebb2ae78aead1ace8b2991883c313665f80f3999f' 'f5e4520516d0a761f232f0dc045c0538e382eca26c85b58fed0480d363367601' 'afde92687973af2420b7eb43d3a370025dc2ca645f94dc2edd45d3355434a583' 'ab64cbe1bcc4e99a2681be64bf1ebd154b22b66070d55328b0b1459be71d541c' '6df7102331ff3bb72cca42b37c83874ba302d255e219ce5d2018670183c2bc31' 'f20590c25f20b60fe3bf270418feaf115a760191439182c1e80adfafd4df407e' '8a80136a918e223d1c30e077729af103c3dfb065eec2e5906f1d838e8bd3a7bc' '99580e1306cbad1f2095f9aa85a77f0c192f63bc6e235f3eac6684c651804ae2' '3e0ced95885757a00c3ecf47d1d9e4e834e72065506265fc1b020eec450e6309' '80b039075e0448bea1900b3f917b3f71810243a53347d16f86a9b5c099436bcd' '052259a4cc50ebd95b5412e9b1068fd2526b8a7fd02add24cc5fa35b80c4f1fe' 'd20e7f4f8be1073f766bfa388e4a18d6aa7dde217ac85d42168b9e483cc4523f' 'ddbbfeac3a8de2339365dc1aebf0b37a9a7f6ce31eda61331b9352a5e34955af' 'bbc93c1c9e9cb9181182169c5b3399fd36b16dbb1a0d834af5e4f9efc864bb6c' '330588107bee45b8584084daab96173b602a9ba9c15237d3afd0b75ea3ff8eff' '493179a5c75e3e5da8766f6cea71c9ed1ee5788ed92cd49c86648552ef3e76ed' 'b2fc209992635fff008b28d67fc5db79f46d58020c409d2fbabcb1a783e9824f' 'dbbdbe156ca04c8b484252612b441e962547714949f5089e4e7f0664b5f5f3d6' '07a15b69d19afcce028dc5afd67366efadd57d1d0483593f18aa0fa4345f40c5' '2c3fc7e1d708c40142994a27df935d226c2d231f1268aadcf098d9a2cc4840f8' 'fd9bd04c6a8ca3df5f2bf83e8e95f5430638bd469f39c9ceff1d2acd33d1eab7' 'b7f2861f0c9e6189ab74027731454028dfc80caf24a59b16fb13d46bef1ebeee' '3587a270e20344f809991e1d45fc27a7323bd9dbb042e8c39df5071570b60b64' 'e19ad14a9366133ef0d8945998594b40b1a2456c5655ed5c8dd3a72b69ec1cc3' 'c75934c571410a9376cd312aa674c4cbdf21a6f1d55bd853eb5cd0c851445fbf' 'db10447211655d1c3c7abceca357cbf238872976619085e82ee54bf1a2c8eb6a' '409c4061bc808a7861a49ab6be1bea845ba00445e3d9d4322297d8bce8f39ec9' '027fe9e7e628431225be9ff09d3d7c33d79652d32f19bc0f7259617d85cf0d54' '7d55ff0ed6345d7f1843aac9a88c6105e5200a9372b9724075069c6b48736e39' 'c006049f81cd702911b12a13765f8f2f4660c482644ca2095f581e40607116f6' '070296ac79f046a8a961c527f40eb1bc099d7a97eae95feff55aeaa021219b90' '22188e6fb5834dc54fce58662d752ef770a53d02b9ddc3669b4e503abe5b8b86' '7d3ce4a5476ff18b227637a5e0bf64bca038cebd9f2b20f049e68309cf6f3e68' 'cf5472f4cd85b10ed866213550dc1120750a72e6e07b14a3e2d6819728e5676d' '8fd5dddd18145d452a776bbb6c7a69bc14de3aebe5ab4603df24ec13452acb77' 'e3385bf25e1bb4cec8f68b097b892e6a33812f651d717a1b9e64dd3874792688' 'fcfdb4f255b180d37755395f31fc88a58231bed293ed8f5021cb2b023cff3894' 'ae989ef6bb61649484b38e78ff0ea4cff6ac286f23506c3ecdc154b960ee86f9' '53577ee56c3ca9c221cda1f790b5efaf8192e5172966184301a3e33acca0132a' '1d09ee244db827b52b73f64792931c66a47a1f367d4b558e590f37f860973b4c' '3f0a9139fcad3bf18ee88d87f7e81f73e503243b765baca61abb740fe6c715d8' '2acfd5549f2b8c5c3bcf95d096d439234a013d9714669ba595c1a8056120dee1' '2447e2a895b93b42111783e4454b646ba19b85081a6ed0ccb08c67f7e545daa2' '73c1442f490a0988c2c825bec6e7334f395f46ac978759d2baadc7317805b953' 'b67a37ad6c64e150b793e88f4d63f8a0f9092af16bf07c4c01910b56e07d32b9' 'e23de32325daced7f8e7e155509ac85ec8ee17cbfd7f827deed303be0641fa87' '5de2bbd59aa741b28577e2ba016f55fcaf041cf0d0cab4bb2242156d27360fd8' 'a52a592d8a6bf2465f94b6d8b5a27e235691bf3a7f59ade77a6d74a4c9af614c' 'c1afc607acae6103cbd61733046edeac0ddcb0afefb52ee31607fa04aa52d7c2' '0561de82c0f1153104549048c3f52d4ed1c44afcda3b745894afc4c5c5ff48ee')