<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/117157>117157</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] Crash at O1: Assertion `MSSA->dominates(NewDef, FirstDef) && "Should have dominated the new access"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cardigan1008
</td>
</tr>
</table>
<pre>
When I compiled this code with -O3, it crashed:
```c
int a, b, c, d;
long e, f;
long *g;
char h;
static long i[];
void j() {
while (1) {
if (a == 0)
break;
if (a == 1) {
if (b == 0)
break;
} else if (a == 2)
if (c)
break;
else
a;
}
}
void k() {
for (; d; e++) {
h = 2;
for (; h; h++) {
*g || (i[1] &= 0);
--f;
}
j();
}
}
```
Compiler Explorer: https://godbolt.org/z/fGf7hjTxe
Crash is
```
clang: /root/llvm-project/llvm/lib/Analysis/MemorySSAUpdater.cpp:504: void llvm::MemorySSAUpdater::fixupDefs(const llvm::SmallVectorImpl<llvm::WeakVH>&): Assertion `MSSA->dominates(NewDef, FirstDef) && "Should have dominated the new access"' failed.
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-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -O1 -Wall -Wextra <source>
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<interleave-forced-only;vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O1>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "<source>"
4. Running pass "loop-mssa(licm<allowspeculation>)" on function "k"
#0 0x0000000003bf59c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3bf59c8)
#1 0x0000000003bf36cc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3bf36cc)
#2 0x0000000003b40db8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x0000751620442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007516204969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x0000751620442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007516204287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000075162042871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x0000751620439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x0000000002bf1b11 llvm::MemorySSAUpdater::fixupDefs(llvm::SmallVectorImpl<llvm::WeakVH> const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x2bf1b11)
#10 0x0000000002bf205b llvm::MemorySSAUpdater::insertDef(llvm::MemoryDef*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x2bf205b)
#11 0x00000000039fa897 (anonymous namespace)::LoopPromoter::doExtraRewritesBeforeFinalDeletion() LICM.cpp:0:0
#12 0x0000000003d8281e llvm::LoadAndStorePromoter::run(llvm::SmallVectorImpl<llvm::Instruction*> const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3d8281e)
#13 0x00000000039f8dae llvm::promoteLoopAccessesToScalars(llvm::SmallSetVector<llvm::Value*, 8u> const&, llvm::SmallVectorImpl<llvm::BasicBlock*>&, llvm::SmallVectorImpl<llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, false>>&, llvm::SmallVectorImpl<llvm::MemoryAccess*>&, llvm::PredIteratorCache&, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::TargetLibraryInfo const*, llvm::TargetTransformInfo*, llvm::Loop*, llvm::MemorySSAUpdater&, llvm::ICFLoopSafetyInfo*, llvm::OptimizationRemarkEmitter*, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x39f8dae)
#14 0x0000000003a06a36 (anonymous namespace)::LoopInvariantCodeMotion::runOnLoop(llvm::Loop*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::TargetLibraryInfo*, llvm::TargetTransformInfo*, llvm::ScalarEvolution*, llvm::MemorySSA*, llvm::OptimizationRemarkEmitter*, bool) (.part.0) LICM.cpp:0:0
#15 0x0000000003a075f8 llvm::LICMPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3a075f8)
#16 0x00000000052606ee llvm::detail::PassModel<llvm::Loop, llvm::LICMPass, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x52606ee)
#17 0x0000000003a0fd93 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3a0fd93)
#18 0x00000000010ee88e llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10ee88e)
#19 0x00000000035a6b68 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x35a6b68)
#20 0x00000000010eee9e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10eee9e)
#21 0x00000000035a558e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x35a558e)
#22 0x00000000010ee54e llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10ee54e)
#23 0x00000000035a4fc0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x35a4fc0)
#24 0x0000000003ea6cd3 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#25 0x0000000003eaa4e5 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*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3eaa4e5)
#26 0x00000000045780ae clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x45780ae)
#27 0x00000000065135cc clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x65135cc)
#28 0x0000000004578488 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4578488)
#29 0x0000000004832ba9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4832ba9)
#30 0x00000000047b2a9e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x47b2a9e)
#31 0x000000000491d8ee clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x491d8ee)
#32 0x0000000000ca9677 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xca9677)
#33 0x0000000000ca123a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#34 0x00000000045bb689 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
#35 0x0000000003b41264 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3b41264)
#36 0x00000000045bbc7f 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
#37 0x0000000004581f6d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4581f6d)
#38 0x000000000458305d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x458305d)
#39 0x000000000458a415 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x458a415)
#40 0x0000000000ca64e3 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xca64e3)
#41 0x0000000000b7d0f4 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xb7d0f4)
#42 0x0000751620429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#43 0x0000751620429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#44 0x0000000000ca0cee _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xca0cee)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tz66iW_jXKC6WUhGRZfsiD4ySncyp7ktpOdz-6EEI2HQQaQE7Sv34KkGyhOBfv9u451TOn-mTbwLp9a7FYXIyUomtOyEUwuQwmV2eo1RshLzCSJV0jHkdRflaI8vXi9w3h4BZgUTeUkRLoDVUAi5KAZ6o3ILxPArgAVAMskdqQMkjmQXQVRP3fLHL_Yfedcg2QoSjMH2z-lEFy6TqZ4GtATFvltwVwvt614A2SYLP7qjTSFAM7jjprdn1bQUvwRwDzAM5AMO1awfOGMgICmMd-OwCAVqYdgSC5CpIrEAVwtu8EoJAEPe3YHyAYcXS9xXvsDjEMpleAMEXGnOGI1nXjfetbVsAy8gWiwYhgetV5qf9gAXt6AxiohDTSguTSuss46dL-N4JvA5yqQy0GtBv35zAtsG4GwXQRTBeGwngzDiZXIIDZDj3fvjCsxuDtv3SO_9DgXXwOg3bhgl2C65eGCUlkkMzBRutGmeiGNwG8WYuyEEyfC7kO4M2fAbyp_lVNN388vhCPk5kUgKqDU6ILZ4b42ggI4I0UQgfwhrFtHTZS_EFw_9X8Q4sA3sw5Yq-KqgDefCO1kK_L5fzXpkSayHPcNEEyn0SpYWddaUmTeZDMx4Nda0Vf2uaKVMqEkuBKDyiWNWLsN4K1kLd1w4Jkse_7naCn334JkmvjGgPxHMyVIlJTwUGQRd-Wy3kYJNelqClHmhj-_0Wer0hlZvcNlUrbzzPrW5iBAMLlRrSsBBu0JaCnM_mGAE6eAcKYKBVAGMApqJDJRecOwIe76_nyGqi2qKkGCBTtGkjSCKmBFmO3Ub1pi3Ms6gGuPtpUqdboewMQLwHlmLUlsWrYDAcKhJ-0RNjmqUaSRgqjGSmBEq10zYYSKSUwtTbIlgOFJW10p_JSI_wEyrZudukyOg-i2YMUa4lqgOS6rQnXqosL0RjNuhwsQ9KHJbyx0ROiHnsVatnypwDeFJT33SBcl89IVmEKwjUIheGImsbwbXXT6nMFwtqgAMLwJc9CpOpQvXKNXoLkinJNGAgrLsItkYVQxPSDcAnCcI1xqIVgeIMoN2nqI03NYMVRozZCg7DCggkZlhStuVCaYuVkWIz95vsYhL8jxkD4O3nR0iTERQd1cu3Aiw14QbIgogqSa9AgqYgESAPCSyAqUFHWTUtoRt43mtb0TyJdW2LavrecU74GDVLKRGPVcmwQNVzRmsiQ8q2N97xiAmlIuQ7ggolnIkM7cxDXIeVaUq4oVrZPNAHMzT-hFBppEiSLDUElkWHZNoxi5ARcchGaQEKShJWQIdPCSrIcwpIwYsfB2a6JKi1p0WoTbJSbwA01o2GNmobydS883NrJS_80go0fJSNoa2VgUoaCs9cgudwNGrU7FSiviAwRo2tuArLnzAQqQ8JobYcojUVdUG7k1OglpJpIa5sKkqvYGbglklavYUVfGmGws9wVrRtGq1dcrYNkUQjeqtCwC_VGErURrOwYVEI-I1mG6plqvDGAm2Wo-yYRX5NQi5BiM6H6Zi1CJsRT2zgFnggxeguTDS43giodYlHXgluJyg1y7cY6FSotJFGhKXOswLBCLdPUJOtLRfnTmFw1BLcMaRIWTOAn29TZ5-gLiTjeOEH7wS1vJCkp1qhgRDlcnE_CHtW_hLH1V8ulYCaF38euVUvEVSVkHT4jaQLfeEMKFCSLRhJF5JaE1iuHg-Cv6lMrhczcoLgOkgViTDz3iNgpce2ifScyrKSoTZpr68YJ6RgZR3T69GAHcFHSbShJHTaISjNUI8owYqyL2C-HHRfhUZFnHPs2-LzI2wXZKHq-GnlGxF8Kvg8jbxZACAQHtShbWyJDL9lC6DJmeihjHuFYK6PPsIb2accaBDCJQPQS9f9Limoyw_mgMFGvyn14kJRru5Y-ugU53w-S6HkllJYE1bbEWACbsWe2FP2rK2oAL6OXTrF9AR7AJB5pnmQYH9J8wQjibXPPl3TNEQtg3nK7ISvtRubUeho1PD2hr2calUUObLH6nWCxJfLVKfYL4iUz4vIOPW_MQnBNXnRXd0b2_zsRSSdiOokzGKUpnMCoM8pVsi95tsrSkFHevoRr3roOfK7EeWYVtySe2qnPc5bNKgwaM2tRuXqijB0nwNJ7AiZjpdNpBtbKYnGs8uk083hnPm-YT6sEoMLUqUdxtoQe5-kbznFxNM-48HjmPs9kRmbZcTwticdzNow6WFRxEcdHbVGO3JwAW5i5Lcrp5lOn-M4yM-2jkWUwmhSfWka5kWX3Qfl4rG2d24MSIdip9Tfqefr7eWtWoXw2tacPXPDXWrQKcFQT1dgsO3OK3gnRPEhRi51Bpbg2Bfp38iypJuqSVEKSG8oRu9oVsfZk4e528e1t1jCK-ImpzGEekwGQdwKVc14uzQLpy5Yt_3KA3HKlZevKezj_aYHSqe8BnYyAzks0tK9xNhlo53bDS9SjWGLEkDwQ_0uinYWedb8h1pIuePLWt27xxf39JVIUX5pKwgF0FDFlVOmVKwiFXD2vCmpqlDcjSmLqMtfCRUlWoqvt3vXVAmjZugNCxJT9sBW0HHYctMEWnnsa9yG5PtYwNzXn3UnEQVweJClvO8sXCG_ImxHGt7e8Ep2H9h1X7sxDyEdJyJve-a727diO-h-RXBN9RwuJ5Kvh33v94LjHvvw_qMmd3bmOGt_ksLFht4sbQ7hEFdGvB_l2-25bCn4nNZJP1zXVltcg1f2ElNdNNG8mpt5MRFGGkuwrKe-Wb5GkiOuFKMk34craLgPd87tu0_8xlvP5d6JaptVB6P-O6PihuHCJ6HorWNvnzsMh8oOetx4_b5DU59HHy8Rk5LzppBruEAzhA1Lq8NLgXDKK3v5c9RviaE38jOoIxm5aasRLJMuecufS7FBi-ITCH_vwbTjJTjkRHFTeRMiGWE5gFmVkuCQNs7TB9JsoCfsMnh7_nwvxafA168D_h4kXJl0UeGEyHU25qpwlA2Vuut38o7B1IVJqXqLG1iaHwO2HHwXwjqi_dzjpxDAGeRbnQ4vjiJA8P25i7I1cfAmpHwLivfD9T0O4A9BD2NsQJhOUFdkwjVtUP9LyHw1Yh8cQMBiNQ5LMThGSPw3of7SDOvw9B8WjiJ5MvJzxzZ6rPopeq0_zpCM4yuKO5KcEpDHHsxeOA3KSHheQvYGLL6L0AzC8F0__Sdh20HnYJqNYSiscfWHSHkL0nwNUh4MHlL-VIyjDZfLZVs7sP-ZKkbpgr78Q1vTnSN9bPtysPNCGMHsHl_cPNezRAn4ivJzvkqPSpetpOf3vlqwa7cMh0fOqsadiq_5OYkBUEnvBs7JXveQTwuGxxWdiH4Vg9_aO_4a6kPiKzBHVUOBbDBaCq7buNnIz0LX-qik7uHODk5GvUEomQ7bGLx0Tp4OP_NX-ZcA1X1vHjBX7xV6xLwmSeHPvTpS8E7DBULOF_xfhn4xyW-NPBt0hvj40ZLB71pLy9Xf3BObt5Jofxnd-YAG-5Vq2im7Jd1ItuH4YeX1bdRtf477lq9Kk7tbivz9MvxAyp0sNLpq81OBtbtPJNI8Q-UglF0H21suehbh7y185HcXhfPnY3X6dOsF1SnpWeHuvbBInE4yHVjwgqch8-ejruCQ16qLwp52sdcp42uZjzNM8PzDrush2s_6F4FaTPtjzkyOa5n4h7e080jyBBZoNdbyRxru76TdU8uTqOelD9fwb8HRaQDQjPoRO4K19eITJYRTft-fUMes09EzwKuF0Fpc58UzolN1bshXdgyhP8TeWnjhpdJp5qntFbYTRLJtOAcbxqkbUr4zmUqJXk9KThX2WvDtz73Kf17a7rTitBU4_z4BkZEAMEwR6wBfxo80CH16WvbVmtJoZHl0G9G7PSkm3u6eo_tqfpH5iKIosn43fqfavQlbSomp7-3e8XXmKEWMFwk-rihtN97HiZHdxs4gXoq4RL8eT96D3doucu4NC_iZlv3TvlrUdwWqFX17i2H0pkKLYLIH2sY5F0RtsGlZaInchZrtH7BBjZh7YO72-3wwZHJPb8HGYW5IAThmqixIFcLqHCub9S5J_i-KwPyajVyAxzNKBKw699dgVyUtUEfbqwfmx6077pMXq6sV8Ng4uPK3A_-XgGF2mvBsFUx-4PK6y8l3grNfQmzWxR9NL3SNCM-C96vmDoXOvhBnYdqriwBrshdKogMmTaHI0Iv8WhXofjn-L4o4q_eWb-V0ENIhK95r3GASHW7ifh6OBycNxNsIRpfHkPZ2vBp-90uBATfAe_n8jjictTy0wQ-TSaLSAZylJnJZ9DdJrbpPI2wvX95bnE1YdRidPaa_ii4ppGVUpMOqeTqpj6kmFo8dvs3J25DtDS-LxTMY8SRqB1cqQrZRGUq8GZn1ZCkl9KenIyREmBDj-p_STYbuX2__46Ky8SMpZMkNn5CKeJjCepbM0O9tcxLOkrOIJSsoZSSDCCME4jyMMc5zGGJEzegEjmMYxjOMknqTpOYmjosJVRtIkwygqgzQiNaLs3ITjuZDrM_ubmos4nsaT6RlDBWHK_vAQwk5RGEyuzuSFIQiLdq2CNGJUabVnoalm9teKjmJy5Z6iAqTBffy_8_ujs1ayix__fVEHx_YC_k8AAAD__1Qv2CM">