<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61107>61107</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]crashed on mlir::scf::ParallelOp::verify()
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          BealZephyr
      </td>
    </tr>
</table>

<pre>
    I got above crash on` llvm release 15`.  There is no such crash on the new commit but an error alert, but the problem doesn't seem to be solved.


Steps to reproduce:
```
mlir-opt -convert-scf-to-spirv test.mlir
```
Test on llvm release 15.
test case:
```
module {
  func.func @main() {
    %cst_f32 = spirv.Constant 1.547800e+04 : f32
    %0 = builtin.unrealized_conversion_cast %cst_f32 : f32 to tensor<1xf32>
    %1 = llvm.mlir.constant(0 : index) : i64
    %2 = llvm.mlir.constant(1 : index) : i64
    %3 = builtin.unrealized_conversion_cast %2 : i64 to index
    %4 = builtin.unrealized_conversion_cast %1 : i64 to index
 %5 = bufferization.to_memref %0 : memref<1xf32>
    %6 = memref.alloc() {alignment = 128 : i64} : memref<1xf32>
    scf.parallel (%arg0) = (%4) to (%3) step (%3) {
      %7 = memref.load %5[%arg0] : memref<1xf32>
 %8 = math.log %7 : f32
      memref.store %8, %6[%arg0] : memref<1xf32>
      scf.yield
    }
    return
 }
}
```
 Crash backtrace:
```
mlir-opt: /home/llvm15/mlir/lib/IR/Block.cpp:231: mlir::Operation *mlir::Block::getTerminator(): Assertion `!empty() && back().mightHaveTrait<OpTrait::IsTerminator>()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt test.mlir -convert-scf-to-spirv
 #0 0x000000000047f3aa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x000000000047f55b PrintStackTraceSignalHandler(void*) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x000000000047dbd6 llvm::sys::RunSignalHandlers() /home/llvm15/llvm/lib/Support/Signals.cpp:103:5
 #3 0x000000000047fc85 SignalHandler(int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f6119d4d980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f6118c3de87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f6118c3f7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f6118c2f3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f6118c2f472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x0000000002b60e21 mlir::Block::getTerminator() /home/llvm15/mlir/lib/IR/Block.cpp:0:3
#10 0x0000000001900f14 mlir::scf::ParallelOp::verify() /home/llvm15/mlir/lib/Dialect/SCF/IR/SCF.cpp:2180:14
#11 0x000000000193e067 mlir::Op<mlir::scf::ParallelOp, mlir::OpTrait::OneRegion, mlir::OpTrait::VariadicResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::VariadicOperands, mlir::OpTrait::AttrSizedOperandSegments, mlir::OpTrait::SingleBlockImplicitTerminator<mlir::scf::YieldOp>::Impl, mlir::OpTrait::OpInvariants, mlir::OpTrait::AutomaticAllocationScope, mlir::LoopLikeOpInterface::Trait, mlir::OpTrait::HasRecursiveSideEffects>::verifyInvariants(mlir::Operation*) /home/llvm15/mlir/include/mlir/IR/OpDefinition.h:1888:39
#12 0x00000000005e7788 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*>::CallImpl<mlir::LogicalResult (* const)(mlir::Operation*)>(void*, mlir::Operation*) /home/llvm15/llvm/include/llvm/ADT/FunctionExtras.h:222:12
#13 0x0000000002cbca57 llvm::unique_function<mlir::LogicalResult (mlir::Operation*) const>::operator()(mlir::Operation*) const /home/llvm15/llvm/include/llvm/ADT/FunctionExtras.h:410:12
#14 0x0000000002cbc937 mlir::RegisteredOperationName::verifyInvariants(mlir::Operation*) const /home/llvm15/mlir/include/mlir/IR/OperationSupport.h:307:12
#15 0x0000000002cbaa6a (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) /home/llvm15/mlir/lib/IR/Verifier.cpp:186:48
#16 0x0000000002cbb750 (anonymous namespace)::OperationVerifier::verifyBlock(mlir::Block&, llvm::SmallVectorImpl<mlir::Operation*>&) /home/llvm15/mlir/lib/IR/Verifier.cpp:142:23
#17 0x0000000002cbad90 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) /home/llvm15/mlir/lib/IR/Verifier.cpp:225:22
#18 0x0000000002cba711 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) /home/llvm15/mlir/lib/IR/Verifier.cpp:77:14
#19 0x0000000002cbbce0 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0::operator()(mlir::Operation*) const /home/llvm15/mlir/lib/IR/Verifier.cpp:234:39
#20 0x0000000002cbbb1a mlir::LogicalResult mlir::failableParallelForEach<mlir::Operation**, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0>(mlir::MLIRContext*, mlir::Operation**, mlir::Operation**, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0&&) /home/llvm15/mlir/include/mlir/IR/Threading.h:46:18
#21 0x0000000002cbb9f3 mlir::LogicalResult mlir::failableParallelForEach<llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0>(mlir::MLIRContext*, llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0&&) /home/llvm15/mlir/include/mlir/IR/Threading.h:92:10
#22 0x0000000002cbae31 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) /home/llvm15/mlir/lib/IR/Verifier.cpp:232:14
#23 0x0000000002cba711 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) /home/llvm15/mlir/lib/IR/Verifier.cpp:77:14
#24 0x0000000002cba6c2 mlir::verify(mlir::Operation*, bool) /home/llvm15/mlir/lib/IR/Verifier.cpp:374:19
#25 0x00000000029e4ec9 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm15/mlir/lib/Pass/Pass.cpp:497:27
#26 0x00000000029e5414 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm15/mlir/lib/Pass/Pass.cpp:534:16
#27 0x00000000029e6cdc mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/llvm15/mlir/lib/Pass/Pass.cpp:837:10
#28 0x00000000029e6bfc mlir::PassManager::run(mlir::Operation*) /home/llvm15/mlir/lib/Pass/Pass.cpp:817:60
#29 0x00000000029de23c performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:84:17
#30 0x00000000029ddf63 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:124:12
#31 0x00000000029ddd6f mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:164:12
#32 0x00000000029ddc8d mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#33 0x0000000002b0acc9 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#34 0x0000000002b0a2a5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) /home/llvm15/mlir/lib/Support/ToolUtilities.cpp:28:12
#35 0x00000000029dcff9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:169:10
#36 0x00000000029dd13a mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:187:10
#37 0x00000000029ddaa6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:269:14
#38 0x0000000000411f4e main /home/llvm15/mlir/tools/mlir-opt/mlir-opt.cpp:247:7
#39 0x00007f6118c20c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#40 0x0000000000411dda _start (/home/llvm15/mlir/build/bin/mlir-opt+0x411dda)
Aborted (core dumped)
```


Test on  commit: #[6740991](https://github.com/llvm/llvm-project/tree/67409911353323ca5edf2049ef0df54132fa1ca7).
test case:
```
module {
  func.func @main() {
    %cst_f32 = spirv.Constant 1.547800e+04 : f32
    %0 = builtin.unrealized_conversion_cast %cst_f32 : f32 to tensor<1xf32>
    %1 = llvm.mlir.constant(0 : index) : i64
    %2 = llvm.mlir.constant(1 : index) : i64
    %3 = builtin.unrealized_conversion_cast %2 : i64 to index
    %4 = builtin.unrealized_conversion_cast %1 : i64 to index
 %5 = bufferization.to_memref %0 : memref<1xf32>
    %6 = memref.alloc() {alignment = 128 : i64} : memref<1xf32>
    scf.parallel (%arg0) = (%4) to (%3) step (%3) {
      %7 = memref.load %5[%arg0] : memref<1xf32>
 %8 = math.log %7 : f32
      memref.store %8, %6[%arg0] : memref<1xf32>
      scf.yield
    }
    return
 }
}
```
error message :
```
/home/llvm15/test.mlir.mlir:11:5: error: 'scf.parallel' op expects body to terminate with 'scf.yield'
 scf.parallel (%arg0) = (%4) to (%3) step (%3) {
 ^
/home/llvm15/test.mlir.mlir:11:5: note: see current operation:
"scf.parallel"(%5, %4, %4) ({
^bb0(%arg0: index):
  %8 = "memref.load"(%6, %arg0) : (memref<1xf32>, index) -> f32
  %9 = "math.log"(%8) {fastmath = #arith.fastmath<none>} : (f32) -> f32
 "memref.store"(%9, %7, %arg0) : (f32, memref<1xf32>, index) -> ()
}) {operand_segment_sizes = array<i32: 1, 1, 1, 0>} : (index, index, index) -> ()
/home/llvm15/test.mlir.mlir:14:7: note: terminator here
 memref.store %8, %6[%arg0] : memref<1xf32>
 ^
```




</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1lz2ziQ_jX0C8oqEuD54AdZtmq8laxdtidVOy8qEGxK2FAEFwAde379FkBSPGwdcTwzmd2kUjIPoI-vG90NEKBK8XUJcOEEl05wdUZrvRHy4hJo8QdUmxd5lors5eIGrYVGNBVPgJikaoNE6YQuKoqnLZJQAFWAvMAJ3RlCjxuQgLhCpUCqZptdD6Q3gEr4hpjYbrlGaa0RLRFIKSSiBUjt4IV9ahpWUqQFbFEmQJUOjjRSAFukBUoBKVE8QTZz3CvHnQ9_HzRUyjSSUEmR1Qwc0jUI3fa_vd0WXJ6LSqNzJsonkPpcsfxci3NVcfmENCg9M23e7PwIShuNJgC0Apm-iFG1n7fI6gKQE1029wjldclm5gc5vrulvHRw7OBk2AQhBwdM6VVOMHLIFbKCzhaiVJqWGnmzwI9i1wUHX7o-csgc5QSPeru2X1rzQvNyVpcSaMH_hGzVQKC4KFeMKj3mZOkYTDWUSkiHLLxnQ5lcj4h7lrhBxOI2Y61gDo5dS4WXGTxbpcxN6I964_29veO9yXcohjsKRqWG6pCU_x2kvH2kHBwELZ08B8n_pJqLcqbFagtbCXlnjDlq7vdhGloiTZsZLQrBer-gBV-XWyi1bePheIdMdHWMtGL5rKKSFgUUyJIMqFy7DbxX7RPf3GrR3hFzpzRUw_uRe1qJo6HEhaCZxcKEl5ZFcFg4BwdxQ4LqzawQ647oxJtRx0NpIcF2M9HDYHY6M9Rh8cKhyAbIR1f9jQRdy7ITr3vTX4yHNlrYaJdS9lVLejz8GPEcvNyILTh4afzfCxy8tJEHLwueOnh5c-_g5WUh2NcZqyqHzDHxrFqmEZk7ZH5bgbQuhhw87x_bPs3lGvQjyC0vqRaycSJDYq4UyKZj6DrYg22lXzofw6GDQ6tK82S25euN_o0-waOkXDtkcVu1V4bFjRpwINctExyhnPJiF63vPl3PH66RqlOTAyhK67UJ1kJq42sbrStlyOGlg5drrjd1OmNi22LT_jmvpPhvYNrBS65UDcrBS0TLDPGSFXUGNoGwsSFmXYKg7CvK6m21s4xJWubfnRRrSbeIynVtxpXqMLZpYpcQ3k4YO_clLnKf3d0_P8oJpTawNSipF9Vc3EleaivOo3UUHPeNJP22EkpLoFtrhQXiJhQmb7lKh4t1lYe6MlA6ePl7yZ_NA74uaaFmvGQOmQehsbrn9dJ6U2mDIEUT0Roav9EyK8D4zpPgmYPnHyBPSEIjTy8OnoiTpVn4Fnj3dTmSSu189lR5OkGaEeW5xMDTC0KmuLA4QFMgPsYovhuNQfBb3lEeel6S-VkSu2i1kmBj3UrqJgS31J_jcBX65wUv6-fzdVk3Lyq9kUCzmRIz1xQEzx5OYhPgezbBkE3MSAZxhCTlyoTTpcmAmRmDBU_Z-eLLf3z7I93d4hmOHLxUVg8HL2czc_eiMqjMWKwbNdWLerLSlLW5taRn1g1N-HJ7ScKJJHmUe6bctJqeJonOGjRsL8sknjCJxkxwTnKKVitqI-DKxKhVSk_Xvem3u2hYJmOW8ZSlH-ETbMeM1UJrNeL6ER5ZLRk6Jk5DF7CHTg35359qXIfMSZvBMPFGwc1LXDf3_AF3xfI2uLXFxW3V3D-B5PnLiUJccVo00f1hseyEelgsu-znxUYqz-_F8sZiEXDDaJQeHbI4LCVejNoP0tptCfew5qI80OYLlZxmnN2DqgutDrT8A6R4qBkDpYQ81LAjaVN7mR1qOtdaPpgatW37AOsmf-3v8sDLdQHW0DfbquCMD33lTbD-y9RIBsnrNt1vq-IQbNVN-WR0OCzIvNZiSzVnc1Pd2hrmgYkKxl0-CVF94l_BENUg87awIvOG0n7yv1F1D6yWij_BA8_gOs-Bmcx-PfTLoaTxG1XV_mTX-m1bd_QPrMveVleQ85Lb2n9jXDaOYzOekt5zxwkvgCiK45Hia85o0fjVIBFmoCkvmuvfS_4_NSzrkhlGl3beudhDYgrVQMEOkgUtCmvbvUSaEDZHdo5ma7z9oDWF4K5i2Mv9YBrt4W0fzK8eHbzsVL5-1pIqizDG2OCMe4BHiRyzlNEgGgBZW_BWeUvqsNL7ZW-g6CAU9u2uzj7a8UNU9z13oro_VT0hw6hooprSINu4Ycj9J93COwbGXiWODI-WSlsfWS1IUwwNtAgmWlAaUmMMWoryZStqhUq6BVXZGjqZCPjFqMFBDpUaSP-2TuHJmbIj31WRsSln_bgXPpwIn0Zm3v8Dwjf5fSh4-8TOEnq_ftjSovgCTAv5ajBPh_0PKOxjOx3tFY6m1sqSH1P4r7MWxoH97YWPp8JHnveDws_L7EqYvFraKd7HahBFkzoombobg78B_eahg_2V-3Hx77j5iD_Opdidap96dG8u7Z-b0p-mBXTV4FLIa8o2-4dMk8j-XlivRy0_f7q5X4hSw7M-klaPv_xb9bBLSu-ppR7tdJaX6ybX2WWDPs5ib2r6JCc_ZPo3I-kBl1igsO5i6c_mG_8iXT7IPxJbBbq9f-BpZAfyo5H9L0tLBI-jOp6WsP-2tISnhSgNGR6Mwt3iwH6HTIUo3isOiUyi8AaJYlxSJuADSwbyDCdXt9WjuK3uqFLzjFZ23NgF2npseNPgSLAdvpmXtHhRXH2mJV2D7DVcoLq0n2SzAyu-I40bzvZPq6-fGPxx1OsbTvQN_NGqzWn63vEKCl5O3cU03akRfjgAw06G1U2ptLTL86a8mB9q0HBuXrSy31EJpb4pc9FNXo9M7PdhHNjiwwt7jKMJxiHL2ES0TtkdolQpODSzOojYe8SOSTQJjPFU7DQ_JvY710j2yuQZmcKBTOMqNskAE4YqkLmQ27md9qojX0s6X-r-DjKgqCWDz-vXznoob3bLA6vmM-JJSwTTgdEshRxH6FGIQrUP7RdCvPxccHlb6c-Ulx1o1v36IT7-6oSTLMtDgiopGCh1aT9CH4FM6Wy0IlJpOSqDPsNWyJeO1KB9BjmtC73KoAAN-_uQawvAa-PsN9bHwT40dLu83Cx_yJdXU-emlLiz0pzk0ydZzMP-eGFj_OnNmCwL86E_9iR-GtP9M6Y55jBtcXB8GvpPADU116lT3tOcKpw6FZ46FYuzE9aTTzfnT4HhbqWV0aJIKfu6ysdLt78Gz48MHjOhLES5_qfweT1mvnuB_OHxU7dGTovhKnkwGTDjyVXqUsaS_wMD498W-95nzTCeWNOfWhPTYPh9uiq4npfZ3aQw-rmDwE9huqMtXoWUoymu3xdjkt3vmhdcc-jmBXhq28msPWN5nvyql94f8j-qBEnGU0oSTksQj9Cf3E5jzLvVgsWnOyoVyG6tIPz5wI8n83kSTcGnNNwLfrvCwjZU9t8DBnNlLXm5vof8dL0_SC_cOFW_hEji8X48z8t9QFvKywMM9WtW3WXHxzf4DabRyWTHlsviCK1WBU_ZSmkq9arjecoeMabqbnNcc2lfWjp2vxjx_X7DmIOJ7061zDKKGsbtvrE9qnbSpMauA4Uv3eeGym4P2TwVUkNmyDEhwW6FhWz3erJNefjbHXpoz280O5eJE1yGke8miecEVw6Ov3sHr5ZgNGqJeCQgBBNGA8hy7PoJ5G6WB75HcE49RiMHJ7-OWfw6ZvHrmMX_62MWzaGxLShF14D2BYA34uVuG_-sTWieZzd-k3lzEK2JatHQcg6OkKgQPFfAtEKpyF6aYdrslwT0jetN16lRsfv48hd4gBNcv0e5UphCaI4UAGK1lMahxW7tfocfxmPNcSND0Brd7_8mVrxOLCe4TlN3oOAglOyoo97tHIwHzrvj035wHmA0tyXxK8eyJyLaSHXukOuh1zo4SHZMWvfeceiGdU6VNi_bhoRKrjez7qlDFqUowXBqR7mDY8PiNbteEztEdoySVpXobZUsscUbQ-aVZu0MfjccGvlFs9V3pZq9vivF_wRllaFS0heHLLj9jow8Q7H_ccc6tax2PA8yP8XhfFtPDRxO77YVow1IaFH7gKjSD4T9JUvze5ZdkCwhCT2DCy-MosiLo5CcbS4S4kcJifwkdDPmRUFEWMQCwmjk4ix3vTN-gV1MXOJi1w0STGbEZb6X5GFK88QPWOL4LmwpL2Y2pQq5PrMHki5Cz3Ojs4KmUCh7uBbjEr4h-9K4SHB1Ji9sIZTWa-X4bsGVVj0VzXVhT-V-_nRz7wRX9jATZKb82n7fbvuzWhYX7z9WZRX53wAAAP__p_j46w">