<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/67603>67603</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang++][Front-end bugs] UNREACHABLE executed at /root/llvm-project/clang/lib/AST/ASTContext.cpp:12692
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lhamot
</td>
</tr>
</table>
<pre>
Hi !
I got an assertion failed using clang 17.0.1 under windows. (This also happen with clang 16, but not with clang 15)
In godbold, I need to use the "assertions" version of clang to get this crash.
Here is a way to get it :
https://godbolt.org/z/nrnMeYfob
Preprocessed source:
```cpp
# 1 "<built-in>"
# 1 "main.cpp"
template <typename T>
struct Vector
{
int begin();
};
template <typename T>
using iterator_t = decltype(T().begin());
template <typename I>
using iter_difference_t = long long int;
template <typename R>
using range_difference_t = iter_difference_t<iterator_t<R>>;
template <typename R>
struct iterator
{
range_difference_t<R> n_{};
void test(range_difference_t<R> x)
{
auto const a = x - 1;
[[maybe_unused]] auto const step = n_ * a;
}
};
int main()
{
auto i = iterator<Vector<int>>();
i.test(2);
return 1;
}
```
The code is strange, sorry. It is because it is a minimalist code to reproduce the bug.
Run script:
```sh
# Crash reproducer for clang version 17.0.1
# Driver args: "--driver-mode=g++" "-c" "-emit-llvm" "-Xclang" "-disable-llvm-passes" "main.cpp"
# Original command: "C:\\Program Files\\LLVM\\bin\\clang++.exe" "-cc1" "-triple" "x86_64-pc-windows-msvc19.29.30151" "-emit-llvm-bc" "-emit-llvm-uselists" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "main.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-fcoverage-compilation-dir=C:\\C\\rah2\\test" "-resource-dir" "C:\\Program Files\\LLVM\\lib\\clang\\17" "-internal-isystem" "C:\\Program Files\\LLVM\\lib\\clang\\17\\include" "-internal-isystem" "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Tools\\MSVC\\14.29.30133\\include" "-internal-isystem" "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Tools\\MSVC\\14.29.30133\\atlmfc\\include" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\ucrt" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\shared" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\um" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\winrt" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\cppwinrt" "-fdeprecated-macro" "-fdebug-compilation-dir=C:\\C\\rah2\\test" "-ferror-limit" "19" "-fmessage-length=207" "-fno-use-cxa-atexit" "-fms-extensions" "-fms-compatibility" "-fms-compatibility-version=19.29.30151" "-std=c++14" "-fdelayed-template-parsing" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-disable-llvm-passes" "-faddrsig" "-o" "main.bc" "-x" "c++" "main.cpp"
"C:\\Program Files\\LLVM\\bin\\clang++.exe" "-cc1" "-triple" "x86_64-pc-windows-msvc19.29.30151" "-emit-llvm-bc" "-emit-llvm-uselists" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "main.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-fcoverage-compilation-dir=C:\\C\\rah2\\test" "-fdeprecated-macro" "-fdebug-compilation-dir=C:\\C\\rah2\\test" "-ferror-limit" "19" "-fmessage-length=207" "-fno-use-cxa-atexit" "-fms-extensions" "-fms-compatibility" "-fms-compatibility-version=19.29.30151" "-std=c++14" "-fdelayed-template-parsing" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-disable-llvm-passes" "-faddrsig" "-x" "c++" "main-5cee9d.cpp"
```
The error message is:
```
Unexpected sugar-free: Decltype
UNREACHABLE executed at /root/llvm-project/clang/lib/AST/ASTContext.cpp:12692!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-17.0.1/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-13.2.0 -fcolor-diagnostics -fno-crash-diagnostics <source>
1. <source>:25:50: current parser token ';'
2. <source>:18:1: parsing struct/union/class body 'iterator'
3. <source>:23:5: parsing function body 'iterator::test'
4. <source>:23:5: in compound statement ('{}')
#0 0x00000000036e7558 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x36e7558)
#1 0x00000000036e53dc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x36e53dc)
#2 0x0000000003632918 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007ff487c50420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007ff48771300b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#5 0x00007ff4876f2859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x000000000363dbca (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x363dbca)
#7 0x0000000006c8a6dd getCommonNonSugarTypeNode(clang::ASTContext&, clang::Type const*, clang::Qualifiers&, clang::Type const*, clang::Qualifiers&) ASTContext.cpp:0:0
#8 0x0000000006c8b13d clang::ASTContext::getCommonSugaredType(clang::QualType, clang::QualType, bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6c8b13d)
#9 0x0000000006c8cb21 getCommonTemplateArguments(clang::ASTContext&, llvm::SmallVectorImpl<clang::TemplateArgument>&, llvm::ArrayRef<clang::TemplateArgument>, llvm::ArrayRef<clang::TemplateArgument>) ASTContext.cpp:0:0
#10 0x0000000006c8b6a1 clang::ASTContext::getCommonSugaredType(clang::QualType, clang::QualType, bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6c8b6a1)
#11 0x0000000006377792 clang::Sema::UsualArithmeticConversions(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation, clang::Sema::ArithConvKind) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6377792)
#12 0x0000000006380945 clang::Sema::CheckMultiplyDivideOperands(clang::ActionResult<clang::Expr*, true>&, clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation, bool, bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6380945)
#13 0x000000000638764a clang::Sema::CreateBuiltinBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x638764a)
#14 0x0000000006388fdc clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6388fdc)
#15 0x0000000006389303 clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x6389303)
#16 0x0000000005e55431 clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*, true>, clang::prec::Level) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e55431)
#17 0x0000000005e1502d clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e1502d)
#18 0x0000000005e21f40 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e21f40)
#19 0x0000000005e2a215 clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e2a215)
#20 0x0000000005e2a657 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e2a657)
#21 0x0000000005ec9e50 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ec9e50)
#22 0x0000000005ecab51 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecab51)
#23 0x0000000005ecbaa9 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecbaa9)
#24 0x0000000005ecd37a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ecd37a)
#25 0x0000000005dfda16 clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5dfda16)
#26 0x0000000005dfd71d clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5dfd71d)
#27 0x0000000005e4868e clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e4868e)
#28 0x0000000005e4a510 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e4a510)
#29 0x0000000005e23d78 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e23d78)
#30 0x0000000005ee6092 clang::Parser::ParseSingleDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5ee6092)
#31 0x0000000005eec631 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (.part.0) ParseTemplate.cpp:0:0
#32 0x0000000005eec8a3 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5eec8a3)
#33 0x0000000005e2a7f9 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5e2a7f9)
#34 0x0000000005df6584 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5df6584)
#35 0x0000000005df7452 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5df7452)
#36 0x0000000005deb76a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x5deb76a)
#37 0x0000000004939258 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x4939258)
#38 0x00000000041a1c09 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x41a1c09)
#39 0x00000000041278ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x41278ce)
#40 0x0000000004281de6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x4281de6)
#41 0x0000000000bc67eb cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbc67eb)
#42 0x0000000000bbefaa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#43 0x0000000003f83419 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#44 0x0000000003632dc4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3632dc4)
#45 0x0000000003f83a0f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#46 0x0000000003f4b275 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f4b275)
#47 0x0000000003f4bcdd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f4bcdd)
#48 0x0000000003f5385d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0x3f5385d)
#49 0x0000000000bc4a87 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbc4a87)
#50 0x0000000000abef61 main (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xabef61)
#51 0x00007ff4876f4083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#52 0x0000000000bbea8e _start (/opt/compiler-explorer/clang-assertions-17.0.1/bin/clang+++0xbbea8e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
Hope this helps!
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFt32ziS_jXMCw51SJCUqIc8yFI88UzSycaent4nHxAsStiQABcAHXl-_R4ApCRQlziZqNN9tnMcm8SlLl8VC4XihSjF1hzgdZDdBNnqFen0RsjX9YY0Qr8qRPn8-i1DAY6DaBVEizu0FhoRjohSIDUTHFWE1VCiTjG-RrQmfI3i2SSaxKjjJUj0hfFSfFETFOD8YcMUIrUSaEPaFjj6wvRmmDQN8BIVnUZcaK8jC_Dcse-F4GgtykLUpZlxhzhAibRAnQKkN4ACjHfiqQBj9ARSGVFF1ZPUAq1BI23EoZKozcRRfgsSkBERfSHPwyimUZD0rDdat8qc4dsA3zop9ETIdYBv_x3gWy75e_jvShSH8n6U0EpBQSkokRKdpLAjGEwj90Pbtm_BCYqNDkGyLDpW65DxIHljGvz-hjA-MdN2Pfa3hqatiQYUJEv93AInDaAHQ8F2Ky07qtGvQLWQ_bzZjTtACCHGNSpgzXiAc4N7cjMMWu2PX8LIOQTTIIkW8tGAuEIl0NqMNb7gGEwOmR3yO8_j7gSPx5JVFUjgFHpWteBr94tx_RKyn0ZkJeFrOKZ7xC1Ilnstg2Rp6Zifb2HZm2UgdMIwx-L0vBB_NAOP7GMmPQlWIg1KBzg_T2C7u8DMHI-r-Uc6LRAVXGlELARbFKJ4xw3Z0HHTkOcCHjveKSiDbBVkq8OJSkNr5_JHFOAFIvvpluXqnJcZfzSe3nvIMS6WCduZxqKXLHv_TpbW-NYevj8jNulxwcduZ_EG3Ul-oOdeyOGadacPG0BUlDZwKG1RNnFJCSmfJ-hOm_YCKDHhiWkXXhrGWUNqprSbqgWyQaLsqIthRbeeHEr0qeNIUclafRw61GYfGZYmmu1pSVQJ2Qe9IQq66LyfspLsCSQicm0im4ksYVjatrARJQTJah3gG_uDbS8dDqBhOqzrp2Zo-M1yGs5KpkhRgx0RtiYkq77rOHThBH2QbM04qREVTUN4aYQxg5dG42wZZMuPUqwladAtq0G5pnfvfn3vjgrG3UEvg5F4AlvYSU3j4VBL1tZDxzafPk7TsKVhv1KFjXqi8XyC55MkirP4SNuwOEYg7BQYc6qx8pWEvQg1EBkSpcMCKiEhLAj9DLw8CdgTSFYxkAedlMgyfCJ1B6EJHzteBs6wYrVrPsbYDZJQC0rMomjtWvcdLdtp0zIa1vC068K7uZUkDYStYFyDDJIVF3ynVdUQvQlBSi52TVUbUsG1JFQHyUrwXQcXoRQdLxlfh2bejoMNEyYGChmSmpG9s4RVx41pQm3AUUGy2smliVyDDmnb7Y0ZTtNdd8fhoHMNHORe24qKJ5BkDSEVTctqB03JjH57n1u6P5JssDtyUcORkOCWczvLtb3QW2tWHHqrPYxnA10LMyd1yNSz0tD8ENr2L-O07kr4PkYmhdvmUxMvbed7RqVQotLoV6Y6UqN73ZVMuE4cxf2wN4ZJK5kCd_5rj-mDEHUv_Pv7oTFO-wsvSf6sEhNdNxW9gvT_cgEK_YPpXoo4cn_vejZ94ySaYBxF0aTv7qjUP1kEtSESyp-NQ_OTBfjC-E-3BG1bT4yqhFYCJRrKsCFUioOOolt_f3SsQEohw5o1bGiL5_tVA5QywbcGvtYbE9Wj2eEy0SkI6ZaERMOW7Wk2KoStBq6Gzd3QasQkmhWsZvr5bEfYZ0FBsjqxxCtdBsmKuuQhTg-AqMkzlOGQxIctkWaPsF9KttsQthRa7Yl1oomKWsiwZGTNhdKMHiUMx9lSWJGylIrt2InDJX6fjGz7A-qla0e51l851V851R84p_orHP3ZwtH5uBNmFGBenqhSjfbQ-520NRLqrYGYOt7uutN_cti2QDWUSHVrIl1QSBZoNZSY3LBfPr1ZLN8ubt69QbAF2pkJRKMA30ohdIBvnYJS_A9Qc9pHuluTROPbxf2D-70UXMNWW02SRYync7wrin5892Zx_waprmiYRsTs3c0OXEht9vWjkiHTm66YUNH0rI8lYEp1BuxbRHiJ-gTSFgVsqRKZAGeigK0ytCdqi3hpZxKlBGXmOkJyVz3oiwr3mtDPqOyadodvNAmi-bAaELnuGuC6rwjcitZiYy89kCFs21pIE0cdXuG-3hr25QV8axaPHZ7GMVC4Lr8QWYUpCtcoFIYwMZ5xKzrddnqiUNgYMFAYmqBDVBOqZ67JNkhWJkrWKLxHYbimNNRC1HRDmLlyLspnBsfJBE8idMLbkb22La5ec5Ash0JtX6CLDTxec7LAWZAssshgRDspgWtkrkSQSIvPwFGAZ0FyY35bEvgEiTg3vwyF_hpGLmIH-LbjJjBYBJVChSifDcFdjWugmpwSLDGCHVKtOk5tuf6ITrIIkoWLkz3F9CJFxpHB2Sw4SGmiwfgJstW1WV-HxLN9QTHASYSibTT8S6Ywy7IcWd-3vNWzcgcfJePaeuaDc-98P0iSL49CaQmkCbC9U8C4DvDcMf4x_hngm2jby-cpEI8UyJKSnlJgWQPhXfuB37M1J3WA847b2yulLURfSVwjjScu9sVN8DzOXWHwE9j1-dnJ95bwsjZc8x5Lb4wf8SL7f8ci6VnMqirNZzSLUhyhx0cJSgsJj7J3iD6K9ulgzXi3Dde8cx2t3kgg5USJSWR1idMUR54mqcdmFidRVCBJmIIX0KeG8tRSTs1Ej3LmUZ5WOM_miBTiRZIfUMZmokd5OkK_LCi5gtktXY_x7JDxlOZkWpZoDXopmkbwXwS_N-vkw3MLv4jSXF2OqPXc_QrXX10HfWaGq-IHeDHq-6-O1DajVv_RvDk6WmJHDpePlCvipESnFbDnO72t0lA-uJtOIxFc65FkQ3MhRH2Ni7aX37PefKQgLXC8t95Dn-ktduvyZfPtg9N9Q-ra3Q25a9o6SJaHJhqRtbdJRgQWUpLnT1C9YOZ3TrtsfRN_o7H1pyT-U1t_SuL93SycxN4KM01ms9kcH8p1Dw1xR_9UHakXkulNA5rRpeD9FmLsEna5_wSqq7VvgzfbVvZXpJYd7G3-w2bf28ThXb8zHnfuVLFaGAX-wcx-_QpIOyA9pLGPdB7N0-y0eMsN0M_vu1qztn5esSdWwocWJOHlHxpq57ZXdF-HmQdqMgJ1Nk3JGVAlEA03Has14zeMf2h9LC-6zg3jRD5bI2ghndd4Aw4QO9V6FTCMrh4Y6QiMvCrpaTAMDOUpEKgwIWisx58PG6O6h002wmaeRMmZ4ED1h5MO8h3YaPG5X37MtuwPgo1R3cPGSxwzyLI08Ra5j3ZreXD86e39h8rZ3YgKylaS_oPQ5GnfSqDu6J0rX_54FHolPRRmPgpxFuHyIgoroDWR1uyLSoMczoVc8HKhtWRFp2EUsveDjkPqEYdyyFrueCWGjPbSrFshPxG-hjvO9JUcqEfGgy73ocNxlUZfhe5vUnSjS-yjqxmY3vsW6LGue_R2WecxFh72X1u2xpfe746mBctDcz5Ck-A4u4jmPWva-tAdz7ncadDGkJx0sIugnhkxJAQvhfdrhroK_AbdQ_hxNIZ_ms1eGgf-IMD_DBin2cyDMfZhpHPILseE-6Gk90GOI6sXTE_uMP0l5l43g0cluDuZvh7HWjPpZXY6GTO-3U7XsIOF2bMDHtmBFNnlxf20Hf4owF8FNIOJB1oyAq0gZH5RiWVfmN6BdyPK5wDn19oL9TJ5QqcjoctkRi4KfduX5sdCj0LY5UXS-YzLja_l1EYTT1Uvm8_KqiTx9KKA72AL5XvQG1GuoDrOOobBB-OupY6T1lNnOlZnFl9OPX111Hl9-oxqWRN1taDj5PUUGuXSaT7N4fL189tv76EpQJq8j1WMnlhOLxd3LnWeCdC7eyT2LsRRonm1eGPh8PAaJdApyeLLi6U1aI-VvZHyLZvOi1idT76_b3uyoBQ8Ub-aFw4SfEOKfxUrGSN4Vhon5kk5y1-aGe4AOLEfvDLc3w_zEBSJhj3s79ip-yp3TVszyvRD_4bJjupVsk2D_KFpklHSDtPIL2Of2DPxdX20hR8Q_rY8_vv37f1m99Pi7u5D4Z7C-FoC_-1bgCOXuIZJLOKeSUYbAKDTr1SVBtAOjPLBrQekZv_-Kfur09BNWiL1xMQG5Al-8hZSgsc45CR5cdTQRGrG1_9ievN9vvlncR-Diuc-yXgbPqsup-B_bcN7lDwY01FqOc3y9CKMb7bu2fCzcP4IOI4KfdfBw6nr4THeOczS7PJC8SBaW4Z2GeEhEB9a8r8dfNSjPfCutmnvQZ-6c7a71fBelF0Nd00rpLabsOul6EZPD4jRngOK2fR4t2ifQszHsvvVvattcZ1MntDeviKdJ3OceRnYUpTwN-Du5oNreuOeveyb7KuYP1zUXhJPVC-lT2MS08iLX7fSBCNenpD1WlI6ITwp576UeJZT8AF1fO-40oS718ePMT2v1nX8uRf0UJPUywBTnMclTP17albmvUJP4tQm80jh64SmXkBPAy9higo6nUGBKI0f-7eQTz_isiFy_6xTfy_Na8NL-zL2lRRxYnp6YF-PAipC0AD_Mn6w8eJ0NXF4UOhIqdGjQYZGv5gfpNdz5N4ePpmHpV5CkVR5ksZz95r6nu7wsOqjtODa3uH17TduCCV1XRD6-bHiftx3vHsvWsbL3bvE3oV90oj2cXvTJuxD8sRgcICPloyv-9XEWXg34fGRbrdx7E4Kohh9VHZ4j6I32DQ8akmYVkP3iByp7Vslrqzb95shi32gt17kMLdTAjyrSVOUxD58O0CF8-G507-L4rQ90vHDoiVND0xx6pFQ1_Op4_ekgvrZg_Oy6a7yAKwV2XP9bOxjJKrQ_2cfGW2XzjqD_-xqlRZ4lp0Fbv8ezji0WzS9eD6aaAac25BfGLrwcp4D3X6sRzm9PY-ajYGhZfmtwPxdFOo8Kn8XxTv3OYg9KpeC884RWsKG71x8A5C9t_xOcNLSK0ynuQ9nluTZWThXB8de9nAibThnht8RzitEOIePB-B8lKSkJO_vjg9pyqCAjSyLPi58fen-8YmJEe1Q9sxLESNSQDWN7SdefjhzR9tjHo-e-0-jPEGPjzUrTDgmUj8eSPLSdwAMEY_LUe5FckCO_o9H2FLfsT_sThbudTr7gpJpR1W_Lxi-sTJ8vct-bgu2rP8cTZykRs5OAQqfkBZIASB2kKv3zIY0vf9YDthvtsRJeuEdv7eiBffhrQ3UrQpw_Kp8nZTzZE5ewet4Os_ydDqLs1eb12SeV3EZzeZplRMaz_N5Pp_O8hJyUuZ5On3FXuMIJ9Ecz3CUxFkyiadznGekpNEsy2iJgzSChrB6Yhx_IuT6lX257vV0No2SVzUpoFb2y2cY97jhIFu9kq_dK8ndWgVpZF9B3lPQTNf2c2mHSGerILuxm67QoGtnZit0xbcPX3Wyfv397xZaBP4vAAD__wRPjKg">