<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/119917>119917</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang 20 + enzymeAd crashed while clang 19 works fine
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
minansys
</td>
</tr>
</table>
<pre>
I use the clang 20 + enzymeAd to differentiate the C++ code automatically. It works fine with Clang 19 but crashed with Clang 20 with the following msg:
clang++: /home/mixu/software/llvm-project/llvm/lib/IR/Instruction.cpp:153: void llvm::Instruction::insertBefore(llvm::BasicBlock&, llvm::iplist_impl<llvm::simple_ilist<llvm::Instruction, llvm::ilist_iterator_bits<true>, llvm::ilist_parent<llvm::BasicBlock> >, llvm::SymbolTableListTraits<llvm::Instruction, llvm::ilist_iterator_bits<true>, llvm::ilist_parent<llvm::BasicBlock> > >::iterator): Assertion `!isa<PHINode>(this) && "Inserting PHI after debug-records!"' 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: /home/mixu/software/llvm-project/build/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_NO_AUTO_PTR -DCromwell_CommonModel_EXPORTS -DFLUID_ENABLE_PARALLEL -DFLUID_MULTIPORT_AVAILABLE -DFLUID_USE_ADJOINT -DFLUID_USE_DVS_WRITER -DFLUID_USE_METIS -DFLUID_USE_METIS_V3 -DFLUID_USE_SUNDIALS_SOLVER -DREAL_IS_DOUBLE -D_CommonModelApi -I/mnt/d/dev/v201/Cromwell/Build_3ddp_debug_cpu/generated -I/mnt/d/dev/v201/Cromwell/Dependencies/../../FBU_Dependencies/thirdparty/compilers/gcc/linx64/include/c++/8.2.0 -I/mnt/d/dev/v201/Cromwell/Dependencies/../../FBU_Dependencies/thirdparty/compilers/gcc/linx64/include/c++/8.2.0/x86_64-pc-linux-gnu -I/mnt/d/dev/v201/Cromwell/Dependencies/magma/include -D_GLIBCXX_USE_CXX11_ABI=0 -g -fPIC -stdlib=libstdc++ -Wno-deprecated-builtins -fopenmp -std=gnu++17 -w -Wno-missing-template-arg-list-after-template-kw -fplugin=/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so -mllvm -enzyme-loose-types=1 -o CMakeFiles/Cromwell.CommonModel.dir/src/Operators/CellFieldMinMax.cxx.o -c /mnt/d/dev/v201/Cromwell/Cromwell/CFD/CommonModel/src/Operators/CellFieldMinMax.cxx
1. <eof> parser at end of file
2. Optimizer
3. Running pass "EnzymeNewPM" on module "/mnt/d/dev/v201/Cromwell/Cromwell/CFD/CommonModel/src/Operators/CellFieldMinMax.cxx"
#0 0x0000562904d573cf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/mixu/software/llvm-project/build/bin/clang+++0x43063cf)
#1 0x0000562904d550fc llvm::sys::CleanupOnSignal(unsigned long) (/home/mixu/software/llvm-project/build/bin/clang+++0x43040fc)
#2 0x0000562904c9ef18 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007fc1771ea420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fc176a0e00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fc1769ed859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007fc1769ed729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007fc1769ed729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007fc1769fefd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x00005629046a13e7 (/home/mixu/software/llvm-project/build/bin/clang+++0x3c503e7)
#10 0x00005629046a141b llvm::Instruction::insertInto(llvm::BasicBlock*, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, false>) (/home/mixu/software/llvm-project/build/bin/clang+++0x3c5041b)
#11 0x000056290468fb97 llvm::IRBuilderDefaultInserter::InsertHelper(llvm::Instruction*, llvm::Twine const&, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, false>) const (/home/mixu/software/llvm-project/build/bin/clang+++0x3c3eb97)
#12 0x00007fc175ecd4bf llvm::PHINode* llvm::IRBuilderBase::Insert<llvm::PHINode>(llvm::PHINode*, llvm::Twine const&) const (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0x85f4bf)
#13 0x00007fc175ecb18b llvm::IRBuilderBase::CreatePHI(llvm::Type*, unsigned int, llvm::Twine const&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0x85d18b)
#14 0x00007fc1764678bc GradientUtils::fixLCSSA(llvm::Instruction*, llvm::BasicBlock*, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xdf98bc)
#15 0x00007fc176488dcc GradientUtils::lookupM(llvm::Value*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>> const&, bool, llvm::BasicBlock*) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xe1adcc)
#16 0x00007fc17645a5d0 GradientUtils::unwrapM(llvm::Value*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>> const&, UnwrapMode, llvm::BasicBlock*, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xdec5d0)
#17 0x00007fc176489377 GradientUtils::lookupM(llvm::Value*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>> const&, bool, llvm::BasicBlock*) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xe1b377)
#18 0x00007fc176092561 AdjointGenerator::lookup(llvm::Value*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xa24561)
#19 0x00007fc176348e62 AdjointGenerator::visitBinaryOperator(llvm::BinaryOperator&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcdae62)
#20 0x00007fc176396f01 llvm::InstVisitor<AdjointGenerator, void>::visitFDiv(llvm::BinaryOperator&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd28f01)
#21 0x00007fc17638803b llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd1a03b)
#22 0x00007fc176374acb llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction*) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd06acb)
#23 0x00007fc17631f11e EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcb111e)
#24 0x00007fc17635e7ec AdjointGenerator::recursivelyHandleSubfunction(llvm::CallInst&, llvm::Function*, std::vector<bool, std::allocator<bool>> const&, bool, DIFFE_TYPE, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcf07ec)
#25 0x00007fc176363984 AdjointGenerator::visitCallInst(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcf5984)
#26 0x00007fc1763a5caa llvm::InstVisitor<AdjointGenerator, void>::delegateCallInst(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd37caa)
#27 0x00007fc1763974bf llvm::InstVisitor<AdjointGenerator, void>::visitCall(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd294bf)
#28 0x00007fc176388383 llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd1a383)
#29 0x00007fc176374acb llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction*) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd06acb)
#30 0x00007fc17631f11e EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcb111e)
#31 0x00007fc17635e7ec AdjointGenerator::recursivelyHandleSubfunction(llvm::CallInst&, llvm::Function*, std::vector<bool, std::allocator<bool>> const&, bool, DIFFE_TYPE, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcf07ec)
#32 0x00007fc176363984 AdjointGenerator::visitCallInst(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcf5984)
#33 0x00007fc1763a5caa llvm::InstVisitor<AdjointGenerator, void>::delegateCallInst(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd37caa)
#34 0x00007fc1763974bf llvm::InstVisitor<AdjointGenerator, void>::visitCall(llvm::CallInst&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd294bf)
#35 0x00007fc176388383 llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd1a383)
#36 0x00007fc176374acb llvm::InstVisitor<AdjointGenerator, void>::visit(llvm::Instruction*) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xd06acb)
#37 0x00007fc17631f11e EnzymeLogic::CreatePrimalAndGradient(RequestContext, ReverseCacheKey const&&, TypeAnalysis&, AugmentedReturn const*, bool) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xcb111e)
#38 0x00007fc1762aafe4 (anonymous namespace)::EnzymeBase::HandleAutoDiff(llvm::Instruction*, unsigned int, llvm::Value*, llvm::Type*, llvm::SmallVectorImpl<llvm::Value*>&, std::map<int, llvm::Type*, std::less<int>, std::allocator<std::pair<int const, llvm::Type*>>> const&, std::vector<DIFFE_TYPE, std::allocator<DIFFE_TYPE>> const&, llvm::Function*, DerivativeMode, (anonymous namespace)::EnzymeBase::Options&, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#39 0x00007fc1762ace00 (anonymous namespace)::EnzymeBase::HandleAutoDiffArguments(llvm::CallInst*, DerivativeMode, bool, llvm::SmallVectorImpl<llvm::CallInst*>&) Enzyme.cpp:0:0
#40 0x00007fc1762b1fc0 (anonymous namespace)::EnzymeBase::lowerEnzymeCalls(llvm::Function&, std::set<llvm::Function*, std::less<llvm::Function*>, std::allocator<llvm::Function*>>&) Enzyme.cpp:0:0
#41 0x00007fc1762b36e9 (anonymous namespace)::EnzymeBase::run(llvm::Module&) Enzyme.cpp:0:0
#42 0x00007fc1762bc468 EnzymeNewPM::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xc4e468)
#43 0x00007fc1762f6ddd llvm::detail::PassModel<llvm::Module, EnzymeNewPM, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/mixu/software/Enzyme/enzyme/build-20/Enzyme/ClangEnzyme-20.so+0xc88ddd)
#44 0x0000562904742f39 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/mixu/software/llvm-project/build/bin/clang+++0x3cf1f39)
#45 0x0000562904fe0d06 (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
#46 0x0000562904fe41d5 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*) (/home/mixu/software/llvm-project/build/bin/clang+++0x45931d5)
#47 0x0000562905656965 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/mixu/software/llvm-project/build/bin/clang+++0x4c05965)
#48 0x000056290591f360 clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/mixu/software/llvm-project/build/bin/clang+++0x4ece360)
#49 0x000056290708fe8c clang::ParseAST(clang::Sema&, bool, bool) (/home/mixu/software/llvm-project/build/bin/clang+++0x663ee8c)
#50 0x0000562905657658 clang::CodeGenAction::ExecuteAction() (/home/mixu/software/llvm-project/build/bin/clang+++0x4c06658)
#51 0x00005629058e2231 clang::FrontendAction::Execute() (/home/mixu/software/llvm-project/build/bin/clang+++0x4e91231)
#52 0x000056290586f799 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/mixu/software/llvm-project/build/bin/clang+++0x4e1e799)
#53 0x00005629059c2a51 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/mixu/software/llvm-project/build/bin/clang+++0x4f71a51)
#54 0x0000562901f61740 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/mixu/software/llvm-project/build/bin/clang+++0x1510740)
#55 0x0000562901f58a41 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#56 0x000056290569892d 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
#57 0x0000562904c9f41e llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/mixu/software/llvm-project/build/bin/clang+++0x424e41e)
#58 0x000056290569901e 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.280) Job.cpp:0:0
#59 0x000056290566343b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/mixu/software/llvm-project/build/bin/clang+++0x4c1243b)
#60 0x000056290566452b clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/mixu/software/llvm-project/build/bin/clang+++0x4c1352b)
#61 0x000056290566de86 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/mixu/software/llvm-project/build/bin/clang+++0x4c1ce86)
#62 0x0000562901f5dab2 clang_main(int, char**, llvm::ToolContext const&) (/home/mixu/software/llvm-project/build/bin/clang+++0x150cab2)
#63 0x0000562901e721aa main (/home/mixu/software/llvm-project/build/bin/clang+++0x14211aa)
#64 0x00007fc1769ef083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#65 0x0000562901f580ce _start (/home/mixu/software/llvm-project/build/bin/clang+++0x15070ce)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git c9fa3195f0f012a5606ec3e403a1f111b3a4e0c7)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/mixu/software/llvm-project/build/bin
Build config: +assertions
clang++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/CellFieldMinMax-d5118a.cpp
clang++: note: diagnostic msg: /tmp/CellFieldMinMax-d5118a.sh
clang++: note: diagnostic msg:
********************
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsfNly47by99NwblBSEeB-4QtasjLKJ49dljzJd8UCwaaMM9wOAHo5T_8vkJJMUpTHntiTk5ykFI-EtfvXje7GSqXk2wLgzHDODWf-idbqrhRnOS9oIZ_kp7hMns6WqJaA1B0gltFii4iJDHKOoPjPUw5hglSJEp6mIKBQnKq26Mwg57oUKxNAtFZlThVnNMuepmip0EMpvkmU8gLQA1d3aNa0jAMU1woxQeUdJN0cYra_dNNpmWXlAy-2KJdbwwoNs_0Eh09DZ0uAYYXIIIu7MgeDLHL-WBtkIctUPVChU7LsPp9UovwXMLX7qf_hsUEWyxv9p5BK1EzxspiyqjKsEDuWbvW-5AlqyluhYYWdcm0CLyQIdQ5pqTvyn0ueU8nZeVaybwZxDTLrNMKrjEsV8bzKDGv2nC51CkRc5_Yyur32W2obUiCoKkUUcyUNa6ZEDYZ1MVa0olp-vcY7hFoX6Kje-imPy2xD4wxWXKqNoG0nfxZ1DYVtnV3DBgm0pEKpJcHLAhmuaRDMJTWs2fXn5ZcyaTv01R2XBglQIxEXGYQsG_FpLbv-vEQ0VSBQAnG9nQhgpUikQbBBiEE8lFKeQTIdKOH16iJcXyBZxzlXiKK43iIBVSmUHjF3SlVSU0sWBllsubqr4ykr844O9jWTS1mDNMgC0SJBvGBZnexGpR4uKKbsmxKUgYavElCJkoGUkCBZ1qJN1jWplCXTwzRBoi6QZIJXakj7WlH2DSV1Xu3H13OeOUXNf9ei3AqaIyq2dQ6FluCbhlpc8yzR__LCIIvOkEWT-fnV1XoThatV9OUqWi2fk75cReHt5iq63tygyXwmyvwBsiyalXleFpdlAll08fv11c1mjSbzxep2OY8uvoTnq4voOrwJV6uL1SH98na1WeqiUfg1XK50oUPe7foiCue_Xi2_bHpp86_r6Leb5ebippd8ebFZro9Toq9WL3F9-2W-DFfraH21-to0cXMRrqLlOppf3bbddzkJK44mSw1lofHSWCVwb5DFPTGxQRZ77g2yONdYRlaSVFGjoxGrNPhbKPRAgOS17cyhgiKBgvFG1abT_Z_F-W00yFR3XCQVFepJi6_MK56B0BlbxhoTWjy6tlbcVlV1oZ1JJgt_SqbmfyVRBlk8-m7k2pOKTTJe1I-TbVH_IKk53eb0uTct319Wy_PZ7783-jD7_XeMo_B8aVhzE022aJJeL2doIlWiHZA1z3gsVcL2w-K3opwkUAlgWqYTPYAULySapGUFRV41NQ1rvi3qtgr20OShrZdzKXmxnSjIq4wqmFCxnWjTOmlM23P6twc0Saus3vLCsOYvjeeLJgAwyAL2X5ohPSFmN7Px3-2vCTGnskSTXFsCNGmrTbKylDBRTxVIw5pjNCnR7JJ-gwXPGhD38E47Q2OacKGJEVqoV1Vr7ZvCkGULDllyyYtL-jhlj4_TEk0YepX4ul8XmvdOl6_tbmAt8RQZ1gzKVDuoigoJAlGFoEhQmaKUZzCoQHbm9apSPOf_ATHIt6bopi4K7ZgqKqV2VS26X-Dh-tIgBJUFysukzgA1_uln8U3IgFJkEMtE5qNpmqbjksC0E8ezWNpx7vJJtl-uBS9U43U2rQ_rxEuCPkSlVAJovguYuOZIt--_h78xyLn5aFuma7FURwzHXOABF46ZsjEuZhnQoq6uijXfFjQziF8XTYCdoKzU3b07zbaZsnGaSY9mFkCKfTTTocINsPIexFNL5GdaJBkIg_g7VHtlZmWh4FHtIl-z-f-4L2vXl5cy7HkYqE1MFEUCpCoFRELt2G7D6p19PRjXNqNSdwJoMpWlNsLn5iO2bW1Jxnizu_251ATTjJGgXGqVP4C2zXjMJiu2JObj4SeZWlr55U5ArSORTzKBSit2XfDHNuG-dRe1_tk0PWWGFTpYTwBGSHJ6JAWQ-E6AaFw2vL-OpNbqk0VTq-nN1715I725w948EqAtqKjlJJKw1SFZdE-z-tWY8EJpRLKSJrncMtrS4Jg6hvZHiPDGiIiKLNItREmZU178sb4DT2ucZY907vc7TyFN3FdoGdP65Tb6ZVlp4o7rV9AbOy7FFnjvOnIt5pgWeMe9a2NjDnu3cfz9ieayUOXJaWb44vTrYT8BG5ZIQFGetSlFmUBUVrrbFyd5zSSOzFBKM9l80fPkbsaJGVyvTvtFJ76vxdS42zgex71v5V0_jQOvi_tNE2WDmENK60y1E0QQBxRAqM-QVY0tPQHPQA6bB14AYmUh1fFSwF9JRg0L7ywpC-LgxAgh3cHvAEvsuBtV7Gf2JBwT3znVZD_LrAdUb1FgrMWXBfhKJH4wcm6A8Z3UjkfiFI2LNcAlxn78MgQzAVTB9edlj93NU7Xn9RDANNHBy7x_KNcJ9k-M2340YLueHzP0i6AJh0LdKp7torOUP65m63X46uF5ZEHjssw-mNEkDfx4JKTTjPZjDNv3EzbKaFaW3-rqssfnVx0JHHF40IjeIJhpmdJCLcoma7zGkRW8ODJhTZ-XtOo13iTu1WZAzm9Am_j_Gy-2Xz-PNzYri5RvX93kITZf51Soy1rBo2HNDrar-fQscCvjF9TgQ8UPmCbshPj7QZ_tUCcxx8RfFw-C_iP-HxP_bQteY-z_dFsAzElGpkBaGbyBLQgsz_vHFvzNbEFseScioP70xwyI42IUJv8qeaF-aVd9S9HVgD9FAT4UHkpsx8Xj8AQ9eCzbB5ecgOeeS67OeUHF036Fqz-NGmR9NFssoeCSUbaI2WcrcFMTD2aGXzU7mrfZEbv7OH-_S9Zwvpjz-z-V34T4qTkuRoL7_Pq-aQ1nwm_l93Tw9-GMYmpa4yEsIX1GPZuyj2P0o-1WYrqUnWDU6jOKU4wBtS2syi1nvVmJ4DnNwiLZuzWD-Dfw7xqk2i1Las5v4B6EhBlld_D_4KljvxsTrqcyYUGzJ8nlLimsm8UxSG5A1aLoOYuf4NVZjDGGcXj6UxnLAQ_YCbslgNVC8nvIntol3HUdp3Wxk3FH9jOaZcuxFYbFoXTDerN31KgPsFbR9u7vkEOzrGS0k3naZc6Xi8VFtPn_1xc_C9bU9GA8cib9iZPlWoFvv-QOniE7heMHs-IEvj3OSn8SYFGHUfrjliKBDLZUwZ_McGJ5jNJxhr2Bz_P6az0_Yho1Y38WpyQ4tXpD_KG3s3zrr-ztLN8aZzT4H_F2lvmPt3vB21n4H2_3Ad7OIn8bb2dZ_2PebrCz_Tf2doMN87-vtxvs1f-NvZ33j7d7ydv1wztCaQq2poUWZfGUl7VEBc1BVs3xp6AFq-3gebuu9X1hrco5T9PvbGSd3robX__r7Pp1DnnnNMu-Nj5yOTyVfmjmsN578J15s9J7vGf43MWhaAZS7sq2O8yjDviQWFEu2uJ74Y51MLqce-zz-357tONOkeMWT4YXcxD8nip-D_uthDdK-mq3i39qIfoluTwb-PB5Jbbt4IWDXFpHg4GOMjDNP6aj4eF0-LgLOoHWT2LY7kfoJMYpezPDWfkAok3UhPQ5fdaLvgpK6B88OBWe7kbHeMEXxsvJCm_DBw_wsVwI3oqPqPsh-mVzOPUtVJABFcx2fdQ99fq9frqKtPcYl7Sg28Fmx67Kz9i-YDbYrj_qKux-2EtSN0m6V426R36uqZTtOd0RPsish9IPwLAPO_5i2Pp-kiTj2Nq9U16eTVIr6J4d0niepv4vBeEbD1ylOLWCcdCcHmgpmInpftcM5FyFUkIeZ0-7c3FN-k1d7M62U22WrnkFGS_AIH5L0m6flX2DIgkPR9YORq4u-L9riCrVh0bQh6h6EFxBtD8q3qmUtPuTkZ4BKvhOxWcj-f1uN2WZXdWqqtWCt-rxmj4HtbodHmMwKwtZ5yB2wf0u9Vbx7DtW0x0IzcaJ021fC2jXWktMXwRzTrdFKRVn8qLYNhIaUvgZaAJiDVSwu13A0guPOkVnZQK_QPGdUhsqtqC-U2hFi-1YkU6soAQvtjeQ9pP3Iy4cBzocuai4LJSoJb-HG0hnhboeiP8-3Z0o0HJcP0kF-dAp_zR9fYXuvOvlAyewcOKM2wuvq3qO67iB67xEXidw3AhayKwxDbcFH-hkuN4cpofvbgFtZjqBe4Ijv8dRgFPLNbscXdaZ4lUGj_9lPAEDyx0_Q2T3jrl7pp-Cz7o8XVMhIVxv-vSuIaeDackrZ9Zvotx1LQB_fInTMQf65bmOP2Jtws4p-YtHYLWC_SD3P0B7XNcZD-ic3tFyxwdCLNyldyG0BhxMUJfgjyAVAkys8TMXDumT6qZeEPShbS9VLptjQQzG0T3N20foOAYvGI9cHKs_bhmhTg_5HeHPXN3rKdQRE0dcf4BBTT1MnRNS6UWtOHWxZ5uIMRzllPfDylAI-qRdnzVjd1Q8r4DtfEQv7XD0_925wQ42PXvc8DhOnxvHpzZGe0nM8KYxJ_5Lc_9j1gYhgG5jZ1Z7Z9QTwe9BvBw5OW7fvAR-QJLhew_73adINFg3ue1YPUT8jGZZTNm3KC00yc_a1BKx06wZnpV5TotkOOxHZXoIEdprHrQ_73sOfA5BwaFCFLHHR4zbHzGVnOkAgmuaGjh7hXVCpPYvOjTZLyw27PN1kc5Sa3i4ENFWMYiX0TxOqEG8Z6iIv78b-WsZf0cw3uBSY2pj6Mhk7OriYdKxpilkTz1cX5bhe49vYoN9YnHY8QcaF5gY0P-yxmjopxUVakp883XKEfQxdC3bik9i2NhzeuRt98D2jP-goi5wam7yQtGwFzR9xJ0pm2Finzhi6A5CJtd2yJvR-bWM5Wlofi3jFZfq1JzsyIaPLOm_Bc3urPlDMbUccgJTPMA0Ad89Rf-8870XdIxEG6dk8RMxfe_gGDPwR27bahTJIBpIaExaivfRzZ6LxuaExxtXJ3z9-8YzJqPx-LlstxdkYvAIphTtrj-_Iwk2wfjEwQHXHlzGTk3fQlGU8VgbbSpU9Jbr2EzW-7vx7dcms2mnuZht2UT_HaHjKLQzGaCWgveWh2eyEW86ePsLhGgOu-zeLkt3kxHEdqrfvt3UPi4Gj1y1D5Zhq9marSWgyT1SJZIAiHfmBqO9onsQkpcFIubUnJpb3rD8tpeeproWC1Jq4cBJzdTEhDqu6QKzwDYtilOMcWxRG0w2cjekXUDT_O7uv9fFt6J8KDr34AcVmlcXUN5uIYSoKiUfvmHSTHqyDJI5F3_gkad-o83NET1cmxs8utFzun-nS74s06JUetqJksMK5e4lOHSkkOGPfwZNjT7uFW424ewz2ny-QIur1erqt-WXX9BiubpYo81Vk3x--wu6ubi-utkYRy9pXY-90uU375CdfKnrUEAAasIpSBBVx22_HjKyUHl1_KbLJHEw9mkTc31Q0_LuveRs_gE5k_BTcmYlgRXQT3CGPcvG2PN979PdGVCcYMwYI8SENI6TxHOS1PT81HI9k8Wf-BkxiY0JtnBAbNudYuJhCGIG2KfAAs-wTcgpz6Z6XExLsf3UvON2hnEQYO9TRmPIZPP6IiE77onhzD-Js2YgxfVWGraZcankcxOKqwzOxh9jPLydeMez_YONOOi8t_ipFtnZj78-tyP8_oz8XwAAAP__28PzDg">