<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54358>54358</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
no matching function for call to object of type `<lambda>` THEN crashed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
namniav
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/zjveWEo8E
```c++
#define LAMBDA []<class T>(T i){return i;}
// OK
template<int N = 0,
int M = LAMBDA(N)>
consteval int test1() {
return M;
}
template<auto F = LAMBDA>
consteval auto gen() {
return F;
}
// GCC: internal compiler error: in dependent_type_p, at cp/pt.cc:27243
// Clang: no matching function for call to object of type '(lambda at <source>:3:19)'
// MSVC: OK
template<int N = 0,
int M = gen()(N)>
consteval int test2() {
return M;
}
```
Clang-trunk(copied from godbolt compiling the code above)
```
source>:20:18: error: no matching function for call to object of type '(lambda at <source>:11:19)'
int M = gen()(N)>
^~~~~
<source>:11:19: note: candidate template ignored: couldn't infer template argument 'T'
template<auto F = LAMBDA>
^
<source>:1:17: note: expanded from macro 'LAMBDA'
#define LAMBDA ([]<class T>(T i){return i;})
^
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-trunk/bin/clang++ -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 <source>
1. <source>:26:18: current parser token ')'
2. <source>:25:12: parsing function body 'main'
3. <source>:25:12: in compound statement ('{}')
#0 0x000055b2f1da05ff PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x000055b2f1d9e4d0 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x359e4d0)
#2 0x000055b2f1cd80e8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007ff5f90733c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x000055b2f4649ecd clang::ASTContext::getSubstTemplateTypeParmType(clang::TemplateTypeParmType const*, clang::QualType) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5e49ecd)
#5 0x000055b2f43dddf5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc) SemaTemplateInstantiate.cpp:0:0
#6 0x000055b2f43e047a clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*) SemaTemplateInstantiate.cpp:0:0
#7 0x000055b2f43e6471 clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5be6471)
#8 0x000055b2f43edca7 clang::Sema::SubstParmVarDecl(clang::ParmVarDecl*, clang::MultiLevelTemplateArgumentList const&, int, llvm::Optional<unsigned int>, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5bedca7)
#9 0x000055b2f43eef32 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformFunctionTypeParams(clang::SourceLocation, llvm::ArrayRef<clang::ParmVarDecl*>, clang::QualType const*, clang::FunctionType::ExtParameterInfo const*, llvm::SmallVectorImpl<clang::QualType>&, llvm::SmallVectorImpl<clang::ParmVarDecl*>*, clang::Sema::ExtParameterInfoBuilder&) SemaTemplateInstantiate.cpp:0:0
#10 0x000055b2f43d1791 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformLambdaExpr(clang::LambdaExpr*) SemaTemplateInstantiate.cpp:0:0
#11 0x000055b2f43d2d11 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#12 0x000055b2f43dc4b5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformParenExpr(clang::ParenExpr*) SemaTemplateInstantiate.cpp:0:0
#13 0x000055b2f43d2e53 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#14 0x000055b2f43da177 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#15 0x000055b2f43d29e3 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#16 0x000055b2f43d2a6f clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#17 0x000055b2f43fa2c6 clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5bfa2c6)
#18 0x000055b2f42df964 SubstDefaultTemplateArgument(clang::Sema&, clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::NonTypeTemplateParmDecl*, llvm::SmallVectorImpl<clang::TemplateArgument>&) SemaTemplate.cpp:0:0
#19 0x000055b2f42dfea7 clang::Sema::SubstDefaultTemplateArgumentIfAvailable(clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::Decl*, llvm::SmallVectorImpl<clang::TemplateArgument>&, bool&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5adfea7)
#20 0x000055b2f43a6345 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl<clang::Sema::OriginalCallArg> const*, bool, llvm::function_ref<bool ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5ba6345)
#21 0x000055b2f43a7f9e void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::'lambda1'()>(long) SemaTemplateDeduction.cpp:0:0
#22 0x000055b2f3cfe70f clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x54fe70f)
#23 0x000055b2f43b4164 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5bb4164)
#24 0x000055b2f426fa64 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder) (.constprop.1384) SemaOverload.cpp:0:0
#25 0x000055b2f4270c54 clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a70c54)
#26 0x000055b2f4270fca clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a70fca)
#27 0x000055b2f4277575 clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a77575)
#28 0x000055b2f3fdf103 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x57df103)
#29 0x000055b2f3fe3a34 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x57e3a34)
#30 0x000055b2f3c414eb clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x54414eb)
#31 0x000055b2f3c3b707 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x543b707)
#32 0x000055b2f3c3e126 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x543e126)
#33 0x000055b2f3c3e1b8 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x543e1b8)
#34 0x000055b2f3c40659 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5440659)
#35 0x000055b2f3c99dbf clang::Parser::ParseReturnStatement() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5499dbf)
#36 0x000055b2f3c9ff3f clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributesWithRange&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x549ff3f)
#37 0x000055b2f3ca115d clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x54a115d)
#38 0x000055b2f3c9c022 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x549c022)
#39 0x000055b2f3c9cec3 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x549cec3)
#40 0x000055b2f3bf14ea clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x53f14ea)
#41 0x000055b2f3c1abed clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x541abed)
#42 0x000055b2f3bec791 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x53ec791)
#43 0x000055b2f3becee1 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.281) Parser.cpp:0:0
#44 0x000055b2f3bf2c99 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x53f2c99)
#45 0x000055b2f3bf41a1 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x53f41a1)
#46 0x000055b2f3be79cb clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x53e79cb)
#47 0x000055b2f2d612fd clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x45612fd)
#48 0x000055b2f2757731 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3f57731)
#49 0x000055b2f26f15c2 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3ef15c2)
#50 0x000055b2f28245d3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x40245d3)
#51 0x000055b2ef97b9c4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x117b9c4)
#52 0x000055b2ef97797d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#53 0x000055b2f258cbe5 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#54 0x000055b2f1cd86d3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x34d86d3)
#55 0x000055b2f258ecb8 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d8ecb8)
#56 0x000055b2f25617ba clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d617ba)
#57 0x000055b2f25622ff clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d622ff)
#58 0x000055b2f256ad65 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d6ad65)
#59 0x000055b2ef8a81e2 main (/opt/compiler-explorer/clang-trunk/bin/clang+++0x10a81e2)
#60 0x00007ff5f8b210b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#61 0x000055b2ef9774fa _start (/opt/compiler-explorer/clang-trunk/bin/clang+++0x11774fa)
clang-15: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztXF13ozgS_TXOi45z-DTmIQ9uJ5npnXQn287OPPoIIRxmMLACMsn--q2SwEYydsc9ZGZ7d3OcxCAh3bpVqioJQVTEr1dPdV1WE3cxcW7hsyniqMjqy0Js4Ohf-PvrM__lppjfTKzribWYzCz1YRPnA37UWceNeZLmnNwtPn24XpCJ_2HiX0_cJctoVZHHiXszceaPJJ044ST4IHjdiByO3A-T4Lpto20JYZD7n9RhzbdlRmsOLaV5TT6TiXtNrImzVMWk-8HCT7JQAYDOPmNXbgubFXlV82eayZo1r2obqkANAmj2bbW4PiEuBUdH14NDm7ogt_0uD_uSdTY8P-yq7ej2WEctDT8sl6AaJR8XOTTJim2ZZlwQLkQhsDDNScxLnsc8r9f1a8nXJfBDaE0YfLkt60vGoJ4TOJ6rNb7MaL7BFvKCbGnNntJ8Q5ImZ3Va5CQpBGE0ywiIUES_claTIiHYPpk4AUiU0W0UU-wH2KiKRjCOFLgLF37tENmHev0OP61-VuJ8u3Z3ZH5dwc6ZCu4MW1OD_CuJmtaiyX-DNllRpjwmiSi2pB0urVaQv_qJw1HMCY2KZ44Ih1rv0-VYyNccidnpdGSN2PaBSs7hlpg_E_9mEvQ-SsThPqU0qOIFgM_jNAZ9k07xJN3kheCxLC2aLAYEQQ2YErDwXSUqNs0WrBvFfNxJ8KaxeABdYh_Ei79BHy5_KQFwp-otZaJABJ2D2dm26fqAw7O8X2cjR5E-3N0sVjekaqJtWhNKomYDhlwWokZTMBx4Wj810SUYJBxk2XP3b1qKAk0GDtOqaniFAxLEA65Z1oC9SsMVtHoiEWW_1YICMeBGSuhIFIxXFRDR8oXeBa4E0QqWggZiAkODVEyk4GwU5FUNjZC42ZaITJ6yoCh8EMVG0O1OpQgcGLstSkTWObcpUJ-BXQg81x98t1Gad-dU_CHTDZmiXm5pie6uaOqyqS8rMt2i2GQ6fZnPprTaTqvXvKYvYCPoSzMyXUHZhrFpXRQZe6LQsHt9EglWrnJaVk9FTaYJK6BgGqcUTLiqUwZdJnkxlRzqp6saDPy6DZiOpY9OyY2N3BgG6cx2foE1QqD9l1RUODCK33iuxvx-QDtDTfjYhINN4KWaN4kg-GMbW5S8a8Q93QiEGiSmaED7VQ2ab0flHBsIlDEHe3uGoWER68WCH9-PnMSOqeUnCXkQoAJpIY9oZitwAjT7EUwqQ57nz0UaT5wF-m5VVF2yEu3Ikr-7tm297ZB7sUWkyYPJuYvqtVJflhmneVPe56o16KHJK_gKdpsVaEehEuHbjRA-1ovrSwSa-I4GkcVzi8_JEi3kC2cQH8SrKTwwg4C0OssCLPalHmbBbbsIksRPQitwXWaR9VpABATwa9Hq5zZLI_gLg2E986YQqpqX6SZvVEFZPwlO48uquLSkLLYHrWiSeH1JvJkXchYT1mYQ8FmsHluY6njD61UTVfVj66UfIUw9ULHF_xhE91cO1SAynEsjWPZ7-XtDM9VCqKqMojmfS3E0eX1NXjeO48TvI3kUnIP15hVEZTC4JeCgeZG_boumIjnd8qqUHjTUhfwImGleg9fEQH_TtdW2M0AOnLkr2IcmzWKUZ2YQ0pbLscK39LAbPmw1M108bnkB_YvEW0lf8zFPim7QnyNIYAgy8wK7Lwg21n6T5vgWCBrDn5qsTu_4M886TIs2dt2lVd0ZqqkX1SJohqKzNQqvORwIWfIZqMTSCILQWI7IjyQLmjnPDZpiRoMTNOE4_JkKBKqzpRX8Aaqkm1v2vPV9iXSAd3aXO--MlTBzGp0elF6jJzTo4Qm47vceDrdtKG4dH91WOteHNrSnayEEff3CE5VjHtGO4m7AfR5zr31E6szNSy2hcZh-4vjQrtzDWW1hXvIzpJeF-Aii66h2ThvxzM64cEAcE_Hebk2kfZd5hk_BvMIyfL8dhPa7W8OdnLzdvJRCt4L--fPcI4piG6I4sf3-ohwK8a3wHQM-86L3j8JgRjw_lKF3-nxBXFMP3He_Iz14BnxqB8G7w1-CazgUYX_2fDHMpM4J-fekhZkJn86S7wi-kaol1GGzEznIiY6_LesYK32QwPcreyCZnl05cRLOPCKFuOYJBXwmMiPQo-CHqX17zXCudTLBPFn4WcX3rnkMsr0u3hiaDwRqY7tuEsN2EJps8ZO56BEKPyaLZ5pmNMqOzCfH5m08krp8djybpJLEvk06RhJDZ67nD7N8m-Zp9WSCveZxwxQNfXZ3KeIhy29kRTbM4-PkaPn_cIK669UcNNVOqj3AVg41vTsn_9xTdC_STQqzEww-ABiwaomwUme_3W6ZbS1kjo4VSLu4jnKO5YqkVjW1GwkfDZKQE1xROw5Olu7BySp4nwHXgddJfowTpUdTjdWbzeXEQEHH3ZuNf23a08WFg_nOSObyZvV-Dag2Ewq7v1gycQJ198ZWt3K64nm3Qtl3qzuMg_7V0ZJmlyU8sJLhkQ_W9UtaP62aJElZyttF2ZXKEt46FT1tTWOZuifF0EzdyKkjz4ao-39TfT9THclpSUVpmtSnF84socc0uYh3geP-mYusoPGyu6v4LerEswuGt7ceaCr-JF0fIF_x2tCf-X9oAqS6vr7DEz-lefy1XuTyyL2QiyJSl5cyhpWiKC9td-51bqa7cNi76HMoJ7CYf1xXXVM8RpA7JMbI-0cueFVkzzy-K4rfmrKX578fx2NlXpIAzZpnJkMJo8MMRbhGpXMkYWqulxW4ZG0a7vBc6E1MfmpqzJrPJPRkbjzMtoluIQfkF15BOj_cK9QHvnm31DeejkAFmo4CQ0eBHxzJjj8c6uhwZjqWkt4Yct9Bgz0Quu8ZTQdIsaYDbdbsJnFiW-4JHYzA_H8Zp4GkTOM01DnlLnWPeWdW3-ffMadjcSgp6nOo71lwmWd7POpDeJC7MHrfH4qqTtIXhAaJBGCWCfWLTup5zm-srFmC16SzdencKLCCk9ItqVqLU6IdrInvKmM9edzlIrrNm_ls_1JMNPHyVS3TOPPS8bTtSXE1PozZksttZ_a-fPz1JKCMGgnuAQnR_CQJiwrXaDApfgsVhmgjyhHNNTk8Y-haMz88KcdfiF6C09D7OvowjKPkJPovciPhqtuJ1W14HQWe7F2DNzPgJRBgTsLbAbsXvS0Pi6TmYlHXIo0aNRUYXI4zlp3qbZdQuk6zXys81X2MF3Wbkk6HGDOoqev3IHGV5AuU8jEXbT3JoEZxoFNMbduPv4Hi_xROxyJK8qARNTdskVmOc9prt_sWd4R9KOJXQDdqQuZJHBrQ0ATKmXsSaLduYQI1Fi2O2KxmGyqNG9NgEX1fPE_PlaIE0g36JvGucc90enh_4UHtU-2MuRjY83ZolPtbkPsdKqeuulOrIe0Qx2WdMc3VlSxoNBlJl00jfnpco_w_iKIpj7KzKjk7lHLP2x9wfC2Q20JIn_cR9DTqcJbia_zoSVjEmbHjZpCfe9Ezpo_tAzIDYfyoHz-Q_CS1apkQy9Ik3a2hjWAuUlqNDtekg_Ov09H6fo2Vo0PsW0k5XNIZIuWypKK-dOYoFVFgBxcTPc9wHw4kPV_J15Sa9WA3nnCjuQCURNOpb4gKo-C0Th-LUu5qONyEeV_Sfzb8oRbmjdXWZ8ip9kA030_-PxVxk_GPW3yGpE1rxwsTrpRNE35mGHQQssMp9WL1eHRfxLusn7gShwZUS8CceGY7ieaol0XMf-C5msxP2uk7Z2Bpi-5m-VjwPF_2rsHT0h4n8IPA1YzoVqDXz-MBfCMicxPZsYZMy3OcWWL7zNGJU32pXUKMD3N3XJTx7NPlElwfva-lMc7c8fxYy9JanHshnncRdH5KyPFcimdJUBrqflbBkzCIQuYRxuy1eqbnyD2-Jyr2mxfaxTftHJzoPYIzBnjbltg08I4BPgiDmHQ8L-1HOdCHpzHdTo0DSaSNxCJ9PhJvfC2wOv6cRdwfc3eE6rs1hqUN9rCleWyOw0G9DG6F74kPAS3fKM9OWrXJ58qwcL1mLy_ygUv4RLRK2bqS9VuWtMp4Yl0LmuLDd6rYaA6kQ_NW80VVTva7r3vLUYp8ec1uA8OR_Qt_K6JhlWgpAD4iNYOht5d76EEoVfKlyVc04dmrxuifshvB9SRMzZ59w7Q405fQ_hdNYxyyY8mlRvZMJ3sG_oUeJVv2Sw8CYqcBzYMbF2KFYxPKE1UXrSsakwQpo0ZCYJDgOElyLgkwLKvjDEDpwZM7pzzyzkxK3EwhH-o_h7TOlsbnDqnRuJsb3NF45h_Ded37riUCAxnAMc7_XO5GYg1J0VgLtZg9p3ObOwSTjXGyBEs22O9x1iVm8unWeeTYVuSS9TpLI_RjMMtc97o_9Ygrw4dbZ7Ifx4NGtF7MRCrwEkpU-2PlP9jkrk91jY0PVu_f-SBP4rsGZNqLD1pLDScUeozJ7zCPJfwlrdXbJWxXarmpOJk-41sAKs5J2ktL2566jLR98YV60wJcbLyV4iK-cuPQDelFndYZvzr_BRTQDMQklQGAHYLiHn-8-azeKMDji0Zk5ptmznhRge_BiL14upqFMyuA2aMTu9yy53EUUNenlkNnPrXteXCR0Yhn1RW-f8Fxcv47kU3A94l_fZFeOZbjWK7t2IEV-uHlHFQNkcULHRqzOPQmngUzzjS7RBz4CpwLcSUhRc2mgsIMfGG1L6TyHhjnV-p1Dxe0qZ8KcZXTbZ7S5wvZ9ZWE_m8jcPDw">