<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/95119>95119</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
s390x build of ClickHouse fails with Clang 18
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
rschu1ze
</td>
</tr>
</table>
<pre>
ClickHouse is a analytical database written in C++. It uses lots of third-party libraries ([here](https://github.com/ClickHouse/ClickHouse/tree/master/contrib)), and it is built on multiple platforms including x86, ARM, PowerPC, RISC-V, and s390x.
I bumped the submodule for Google's abseil libraries from a code state of Nov 23 to a code state of Jun 24 here: https://github.com/ClickHouse/ClickHouse/pull/65048
Results of the builds made by ClickHouse's CI are here:
https://s3.amazonaws.com/clickhouse-test-reports/65048/1f17ddc6fe35be95736b448ebb3b73123c034196/ci_running.html
(click "ClickHouse special build check", then "binary_s390x").
In case the logs are no longer available, I'll paste them here:
```
2024-06-10T14:24:52.1311439Z Jun 10 16:24:52 FAILED: contrib/abseil-cpp-cmake/CMakeFiles/absl_time.dir/__/abseil-cpp/absl/time/duration.cc.o
2024-06-10T14:24:52.1321170Z Jun 10 16:24:52 prlimit --as=10000000000 --data=5000000000 --cpu=1000 /usr/bin/sccache /usr/bin/clang++-18 --target=s390x-linux-gnu --sysroot=/build/cmake/linux/../../contrib/sysroot/linux-s390x/s390x-linux-gnu/libc -DSTD_EXCEPTION_HAS_STACK_TRACE=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -D_LIBUNWIND_IS_NATIVE_ONLY -isystem /build/contrib/abseil-cpp -isystem /build/contrib/llvm-project/libcxx/include -isystem /build/contrib/llvm-project/libcxxabi/include -isystem /build/contrib/libunwind/include --gcc-toolchain=/build/cmake/linux/../../contrib/sysroot/linux-s390x -fdiagnostics-color=always -Xclang -fuse-ctor-homing -Wno-enum-constexpr-conversion -fsized-deallocation -gdwarf-aranges -pipe -fasynchronous-unwind-tables -ffile-prefix-map=/build=. -ftime-trace -falign-functions=32 -ffp-contract=off -fdiagnostics-absolute-paths -fstrict-vtable-pointers -w -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -O3 -g -std=c++23 -D OS_LINUX -Werror -Wno-deprecated-declarations -Wno-poison-system-directories -nostdinc++ -MD -MT contrib/abseil-cpp-cmake/CMakeFiles/absl_time.dir/__/abseil-cpp/absl/time/duration.cc.o -MF contrib/abseil-cpp-cmake/CMakeFiles/absl_time.dir/__/abseil-cpp/absl/time/duration.cc.o.d -o contrib/abseil-cpp-cmake/CMakeFiles/absl_time.dir/__/abseil-cpp/absl/time/duration.cc.o -c /build/contrib/abseil-cpp/absl/time/duration.cc
2024-06-10T14:24:52.1331039Z Jun 10 16:24:52 fatal error: error in backend: Unsupported library call operation!
2024-06-10T14:24:52.1332695Z Jun 10 16:24:52 PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
2024-06-10T14:24:52.1334078Z Jun 10 16:24:52 Stack dump:
2024-06-10T14:24:52.1341580Z Jun 10 16:24:52 0. Program arguments: /usr/bin/clang++-18 -x c++ -c -o contrib/abseil-cpp-cmake/CMakeFiles/absl_time.dir/__/abseil-cpp/absl/time/duration.cc.o -isystem /build/contrib/abseil-cpp -isystem /build/contrib/llvm-project/libcxx/include -isystem /build/contrib/llvm-project/libcxxabi/include -isystem /build/contrib/libunwind/include -nostdinc++ --target=s390x-linux-gnu --sysroot=/build/cmake/linux/../../contrib/sysroot/linux-s390x/s390x-linux-gnu/libc -DSTD_EXCEPTION_HAS_STACK_TRACE=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -D_LIBUNWIND_IS_NATIVE_ONLY --gcc-toolchain=/build/cmake/linux/../../contrib/sysroot/linux-s390x -fdiagnostics-color=always -Wno-enum-constexpr-conversion -fsized-deallocation -gdwarf-aranges -pipe -fasynchronous-unwind-tables -ffile-prefix-map=/build=. -ftime-trace -falign-functions=32 -ffp-contract=off -fdiagnostics-absolute-paths -fstrict-vtable-pointers -w -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -O3 -g -std=c++23 -DOS_LINUX -Werror -Wno-deprecated-declarations -Wno-poison-system-directories -Xclang -fuse-ctor-homing /build/contrib/abseil-cpp/absl/time/duration.cc
2024-06-10T14:24:52.1348742Z Jun 10 16:24:52 1. <eof> parser at end of file
2024-06-10T14:24:52.1349397Z Jun 10 16:24:52 2. Code generation
2024-06-10T14:24:52.1350342Z Jun 10 16:24:52 3. Running pass 'Function Pass Manager' on module '/build/contrib/abseil-cpp/absl/time/duration.cc'.
2024-06-10T14:24:52.1351716Z Jun 10 16:24:52 4. Running pass 'SystemZ DAG->DAG Pattern Instruction Selection' on function '@_ZN4absl8DurationmLEl'
2024-06-10T14:24:52.1353399Z Jun 10 16:24:52 Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
2024-06-10T14:24:52.1354905Z Jun 10 16:24:52 0 libLLVM.so.18.1 0x00007f70d9453716 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 54
2024-06-10T14:24:52.1355978Z Jun 10 16:24:52 1 libLLVM.so.18.1 0x00007f70d94516d0 llvm::sys::RunSignalHandlers() + 80
2024-06-10T14:24:52.1356890Z Jun 10 16:24:52 2 libLLVM.so.18.1 0x00007f70d93a2fee
2024-06-10T14:24:52.1357496Z Jun 10 16:24:52 3 libLLVM.so.18.1 0x00007f70d93a2fab
2024-06-10T14:24:52.1358312Z Jun 10 16:24:52 4 libLLVM.so.18.1 0x00007f70d944df87 llvm::sys::Process::Exit(int, bool) + 39
2024-06-10T14:24:52.1359173Z Jun 10 16:24:52 5 clang++-18 0x000055c74c829133
2024-06-10T14:24:52.1360063Z Jun 10 16:24:52 6 libLLVM.so.18.1 0x00007f70d93b0832 llvm::report_fatal_error(llvm::Twine const&, bool) + 274
2024-06-10T14:24:52.1360946Z Jun 10 16:24:52 7 libLLVM.so.18.1 0x00007f70d93b0716
2024-06-10T14:24:52.1362630Z Jun 10 16:24:52 8 libLLVM.so.18.1 0x00007f70d9cc12c4 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const + 1908
2024-06-10T14:24:52.1364889Z Jun 10 16:24:52 9 libLLVM.so.18.1 0x00007f70d9d070a7 llvm::TargetLowering::expandMULO(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&, llvm::SelectionDAG&) const + 4039
2024-06-10T14:24:52.1366062Z Jun 10 16:24:52 10 libLLVM.so.18.1 0x00007f70d9b54054
2024-06-10T14:24:52.1366683Z Jun 10 16:24:52 11 libLLVM.so.18.1 0x00007f70d9b4edb9
2024-06-10T14:24:52.1367479Z Jun 10 16:24:52 12 libLLVM.so.18.1 0x00007f70d9b4e54c llvm::SelectionDAG::Legalize() + 364
2024-06-10T14:24:52.1368531Z Jun 10 16:24:52 13 libLLVM.so.18.1 0x00007f70d9ca8d80 llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 1136
2024-06-10T14:24:52.1369823Z Jun 10 16:24:52 14 libLLVM.so.18.1 0x00007f70d9ca7fd2 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 4354
2024-06-10T14:24:52.1371553Z Jun 10 16:24:52 15 libLLVM.so.18.1 0x00007f70d9ca618e llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 1726
2024-06-10T14:24:52.1372580Z Jun 10 16:24:52 16 libLLVM.so.18.1 0x00007f70dbf52244
2024-06-10T14:24:52.1373635Z Jun 10 16:24:52 17 libLLVM.so.18.1 0x00007f70d9814024 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 852
2024-06-10T14:24:52.1374901Z Jun 10 16:24:52 18 libLLVM.so.18.1 0x00007f70d959a04f llvm::FPPassManager::runOnFunction(llvm::Function&) + 687
2024-06-10T14:24:52.1376141Z Jun 10 16:24:52 19 libLLVM.so.18.1 0x00007f70d959f943 llvm::FPPassManager::runOnModule(llvm::Module&) + 51
2024-06-10T14:24:52.1377302Z Jun 10 16:24:52 20 libLLVM.so.18.1 0x00007f70d959a744 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 1012
2024-06-10T14:24:52.1380836Z Jun 10 16:24:52 21 libclang-cpp.so.18.1 0x00007f70e18ae3ce clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) + 7710
2024-06-10T14:24:52.1384138Z Jun 10 16:24:52 22 libclang-cpp.so.18.1 0x00007f70e1c3d572 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 1538
2024-06-10T14:24:52.1385719Z Jun 10 16:24:52 23 libclang-cpp.so.18.1 0x00007f70e086dfc6 clang::ParseAST(clang::Sema&, bool, bool) + 614
2024-06-10T14:24:52.1386964Z Jun 10 16:24:52 24 libclang-cpp.so.18.1 0x00007f70e269ea55 clang::FrontendAction::Execute() + 85
2024-06-10T14:24:52.1388560Z Jun 10 16:24:52 25 libclang-cpp.so.18.1 0x00007f70e2618024 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 708
2024-06-10T14:24:52.1390939Z Jun 10 16:24:52 26 libclang-cpp.so.18.1 0x00007f70e27191fe clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 750
2024-06-10T14:24:52.1393156Z Jun 10 16:24:52 27 clang++-18 0x000055c74c828d55 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 4069
2024-06-10T14:24:52.1394560Z Jun 10 16:24:52 28 clang++-18 0x000055c74c826155
2024-06-10T14:24:52.1395226Z Jun 10 16:24:52 29 libclang-cpp.so.18.1 0x00007f70e22d05c9
2024-06-10T14:24:52.1396224Z Jun 10 16:24:52 30 libLLVM.so.18.1 0x00007f70d93a2f8c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 140
2024-06-10T14:24:52.1398581Z Jun 10 16:24:52 31 libclang-cpp.so.18.1 0x00007f70e22cff5e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const + 366
2024-06-10T14:24:52.1401039Z Jun 10 16:24:52 32 libclang-cpp.so.18.1 0x00007f70e22984d1 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 897
2024-06-10T14:24:52.1403395Z Jun 10 16:24:52 33 libclang-cpp.so.18.1 0x00007f70e229871e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const + 142
2024-06-10T14:24:52.1405871Z Jun 10 16:24:52 34 libclang-cpp.so.18.1 0x00007f70e22b4d2d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) + 333
2024-06-10T14:24:52.1407713Z Jun 10 16:24:52 35 clang++-18 0x000055c74c825ac4 clang_main(int, char**, llvm::ToolContext const&) + 11172
2024-06-10T14:24:52.1408713Z Jun 10 16:24:52 36 clang++-18 0x000055c74c832bf6 main + 102
2024-06-10T14:24:52.1409351Z Jun 10 16:24:52 37 libc.so.6 0x00007f70d828ed90
2024-06-10T14:24:52.1410449Z Jun 10 16:24:52 38 libc.so.6 0x00007f70d828ee40 __libc_start_main + 128
2024-06-10T14:24:52.1411605Z Jun 10 16:24:52 39 clang++-18 0x000055c74c822bc5 _start + 37
2024-06-10T14:24:52.1413013Z Jun 10 16:24:52 clang++-18: error: clang frontend command failed with exit code 70 (use -v to see invocation)
2024-06-10T14:24:52.1414572Z Jun 10 16:24:52 Ubuntu clang version 18.1.6 (++20240517093811+3d0752b9492e-1~exp1~20240517213934.128)
2024-06-10T14:24:52.1415666Z Jun 10 16:24:52 Target: s390x-unknown-linux-gnu
2024-06-10T14:24:52.1416532Z Jun 10 16:24:52 Thread model: posix
2024-06-10T14:24:52.1417101Z Jun 10 16:24:52 InstalledDir: /usr/bin
2024-06-10T14:24:52.1417919Z Jun 10 16:24:52 clang++-18: note: diagnostic msg:
2024-06-10T14:24:52.1418765Z Jun 10 16:24:52 ********************
2024-06-10T14:24:52.1419289Z Jun 10 16:24:52
2024-06-10T14:24:52.1419974Z Jun 10 16:24:52 PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
2024-06-10T14:24:52.1421235Z Jun 10 16:24:52 Preprocessed source(s) and associated run script(s) are located at:
2024-06-10T14:24:52.1422814Z Jun 10 16:24:52 clang++-18: note: diagnostic msg: /tmp/duration-4e964b.cpp
2024-06-10T14:24:52.1424295Z Jun 10 16:24:52 clang++-18: note: diagnostic msg: /tmp/duration-4e964b.sh
2024-06-10T14:24:52.1425407Z Jun 10 16:24:52 clang++-18: note: diagnostic msg:
2024-06-10T14:24:52.1425889Z Jun 10 16:24:52
2024-06-10T14:24:52.1426196Z Jun 10 16:24:52 ********************
```
So this looks like a compiler error ... I was able to bisect the changes in abseil that caused this and it turned out to be this innocent little commit: https://github.com/abseil/abseil-cpp/commit/34604d5b1f6ae14c65b3992478b59f7108051979
The error only happens on s390, builds on all other platforms are okay.
A reproducible example using compiler explorer may be difficult, let me share how I was able to reproduce this locally:
- Check out the code and install cmake, ninja and a few other needed tools, instructions are here: https://clickhouse.com/docs/en/development/developer-instruction
- The failure happened with the system-provided Clang-18 that comes with Ubuntu 24.4
- The latest abseil is needed for reproduction. Head over to https://github.com/ClickHouse/ClickHouse/pull/65048/commits and checkout a commit which includes the problematic abseil commit that was added in Feb 24, for example [ClickHouse/ClickHouse@`1f17ddc` (#65048)](https://github.com/ClickHouse/ClickHouse/pull/65048/commits/1f17ddc6fe35be95736b448ebb3b73123c034196) will do the job.
- We'll cross-compile for s390x. Checkout the needed steps here: https://clickhouse.com/docs/en/development/build-cross-s390x
Running CMake, then ninja will fail soon-ish with above error.
Kindly let me know if I can help to analyze this further, thanks.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW8ly4ziafhrmBUEFAe6HPMhaMt3tLWxlVXddFCAISmiDAAcAbasO_ewTACmbsk3TtUz1xEyGwymTWL5__wABWGu2E5R-9eIzL15-wa3ZS_VVabJv4a_0SyHLw9cFZ-T-u2w1BUwDDLDA_GAYwRyU2OACawoeFTOGCsAEWHjozENnM3BuQKupBlwaDWQFzJ6p0m-wMgfAWaGwYlQDD2VefLaninrx0kPZ3phGe-HcQ2sPrXfM7NtiRmTtofULkNd_GEXtfzXWhioPrYkURrHCQ7n7WQAsSsCMxV-0jBsgBahbbljDKWg4NpVUtQZMEN6WTOzAU5bYbvPbS_vfjXyk6mZhP96e3y38n45D6jAPnmZesPSCeff7HBRt3dASmD0Fui1qWbacgkoq8E3KHaceSjXAhaaMD7RQKVkDDIgsKdAGG2oVdiUfAAqBkW_e_K0VAEXAaS2cg9-ls6bl3EPrJA6ibCjBLdUtP1qMOn2VGtS4pKA4gOEQqQaLc4AVPQLpBjhFo8MZrvGvUuBH3WMidoy9HcM3VBtf0UYqo5_BoDWsYFqWJKloGBc0j9MwKaIoo0URFmkIUUiCMIJ5YgdjW9UKwcRutjc17yVBmZsEeAgN3Fc3lDDMO5kA2VNy7yFkjWn2VNjGBRNYHbbOru5VfmpdAYh1d6sYLnfaCS8k4FLsqAL4ATOOC2vkBTj3UMo5aKxP2g71qZb630nQ_wweogBFfpD4MNjAyAvnyP6K0QyGEEZh_oszPwwATF5egvX8_GK1tN7w7Pzrzs180jQ-qfG9c4FLfE_XjFPdvedbw2o6K5kNm-32pFPfwsYXq23nslXYMClmhMwkmAKLIEyD98E2irOaGeD7WHvhEgbP_4Dv26Tihct4-Iw0bd8OeGjdaou2YML6FyGY7Onrx4RjsesykQ8z4PsGqx01Xrh0tvU5E-2TvxMt8H190EpK-852t75hB-gV5hp6aD2bHX-96PfYsW_l926zfjWFe18Q4C_vNsvt6h-L1c3m_Ppq-31-t73bzBd_325u54uVFRD4y-3F-dni5ma7upqfXay2m--3q_lyezdfrzb_3M6vrq43c9v7rm_64-rn86vl9vxuezXfnP-02l5fXfwT-EwftKE1GEr0jl9MNOT8ofYbJf9FiemleLICdomS_p7euGCfH4AVrXhkohz28HeE-EZKTvaYiT_JaMCvSoZ3QmrDiPaJ5FJ54RLzR3zQwP-HcyfgVzZnESOVv5e1rRP-z0L6VLS1T6TQhj41yn56oEozKYBfafYrLf2SYs4lccEDgL8rH7GqfKyw2FEN_IY1FPgV1gdB9koK2Wq_E9w3Np1o4FcV49RvFK3Yk1_jZih3uJwBv7Ix6huFiRuKs53wq1YQO6WNsRDZQRrfKQIT6-2yqsArwXGhJW8N9Rts9nZabRQjxn9wOPxGMmGo0sB_tKP1w_uadtPYwbDBg7-vEfB3wF9eLVdnP74B_zq0fwNfGwubdAGKQgCAvwTXd9uL86sf_wD-z1QpqTrtlrRRlGDj1Eg47lKQ7l42kmkLwDmRXzJFrXVsRfWtSCUT_RzAv1wC_3Lzl2VH_3L9V801K4Ev_zrByFRS-WiAqaIRwmCswlXYYA6cZ9gy17kIE6DA5J6K0j77IXTbWDJBy55cHQDBnAPZ0A6Ch-AkBJTk8fsQbi5W87uV43XMAAyKdgc69mJZ2gc0zKbCtxmRad06i3T8tM9wllwQhfXeSeYi2vKJRtFGSUK1piXQslXdY9sTay0JsyECVCuAJoo1ZjYpZxSk2fty3hlM7kHZ1s0zXxkfJ4JxNlLng5kX5DdK7hSuAVa7tqbCWBVNlesn8By35C917v-7dfN1Pvz_xoj-E7zhd7CD_03k4D_BDd5QA3_55_KCUS73P1jVoiyN0PspEtoU6YULKisvXIEGK21XkgZQUdo1uDXt5PB5mKfvD4_s8AtZUrCj4lgDJ4aLg3AMbWiHu-3W23Zpq4GH0nVva3BjH1xigXdUeSh1uyzd_oeH0j-iXpROVrMYpjB5H3T0Hug75xq_gOX8m--Fq-X8G7jBxlAlwLnQRrWdSHeUdw7by3P0aydRFGx_uYos7GzZo60vVty-mkIbhvkIzXmpveCRmb1sDdCHupAcCFx3G2ZU6FZRcJAt2OMHClzB6BqxX6kjRQfZKnAz33wHUgFNjWMVVDwwJYUtwuABK-AlwcXFT5fbu39enl1fnP-yut3aLl4SWDrjAtp-YMZD-SeIQBzlwQhxCoDlY3aymZYzmM0gCJ7s2j6t0qDMozhMYeLksPOEc33Q3YcbxYRxKtl0RCh7aaTw41ZqoyiuPeT265iwUIGtb3E0CTfOx_gPnIILkzJ4D-5tK-7YTmD-HYuSU6U9lB0RZcEkoiTLR5gU-hhRiFFFJ_NEnEb5SIyEb4Z3_17PgYvJObIQjiSP6K0MbyaJorLK0vc9wZHf7o_Vk3XKzNl7AQop-VHLYT6JMIdp-D7CGIBXTLTDFsckjUiGchiGU8MnQZCMDJ98QslFkIVoIH-3vNi6xc-2W_wMY2DzyAQFjl70MTBUBkonoyAJ8mjEJ9JPwU1hMjkHSsIRv84-4ROEQESigU42jrleyEeqmNh1zyyDu2DFAnN-oqDnBL6cf-s19PLydnNxftZ9vGAFcX2H71c_bU4fzJXCh1taeeFiMMXyJ8xb6oWr08bvwbx8gXnddPTrpM_d8kKSE3u-nQflXQNnYpgH2aT-oywbqTb5tPrLIA1wOiEXfWqwKC9_XFyfan95JUvqofmIJGMSvn7-2ohDDUTBdMwnSZCMEbDgw8xaxFEwXUuSJMlGgh7CaRUXES2LaSHSKB0xI0SfmiSOyJhWuyCgO2wpxKBqhcm08FkcwhFcn6grBGdlFozgOr-jvHtqSew3KuaiXNXMOEd4BglhOJ2E8gyNmSj60AUITqsSTQLsns45P8OakTMuyb0-CYZnnvwS3h38KJz2sBTG8Rj8eAJ-AjM6CV-14lpcYrJngh6RnsB_8-4ZP0zRpPpTNLpLBN_WxQH-oooRiqb1EybhCPmEnyhkGYwCNKwxr6S1S5uBnt5V0DuayWI0CTzKg7HoyT40bJzjIKoGmNc3FuZxAfbb0SbZ5MIlTWA0hvZtLTlFW-VR-Am0l27JeOp6_aNnpPHkLm6ahsFIxkcfZ_w4x2k0dAVOd5gcehb6Avm8bl5C52O4MICTfpAFWThCxJArIY6Z2qXyO6gpzDANCe3pa0deambOur3x69Y0rXHfij-_Xr5s7azEjolj1R00-U5xSdUdxYrse7ZyQk0GTfvsPNGqYw4TjS6w2L3XZJDAjCUeloadPD6qff5qwF4J897dh13OhVGtZg_0llYLYW6MOmF2D1Uf9GvGabdj0LM8t0tl37SC_VdLt82rnnZt2jwqZuj2uEIddCpphVtutiXl1NCJjuGqn_OtSAspdFtT5WTuXC1N4eQ6M4tgOLLyRWja1UhYxin6CE7nPW4JvFFYaO72Rn4I9soH53ebhRSGPg2rIYzDSUabxSkcoUIonJQgyJKyIslQghusNJ3fbU7x3dEanyyrTpdXCZwsS1mSJ9EI0GgSKEpyiuN4CHStrMKevblfDVPSmiFry-JJYFmcjO01xJ8ABjNbL08yQN0wTtW50AYLQk-gHWMvG5fkxQHS6RVNHuRjXxOiZBp9CnNYnSbLDueLEA_9hvwp5jdCDgIvnoy7PITxWIpPP955yErrBgRua8xOi81gSUr2WB1T5vyYNE6eoQV4kKwcwI6CZHLhkUfjvpJ9jDuB8aQr5jFCY2rJp42JyiAm0zIkCI0EYviWD7y7-ZUNF08LhfX-lhL5QNXhmMSe9wBxRfnhxEzHjeOtcqayVgBdwDpD9akvmvahLM5GCFg4TRMQIlUVn3h-qdjDMWUvFnAh6xqL8nViedffnuuZdOUa89Ntkecq_VzBnjtst-TpCcLuj8Kul2y1c7sJzotPGtsHW6MwM_r4-tVw_fdnUg3e2ybzl4w9P900CJOpFUsUjB9FCKerJEJ5FpVwVNMukeA3Ofyo_pOs86qjbTBGnj5oOn-1QfiijCyf4v1REIZjhyLC6YJrlZHCcbcbUcbfZKHHNfE3WVwwbcY4Yo05_8l97dcR9RdvbTCzjtJvHn9Web1LjagQRlMEPwriLB2L3E9QAVREJSrH4C4Hn09q2TtFbEz1f6EK-72lyd30KEhTOLLtEcYfl54Yk56gHIvmEa5LMPM3u5IbKXmfyd9s0UAI02kLZ-Ngkw_BhqioEmBh9uvF6bnyMB7zJrffQawXJWDwb1DPMpTRMp8qNhEMomgsBWafmoRGAdhubcutNliZ7YuMaIrlRRAmY18ohvnHxkcFiUE3ZedqkxkOhsGY8U5nej585g5bu8MEVU9lAeldvsKM09J9gQvoEzPd-f00sCW_1RT4D8BIoCkFbMA0p0hMBKM4HdnU-FG0wrQ9nuMJE5tEZknHM9xxigBFQQzTIA8zCD10FpZBGqMij3JEffhv-tTAfx8bIUtYoxnsSMoUsjhJRjjcpj9nNO-uS_ituBfyUQxOA02NncThiNSbvaK4BLUs3TYmaKRmT5PjpXBsx83xes5puWTqzTG1yWHzsTXpWwcS0rirGy8HbECtd27KqWmyNBkJimNS-10_U9PmaOw7pOmueTpCvfsDlfPNZr74DjbfV2B9fXFx_fP51TewPr9Y3YHNtXt89uMbuF3dXN9upg8iRAiisb3gm_dOUWbapvnRk5TPDRQFjmfSEmDzGRwogyOC_yaPQGtTN4MjMX5E8yQqZqRpJiFEaIy3_SkQ9H4SQRwFI4eT_sywQPHod5yTXRM4dizij0fUuzd87iQwe6YBl_JeA87uqbvi1e0t9CebZ7MZOAePWANccGrLRcE0Jd1JHrLvTgcycbxLZvbYAIJb7e6eMX288mZaJWgJZOuO8hS0e8mEkIQKAzgzhlNXt5iZuEvWzfT61FbfFa3DKAmiMi5glWAKI5LERZjnKEqzIs6rFAZZEMM8zYeK2OxpL64U_AD2uGmo0EAKVysc1e7un0kB3Dlus6dqcGPPhqS8x4eTW1pz4IK8bAmzmqNPuG44Ba1mYjfQ8lPDpaIK1Phg9VKyqmKk5Y4icmpATYHeu9tt8vGVJY7j06MZCeb88JwRfLDYU3LfKd1ayxb_7oi3Ky-gP2-6AIKJf-Eu84CKPvbyCUpLa0Ypue6ONT0fSNPD-3avjPVyr643WCmJ9tCaCvuZPlAum5paDnz8iyp_MPYRvDWKJTCtnclZ5Ehl3KXG7kxlo-QDsygXbtUCs94DZU1117hnJCiaRcOROTZUm6PbMn2UtpLqWa_u3B_4bku7fKBq4nD9J-84Hl21Cw13-88aCPfODx73jOyPp_C1k7VRsuC0xjYP9YD7xk5Y5xKlBc8EWNMCoMiay0pydDovPhuDF9ms0N909JKgY2lhjzX_A7dh35f6N12rzMEj4xyU0qnhX7KYHU34M-3uNRIltfb7aHIid5dhO9c_en5vW21oo_-417pc4HczdyfLh_dW-wOe7jbA853OLsCcMNalgZZS-EzvOxfFhXzoE9BJBvk7EyU_HLOApauAVeAcECzAnvLG3ckVmB9-7TNA1Sobud20WNzr2Zfya1jmYY6_0K8whRmEURSjL_uvhGKEEoqCMqnSJEwSGFdVVJIqSvIyysIv7Ktj4AmEMAqCGM0iRCnKQlohWgRZDr0ooDVmfGaXrjOpdl_cRZKveQxh_oXjgnJ9vNGtvrrDoUW7014UcKaNfulmmOH0a3eQvbsTK6vBDV-nsT6YXZQDmH1pFf_6-y-6dBAfvqL_DgAA___9bBQr">