<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/103692>103692</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLVM-19 rc2: clang-19 is not supporting webassembly.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
subhakr
</td>
</tr>
</table>
<pre>
Hi,
I trying to install LLVM-19.1.0-rc2 (https://github.com/llvm/llvm-project/releases/tag/llvmorg-19.1.0-rc2)
OS: ubuntu22.04LTS
CPU architectiure: x86_64
RAM and intrenal space: 8GB and 256GB
and the commands i have used to compile
```
admin1@admin1-VivoBook-ASUSLaptop-X515EA-P1511CEA:~/llvm-project-llvmorg-19.1.0-rc2/build$ ninja
[36/1177] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o
FAILED: tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o
/usr/bin/c++ -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/build/tools/clang/lib/Sema -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/build/tools/clang/include -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/build/include -I/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -O3 -DNDEBUG -std=c++17 -fno-exceptions -funwind-tables -fno-rtti -MD -MT tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o -MF tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o.d -o tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o -c /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp
In file included from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APFloat.h:18,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/APNumericStorage.h:12,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/Decl.h:16,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/Attr.h:18,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/Sema/SemaOpenMP.h:17,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:14:
In destructor ‘llvm::APInt::~APInt()’,
inlined from ‘llvm::APSInt::~APSInt()’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APSInt.h:23:21,
inlined from ‘bool checkOMPArraySectionConstantForReduction(clang::ASTContext&, const clang::ArraySectionExpr*, bool&, llvm::SmallVectorImpl<llvm::APSInt>&)’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:18185:45,
inlined from ‘bool actOnOMPReductionKindClause(clang::Sema&, {anonymous}::DSAStackTy*, clang::OpenMPClauseKind, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, const clang::DeclarationNameInfo&, llvm::ArrayRef<clang::Expr*>, {anonymous}::ReductionData&)’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:18543:68:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APInt.h:172:18: warning: ‘void operator delete [](void*)’ called on a pointer to an unallocated object ‘1’ [-Wfree-nonheap-object]
172 | delete[] U.pVal;
| ^~~~
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
[41/1177] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaTemplate.cpp.o
ninja: build stopped: subcommand failed.
admin1@admin1-VivoBook-ASUSLaptop-X515EA-P1511CEA:~/llvm-project-llvmorg-19.1.0-rc2/build$ ninja
[22/1137] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/SemaOpenMP.cpp.o
In file included from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APFloat.h:18,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/APNumericStorage.h:12,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/Decl.h:16,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/AST/Attr.h:18,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/include/clang/Sema/SemaOpenMP.h:17,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:14:
In destructor ‘llvm::APInt::~APInt()’,
inlined from ‘llvm::APSInt::~APSInt()’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APSInt.h:23:21,
inlined from ‘bool checkOMPArraySectionConstantForReduction(clang::ASTContext&, const clang::ArraySectionExpr*, bool&, llvm::SmallVectorImpl<llvm::APSInt>&)’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:18185:45,
inlined from ‘bool actOnOMPReductionKindClause(clang::Sema&, {anonymous}::DSAStackTy*, clang::OpenMPClauseKind, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, const clang::DeclarationNameInfo&, llvm::ArrayRef<clang::Expr*>, {anonymous}::ReductionData&)’ at /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/lib/Sema/SemaOpenMP.cpp:18543:68:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/APInt.h:172:18: warning: ‘void operator delete [](void*)’ called on a pointer to an unallocated object ‘1’ [-Wfree-nonheap-object]
172 | delete[] U.pVal;
| ^~~~
[648/1137] Building C object tools/clang/tools/c-index-test/CMakeFiles/c-index-test.dir/c-index-test.c.o
In file included from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/clang/tools/c-index-test/c-index-test.c:11:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/Support/AutoConvert.h:1:1: warning: C++ style comments are not allowed in ISO C90
1 | //===- AutoConvert.h - Auto conversion between ASCII/EBCDIC -----*- C++ -*-===//
| ^
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/Support/AutoConvert.h:1:1: note: (this will be reported only once per input file)
[816/1137] Building CXX object tools/llvm-isel-fuzzer/CMakeFiles/llvm-isel-fuzzer.dir/llvm-isel-fuzzer.cpp.o
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp: In function ‘int LLVMFuzzerInitialize(int*, char***)’:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/tools/llvm-isel-fuzzer/llvm-isel-fuzzer.cpp:141:43: warning: ISO C++ forbids zero-size array ‘argv’ [-Wpedantic]
141 | ExitOnError ExitOnErr(std::string(*argv[0]) + ": error:");
| ^
[905/1137] Building CXX object tools/llvm-opt-fuzzer/CMakeFiles/llvm-opt-fuzzer.dir/llvm-opt-fuzzer.cpp.o
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp: In function ‘int LLVMFuzzerInitialize(int*, char***)’:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/tools/llvm-opt-fuzzer/llvm-opt-fuzzer.cpp:201:43: warning: ISO C++ forbids zero-size array ‘argv’ [-Wpedantic]
201 | ExitOnError ExitOnErr(std::string(*argv[0]) + ": error:");
| ^
[916/1137] Building CXX object tools/llvm-pdbutil/CMakeFiles/llvm-pdbutil.dir/DumpOutputStyle.cpp.o
In file included from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/DebugInfo/PDB/Native/HashTable.h:12,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h:14,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/DebugInfo/PDB/Native/InfoStream.h:14,
from /home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp:43:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/SparseBitVector.h: In member function ‘llvm::Error llvm::pdb::DumpOutputStyle::dumpTpiStream(uint32_t)’:
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/SparseBitVector.h:130:15: warning: array subscript 2 is above array bounds of ‘const BitWord [2]’ {aka ‘const long unsigned int [2]’} [-Warray-bounds]
130 | if (Bits[i] != 0)
| ~~~~^
/home/admin1/llvm-project-llvmorg-19.1.0-rc2/llvm/include/llvm/ADT/SparseBitVector.h:55:11: note: while referencing ‘llvm::SparseBitVectorElement<128>::Bits’
55 | BitWord Bits[BITWORDS_PER_ELEMENT];
| ^~~~
[1137/1137] Linking CXX static library lib/libbenchmark_main.a
```
after this i have tried $sudo ninja install
then i have used this clang-19 to build sysbench benchmarking tool(i am trying to integrate wasm with sysbench)
when i am compiling i am getting error like
```
libtool: link: /home/admin1/llvm-project-llvmorg-19.1.0-rc2/build/bin/clang-19 --target=wasm32-wasi-threads -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Wno-format-zero-length -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -Wvla -O3 -funroll-loops --sysroot=/home/admin1/Downloads/wasi-sdk-23.0-x86_64-linux/share/wasi-sysroot -pthread -fexceptions -D_WASI_EMULATED_PROCESS_CLOCKS -matomics -mbulk-memory --sysroot=/home/admin1/Downloads/wasi-sdk-23.0-x86_64-linux/share/wasi-sysroot -pthread -fexceptions -Wl,--shared-memory -g -Wl,--export-all -Wl,--no-entry -Wl,--export=__heap_base -Wl,--export=__data_end -pthread -Wl,--initial-memory=16777216 -Wl,--max-memory=16777216 -o sysbench sysbench.o db_driver.o sb_timer.o sb_options.o sb_logger.o sb_histogram.o sb_rand.o sb_thread.o sb_barrier.o sb_lua.o sb_util.o sb_counter.o -lwasi-emulated-mman -lwasi-emulated-process-clocks tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/mutex/libsbmutex.a /home/admin1/Downloads/wasi-sdk-23.0-x86_64-linux/share/wasi-sysroot/lib/liblua.a /home/admin1/Downloads/wasi-sdk-23.0-x86_64-linux/share/wasi-sysroot/lib/libck.a -lm -pthread
wasm-ld: error: cannot open /home/admin1/llvm-project-llvmorg-19.1.0-rc2/build/lib/clang/19/lib/wasm32-unknown-wasi-threads/libclang_rt.builtins.a: No such file or directory
clang-19: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Makefile:546: sysbench] Error 1
make[2]: Leaving directory '/home/admin1/sysbench_main/src'
make[1]: *** [Makefile:608: all-recursive] Error 1
make[1]: Leaving directory '/home/admin1/sysbench_main/src'
make: *** [Makefile:521: all-recursive] Error 1
```
in clang/19/lib/ there is no wasm32-unknown-wasi-threads directory.
will it create or not after compilation of clang.
to generate that missed Dir what i need to do.
my main moto of this building clang-19 is
from WAMR community they suggested to install clan-19 to resolve the below import linking issues related to jump functions
example
```
admin1@admin1-VivoBook-ASUSLaptop-X515EA-P1511CEA:~/sysbench_main$ /home/admin1/Documents/wasm-micro-runtime/product-mini/platforms/linux/build/iwasm src/sysbench_with_setjmp_errors
[13:23:38:500 - 7A7431BB6740]: warning: failed to link import function (env, __wasm_longjmp)
[13:23:38:500 - 7A7431BB6740]: warning: failed to link import function (env, saveSetjmp)
[13:23:38:500 - 7A7431BB6740]: warning: failed to link import function (env, getTempRet0)
[13:23:38:500 - 7A7431BB6740]: warning: failed to link import function (env, testSetjmp)
Attempting to allocate 1064960 bytes of memory...
sysbench 1.1.0-2ca9e3f (using Lua Lua 5.3)
Exception: failed to call unlinked import function (env, saveSetjmp)
```
so conclusion is
if i install clang-19 properly i would able to solve those errors regarding jump functions .
You tell me am i in correct path to resolve this issues through clang-19
or do i have to rectify these errors in WAMR itself.
Thanks in advance.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsO0lz2zizv4a-oKASSW0--KB1xjV27LKUcd5JBRJNCTEI8AGgbOWQ3_4KiyjJVjLJxE7eV19ciU1i6Q2NXoAm0ZqtBMBF1B1F3ckZqc1aqgtdZ2vyoM4ySbcXf7IoGUftSdQeXiKjtkyskJGICW0I5-jq6u9rHJ-34lYbqzxBUTJYG1PpKB1GySxKZitm1nXWymUZJTPON7s_uFLyI-QmSmYKOBANOkpmhqxCv1SrA7hRcu5p8L9v5lE6RHVWC1MnSavduVrMfc_49j0iKl8zA7lhtQI78GnQW_Y6fsDd8BoRQRETRoEgHOmK5G7U4I-R60m6vT9Gh9hso1kDymVZEkE1YmhNNoBqDdTKIpdlxTgcTol67fDPQ6AlE3HUafsH_DfbyJGUD3g4fz-_IpWRFf7QjbvTIb6Nu3E8ng6jdPj5majwKbnMsppxGiUdJJj4SFDA3x2lvSiZxXG_H3UnaGQH2aUbf_iAZGahISMltzLPORFO6iyLktkcShIls_E1eYAZ425VZPax5UbZzhZlKoy7qUBc37byqmpJj3c2vLyaTqw0Xxf6jq1kVmvbnzFhYUfJKEpGCE_-WEzni-Wfw_nybrG4jNJJG-HJ8o9375fzm_d346l9W84Xk_FyfPNuvhi-Wyyvh-O7m_m-Y3Zzdz182Xx1eX25b72MktlalhAls7Cm37FEsy_L5N9Cfn1ITOS8pvDarL4S2B8EE-xPA6W4vRwjXAiJNZREGJZjJgyoSmpmmBQIFxumWcY4M1vMBGcCNF4zSkEgfA9KSRWlE0oMYMNK8LA4K8C-YaoB4XtrJvE9PBlFEL4XEtfCWg5cEUVKMKAQvn9UzADWRjGx0gjf50Qb_L814X5GybRmYoULBpxiJphhhLNPoDTCFVBHuR_JpVi5Xwjfs7LiLGcGF4Rzs1ayXq13FOxhUN8kpBA1D_hyTrTGJZQkz0Fr36iA1sLiwqXcgG-rQGtWsk-WuH2rkPCUQ2Ww2Va2iQIHAxYF3jBlasIxNdLyrevVCrTBcgNKMRrmW0MLwjS8cyDWeGEmKAhD_Mrc54ZQXJJtBrgWuq4qqYzlpqCMrITUhuUa55JbREVRi9zOwxrcX23HEUMO3wNmB9wSxCWhQHckBz0xiuUGE86IXRGEb1KEJ-8m09H7PxDWhkbpJJiluI_8HC-MgKQWj0xQbEjGISBVxjCErycIXy9e227i69krg2xRhOWrk5mjV7J_L6CH2EWggnFAYetTVChZ_jucx0Zk3zCcLOzv2xmXxLTWUTqMB03shJ7__Hv8z0zqQctw7il4V5egWD43UpEVeFKSX0HKBHLu0fd-iSSMUb9kIV4qoqOi_5ZUfG0LpMO4YyPy3VagoI2qc2uDo2kSDdrR-cBpcWrjzuHtpTD-8bN_TgY2AA8jz4-48E5xt59OAZsfQpu_BIeIeZuNaHE5wSep_RV_A92ZlBzla8gfbq5vh0qR7dz7h7G0CY8wM6nugNauLUoGXvie0fliLIWBJxMlVttRbqegwxEH8KZPlYqSoR1ncYYpe7HNS8L532CX6LKseJSOX4p06ma9giC_UYUG8aAbpcNO91sFSXJzI26ubxuJ_cUEHXNSaziWnUfpRBD1R0RIsS1lraP-xPdP5sO5IfnDYhtkdjDX0-ihWvjHcnQyv4MiSscHc3bStyI8AjaXtcrhSubEL_DP6Bx_-DDPZQXzCvIvqY41pES52e9ICZeikC9U5ltYPSndZnkmxJCfrVPdjt2cvUFjnt7EFOwsQdxPvDtIh-iRKMGcmPZqu5GMIlmBItY2-rgV-dORKHG9TgEP5JMTzoEiKRBBlXTZAzISEYFqQTi3S267fcrd4In3AKLuCN8XClx8vAZSYT_YogybLO4nKOqPg6vwVHmi0PtW9TfhUTo69Cv7sQc_UXf6-fNnPyxEqJb1ghjCUchkhugv5tjRbCUIRwZUyYTjoFJypUiJ8jyueK0DHHfy4QPy_dhWcwbRid_8DGIBZcWJgcNTCHcSYrlxaSPSRlYVUNug6yyc4qCCMN7Q-isOaJLECSf9qQc0v-Pg33Hw7zj4dxz8Ow7-HQf_joN_x8H_3XFw1B31OoOTYdiXgrDm3Z1GP2ED2jwPxw77QjR21JS_QTT2D_Qd47drH7-Nps39QbzVttrIsRQbUEHnwv9DhRuHGzxtttxfsIIwGhEFSEiDrOI8AkVMoMv5DRqft_fLG7vl9ZfMUTrx_zA6wor8u7UjG1DapikZmEcAgYbz8eVllMymo_Hkcoyw_YmSIW5Icm8N4IDnmXJF3emvEaGQxt1ZR8nArJlGj4xzlAFSEG5BpOBbJEUOqAKFmKhq41Rtf5HeHQ3i3jdmII4XpoHjov70CdRzhX_eH5T-RfNBIvIjEvsKWadQWkHZnRaugPbWhwnjChhmbuhlcyUWJbZr52LXxEcow2cm71X2z_ezEnesBjhvcbiT3P4IqltIlTGq0SdQEmv2CRCxPnHPOFGrzTPLu7tGPDS3nTiY0OkTMzdiqpRU--coGbj7Lus6_c2lC2iHDnh31Ha-4hxZgqLEupvmlMG-JuffYqy_-LPfed3Rebv7PXosK_M1Nd53H2rxQetbKPERTScQ_seo8DcwkrR_lgIn7f8QBf4-Q1zRrDaMn9Te0BdUd1KX1U1tqtrMrYP9yQdBE8jqlQ_RZ7eTUZTM3hHDNnbEn0SvFyTjb3ko8y_IsjkFnRsFpLwmlaet8_-ENtvqSXt7ur6gbifUabeT3yxnmVdEaRgx4w8BHO_WFJZQZqBOWMR9Iui3-_69olnIIo_58I20LqtFxbyIo2RQM2HSZGle3V5-B6Nx2ra_u89MpTeGus50rlhlUIKYRiSTm52dzGQtqEay2IvFp9IjZu6lotZiJta87U1of0QeyPPhrpCoFq5K1JVMvpgY9Sfe_DrE2CM-jCHS9oFhZIWNWEfM6Kg7YtbYRUkcpRPUbuLSU7b0s03Y3iTU_rLou91dktQE249razAVFKBA5NZCn1C6Z7CmHGxKE6XjOBlE6dQPchJoRLjju9sNfO9WKQhqdLm4v7mbzJe307vl9Gp6PX23sCL-mvt5luU637J3MVdMPOw8jDbEsBxxlimitsifU3CWZSDydUnUw7IkTLTIycLWozLZwuX8Nh0JBbJGMaAoSjq6pjJcf4TC4cOJZg3iuKbWwnAJLY7PkZG7e5ytdkShhjRfjCy5jXYQKY_qkw2sFDGAHoku0SMz62Z-o2uPHjEpQwmvneteV2CMfQFvQdgDnOSes8xhT4eIM_HgE7IfqG4MVa07xjE2RK3AROnEMpEm-JFohs1aAaH6RWVhOHXBRFlm8X1GKG7K3nKiDcL3oXytUtJIs63AlfaBNkAxPBlQItT6FVKVxGAXf3EQKwewFhSKLwDZVSiebKT7UzvbvC8ktB1NuSPhbCUQvt9w4svqilooyTnmUlYaYay3WklpfDb-XMoT-Si4JNS6LScmTR9wkrba2Fd_Y85E_RQlM70mCppBHiTClZcqwsVhtd5keT-cXy6n1--vhovpZHl7dzOezufL8dXN-K85wiUxsmS5RrjMav6ASyil2v4SUu95lIwxdlNoQ8iq6YCnSiorZN40CYlBGDvsaEyUTpbLNZBqmRFXwPqikxJDliDoAS1hUCgrDfijdBL3-v1-EveaESV5OtUr97t799CSiGZLqtgGVEsinS0NK3eP0vPtX7hcrXYda6aNu6n2r4oIGiY7Sv1zRpRiuxm8Jv7BBc7uKZe13UotiRDmTvpQ1pzYbVKWRLxorJTMQWucc5k_aGRAG7u4NsBm0ptTnfm3Fmm6w0be9YfXgwFBTqHfvx1051W968ur-nBebeCpmWZfWuSUZfohRWzOtDnLrAjfFkP-0CII87JRuWDBiS4xp4e5GcqJENIgWYH4MXPske8OVuPzpilY41o8CPkojqxyoNbOWSrTsqAME7rlyhHeSaTrfO0TL6kQZcoFCdtQTREM_xE31rGAQsdVC96fwRMzKJcUUGzDqtpu1o11fhpsXrdprlmCuyvJA-ziN-eqwomADeBsIunOB9Nht9NzpRI7b9mdIB9JxyfBXAHZWF_ZMIOipH9C7jt4Lpyw7yq3Aw9Bxv9AWa_tLiwI51hBXittM6MvkBe_Nnlfk1gS_zNdJyMnJtAJ_UJmDQpsUC8k-oqy7ZkKZSzuGNgqhQIb-kjlT9FdYHZYqyMLjzZMMxKtQIALl8yaGGQdN1A0YQo92neGBPhvnahsHdJfbpGVFyqlkRaqi9yy3QHGPoZjOtS9uNT0fnh95zS6FsxsLbc2m3FfAngsu6_L7PwQAirQktuYcg0oAy4fESutQ3IbxAVuWtegkQJnku2Uj3VZNQnijgB4ImX1Rh9rPdOhzmmLmNfukiPYEVyyXEmsamG9W5TMKiVpnRtcMsHsKyfGRmPesnhj2XwN42Jbp6l73NY0LDWYj2W1dFZE70uO4nRXBZDandRttxFG_WG_k8ajUa_faYdNc5BrBoNjpBP0Tuj7tDsZgNhEyRgtl5aapU0ZP5bV4T3DW2LVZANzx-zPwrgCs4CyugPT_lkorV9_xuTQGCgrE7Kd3QUritu9znmvjbKtAZf_h6ChFXZtE2TFzt8lOTmHtPDew8K6qon7322lzz65nO5izWPKc7tNa-G8FP3OdfqyWdTuyi7ntbuya4wHKxA7sg3OtlRKVqD4FjH0KGtOEck4ODcYDIbUgMJOULAiytmmZ8bhyKr9j6yRAc5RCTYbtDhRLpW1tagiZn1sj2y-623P7hurxpE7aNbRyyYltjNzwwpn9vaEMeGtIjMaeHFEzWJNxIMbQeiGiBxaZ_QipefpOTmDi7ifpL24F_d7Z-uLJB7QDvQ6UFBaFDnp0IKc015RnNMeJGn_jF0k7aTTHsSdtp3UayWdNOn2OnlxTto0TiDqtKEkjLdsZNSSanXmeLuI22nvPDnjJAOu3ffCSSLg0XMeJTYYOFMXLrbK6pWOOm3OtNF7MIYZDhfhc2FkAy0bqh34B-upwldcdn0eISNaQ5nxbQud1YpffPd3xX5VrGv1xG8ukv8LAAD__2O5ERs">