<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97934>97934</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang++ frontend crash bug
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bec-ca
</td>
</tr>
</table>
<pre>
clang++ crashes during complication with sample code.
Code:
`
#include <string>
#include <variant>
#include <vector>
struct Element {};
struct Fragment {
template <class T> Fragment(T);
};
using GenElement = std::variant<Fragment>;
template <class T> GenElement item(T value)
{
[&]<class K>(K value) -> GenElement { for (auto v : value); }(value);
}
template <class... T> Fragment frag(T... elements)
{
return {item(elements)...};
}
struct Section {
std::string title;
Fragment content;
};
template <class... T> void section(std::string title, T... content)
{
Section{title, frag(content...)};
}
void make_education()
{
std::vector<Element> elements;
section("", elements);
}
`
Output:
`
/usr/bin/clang++-18 -std=c++23 -iquote /root/mellow -iquote /root/mellow/resume -c ./main.cpp -o ./main.o
./main.cpp:11:61: warning: range-based for loop has empty body [-Wempty-body]
11 | [&]<class K>(K value) -> GenElement { for (auto v : value); }(value);
| ^
./main.cpp:11:61: note: put the semicolon on a separate line to silence this warning
./main.cpp:23:3: warning: expression result unused [-Wunused-value]
23 | Section{title, frag(content...)};
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
./main.cpp:28:3: note: in instantiation of function template specialization 'section<std::vector<Element>>' requested here
28 | section("", elements);
| ^
./main.cpp:12:1: warning: non-void function does not return a value [-Wreturn-type]
12 | }
| ^
./main.cpp:15:11: note: in instantiation of function template specialization 'item<std::vector<Element>>' requested here
15 | return {item(elements)...};
| ^
./main.cpp:23:18: note: in instantiation of function template specialization 'frag<std::vector<Element>>' requested here
23 | Section{title, frag(content...)};
| ^
./main.cpp:28:3: note: in instantiation of function template specialization 'section<std::vector<Element>>' requested here
28 | section("", elements);
| ^
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: /usr/bin/clang++-18 -std=c++23 -iquote /root/mellow -iquote /root/mellow/resume -c ./main.cpp -o ./main.o
1. <eof> parser at end of file
2. ./main.cpp:21:28: instantiating function definition 'section<std::vector<Element>>'
3. ./main.cpp:13:32: instantiating function definition 'frag<std::vector<Element>>'
4. ./main.cpp:9:31: instantiating function definition 'item<std::vector<Element>>'
5. ./main.cpp:11:3: instantiating function definition 'item(std::vector<Element>)::(anonymous class)::operator()<std::vector<Element>>'
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):
0 libLLVM.so.18.1 0x00007f9d5b2d33ff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 63
1 libLLVM.so.18.1 0x00007f9d5b2d1539 llvm::sys::RunSignalHandlers() + 89
2 libLLVM.so.18.1 0x00007f9d5b21d267
3 libc.so.6 0x00007f9d5a0dc320
4 libclang-cpp.so.18.1 0x00007f9d6325104a clang::Sema::tryCaptureVariable(clang::ValueDecl*, clang::SourceLocation, clang::Sema::TryCaptureKind, clang::SourceLocation, bool, clang::QualType&, clang::QualType&, unsigned int const*) + 698
5 libclang-cpp.so.18.1 0x00007f9d63219186 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::NestedNameSpecifierLoc, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) + 134
6 libclang-cpp.so.18.1 0x00007f9d632190e5 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::CXXScopeSpec const*, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) + 149
7 libclang-cpp.so.18.1 0x00007f9d6321d41c clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*, bool) + 1372
8 libclang-cpp.so.18.1 0x00007f9d636af941
9 libclang-cpp.so.18.1 0x00007f9d636a615d
10 libclang-cpp.so.18.1 0x00007f9d636a3584
11 libclang-cpp.so.18.1 0x00007f9d636a74fd
12 libclang-cpp.so.18.1 0x00007f9d636aa740
13 libclang-cpp.so.18.1 0x00007f9d6369dd47
14 libclang-cpp.so.18.1 0x00007f9d63698c21 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) + 81
15 libclang-cpp.so.18.1 0x00007f9d63062908
16 libclang-cpp.so.18.1 0x00007f9d63061691
17 libclang-cpp.so.18.1 0x00007f9d6305c1e9
18 libclang-cpp.so.18.1 0x00007f9d6305be65 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) + 805
19 libclang-cpp.so.18.1 0x00007f9d6305e979 clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation, clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>, clang::ConstraintSatisfaction&) + 857
20 libclang-cpp.so.18.1 0x00007f9d63635512 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 ()>) + 3138
21 libclang-cpp.so.18.1 0x00007f9d6368b697
22 libclang-cpp.so.18.1 0x00007f9d62f24ec0 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) + 64
23 libclang-cpp.so.18.1 0x00007f9d63636e1b clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) + 2379
24 libclang-cpp.so.18.1 0x00007f9d635042cb clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) + 683
25 libclang-cpp.so.18.1 0x00007f9d6350b0f2 clang::Sema::AddArgumentDependentLookupCandidates(clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::TemplateArgumentListInfo*, clang::OverloadCandidateSet&, bool) + 1058
26 libclang-cpp.so.18.1 0x00007f9d635176dc clang::Sema::LookupOverloadedBinOp(clang::OverloadCandidateSet&, clang::OverloadedOperatorKind, clang::UnresolvedSetImpl const&, llvm::ArrayRef<clang::Expr*>, bool) + 492
27 libclang-cpp.so.18.1 0x00007f9d63517a19 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr*, clang::Expr*, bool, bool, clang::FunctionDecl*) + 745
28 libclang-cpp.so.18.1 0x00007f9d63248166
29 libclang-cpp.so.18.1 0x00007f9d63247d0f clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) + 1263
30 libclang-cpp.so.18.1 0x00007f9d632152ca clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) + 2986
31 libclang-cpp.so.18.1 0x00007f9d6353f7a8 clang::Sema::BuildCXXForRangeStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::Stmt*, clang::Stmt*, clang::Stmt*, clang::Expr*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::Sema::BuildForRangeKind) + 2856
32 libclang-cpp.so.18.1 0x00007f9d636c3e33
33 libclang-cpp.so.18.1 0x00007f9d636bd98a
34 libclang-cpp.so.18.1 0x00007f9d636a8739
35 libclang-cpp.so.18.1 0x00007f9d63697ad3 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) + 83
36 libclang-cpp.so.18.1 0x00007f9d636d9ff6 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) + 2662
37 libclang-cpp.so.18.1 0x00007f9d636dc814 clang::Sema::PerformPendingInstantiations(bool) + 628
38 libclang-cpp.so.18.1 0x00007f9d636da0f9 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) + 2921
39 libclang-cpp.so.18.1 0x00007f9d636dc814 clang::Sema::PerformPendingInstantiations(bool) + 628
40 libclang-cpp.so.18.1 0x00007f9d636da111 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) + 2945
41 libclang-cpp.so.18.1 0x00007f9d636dc814 clang::Sema::PerformPendingInstantiations(bool) + 628
42 libclang-cpp.so.18.1 0x00007f9d636da111 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) + 2945
43 libclang-cpp.so.18.1 0x00007f9d636dc814 clang::Sema::PerformPendingInstantiations(bool) + 628
44 libclang-cpp.so.18.1 0x00007f9d62f269eb clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) + 427
45 libclang-cpp.so.18.1 0x00007f9d62f2705b clang::Sema::ActOnEndOfTranslationUnit() + 363
46 libclang-cpp.so.18.1 0x00007f9d62797f0e clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 1166
47 libclang-cpp.so.18.1 0x00007f9d626cf55e clang::ParseAST(clang::Sema&, bool, bool) + 766
48 libclang-cpp.so.18.1 0x00007f9d6453e9ac clang::FrontendAction::Execute() + 92
49 libclang-cpp.so.18.1 0x00007f9d644bb434 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 708
50 libclang-cpp.so.18.1 0x00007f9d645ba9bd clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 765
51 clang++-18 0x00005588c668a42e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 3694
52 clang++-18 0x00005588c6687894
53 libclang-cpp.so.18.1 0x00007f9d6416bc52
54 libLLVM.so.18.1 0x00007f9d5b21cfb7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 151
55 libclang-cpp.so.18.1 0x00007f9d6416b517 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const + 407
56 libclang-cpp.so.18.1 0x00007f9d641337c8 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 888
57 libclang-cpp.so.18.1 0x00007f9d64133a2f clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const + 159
58 libclang-cpp.so.18.1 0x00007f9d6414ff00 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) + 352
59 clang++-18 0x00005588c66871ec clang_main(int, char**, llvm::ToolContext const&) + 11180
60 clang++-18 0x00005588c6694383 main + 131
61 libc.so.6 0x00007f9d5a0c11ca
62 libc.so.6 0x00007f9d5a0c128b __libc_start_main + 139
63 clang++-18 0x00005588c6684255 _start + 37
clang++-18: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Ubuntu clang version 18.1.8 (1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang++-18: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++-18: note: diagnostic msg: /tmp/main-6e2d3c.cpp
clang++-18: note: diagnostic msg: /tmp/main-6e2d3c.sh
clang++-18: note: diagnostic msg:
********************
`
[report.tar.gz](https://github.com/user-attachments/files/16118020/report.tar.gz)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcW01z4zaT_jX0BSUVCX4ffJBlO5k3TuwdaZLsXlwgCErYIQEGAB07h_3tWwBBipIoifZM5c2ua8ojkwC6--lvCEBS0g0j5NoJb5zw9go1asvFdUbwDKOrjOdv17hEbOPAGwfeACyQ3BIJ8kZQtgGYV3VJMVKUM_AnVVsgUVWXBGCek7nj3jruYvh7yXPi-N2jyLUfoE8ZLpucAMdfSqWXdvy7sZcvSFDE1Km3BCsu-pdSiQYrcFeSijAFnPjGiW8d_2bv7b1Am_61eQEUqeoSKbMkLpGUYO34d_1IByZrB6b9QsNFG6lh-YGwnqh_C6TKtdD-oud-2a_l3_VzT5AdLEYVqTR18ILKhmgeLAMd50BrEUZOeNuv8ZMmAZOf-jlgdrCqE9-AggvgwAQ1ioMX4PiLHQn_BmgJYTJ4shN8nPP5fL6PGSgE2mjW9RvSEpYjAgiiGsE0S1bWwdj5fD6EuqduFbki2JjhAI0e-NamgKKqJP0CYMcd5kwZbYyo9LRwL5zmQLZkHZiMU4NLYITuSIwozXLuxDf9FAuXnaQlh-mo8IaHCn0lzyRvWkd0YDJCZWeE1kmWVv9akh7lHTY7uRwIzb_lnuKOONm5s_n92Ki6UWPOft9I4cD7jDIH3g-Cy8xLwMyweYvbJ9AHM_pHwzX48F5wrhx4X5Gy5H-efKH_JrKpCJhhMNePEWVzXNdgxnd_85aZ4XvHX3ie4y8i_Qv8iQQzYWgBBGIbMsuQJLnxk5LzGmyRBKSq1RvQMVL73ew38_dM_60d0OIIPA848RL8zb4JzI8m7IR3l4RlXOmwDOpGAbUlQJKKYl5yBjgDCEhSI6E9oKSMAMWBpCVhmAC1pbJHaowG9B1_4R_gSV5rQaTUvqo1VSrQsEaDa0BsP89agQYwQt_C-AFv6RVw18LyP6d-xoVIOiE6nCgDlEmFmKJt6uMFKBrWxp8-XsiaYIpK-lc7xoFx51M6yZ32RmMUMRDkj4ZIRXKwJYLscEisNFMddGcJ4LQtQP3rQE-Ms5kJL71oOSdSg9CFadRaYqu49tlMvdV7evNga4Xx7WTDDDvr_GbATRL5FrS90LD6jrQ0hLv7OSWpcQ8v-R6SGhf4Jrv6Fv8akfmS6P8Pnerp4W6xugOyySqqAAJZswGC1FwoHTS3StVS8wfvHXi_oWrbZHPMKwfel-VL99-sFvy_Cdb5jErZEOnAe4BYDroyV8dnU4WDDOGvSiBsVFQLUguOidSBVPJGtI_1TCQlxxRpoUXDgMSC1soW5yuF8FeQN1XdZ2p37rjpk-AbgSqAxKaxlcEC_KNSt6fZdPwl4YXOmTUSkgiAFCAsN6ZDS6tfqEcemp_X2eDQ6NhmEOtIQRn9iJG1VP0Rqp5Jh3Ay1clO3ZIMRkimmqI3meLkgNlSDMeE9DrPnk5xUDyPUdSOtzCukyDG2VvFGwlMCdW_4jURSE9si9_pIuw8wDSwvFFAvlUZLwFDFZG68iJMNoKAN96ALXohwPhpO4j-RYSOXG-8EeBpsf4RcAEkacsowl6o4MwUci9IACdyHx5-_fl59Z8_3zw-fPqvu8_PeooTuTo-1JwyEyioslK17ghASTM9by753EvmHnBfXdd14yLNwwzmvl8UhiXbfLzJ9sOToEwZ6dZtkEh2gwT685lLJQiqdEkKl4Ca1gToHj_yrYcdUzY_--S90E_HyH9u2IpuGCp_RCwviZCtZgyFxHYn8IJsXg6jzp3MUKzHRcP8MhiP3Bz70LYZgRmuI9QM1_XI8pEPQ88NEGjDmOF5RSrUflLibYlq1Qjyq-7ZM50Hk8HIX3Xdc0tw6cCFhm-4iAm-D7xrxpbjFNY9hZ8oyy-ukXFeHgz6jwaVa11ttRo8_aZhZo9H5xDT6kpluLbaThPry2ACZF7qJdG4QDcNLXMNyWdS3L3WYjJgO273Hus1zKwRfPRCuiWhnP2CKvKJFbwT7BCLX0y616NWunQoKBEPHB8OQhXJP6DOtS1LFjZNPlCphsz0KHt-0KIcTUPZJeH_KZSXv_--wrw2GA-E_5tBDmxciSeBnAcevgDyQPpjsMdkPsTlPYZ6Gp4zryaA0wWPzhJj2KKUXAYpQkUaeO3wdAKoEYq8MLfpw50y3g8T6xmeN2V8HBTd-nDKeBQHNiN4_oTxaZ4HNuN4E1JIlCYYeuNGtGoyqZZaCwJRpo7tp31yqNCfm1LRB_JCyjHVDozHplKrHS-8zK0bwdS10d6Lpoz3orRbP54wPsQesS7oTbAuN8xIdCLOLbcEf92ht0KKygJ1zdmYb-xZ_K4gWQiB3j6Tot10G2K_m6DLweGcVYXK8ldTN36q6vJ4ajfp0IcnK28k-n1GbHMYnU8BsFO_G1q80yl4kzROz-D9qS_YSX5vy_VOkB0rcl8BZ2N3t8ogeF1SzSFyVjvvQiW0PgynxCA_DD04jso9ZVRuDzm6JXkzYomHiI3KfNa0zMIkH0XgqJK7hPShlcld6dkzaOXQCcNOmMjpDqJHQTeUoXKJynIhNroXP049w3W7PvBZGM3rAaDr2u46DfqebwMVnJIWkixKO5VfTguwgAHB7rjKRcN-o2q7aoqCYkpsC7Wq2xbqrN2flNHsoh7JGNnEB6ckJj8iXjbOcWs1h0YjJxvnhGriHVF1F0-_v3F2xnS2GToqb23QKJGUtKAT1NWZ5CVxe5p2i6LXLPTjrsOdUESEbgDxCd0u8j4aPL4QUXKULxHLaY4U-YiC9dMFxkTKJ0TF36T9I85XRJ3Q6IhmdWDZqXFx-6AfjHQrR1SekEDVo8iJOKyBo8RuccAJVVPoZm5xIj8s8nyXFGrCco0a51-buufiwA8PGoKLfdCHQb-gzPeoxzYObtiF5Am1Y-jFUX6ivWoR6siS_Iayx3ofpjM8jYwi-aPd_huxiy9MEMnLF5KviNKZbK8Mex--QzyC1PZRcEJpHHox8k6VXoIM3HsUjrM11g1lSLx9GIGLHcng6Rk3PQrxLUpxYAtUOKEhgEHiRZEdP6GghUGcu8WZHn4MSt2yv3MH4iLCF4CzDgS7nVV_QlkKvRDiE7uTC6we2XeSTfGvNmDwr4R9VDaYJlZv_oR6LfSLGCVn9Lb8_fd7LkxHtFKVeocznH9p1nrfhu34lHc8vehU38jgPnIdbK0irXKSsFPOlD0T7BO_M9QppWmWpwmy46fsmaAk9m155E_Iv1Eao9w_s8cyYiGjML53Z6XDYEK2i_K0KE7siw-a6l2M7L4B-7ZWerx6skqPIpuf_An5Kcpx4gXjAjwRUXBRPRGWU7b5NPyOXhc3e4UVtCWCP2VzMUducSIn_rtAS6Hd7_InpJ_vDVowZbciR553Ysfx3wZal-ODKb369wZtSkj7R4M2JcZ-b9Aux2lYwCglp9pSXYDcsfyxWAvEZGmofWFUDc5Ij05cf-lGDBNU0J9guJwPYAFjN3wvX4Mvn_2uCgsuB3YYp3HhkiGxJ3PQZPB5zWuTVFrF7zUxNfqjIU9KHO7y4fIHwZvaNBsju8g7eX7meVOST1XNhVop0_P3-cnrS-XgcoCHES7C8FiQxWo9oqqx3tyW8z3NywE-CH2Sor0e8F6YI2T5wp6maSshghuzm9ER6Rqr4HIMDoIsC_xgf3e4qmlJROsJmOxRWYzt2-4ztUM47r4sCS8H5iDMUJrl-yWeIbnj56WPHMk5fgfNU2RjRNgFr_601eEJiDBMEhxFCQogARh7zxWi7OQe1hYdffux_wwuzen2AS9-lNr9yhAeMrPPQpz0Iy-HtsCLMhxahYfBhBMnHi6yeNC3LwWS288E8xci3pZala-qffO5YStUkPJtD4dJe7NeaOuA8HJE0iKEXjxUfS7oSxcklktvyasKsfzQ3kd1059b4rXmEpWOvxxsypurBTZwtIrrJzw_49dXc_rK8RcZkhQ_d3dpjMb3BusHz0ogqmT3-mA5VJbaXs3Rqe69HjJIbcY4jM20YdztjoVdjqyB5_sxTk6CZpwCHUWJDsk9DzqYqAec2uE4M3RxsOe1kytJujhwOdBquRAs3ivXv3gmTwv1L54dfX947ouaXoc1olp9x98WncXBKvoEGl5om7dwQgrwgqJw3VOUbwef96LlSJg8heLfiIYNhH20SqcG5dgjNg12Ybnjwbjl4miDfc15aUPZUV_qeV5ijzRE7tlInAZ-4gNN0Z78sDEt8gZn6fYO0GHPw7aVj-CEA3fYg0kGnp_1yGepkFDPA3LWTiJ_Kk4BDEPQrtNCbePJ_nRzh0QIHZgW7cqgsCkcYKu9AtGS5O2VRPJKlbmQqFnSob6RBMxezEUWQgAd5GXL8ZesYaqxa78QYe6qaNueJ3q-1w9cI7EhOtuA1yR6joJZjWclZc3rbMMaO2QrCMpBxXNSmjs2XNLX9pXJ-GVJ8lsqjs5XnxC8Oy2fU7RhXCqKQSU3Zra9XvUN_wbXt-xZ9sV6vVj-CNY_3oH7x4eHx98-_fIDuP_0cLcC60fz-ObLD-Dz3dPj57XTHVl9GjuLnkhtwCfPo_cDBAEm75AcoN31sXcBAe9VVdtDybOIwNzH5mzy91lJbj-sm--lof2bdk54094ymCsk5pu_nPDWgcmZ6waNJGKGlEJ4a78pvi9oaa4aeJGOLtA1R_GHa3YWf5Vf-3nqp-iKXHsxdH3oprF_tb0u4jhLcFHEWZB7aYaSwkckIBkuSBoXeXZFr6ELAzd2YxeGkefPQ91fEuhj1w19N8qcwCUVouVcx8E5F5srcwPiOo1TP7gqUUZKaa4pQ2ixh054eyWuzXnsrNlIJ3BLKpXcrWCusOzdYN6FivYSRbO5akR5_fHbGS17L9fwfwMAAP__T-BzDA">