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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]converting vector to spirv crashed with assertion failure `isa<To>(Val) && "cast<Ty>() argument of incompatible type!
        </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>
    Test on [llvm16](https://github.com/llvm/llvm-project/tree/release/16.x)
steps to reproduceļ¼š
```
mlir-opt test.mlir  -convert-vector-to-spirv
```
test case:
```
func.func @entry() {
  %c0 = arith.constant dense<[0, 1, 2, 3]>: vector<4xindex>
  %v1 = vector.broadcast %c0 : vector<4xindex> to vector<2x4xindex>
  vector.print %v1 : vector<2x4xindex>
  return
}
```
crash trace:
```
mlir-opt: /home/ty/llvm16/llvm/include/llvm/Support/Casting.h:567: decltype(auto) llvm::cast(const From &) [To = mlir::spirv::ScalarType, From = mlir::Type]: 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: mlir-opt test.mlir -convert-vector-to-spirv
 #0 0x0000000000481d7d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/ty/llvm16/llvm/lib/Support/Unix/Signals.inc:567:11
 #1 0x000000000048220b PrintStackTraceSignalHandler(void*) /home/ty/llvm16/llvm/lib/Support/Unix/Signals.inc:641:1
 #2 0x00000000004805a6 llvm::sys::RunSignalHandlers() /home/ty/llvm16/llvm/lib/Support/Signals.cpp:104:5
 #3 0x0000000000482935 SignalHandler(int) /home/ty/llvm16/llvm/lib/Support/Unix/Signals.inc:412:1
 #4 0x00007fc646d01980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fc645bf1e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fc645bf37f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007fc645be33fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007fc645be3472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x00000000026dc858 decltype(auto) llvm::cast<mlir::spirv::ScalarType, mlir::Type>(mlir::Type const&) /home/ty/llvm16/llvm/include/llvm/Support/Casting.h:568:43
#10 0x00000000026d9d65 mlir::spirv::ScalarType mlir::Type::cast<mlir::spirv::ScalarType>() const /home/ty/llvm16/mlir/include/mlir/IR/Types.h:281:10
#11 0x0000000003e63854 convertVectorType(mlir::spirv::TargetEnv const&, mlir::SPIRVConversionOptions const&, mlir::VectorType, std::optional<mlir::spirv::StorageClass>) /home/ty/llvm16/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp:250:43
#12 0x0000000003e63805 mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4::operator()(mlir::VectorType) const /home/ty/llvm16/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp:477:12
#13 0x0000000003e636e3 std::enable_if<std::is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4, mlir::VectorType>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::VectorType, mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4&&)::'lambda'(mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)::operator()(mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>) const /home/ty/llvm16/mlir/include/mlir/Transforms/DialectConversion.h:255:47
#14 0x0000000003e63659 std::enable_if<std::is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4, mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::VectorType, std::enable_if<std::is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4, mlir::VectorType>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::VectorType, mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4&&)::'lambda'(mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4&&)::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)::operator()(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>) const /home/ty/llvm16/mlir/include/mlir/Transforms/DialectConversion.h:0:14
#15 0x0000000003e634a6 std::_Function_handler<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>), std::enable_if<std::is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4, mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::VectorType, std::enable_if<std::is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4, mlir::VectorType>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::VectorType, mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4&&)::'lambda'(mlir::VectorType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::$_4&&)::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>&&) /usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/std_function.h:301:9
#16 0x0000000003b25c66 std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>::operator()(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>) const /usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/std_function.h:706:14
#17 0x0000000003b01298 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:2965:38
#18 0x0000000003b00c49 mlir::detail::ConversionPatternRewriterImpl::remapValues(llvm::StringRef, std::optional<mlir::Location>, mlir::PatternRewriter&, mlir::ValueRange, llvm::SmallVectorImpl<mlir::Value>&) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:1274:40
#19 0x0000000003b05045 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:1701:27
#20 0x0000000004a54ee0 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/ty/llvm16/mlir/lib/Rewrite/PatternApplicator.cpp:200:25
#21 0x0000000003b10ec0 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:1987:21
#22 0x0000000003b105db (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:1895:17
#23 0x0000000003b0fb1f (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:2406:26
#24 0x0000000003b073ab (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:2455:16
#25 0x0000000003b07077 mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:3360:22
#26 0x0000000003b075ee mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) /home/ty/llvm16/mlir/lib/Transforms/Utils/DialectConversion.cpp:3366:10
#27 0x000000000323ec9c (anonymous namespace)::ConvertVectorToSPIRVPass::runOnOperation() /home/ty/llvm16/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRVPass.cpp:59:14
#28 0x0000000003a697a7 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/ty/llvm16/mlir/lib/Pass/Pass.cpp:471:21
#29 0x0000000003a69dbd mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/ty/llvm16/mlir/lib/Pass/Pass.cpp:534:16
#30 0x0000000003a6b6fc mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/ty/llvm16/mlir/lib/Pass/Pass.cpp:839:10
#31 0x0000000003a6b621 mlir::PassManager::run(mlir::Operation*) /home/ty/llvm16/mlir/lib/Pass/Pass.cpp:819:60
#32 0x0000000003a61f82 performActions(llvm::raw_ostream&, bool, bool, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:91:17
#33 0x0000000003a61bdf processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:139:12
#34 0x0000000003a61998 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, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:181:12
#35 0x0000000003a6188d 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, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) /home/ty/llvm16/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#36 0x0000000003b93ae9 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/ty/llvm16/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#37 0x0000000003b930c5 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/ty/llvm16/mlir/lib/Support/ToolUtilities.cpp:28:12
#38 0x0000000003a608c3 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, bool, bool) /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:186:10
#39 0x0000000003a60a5f 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, bool, bool, bool) /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:209:10
#40 0x0000000003a616a1 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /home/ty/llvm16/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:306:14
#41 0x00000000004116d9 main /home/ty/llvm16/mlir/tools/mlir-opt/mlir-opt.cpp:271:7
#42 0x00007fc645bd4c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#43 0x00000000004113ba _start (/home/ty/llvm16/llvm/mlir/build/bin/mlir-opt+0x4113ba)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtP47q3_zTmxaJK7FwfeCiF6swRaBCw50j_l8pJ3NZnp3aO7TB0f_ojO_e0hZYNGmbEaETbxFle67euvoUoxVac0gvgXwL_6oyUei3kxSUl-X9osd7Ks0Rk24tHqjQUHAL_Ms-fNm4A_CuAorXWhQJ4CtAcoPmK6XWZTFKxAWhumtUf54UU_0tTDdBcS0oBmkuaU6LMNzeYPAMUA-cKOFOlaaGgFlDSQoqsTCm4noPLGYinVQMQOPV_-3OTM3kuCg01VXpifkF4ngr-RKU-f6KpFvJci3NVMPm0l4B5DqaGE7y_h2XJ04n5A4HnUK7lFqAIoBiC8LJqASFAfupAgK8gkUyvJ6ngShOuYUa5oTwD_qUD0Ay65g8yf7CBD18DPIUVmwDPvGfGM_psLneEn1xLuGo0SaQgWUqUbvvc-7xBsL2MnncJ1-QKybhue5m-_IykupS8Bim82otWKolaQy1JehDQRmWmP4Dma7ExVqC3tam4QWc6jKd5mdHuwkNZFEIaM5oRpRlfTdYAT_0gNMQymuZ6W1CAIlJqYXRkH8NTgKcGM4Aiqxk4l2IDAQqsGv3LR2EhNoxVjStzsV8fUpIT-WjJzuoHB23tLaPLKZwqRaVmxkkChykC8OxRGABR9IPktjPTZwABQpYfPHvcVvfNTSJX5YZyDcUSMp6KTUE0S3IKK6FcgBBAIVwSltNsUoF5d3M9fbiGqkw2TEMCk3JlXEdIbUzgZOdkSpVUATSHhGewhh_qNYWVYhOS_m2VW3f_oEn6N8zKTdFq25lA--9OipUkm1Yqwwfc464veysECDvQeXbaf17kZmHW06zaqurLnTFmy9GjtT8UdY0k-bkQSktKNlYHM8i4rjTyogXmLBmY3V-cPZsLbMVJriaMp639uW7HsjtiGSEngSP-Khr_RXiWUwlQ9CRYBtD0vZgKPNcw1fGERjw5Pgn2wXhf8gFrqol3pzHVcJMWxjZcxzNAddzgMUIx9uEYknfUkeeiIRxezUC4TAMvyBw3jhy4WEiqtJB0IU1YjFrqz1GwCLzznPHy-XzFy-pGodeSkmyixMQB6NJ5dlEcOW0yM934_W78ZOnSKISSMEWNWEnJ8sy4Zs6S9Hz2479__idpf6IJCgGaKysHQPPJxPzaqowWxkXLSky1VU-WG16an5b0xFql0b_TcRKMOMHh0oUkEVbS4zjRWYWGfcp2Eo06CYedUIyXBC4WxEbGhQldi4QcL3v1XPul6jIedhmNu_RCdITuUqO1wGoNO16IBlqL-9aJgiyN_OiI_IJnR-SQUeqw4X94Ddos1eSnd0qRkXECXGdkhF1nJGKcBf5rKXCH9xMkb9NclYIPiWXJ9MWqL3y7B2huCCkrD7KG5zqdPIOQi2mAI9-DdW75YVNLpYBoL6OPRK6ovuZPPez7qnq4-3b_Y2apKSb498KkeXWgcb-7GVQ6qy4L-xDJD4KlhSQrOsuJUhauw8qvQans-4qRvErflkuDkyRcLYXcqOZix3odkJHvjAwC7QDo-GMEjEwVKU0PX38N46nW8kR446odQN7Ca9Ckkphi1VrVoM8-_kfa279A0gtt9kcdkniMZEBxZwaUkySnC7YEeNZeZGrB-JNI7a2ngYV8IuAPWbkx1p6hm9GSodMXcK_x34gVS0l-T1WZazNs2QmFhm4XZB82JM-rfr9tiiGtlpFg-MxUSrK9p8v9jWM7BruururdEDfC_KckxYzkuamDBwSHLv8plTdKNJ-IMzso6l0Lc7JJMgJMCXDArT_cKk4IMR_MyxsT5iBy1YGtF7tsEvV9G7-6yOXtRC4__qMj18cq7ysuHiiF_kBL-tL1Vw78w3Lg7w7W5ygVfvMiwQwTXa8rEfxxieCRoAt7i3kd9xbrehbvd4h_f3hq-ipyvoqcryLnq8j55Zx9FTm_bZFTe87i1oavvylAUZf0p3y7yIgmB-bDKxaDnU7fn9GgWzQpVTevu0rT_etA4cSfOM3S2uhPVyylAF3a_237hGlVLYgtmhhoiyXsuABP465aCgbVUoL8NAh-4_j5uUrdX6Li0AlGFXE41LHjojh6ObvUy1I7C1Jvx-_IpaJBvf-XZvn-ur9eIooD39h01IkajUR1Ui_uiZpRTVhefe_I3RGtqeT39KdkmtZymCaSbkjxg-R2y0lvs8aDloyvjAW8unx2I1JSedD1MOaMOt1dozPd3hO-OgFw-8xHIu6i0AN46vWWNeMR4r7j9VfldlCuLm-ITtdTntXiD4zsu_Vfgxmavo7ZSetnpwkb2mCJuulnNFiT9ojvUers8jctipylNgS9s7B9Q2icfiFtJEqEyIdRtyYwTN_XLxJ5Eiz710QOZIXj6B5ptS2U8x3Mm-DgOHYFoVPecAE-cR2aOoYpwgXfbkSpICcbqgq7NSseqeeGrkjO_mkCZF7__B-m141hH6fWg2Hn45w2jkIDhdtBgcZQ-Fnyb6H4vPJHsW_duZMfj4LWMnGXR8u_P1cOxH9ZyD4cQ6A-JEt6tiBAQSe-NxI_xOR49e8Xv709zJR7S6WBzCdHpCtGVlwozdLTw8aJwNnlR7cHnD8GzgnDnjJJUeTbOyI1I3lH7k2A7LOlauS2Y0JzKf6hjYXV9vZA9WCs0zFwRbmiD1QfZmC3-S0pvvGlePERuzu0nm37IEvGOLAxvdvJgoKxQnxKj1HIaZHqC_ggGO5mQ8MxBcI0jdPXQshssNlN2NmGO7uXzBbbJf_Oe8K9uKd3IEtfs_MB9fFv01stkx8PR0loOHQgQRyS8MDQ4XvxKL4Xhtg0I0Vb58mSj2ocpXas6rC9TTnJt4qpW8LJitqpGVPUmc-S2yMw2WubwgewVN3PezJ7oTsqBOKx0FmSnSz0HStozvi4AjBNW1leTHtvQmFYKyv1jSst7U5-M_TfKab7DeoRmb1R835HJOXaOFvjvsf70i7QPvaGmWN4RgCTIAmW6Yi_RuIWVqKUHXi-CbY38x7heOjrw8MClnfkvsL7C1y_nTHXMBb0GEMjxtxlhGBBpYlr03S3Gtk9ZNGYVvPZDubVmkiaLQotAZ71Rt-ilCm9XUmArw9MJt7efLufCa7ps94J6m8bKQ3dqBl_DVk_NuwLYSP9pjnjhOa3OZPfC31LWBPuY3dYLg_PQhick2wJCylSqtRluVzayeaXYG5hLTn7v5LuwHpLN0JuG1K99hldkjLXi4zmVNPDz7TLfGOFvvb5MboZVKsmpd7TFVP2aN6oKni0BzTuLDcnZO9j1OhWjtxVS9gb6zEeTAT2SHwaff4a_ZxqRbUPViQB8hbOganoXwHcWH2nzZgdZWnVYYeepfljS4uifl0xVNlbdPwpgGyXHNJ6JXax5AO2vzzqPT3q2mAo-OpX4bXrSKeefZpePQI0f3i8aXYhkfz6WUtSnRny_JEXjUa3MSY0_gO85beMim9TqT3V1ldpOFapkw5PteVMT3l2NyquPnd4-BT6e7XFG0vm7ryiyYV_aZYzzWgzKEFjBY-nEZwoxV811vtlhHctW0azWng8HeIQf_nJlTdURDOdMbu5I1JReWCM-p4a-QjNIGc0B-GN50_cgLgHNVPPD6VrUs0EjUbhg-X740B5T-HweIOGN3obg-sGWQw3hPHXetW7_TVfGyTtlF83lvfQ8DR65qVRCBeLnCXpQmki9aLp-Jjz76kqm70q1Vd709KxZ-Gx53WH4U33eCwqTgisOq7PxL-UfWuxG84So-2e8JfOc0WxPSs_TYTU1K4gpUJS-yYQmrW32ze_nGUXOItxTM7ohRuEEY6C0EVn6wvqYy_F2HfDLPUd4sVuFmA3IB4NsOtgcsYukIOwg53YjbDro8nSp7HrRnHoO4mDvAx4Dt0Qlk-MDBMhV2f2JSYXgYud4CwnCc2VfbURQpz-hPYmQAj4V2fywjxznpQrBTwnZ0qrjopmOrfvRLq9-XYP_Kt6IY7xVf2WHKgFtPv-qnej0Az-ZHoNSfsSmCVheSnpx7wM5qyU-cXb3-9i0fn_AAAA___JrcjE">