<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128806>128806</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RiRi114
</td>
</tr>
</table>
<pre>
Test on commit : release19.1.4
steps to reproduce:
`
mlir-opt test.mlir --pass-pipeline="builtin.module(func.func(mesh-spmdization,test-constant-fold))"
`
test case:
```mlir
module {
func.func @spmdization_example(
%arg0: tensor<4x4xf32>
) -> tensor<4x4xf32> {
%0 = mesh.shard %arg0 to <@mesh_1d, [[]]> : tensor<4x4xf32>
%1 = mesh.shard %0 to <@mesh_1d, [[0]]> annotate_for_users : tensor<4x4xf32>
%2 = tosa.add %1, %1 : (tensor<4x4xf32>, tensor<4x4xf32>) -> tensor<4x4xf32>
%3 = mesh.shard %2 to <@mesh_1d, [[]]> : tensor<4x4xf32>
%4 = tosa.mul %3, %3 {shift = 0 : i8} : (tensor<4x4xf32>, tensor<4x4xf32>) -> tensor<4x4xf32>
return %4 : tensor<4x4xf32>
}
mesh.mesh @mesh_1d(shape = 4)
}
```
crash trace:
```
mlir-opt: /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From *) [To = mlir::mesh::ShardOp, From = mlir::Operation]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/fuzzing/llvm-project-llvmorg-19.1.4/build/bin/mlir-opt test.mlir --pass-pipeline=builtin.module(func.func(mesh-spmdization,test-constant-fold))
#0 0x00000000013906e7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x000000000138c27a llvm::sys::RunSignalHandlers() /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/lib/Support/Signals.cpp:0:5
#2 0x0000000001391c24 SignalHandler(int) /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x000071e282a00520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000071e282a549fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x000071e282a00476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x000071e2829e67f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000071e2829e671b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x000071e2829f7e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00000000049cd18c mlir::mesh::spmdizeOperation(mlir::Operation&, mlir::IRMapping&, mlir::SymbolTableCollection&, mlir::OpBuilder&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp:0:0
#10 0x00000000049cd18c mlir::mesh::spmdizeBlock(mlir::Block&, mlir::IRMapping&, mlir::SymbolTableCollection&, mlir::OpBuilder&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp:677:16
#11 0x00000000049c9b33 mlir::mesh::spmdizeFuncOp(mlir::FunctionOpInterface, mlir::IRMapping&, mlir::SymbolTableCollection&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp:0:16
#12 0x00000000049c9b33 mlir::mesh::(anonymous namespace)::Spmdization::runOnOperation() /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp:735:16
#13 0x0000000008792bb3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:0:17
#14 0x0000000008792bb3 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#15 0x0000000008792bb3 llvm::function_ref<void ()>::operator()() const /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#16 0x0000000008792bb3 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/include/mlir/IR/MLIRContext.h:275:7
#17 0x0000000008792bb3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:521:21
#18 0x0000000008793940 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:0:16
#19 0x00000000087a1e67 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:818:5
#20 0x00000000087963e3 llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/include/mlir/IR/Threading.h:0:18
#21 0x00000000087963e3 llvm::LogicalResult mlir::failableParallelForEach<std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> >&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&>(mlir::MLIRContext*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> >&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/include/mlir/IR/Threading.h:92:10
#22 0x00000000087963e3 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:823:14
#23 0x0000000008792997 mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:0:5
#24 0x0000000008792997 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:525:20
#25 0x0000000008792997 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#26 0x0000000008792997 llvm::function_ref<void ()>::operator()() const /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#27 0x0000000008792997 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/include/mlir/IR/MLIRContext.h:275:7
#28 0x0000000008792997 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:521:21
#29 0x0000000008793940 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:0:16
#30 0x0000000008798b92 mlir::PassManager::run(mlir::Operation*) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Pass/Pass.cpp:0:0
#31 0x000000000878224b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:0:17
#32 0x0000000008781a78 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:473:12
#33 0x0000000008781a78 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) const /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:548:12
#34 0x0000000008781a78 llvm::LogicalResult llvm::function_ref<llvm::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> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) /home/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#35 0x00000000089a9a3a llvm::function_ref<llvm::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/fuzzing/llvm-project-llvmorg-19.1.4/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#36 0x00000000089a932d mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Support/ToolUtilities.cpp:0:12
#37 0x000000000877832a mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:0:10
#38 0x0000000008778b58 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:0:14
#39 0x00000000087796f3 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:605:10
#40 0x0000000001305e9d main /home/fuzzing/llvm-project-llvmorg-19.1.4/mlir/tools/mlir-opt/mlir-opt.cpp:0:33
#41 0x000071e2829e7d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#42 0x000071e2829e7e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#43 0x00000000013057f5 _start (/home/fuzzing/llvm-project-llvmorg-19.1.4/build/bin/mlir-opt+0x13057f5)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW9tO4z4afxpzY7VK7BwvuAiFapEGgYD_3lZO4rTeceys7cyWefqVnZSmB5gpFJgDI4aW2PkOP3_nNkRrNheUnoLwDITnJ6Q1C6lOb9kt8_3gJJflw-k91QZKAQtZ18xAgDOoKKdEUz8d--MAeBnwMm1oo6GRUNFGybItKMD2Oog84GU1Z2okGwMhhIZqM7YX4GjUEK1HDWsoZ4ICfA4QylvGDRPjWpYtpwAlVSuKsf0FUFJTvRjppi7Zd2KYFABNLLlRIYU2RJhRJXkJUOp-EHzkbzfBguiBUO7HimHFc7wgiM-Al0H4yBGCwBtwm9ElqRsnlN0HUEjU3LOAGCq0VABPgmWwrDAC-MJRAiiFI4Av9m14ZGe3hR4E-Bxa_cZ6QVS5om4hBXgCAs-uzfwSoAl0p2UPzP5YSs-I4Kj7e6g_R9pb0yZCSEMMnVVSzVpNlf4xO-TYGanJmJSOme9od4JY5JJ996PJXrLPYLhmifdoiI4DXrDWpm65Y9Zrg-0Z6gWrjNviOVosAfH5m6ipqGmVWIn0jNXF551Twg4Q-wsOQUj0gjTUyRxYV_Gy_paVX3S3F4roBTSKFNt-M3DpTtHpQtYUoGnVfv_OxBygKeff6lGj5H9oYUb2D6nmoz5idKsATZkoeFvS9YW7tmmkMgBNJ0QbJubjBcBZGCeWTUkLbh4a63-kNdIi5m7DGcBZQbQBKJkqWUOAMrsIwrN72dmF9XO3zWLQvbuzZnLd2OPobtrYd91Q1YUYayUZzLSmyv4NQeQxTQCe3Et3bMm_CXfcUARQBAFCThQ8uX_o1u0iUfO2psJAWUEmClk3xLCcU9jp4wOEAIphRRin5Rh42c2Xi-zuAuo2t0GXwLyd29AqlbFGvTCm0VZQNAVoOmdm0ebjQtZrIIfwW6C1bqkGaAqJKGEPOzQLCrtDzknx1R205X1nSPEVlm3ddMfujaH7d6PkXJH6URn9srO3Eb60r0wANH1MDc_lhaMlBRe2sQe9pbf65-PUi2g8MCX9oLs3N4oJ49C4d06AkvUmRf43k9ooSmp38hPIhOns4IXOwFm-4QH_CLa0F9hcEK7HTBQAZzHCAGc-7jXxNzVJChSTfZrctqKj8y8iSk6V7u3yaMKupCwaazQ2KYa9iGgLbL9AAdwQBqDkXbALfIddLxfu5Yp9ihJEPC9EHnSw9NSWSTSLghFnol2O5qLtFoqxluMIoDNvGaAQeWurCjYJhkFaFbAxC0VJOfvKOD-MehqlVbGmHm6LG8QRnGun4KFiB3G0JhxtEE5pFFcYktxGmoPIoiSu8JpsvEPWzw8m6OdrgskmwSqmaXQYQZzSdKB4OjTMIC1KPyn2ZoouttB1SkDJvkTRRYH1yuXtFWkaZ8RbK3cPdS75Pck5nUjOabH3_uvmzEZK6x_Ry5zD0VrBc84I75LBldUMTe8VEbqSqrZ54W4dPwc-7AoBhH3vQKjOuCy-bsDUX_mzIIri2AaUqEfJ30IpzTF-DqVpKwpbgAxgspcsg-vmUhiqKpd1XovYh5jOIyroZ1GxZZ2Q4qGWrYaC1FQ3Tv2012-Q4bsM3IprMXTKD9A0xuFQVzzUNYlTlOdDXUtqCOMr072X180N0TorSWOkelRqwyDsBlfOTvYWp9srmSD8QTN9RQSZW7eYwFxKbl9b4Xr9sq9TVpgHs7h7Kx1RqTogezhdDfVaUDsd3MvQQOIetGAfaN8kKweFTNX7xUzRCuCJW-0FxRerBoBzW8bOKgHw5DcA3fYGXFowX1H47HRQ2fm9tdT7L6tQQvjF0iiiXScVOHNFPfLhPuQPAv2oRvMylaJkqFL0pDGtz-vqy-XtRApDl6a7QJe0aA3NupA5NB5rCRdulUnRr2-cfWcqUX-aPwkdmgxQzpQiD7du2zDM_yOY6ffucntNoFvD21-4vLXhbo2JQxXF1lJWLhr_PnHt-MEqRL4FxO-xSLawwGngHYzFzaq33Swl7dZHFXdqnVeDs21Kl0Ib5Vp568HZcxsGeXcl-w1RVJhLUcnO41dTlzdJFqsMm26iT3waxQejPygbMv0gisu64QAlHWiDIO2HT0S5t2B43dxcWTB7_36jzJv4Sd-b29bc27LlCNNhAvgi56wg_JbqlpsByhVh3NaZN0QRzimfSnVBigXAk9lsLtpZsVx2G2czIVVN-IyZHsHDM_Nh2Dkj1qbsrn-jxXswHXAknMviPTR1k2v3f9Ntj-4Bq-S2P392gH8e-8cc-yfuf6K7Hb-6u3dDyNXHKS6hJn0K8I-dAv4ea9gp0T4k9n7i_Vs5X4qs9_WDVYT2ed9xFXyDGrL7DCroddgZeqXpq0rytxTdGxS_O3Onl8j9FwzrQmTbILQy2Z2hkYXtc1z39uM6tDPbssj_1uM6tDNYejSmz3Hdi8d1aHtE9QtHtrce16H0c1z3ceM6vD1gSvIUbQm9gmGv3W2i-EbS9pkNb7VCCUJBDhuqKqnqLpjoH3wF6LEy1guiaDlrjC2N13fcyVYV9GqubEXbn8KW3ewW-IM1ztR1Y64IExMpKjYf0Hg1NvdScj34QpaNMmt-ez64w1vFa-KTOIGNkgXV-qytKvfNnp-CqxXsvy3dgeuK1lI9rEgN9pe0Ii03s5JyaujT9-zr2J8Dcbiv_yj4ls6ZNuqhX18z6sr6Gyn54KP6YxjpTx1EEONBHsV431Hs1flXPJL9UP-k3a-LNPxEkfOOOj0N7ZHK858yjjAYFlk42GccT414niyKnrrhlwH4h63FX-MF61blXVV5zvg_pGPCm71qSlKCyZ9g4X9aiHvZWXvDo462jxqjYROpG85MJsqbrfLkQ4D7He3u2R3DtTujmJjbDvmpy6-ukNbf87bp8B_DODOMbjQgK7PYGjDECUbkLymM3q8hWDVQyTbYefh0Fdq3uMWCdM1sdqgZ_QiodwSgH4XjrWFDnEYVPgoAv4KmkRcODjvYeojGC2lawpow8XJhzK4Yq7cDtDHuJfC3HjGIy_TAJzhQWqb9ExyWINomSAMPzmb2npk2RJlZr99BLGgwYIG3UYurEHbEe7pHeZrKse7Jd8yzXCpD3VizkIq6x7to2Qu2eq7vpDzFZYpTckJP_TjwwsDDCJ8sTqvc86qwyOMEY4wwzlEUJqFXhCSPy6rMT9gp8lDoIRR5GIUIj5MiL0rioziJiiIoCxB4tCaMj60GY6nmJ-6ZtFMfJYkXnXCSU67dc8gIdeaAQHh-ok6d-nk71yDwONNGrykYZrh7dvnqy-UtCM_f9ym9k1bx05c_idcr_u0U_T8AAP__JNf31Q">