<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/130730>130730</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86][Codegen] Scheduling DAG assertion failure with -pre-RA-sched=fast
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yilingqinghan
</td>
</tr>
</table>
<pre>
## Problem
LLVM crashes with an **assertion failure** in `llvm::ScheduleDAG::VerifyScheduledDAG` when compiling `pp_hot.c` (from **SPEC2006 400.perlbench**) using `-pre-RA-sched=fast`.
- The crash **only happens** with the `fast` pre-RA scheduler.
- Other scheduling strategies (`linearize`, `list-burr`, `list-ilp`, `list-hybrid`) **work fine**.
- This issue also affects **multiple SPEC2006 benchmarks** (see below).
## Crash Output
```
*** Scheduling failed! ***
SU(2): t33: i32,i32 = SBB32ri t9, TargetConstant:i32<0>, t37:1
t37: ch,glue = CopyToReg t0, Register:i32 $eflags, t31
has not been scheduled!
SU(2): t33: i32,i32 = SBB32ri t9, TargetConstant:i32<0>, t37:1
t37: ch,glue = CopyToReg t0, Register:i32 $eflags, t31
has successors left!
SU(3): t31: i32 = BT32ri8 t2, TargetConstant:i32<16>
has not been scheduled!
SU(3): t31: i32 = BT32ri8 t2, TargetConstant:i32<16>
has successors left!
SU(4): t2: i32,ch = CopyFromReg t0, Register:i32 %73
has not been scheduled!
SU(4): t2: i32,ch = CopyFromReg t0, Register:i32 %73
has successors left!
SU(5): t9: i32,ch = CopyFromReg t0, Register:i32 %75
has not been scheduled!
SU(5): t9: i32,ch = CopyFromReg t0, Register:i32 %75
has successors left!
SU(6): PHYS REG COPY
has not been scheduled!
SU(6): PHYS REG COPY
has successors left!
clang: llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:435: unsigned int llvm::ScheduleDAG::VerifyScheduledDAG(bool): Assertion `!AnyNotSched' 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: llvm-project/build-debug/bin/clang -c -o pp_hot.o -DSPEC_CPU -DNDEBUG -DPERL_CORE -O3 -mllvm -pre-RA-sched=fast -DSPEC_CPU_LP64 -DSPEC_CPU_LINUX_X64 -ansi -DSPEC_CPU_NO_HAS_SIGSETJMP -DSPEC_LP64 -Wno-int-conversion pp_hot.c -w
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'pp_hot.c'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function '@Perl_pp_match'
#0 0x000055b22834be56 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
#1 0x000055b22834c277 PrintStackTraceSignalHandler(void*) llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
#2 0x000055b2283496a5 llvm::sys::RunSignalHandlers() llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x000055b22834b57f llvm::sys::CleanupOnSignal(unsigned long) llvm-project/llvm/lib/Support/Unix/Signals.inc:369:31
#4 0x000055b22826edc2 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#5 0x000055b22826f2ee CrashRecoverySignalHandler(int) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
#6 0x00007f2113242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#7 0x00007f21132969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#8 0x00007f21132969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#9 0x00007f21132969fc pthread_kill ./nptl/pthread_kill.c:89:10
#10 0x00007f2113242476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#11 0x00007f21132287f3 abort ./stdlib/abort.c:81:7
#12 0x00007f211322871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#13 0x00007f2113239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#14 0x000055b227419aa1 llvm::ScheduleDAG::VerifyScheduledDAG(bool) llvm-project/llvm/lib/CodeGen/ScheduleDAG.cpp:436:21
#15 0x000055b22a1b5bb4 llvm::ScheduleDAGSDNodes::VerifyScheduledSequence(bool) llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:728:60
#16 0x000055b22a19986a (anonymous namespace)::ScheduleDAGFast::ListScheduleBottomUp() llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp:644:1
#17 0x000055b22a1969f8 (anonymous namespace)::ScheduleDAGFast::Schedule() llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp:127:1
#18 0x000055b22a1b2729 llvm::ScheduleDAGSDNodes::Run(llvm::SelectionDAG*, llvm::MachineBasicBlock*) llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:65:1
#19 0x000055b22a08b67c llvm::SelectionDAGISel::CodeGenAndEmitDAG() llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1138:3
#20 0x000055b22a0898e5 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:877:1
#21 0x000055b22a08f79b llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1903:33
#22 0x000055b22a087fcd llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:615:7
#23 0x000055b2265d0899 (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) llvm-project/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:190:0
#24 0x000055b22a086d24 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:374:40
#25 0x000055b227174160 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:30
#26 0x000055b227b206c0 llvm::FPPassManager::runOnFunction(llvm::Function&) llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1406:20
#27 0x000055b227b20996 llvm::FPPassManager::runOnModule(llvm::Module&) llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1452:13
#28 0x000055b227b20df7 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1521:20
#29 0x000055b227b1bde3 llvm::legacy::PassManagerImpl::run(llvm::Module&) llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:13
#30 0x000055b227b216ed llvm::legacy::PassManager::run(llvm::Module&) llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1649:1
#31 0x000055b22877f5c4 (anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(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>>&) llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1245:9
#32 0x000055b22877f7f1 (anonymous namespace)::EmitAssemblyHelper::emitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1270:17
#33 0x000055b22878099b clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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*) llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1433:25
#34 0x000055b2293693d9 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:315:20
#35 0x000055b22b94c745 clang::ParseAST(clang::Sema&, bool, bool) llvm-project/clang/lib/Parse/ParseAST.cpp:191:14
#36 0x000055b2296a3592 clang::ASTFrontendAction::ExecuteAction() llvm-project/clang/lib/Frontend/FrontendAction.cpp:1186:11
#37 0x000055b22936d820 clang::CodeGenAction::ExecuteAction() llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1102:5
#38 0x000055b2296a2e3b clang::FrontendAction::Execute() llvm-project/clang/lib/Frontend/FrontendAction.cpp:1076:38
#39 0x000055b2295b0d05 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1056:42
#40 0x000055b229874a20 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:280:38
#41 0x000055b2263cba6a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) llvm-project/clang/tools/driver/cc1_main.cpp:290:40
#42 0x000055b2263bc37f ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) llvm-project/clang/tools/driver/driver.cpp:218:20
#43 0x000055b2263bc5a0 clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)::operator()(llvm::SmallVectorImpl<char const*>&) const llvm-project/clang/tools/driver/driver.cpp:365:7
#44 0x000055b2263bdc95 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)>(long, llvm::SmallVectorImpl<char const*>&) llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:48:3
#45 0x000055b2293f7263 llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(llvm::SmallVectorImpl<char const*>&) const llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:70:3
#46 0x000055b2293f5ee0 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'()::operator()() const llvm-project/clang/lib/Driver/Job.cpp:437:32
#47 0x000055b2293f639f 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) llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:47:40
#48 0x000055b226de6146 llvm::function_ref<void ()>::operator()() const llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:62
#49 0x000055b22826f50b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:427:10
#50 0x000055b2293f60fd clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const llvm-project/clang/lib/Driver/Job.cpp:437:7
#51 0x000055b229388f01 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const llvm-project/clang/lib/Driver/Compilation.cpp:196:22
#52 0x000055b2293892a2 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const llvm-project/clang/lib/Driver/Compilation.cpp:251:62
#53 0x000055b22939edda clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) llvm-project/clang/lib/Driver/Driver.cpp:2235:28
#54 0x000055b2263bd7dd clang_main(int, char**, llvm::ToolContext const&) llvm-project/clang/tools/driver/driver.cpp:402:39
#55 0x000055b2263f2e94 main llvm-project/build-debug/tools/clang/tools/driver/clang-driver.cpp:17:20
#56 0x00007f2113229d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#57 0x00007f2113229e40 call_init ./csu/../csu/libc-start.c:128:20
#58 0x00007f2113229e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#59 0x000055b2263bb6a5 _start (llvm-project/build-debug/bin/clang+0x111b6a5)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 21.0.0git (git@github.com:llvm/llvm-project.git 564b75621d4a2e30a1769cc719a3a2b2029b8656)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: llvm-project/build-debug/bin
Build config: +unoptimized, +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/pp_hot-e5ebc1.c
clang: note: diagnostic msg: /tmp/pp_hot-e5ebc1.sh
clang: note: diagnostic msg:
********************
```
## Steps to reproduce
1. Compile the file to **LLVM bitcode**:
2. ```shell
clang -c -emit-llvm -o pp_hot.bc -DSPEC_CPU -DNDEBUG -DPERL_CORE -O3 \
-mllvm -pre-RA-sched=fast -DSPEC_CPU_LP64 -DSPEC_CPU_LINUX_X64 -ansi \
-DSPEC_CPU_NO_HAS_SIGSETJMP -DSPEC_LP64 -Wno-int-conversion pp_hot.c -w```
2. Run llc with different scheduling strategies:
- llc pp_hot.bc # ✅ No error
- llc -pre-RA-sched=fast pp_hot.bc # ❌ Crashes
- llc -pre-RA-sched=linearize pp_hot.bc # ✅ No error
- llc -pre-RA-sched=list-burr pp_hot.bc # ✅ No error
- llc -pre-RA-sched=list-ilp pp_hot.bc # ✅ No error
- llc -pre-RA-sched=list-hybrid pp_hot.bc # ✅ No error
## Additional Affected Tests
This issue also occurs in other SPEC2006 benchmarks:
Benchmark | File
-- | --
400.perlbench | pp_hot.c
403.gcc | alias.c
447.dealII | dof_tools.cc
453.povray | polygon.cpp
483.xalancbmk | StylesheetHandler.cpp
## System Information
Component | Details
-- | --
CPU | AMD Ryzen 9 9950X / 7950X
OS | Ubuntu 22.04.4 LTS
LLVM Commit | 564b75621d4a (HEAD -> main, origin/main, origin/HEAD)
Clang Version | clang version 21.0.0git (git@github.com:llvm/llvm-project.git 564b75621d4a2e30a1769cc719a3a2b2029b8656)\n Target: x86_64-unknown-linux-gnu\nThread model: posix
[pp_hot-bug.zip](https://github.com/user-attachments/files/19178025/pp_hot-bug.zip)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsXEtz27iy_jXIBiUVCb4XWdB6JJ5yYpelzMlZqUASlHBDARwCjO359bfwoETSsi07nqk5956p1EgGiMbXD3Q3QLSwEHTLCPkIggsQzD_gVu548_GBVpRt_6Bsu8PsQ8aLh48AeQB58KbhWUX2wEmvrn7_AvMGix0R8I7KHcQMApQClGIhSCMpZ7DEtGobYpohZRCETlX93AMvBV66ynekaCsyTz-Zht9JQ8uHrrlQ7aED73aEwZzva41KkajrzY7Laa56AYrLhu_t1KubxQw5Tgh9x5nWpKkywvKd6QMoga2wJCZ1Qya36USoyYA3L7GQIHSmEAInncD1jhjmLF3Oqge4w3VNmLDcaJ7ljihqdjQ0RKGwHDQduWu5I03XrBAI2WBJtpQIxYCSCmUEN_RPAkIHoJkWFBVykrVNM2qiVT1q2T1kDS10Y2IB3_HmBywps7KfWq6ogFSIlkBcCQ5xWZJcCjtk31aS1hWBByFq4e1x86PjGaBYEAIzUvE7gBJFVf0ztjHT8rpuZd1K1Ro69p-TdgpI4eooA2UcpADIhYdu4KSrbwDFCKAEeCmUnqc-qIcAmlEPQeDN4eriwkMNhTJRMljjZkvkjDMhMZPAS9XD3swB3kJ1Sy8CXuoaoBBC2wCVUcy2VUs0yRmvH9b8lmyh1IK9JVsqJGkMOQiQT8oKb4WhaKntsICMS5gRwg4qV_z8x3Eh2jwnQvBGwIqUsseCd2DBtSzomS7WCnsMJXoGvBsq9OeJ6h3neZoZv5sEHdWR7w6iWzZ8_4zwgsg7k5l3nOdpZoJukuRtkwRnMvOO8zzNTGgnufn87xW8XXyCs-ubf5-D7rmBJ6fLK8y2aoQKQ5O64f9DcgnQUkcltKxoBtByxgvyiTCAlr0QNc3rGnip7wVqeMt05CwgZRK-LqShOOO8ssDTQ6zU7ttN2cNXLvXzAEXWRyo_e3O1SFcLKNpsTyXEMGu3sCE1bySUHO6krIWaES0BWm6p3LXZNOf7HmdDfnUUEAAtIWaKibxqC6LDmQl7Gc5_yAbnRKm1bkjdcCVMUkDB28Y0q5FYCJ5TLEkBm1bpqKG1VHhXEuc_YNHuldCAk6rQqv67afi2wXuIm227J0yKE8rIWloVk4Jk7Vb9RZUmtOLgJIcTDm3853AyV7FqM7v5Bifzr_PFxbdPcDK_WdxebWbXtws4ufbgZK-ow1MBvzd-c3UT-oO_L79--775rhoxE7Tf9fV68zldbVaXn1aL9W9fbro-Q-JfjE8ok5Ocs5-kEUq1Xb4CJ3fASV0rCeDNCC-Bt4A1bgRpIJaQsALyEpa0IsBJkX1S2SPcEkYarEwFOKlne25bxlQsrbFQYTxatizX1nSjGr5ghrekUYbEGdxzZYLqqUP-hCKlKv8JYt_jEM7TTxPgLebpJ3jJhGxaQ35FKqK_WdplNy9AEfCdG9JUm7re7LFUISpSUQsgz4HOveM4ThBkCMWen5Eg7C0e8SDMl5uGMqkNaG1MMD4-1OC7DReyIXgPUKjMkDKp8p7nFvSqrdVKAWj5jdF71UC3DFdiSlkOvDR2fOClCFmY7ghmjqIIjjAZAp8xKyol4Pgnp4XNMX8FSOzYOK9woBGOJMTBKXHdtmwAR6iU8mwgHQLj3lxHuTfkWAjeWGNBVJ6CMKsIZm19bYEAFB8cZMXZ9hfF4oXKV3qdXPwBKBSSIlexJsaMs4c9bwVkeE9ErU0nsQCVV7slOf9JmocZZ5Lcy8t9XZleIzj9DECxNqgZfCMHp2aywo1UHhhYLoIRFyUiBA4Gj23sVYb-DAwvcXtWFlocUYlc10M-CpDeVR1o3sfhJvQnFWXt_WTLWtORTwWfhgBdOPd6iJK0IRgNCSZhUuZws6nlriG42PygVbWh-7oiyv1rhwanAC1ZLSuAlv3Hpkr5vlqbUWiJx-cQZ5I0DFfPko1ibe2WbHKKbH_Ms7TipKOlvIczFqgfhXArtDI1GWHXyHKq_3oQBalVKK650MbfYCqIJoxUlh9auu6QLoqj0oM4UxmApiMLoy_dZHApPUd2OHo03M3ghlWbiuNiU_A9pkYRlGkuVfNebHNsaLlupMAklpo3pOYlJAlfZzV6iLEaRXCwqCPfTTB235pY_UJyFyqpuxbTYIliNwuyzD-NaTX_ygsiTkJbkT9awnQYeyW-Lshq5paPp-vcClK2HHb2Fw5RJ0kc4pfcY4_2EgtpGq-okF3HBZeS77_VZ4SWcxhQk1j0oV7gncijEfgwKeM3ge8a3x-wi6Ie4HhkIyiysz1vI7ctG6Q1w5lTFX-OnV9wvqOMXGBB84uK5z_OyDReb0Zh0GMrGbDlxFkY5fA03MsVsWHUzpmyYrGn0izJt-McTdFJ3_WUtXsGJ3JGOJOYBC_iNK19cfY0QSsq5IZKlWzzZnO3yajapMzGTxREYmoJMl6QDa_VRMNHezmzPnVpWr1zKnEl9BeTNh47jiN76MwZ0GGMfta0_WeiNl4wfG_LiKPeukTuyDDKKMnONIy0qo58iIFxHPZXOWdC_gVMuImjkkSvs280YiMq8-JFNpqWXTPrNDrEAzYe9b07H6EbHHMPNNhGhEHhxEnyklf_Hofz9NOa_9WcmVNFgJbf49D8X03XTX1UC_BSG2GRP1JKWCD_GaVckS3OH_4xqvEiFXD9jplBkhO5ke-GzuPY0-G5wUL0ODnJwpuwn5jnsCXVDr_DO0hvogw5Yd7Hu7xRQ7uTj_dDenkL0NJosjdBB9F3wm7brDBGY4xJEp6B8Qu3GUtP_LbpV_EFSH10XiUe4yvK6KX1-OVvBx0gty_UZAjazQri9YRa9VZZj9hxk9-MUq73QRl4SU-ywyOuKENuSIqXQf6VAN3QT45xcXS4FUVlkPsvqV5lc6kQZJ9VD59JVXeAb1umFvCWsBtak0q_bYy7E3adDeQ_CCvSQyYhZGF6Wkb_aMmmls0g8Wjw3aa-a6gkm-6IrzeoICVuK5XDVESSFwZ6C51thOdMu-a8Mu8tl7Qi5845GnWc8JGyjEge-zwrn2-SHsI_8oPjLnt0AhhFZVS6b1UW6bX_49Q0g4_xzDgT7Z40pzc7r5FppE9VbTIyOtOMYidJsv70SlCWin2ZPZDWTN9EIM2lfg2ZE2tjgyc0mGubWZv-XnogG8q2t6QcbfLsak9PS-OonX6eLptW0J_klpQzJm9GavpZ2lCt7HP1ICTZW2H_H1Owr1-wo8AqeJCeJV6YeEXy3PS9I-B1g5mo9KHkN0ZHmk9Xa3uQ-rpl3m2LtQa7JMwNerFteBicJX4e-UEf8g1uBElX6yGgFdlja15mT9V9vgBNU-s-09X6kOTqc2HfYhokWkmIvSBBcCiOZaPkcTBO43_uSd5K0tnrqQOAIZqOSO_rQFSuG4f6w-KKRuotYuScWH6_hOl55bmug-xJvgIUjwSFiDdwKM9I6V3k40RKPl5s4QzypCTInMIJ4HMO7KSInsZ_hu33II9nO75nUqB9ZED7g7wpiSMfD5Vq4R2p_eQ5fgz1sXN-2bV0YNd66SyfnMkiR_odXSdtf5BPhV6e4RDDPHc3e0yH6VzaNPhBuX1vlu9w0x0hpJ1_HLQdTlmewy85rwRAy6KhP5UbXXbzdlD1rrXb6floCDXLvaiEHbsz1_DfP5Pc46r6neSS2yz6BO5RbFM0rI987ojkSQbMlw6-G_d8pO-N4QfYmkgna_viTqHsrpSdAc50AhRVeJ8VGKDoLVKwZHhtTuDMwn4TIdPyNpF5Ye_YxfdHEivyJBhdWOle3G8abZiq843cL8yAHFdVhvMfm5Kph_9B6lmocfpV7iAbO1crpzdg9ubMsSGdrwFartZX3dkCrhb3ssFiulNrsXd27QfDQFZGKPT-StX8Zbb5NlnorLyTRTiSRUDIwP9bczdOfubO-H6PWTGOpSed7SFvNUfduBpkrMds_JCpHgZsNvn9veuaPzIsaK6yWqowzYwV9x5WDRvZYHPurrtH5HBVqVDCm16_eiQ9Jm7pQcYnzf5pN_Oi3zCxbt55jd94dnjnGSk9dIF4lF2VoZeUOhQ9bZm6t0P3tBv4ryJHijw6pPfyLlE_3A_S0rAgoeuHr1Pi-Vb2Nrz6Wk_YWV4yvhATOP03NqcutByOoVa4JPpY41z-3uMejW9eBFt5B8545Thl8f_ahb3RFdnsJXCH8ozj0nGflKfO1vGj_VUn5MEmYTRQPdBLOGbPzNF_NB3svF_Hcg_uYe8ddlcQFe9oxHuCMHot77_xTDzN-G88u6JCDhh_Lh84mECNaWPSkdfIqn8c-z4SQ4Hb8x6BN5RYQooCP4Vu3vs-2O6d2FE-Jem_UWIv7F8PMpoPNk9IX1RHdp8aPNoLREXxHrunt-1TfH2A4tlz7iAYgisRSXyoL6RVz90M7-Z4ej-sOiaDmd2ot6cMRpcfUVIkDtxsKpopP4kbuVGJzOZwNy4X7eN7e_Za4KlBOswF-qqhvcYXROMpie9APYAyKsezmK-K9ESTNnfxUH9jHMSnKA6YOIX_JGUvSo4HW0EyspksxAE0JLutyDm39vV1P9d11XBz4e9QhUGaRsWS1FgiLO1RDMztajD1D6bWjtxTZXkFga6nX1m1gsDJTyg5FIRA2jsSOswBuyv4yJ06U2dLNfAtlcB3elUSXlo9rpKYqqeD0M-iIERu4WNEPAe7UZjkeeQm2MMoQw5KsjgM7EVGe5fAS6G9_tiyH4zfsd41SCdd69ujcM8LfasBmmufjr51g6uKFHPanFUU4aQXqk2txpJqcQJ00TKVI-zpn0Rf0QHo4lCOKfqSZ1wS9VlQvGVcSJrDvTBEevV6b_mn631suUq6Xqezz3D9eQGX11dX1_-6_PoJLi-vFiu4vtbNF98-wdvFzfXtGug6kZtTtSaxUJ7myXqTwwMNgTo_IQXE0tA7h2G0lPsaoKWpi5iQgGS5O81_abTYnS_tXxd4v9byUJC5kqQWanlokRZtTkz1iT3a1NU-pf7CbQmmLurNqFSrzBLXQkRTeJhC7EhVmTLEY00O2VM5qXSdzaE8J8vhWQU6IJjZqsb3qtXpU3ynsp2egNEU3rYqMuXGLxW0LElDmDxd4GskONHP9ySjFAQWCCQzEAfwK7eusHvypAhODZ-DeGbKBoh4cvShuvgXEBzKkX-VBq3qXyVhCp7PonJcDmlRULN7gqkufCYFXBMhhfbJw8ponudtIyBlkOvS7VMl0Z51dRddEwTRDC5N6dZkov-aTICTDmrRdfOhAEt1etNtnutmXFEsTKsfTQuCq8tL3VHwcqOTm2muewNvWvOfDX4w1Hj1sLV5sZP6sTe9xxVmebY3kFbyoSJiR4i0tST2yZ6n0C-H4SUrebPvasyAoxNezpRpKzpzfXdUjLhTa1v9kX6Zw9uHPwmDCUySwPmuPCOM1DfgpNcr_dC3rGWyhQhNHX_qw6v1qvspAZX_UjNPP-aqcP15kc7hBHgLaDLVGeQN3er84lGDetbE4pl2Tr_btazoghkCqfP35wXBjMEzMoNgxp5KDdS_4MIGmKzdTv-kNQjmAMXPFH62gjQTLCXOd6bQEi2Vt1efbuJGsYOCY9TqiGrRfSg-ekXiJfgD-agvBEaxH8cfdh_DwnWxE5ZOXLie77pl7AelFyE_iWLkFO4H-hE5KHA813Uiz_fjqeNELgn83M-TyCFBBHyH7DGtpkqiU95sP-hV99H1nMhzPlQ4I5XQP0eBECN3Zk0ChEAw_9B81GrI2q0Avv7lA3EkI6ms9O9YfI9DJZrgwl5NAsG8_6sD8_QTfPQDFcaRn_K5H9qm-vj26lrL1s-P6H8DAAD__8uzouY">