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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR][Tosa] Cannot query rank of unranked shaped type
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Test commit: c7550310738b27aec440e5d20cec7f0209d45721

Steps to reproduce:

```
bin/mlir-opt temp.mlir -pass-pipeline="builtin.module(func.func(tosa-to-linalg))"
```

Test case:

```mlir
func.func @tensor_with_encoding(%arg0: tensor<*xi8>) -> tensor<*xi8> {
  %0 = "tosa.abs"(%arg0) : (tensor<*xi8>) -> tensor<*xi8>
  return %0 : tensor<*xi8>
}
```

Dump:

```
mlir-opt: /home/rik/git/llvm-project/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:156: int64_t mlir::ShapedType::getRank() const: Assertion `(*this).hasRank() && "cannot query rank of unranked shaped 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: bin/mlir-opt temp.mlir -pass-pipeline=builtin.module(func.func(tosa-to-linalg))
 #0 0x0000000004aea02d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/rik/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:11
 #1 0x0000000004aea51b PrintStackTraceSignalHandler(void*) /home/rik/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:675:1
 #2 0x0000000004ae868b llvm::sys::RunSignalHandlers() /home/rik/git/llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000004aead71 SignalHandler(int) /home/rik/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007fded65a30e0 __restore_rt (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x3d0e0)
 #5 0x00007fded65edc1f __pthread_kill_implementation (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x87c1f)
 #6 0x00007fded65a3042 raise (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x3d042)
 #7 0x00007fded658e49c abort (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x2849c)
 #8 0x00007fded658e3d5 _nl_load_domain.cold.0 (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x283d5)
 #9 0x00007fded659c062 (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x36062)
#10 0x0000000005170afc mlir::ShapedType::getRank() const /home/rik/git/llvm-project/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:0:7
#11 0x00000000087f3010 elementwiseMatchAndRewriteHelper(mlir::Operation*, mlir::PatternRewriter&) /home/rik/git/llvm-project/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp:536:12
#12 0x0000000008801d7c (anonymous namespace)::PointwiseConverter<mlir::tosa::AbsOp>::matchAndRewrite(mlir::tosa::AbsOp, mlir::PatternRewriter&) const /home/rik/git/llvm-project/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp:841:12
#13 0x000000000883b36e mlir::detail::OpOrInterfaceRewritePatternBase<mlir::tosa::AbsOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const /home/rik/git/llvm-project/mlir/include/mlir/IR/PatternMatch.h:330:12
#14 0x000000000a10380f mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_1::operator()() const /home/rik/git/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:206:31
#15 0x000000000a103635 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_1>(long) /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#16 0x00000000049ff049 llvm::function_ref<void ()>::operator()() const /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#17 0x000000000a105200 void mlir::MLIRContext::executeAction<mlir::ApplyPatternAction, mlir::Pattern const&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pattern const&) /home/rik/git/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#18 0x000000000a101ed8 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) /home/rik/git/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:227:9
#19 0x00000000094c471a (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:1939:21
#20 0x00000000094c3db9 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:1847:17
#21 0x00000000094c3122 (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:2358:26
#22 0x00000000094baa56 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:2412:16
#23 0x00000000094bad37 mlir::applyFullConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3384:22
#24 0x00000000094bad96 mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) /home/rik/git/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3389:10
#25 0x00000000087e772f (anonymous namespace)::TosaToLinalg::runOnOperation() /home/rik/git/llvm-project/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp:67:16
#26 0x00000000093fb42f mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:0:17
#27 0x00000000093fb3c5 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#28 0x00000000049ff049 llvm::function_ref<void ()>::operator()() const /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#29 0x00000000093fe620 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/rik/git/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#30 0x00000000093f66e4 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:488:17
#31 0x00000000093f6caa mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:548:16
#32 0x00000000093fc8c6 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:768:36
#33 0x00000000093fc50c mlir::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/rik/git/llvm-project/mlir/include/mlir/IR/Threading.h:46:18
#34 0x00000000093f8066 mlir::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/rik/git/llvm-project/mlir/include/mlir/IR/Threading.h:92:10
#35 0x00000000093f78e7 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:778:14
#36 0x00000000093f73ed mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:669:5
#37 0x00000000093fb417 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:480:11
#38 0x00000000093fb3c5 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#39 0x00000000049ff049 llvm::function_ref<void ()>::operator()() const /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#40 0x00000000093fe620 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/rik/git/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#41 0x00000000093f66e4 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:488:17
#42 0x00000000093f6caa mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:548:16
#43 0x00000000093f8813 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:857:10
#44 0x00000000093f872a mlir::PassManager::run(mlir::Operation*) /home/rik/git/llvm-project/mlir/lib/Pass/Pass.cpp:837:60
#45 0x00000000093dd647 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/rik/git/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:376:17
#46 0x00000000093dd274 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) /home/rik/git/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:431:12
#47 0x00000000093dd033 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_2::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) const /home/rik/git/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:472:12
#48 0x00000000093dcfc5 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> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_2>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) /home/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#49 0x0000000009562461 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/rik/git/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#50 0x00000000095619e1 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/rik/git/llvm-project/mlir/lib/Support/ToolUtilities.cpp:28:12
#51 0x00000000093d9bd3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/rik/git/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:475:10
#52 0x00000000093da0ff mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/rik/git/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:531:14
#53 0x000000000496d3fc main /home/rik/git/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:268:7
#54 0x00007fded658f237 __libc_start_call_main (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x29237)
#55 0x00007fded658f2f5 __libc_start_main_impl (/nix/store/b2hc0i92l22ir2kavnjn3z5z6mzabbvm-glibc-2.34-210/lib/libc.so.6+0x292f5)
#56 0x000000000496d0b1 _start /build/glibc-2.34/csu/../sysdeps/x86_64/start.S:118:0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXF1T27rT_zTixkPGlvx6wUUKZP6dKVMG6DyXHlmWEx0UyUeSW-inf0ayg1_CW4DQnpYznDR2bOm3v12tdleysdZsKSg9AtEnEJ0c4MaspDpS7HrVsH9-UnVQyPL26Ipq4xG5XjMD0NwjSRT5KPATlBYwwZSEoU-jEvqEkqTyoZ-VYZTAAPgnwJ-3n5eG1toz0lO0VrJsCAVoPrwAxH735w4LJgBcrDlTh7I2nqHremaPvMMaa31Ys5pyJihAJwDComHcMDFby7LhFMC0agSZ2Q8AUyM1PjTykDOB-RLAzP3Be3ttP1txsX4QogXSnrrryAOhb6jQUuU_mFnlVBBZMrEEMAUwwmrpW-baKwA6BnB-w1KATgHMvEOATu_5yQPJp7YXzwMw8j2ATjwAoRVohgtthehbh5lne7AC79LJpgNFTaPEpp97kbYcJCePMHfSrOvH9brRaIt1sZJrCuBCsWsAF0tmAFxw_n19WCv5DyX20EjJdWcKAC6YILwpaX_i8wWAi0-tAVzd1vSzMFRVmFA9W82YIADNgyi23TFh4jA3nrsRzQGaX65wTUt7V3u8pOYCi2vHauYRKbTDOdeaKsOk8KwY9se5WTENYDZbYT24A8AYwNjqiGAhpPH-bai69RQW156svEbYb7T0tOvXM7Zjq8TEqzDjtJy1HJ1_OZ1fnnq6KdbMeNgrmqUdNlIZO4BWxtTa4oWLlrNVU8yIXHfUbTPItG6opdDDovQ6Aj2zoh5RWK-8ApNrozChs81QxeTaK4eq9GfAz86VXCq89rBaNmsqjAXhPX-c7j5IW9MEEPmef-Nv_gsxxT4sPSesU5u-1e2Xc8WEcfCvrDwApv1FCv_IpTaK4rVT07G1h1Zpz7DCDbOsAHBx2dRWGQAuvgl2Y0-wpcBcd-YW-9AaXdDjD6b4o6DwJmDbNv6HRcmpAjD9LlkJ4Hw_CJPIIuwBwgnANE6L-wi-aMQIp74z_Jcj3EAjtbW3wEcAzaMeGppyVyaBNyVrX6oMAzQmKuzQJFVJyzjCyKe-l-eKaiMVzZXxHCOLtjF3EsBFAVfEZxnkEDIFr_F38Y9AP6Of8fonLorv68MlZwU5hDMUHsLAv0Nnz860nMUAfvJvUOlTfzQuojEaWpKg8vK8NitFcZlfM85ztq45tcMVtx5sb_DShATVCF68RVYIPYWZpvtlKYQjGMkYRkrDjHi4kHtVFkzDjIxgpFMYqIy8XPCcS1zmpVxjJmZE8nLm7xUXKqMRrmyMKyN-DPepn9iPe_1Y5zjy7lGQ-Lgiu03S7xZJ2CAu6ZGP_HqaVMgPfI-2w-0H0_QMG7Kai_KC_lDM0P9RXjt31Qv3tabKDUzn6o8HYp9jY6gS3a3KzVnP9HCdPC37x1J8p0q7LhZXUuMr-aWbZEeHnf-NkI2VAtgLOZob0tQPyoRY-8BCitu1bLQn8Jrq2k24WQdespaBtneLHx33stnZvv02L_TX2gaX7mg95mvE1PSeZ5C1g228hrI0DCaUoTFlqEAxHaAtqcGMbwzgq7oztA5_J80nl4G8krZdDWx3zu4fR13rbgTMVgDNEfInLIVDlnDgo9SvtvHN65ozgo1Uby3s8SDCsWGovTFXtALouJCSe6Omuwa6pMBx5RKrRxqxEdyrG-lv_iKXjGB-QXXDzfPa7UYjgGEetF-lY0iq1nvu7kNH4-ROBYstXXVDA_rWm6CgV3o0VXqMIs8x9SSPnVTuEoI5t3lLXokRSR9G88ZGc2qTKCmWu4bXvVfoTsxPrmx4ffVl0WHF_PTGKKyddwijPuq3ZhKPov6sqvww281CXmvpL5MjTsdyJBNzj6Dvt-beK-Lsy-eLYykMvTHtCXpDSWPo3DU_Uqe169uNjbc_32exvU5b_T2Tt5FJzZXCtxcTc_p88U0w0137qCm9wRQy4MVxCxPnTHpy0wm5AS3TjwnkTX3BfmYFmAA0H2QA2VCRWUjCJMBPhZh3qvpCl5izn7QThXeH_8fMqgPwTBX3Yd9bxd5XCgtdSbW2acc3w1z6ccIwp8T0vW0qHxmyosF-soT-hBdUFtlrefmPkJGG1kaCPtmCwZSMAMJnkzHIQ1z40B6OuHhc4iE3Y9b2zgVEkZ1VYNxzAcdcFBhH8Su5uPtZj2aMe6eBEQE7O7EThpdCasPIKz3NbiyGgSvLDlhEUxZLlAzUjO1ku2g4H-aDL6DmPhO7wmpJzZZlLZT8ScU4Dbyk5sUT6wt4QigNnY_ueQq3eMriJ3nazcn81nxkri7d8xGNyz40SWD11OgblRHaBYlGfBUDbp5fSH9RseIc602NPU4mA2EUbWeoKkJYPVivuJJfa9vYvMT1XVClGjEJKLTeUvfDhjAXmN9qps-wwEvrcY89G0HZfxvhlqjLbrmmT06SPWS0LezFgCt_MgslU6oQecv89bel-tfkgTD9M_JAmE3MhsbwNXmg1fmp-5XJBxJBaxTvl_-1vb1L2jdeDc5QFcc0_E291Zu4oDBNx05ovJ5sGSAY78zA-WZpfjxX20vvBHs08H0RJVOz-Sy0UW47gR2iW0n38IK25_aHDvs5VlSYz6KSm5DghQH5NutRmI5nyfEieYYqkpJ4Z9YHU_5c3wryeV1zANOWrGHpLXrAfe2jw6_1-Zkl8ZXrJtskJs4PogGJaEpi5A8X-8Y1iv58hRnHBbcKx5xTvpDqFJMVQMd5vhRNTm5u2gvzXEi1xjy3mVtb9Nl5et2NMmez2pTt-e-UvEengx4x55K8h6To1Ov-H4_SNzf8zbx1_9TYEv6h9l-j9g_e_8Th9iaB25XbdcTEso3k3T6CtPf84cTzp34cv8rz_z1GsBWI_RKX-8H37z7mMjiuVKFoMuaSlCZvLNbbxImJC7bDHvm0JJUgWr4G-RsDjuNslOCjrbpQGOzO9J9ZQgtTf7Af2pKVfhTR3rGIhrI_o4gWTgs_H0W0FxfRwq0S0t9WRAun5ZyPIto7FNHCaf0nTQM0AbsR_45jrDXVz1xS3OLwbQRJo2QcWoVb6UwC8ROCPCLCG6FEiXv-qEc5CQDLMg4Tr6aqkmrdujz9xFNSdzG4XmFFy7w2Ngjv77iUjSL0bKls7Nyvyx4_4JOn-jrjTH2tzRlm4liKii1fu7Y72OTvnjOEi0EXmzVd5w2HziCe8gST0KuVJFTrT01VuW37z6KpEezfhm7RdEbXUt1umhpcX9IKN9zkJeXU0Ifvua8U8Bh5w-u6te0LumTaqNutzWttFnHufM1Ld7Q8h_cQTXbKh8mUdx-h-wX8Hfm_n9dnGncfGcIHgqx3lOlhal-eCTzPJBI4MYlJclCSikQP1olesu3x96D1ySzmr7H9Pit6V1EeM_l9J2dDex9vDYhiGMbBn2DXf4A7e0XaOtBw5E80HGQ0GIwUXXNm5qI8n4Qbv4Sv_6K5PXpFn0O9vP7XPyVu57RvhnFmGN1E3XCq70luXWZF-bcENfsLE6Jx_hVN0vcS-1X1IMld1kxWuM2P52ObuTSKieUFrZ5mYm8SRm1s3JfAo_GbD7K4RBXx1piJnSCY7c43Xzf26xxWnwxFk5ccpBVEiZfnnBUk1wYrk9uYJe-g7O1J9QyiZPigeBRt4aqiMS4Lyb3xYL-4qmiEK54qyi8Cr0VkVVU0jJdWS3etA7ggugFwMZtZeLe6pLXV0U0a53HoEGNlZpeubJ66Xajjd-kclEeozFCGD-hREKdxEIZpkBysjnCAKkJjiFISkoqU1IdhFZV-QGCEw7g8YEfQh8iP_SRACKFkhoIsCaokC0mSxlVYgNCna8z4zJrTTKrlgXt_zFGMgjg64LigXG9eF6WOnM0VzVKD0OdMG93fZpjh7sVSNv0H0QmIPl1JjUF04h0_9-04B43iRy9_4Y3D_P8BAAD__2n1NP4">