<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/116357>116357</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`--test-bytecode-roundtrip` triggers Assertion Failure `succeeded(versionOr) && "expected reader to be able to access " "the version for test dialect"'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
xisang0
</td>
</tr>
</table>
<pre>
Test on commit: https://github.com/llvm/llvm-project/commit/6548b6354d1d990e1c98736f5e7c3de876bedc8e
steps to reproduce:
```
mlir-opt test.mlir --test-bytecode-roundtrip
```
test case:
```
module {
func.func @main() -> () {
return
}
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/mlir/test/lib/IR/TestBytecodeRoundtrip.cpp:170: auto (anonymous namespace)::TestBytecodeRoundtripPass::runTest0(Operation *)::(anonymous class)::operator()(DialectBytecodeReader &, StringRef, Type &) const: Assertion `succeeded(versionOr) && "expected reader to be able to access " "the version for test dialect"' 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 /home/workdir/test.mlir --gpu-async-region --test-bytecode-roundtrip
#0 0x000061f74ad4e3b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10723b8)
#1 0x000061f74ad4bede llvm::sys::RunSignalHandlers() (./mlir-opt+0x106fede)
#2 0x000061f74ad4edc8 SignalHandler(int) Signals.cpp:0:0
#3 0x00007e59e3e84520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007e59e3ed89fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007e59e3e84476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007e59e3e6a7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007e59e3e6a71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007e59e3e7be96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x000061f74de9a1c4 (./mlir-opt+0x41be1c4)
#10 0x000061f75006b681 (anonymous namespace)::AttrTypeReader::resolveType(unsigned long) BytecodeReader.cpp:0:0
#11 0x000061f75006a357 (anonymous namespace)::DialectReader::readType(mlir::Type&) BytecodeReader.cpp:0:0
#12 0x000061f74e0edeaf (anonymous namespace)::BuiltinDialectBytecodeInterface::readAttribute(mlir::DialectBytecodeReader&) const BuiltinDialectBytecode.cpp:0:0
#13 0x000061f75006af24 (anonymous namespace)::AttrTypeReader::resolveAttribute(unsigned long) BytecodeReader.cpp:0:0
#14 0x000061f75006a2b7 (anonymous namespace)::DialectReader::readAttribute(mlir::Attribute&) BytecodeReader.cpp:0:0
#15 0x000061f74b1dd5b1 llvm::LogicalResult mlir::DialectBytecodeReader::readAttribute<mlir::TypeAttr>(mlir::TypeAttr&) (./mlir-opt+0x15015b1)
#16 0x000061f74b3db1c7 mlir::func::FuncOp::readProperties(mlir::DialectBytecodeReader&, mlir::OperationState&) (./mlir-opt+0x16ff1c7)
#17 0x000061f750067c08 mlir::BytecodeReader::Impl::parseRegions(std::vector<mlir::BytecodeReader::Impl::RegionReadState, std::allocator<mlir::BytecodeReader::Impl::RegionReadState>>&, mlir::BytecodeReader::Impl::RegionReadState&) (./mlir-opt+0x638bc08)
#18 0x000061f75006361b mlir::BytecodeReader::Impl::parseIRSection(llvm::ArrayRef<unsigned char>, mlir::Block*) (./mlir-opt+0x638761b)
#19 0x000061f750060a7d mlir::BytecodeReader::Impl::read(mlir::Block*, llvm::function_ref<bool (mlir::Operation*)>) (./mlir-opt+0x6384a7d)
#20 0x000061f7500693fe readBytecodeFileImpl(llvm::MemoryBufferRef, mlir::Block*, mlir::ParserConfig const&, std::shared_ptr<llvm::SourceMgr> const&) BytecodeReader.cpp:0:0
#21 0x000061f75006928e mlir::readBytecodeFile(llvm::MemoryBufferRef, mlir::Block*, mlir::ParserConfig const&) (./mlir-opt+0x638d28e)
#22 0x000061f74dfc760f mlir::parseSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) (./mlir-opt+0x42eb60f)
#23 0x000061f74dfc7ca8 mlir::parseSourceString(llvm::StringRef, mlir::Block*, mlir::ParserConfig const&, llvm::StringRef, mlir::LocationAttr*) (./mlir-opt+0x42ebca8)
#24 0x000061f74de99c14 (anonymous namespace)::TestBytecodeRoundtripPass::doRoundtripWithConfigs(mlir::Operation*, mlir::BytecodeWriterConfig const&, mlir::ParserConfig const&) TestBytecodeRoundtrip.cpp:0:0
#25 0x000061f74de977a0 (anonymous namespace)::TestBytecodeRoundtripPass::runOnOperation() TestBytecodeRoundtrip.cpp:0:0
#26 0x000061f74dfca6df mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x42ee6df)
#27 0x000061f74dfcaec2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x42eeec2)
#28 0x000061f74dfcd66e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x42f166e)
#29 0x000061f74dfc6192 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#30 0x000061f74dfc5dfb 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&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#31 0x000061f74e06fae5 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) (./mlir-opt+0x4393ae5)
#32 0x000061f74dfc0ff2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x42e4ff2)
#33 0x000061f74dfc12a3 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x42e52a3)
#34 0x000061f74dfc14b2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x42e54b2)
#35 0x000061f74ad2d5d7 main (./mlir-opt+0x10515d7)
#36 0x00007e59e3e6bd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#37 0x00007e59e3e6be40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#38 0x000061f74ad2d145 _start (./mlir-opt+0x1051145)
Aborted (core dumped)
(base) root@4dc8d4e7462e:/home/workdir/llvm-project-19/build/bin# ./mlir-opt /home/workdir/test.mlir --gpu-async-region --test-bytecode-roundtrip
mlir-opt: /home/workdir/llvm-project-19/mlir/test/lib/IR/TestBytecodeRoundtrip.cpp:170: auto (anonymous namespace)::TestBytecodeRoundtripPass::runTest0(Operation *)::(anonymous class)::operator()(DialectBytecodeReader &, StringRef, Type &) const: Assertion `succeeded(versionOr) && "expected reader to be able to access " "the version for test dialect"' 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 /home/workdir/test.mlir --gpu-async-region --test-bytecode-roundtrip
#0 0x00005ae83b3473b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10723b8)
#1 0x00005ae83b344ede llvm::sys::RunSignalHandlers() (./mlir-opt+0x106fede)
#2 0x00005ae83b347dc8 SignalHandler(int) Signals.cpp:0:0
#3 0x000075e4f9970520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000075e4f99c49fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x000075e4f9970476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x000075e4f99567f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000075e4f995671b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x000075e4f9967e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00005ae83e4931c4 (./mlir-opt+0x41be1c4)
#10 0x00005ae840664681 (anonymous namespace)::AttrTypeReader::resolveType(unsigned long) BytecodeReader.cpp:0:0
#11 0x00005ae840663357 (anonymous namespace)::DialectReader::readType(mlir::Type&) BytecodeReader.cpp:0:0
#12 0x00005ae83e6e6eaf (anonymous namespace)::BuiltinDialectBytecodeInterface::readAttribute(mlir::DialectBytecodeReader&) const BuiltinDialectBytecode.cpp:0:0
#13 0x00005ae840663f24 (anonymous namespace)::AttrTypeReader::resolveAttribute(unsigned long) BytecodeReader.cpp:0:0
#14 0x00005ae8406632b7 (anonymous namespace)::DialectReader::readAttribute(mlir::Attribute&) BytecodeReader.cpp:0:0
#15 0x00005ae83b7d65b1 llvm::LogicalResult mlir::DialectBytecodeReader::readAttribute<mlir::TypeAttr>(mlir::TypeAttr&) (./mlir-opt+0x15015b1)
#16 0x00005ae83b9d41c7 mlir::func::FuncOp::readProperties(mlir::DialectBytecodeReader&, mlir::OperationState&) (./mlir-opt+0x16ff1c7)
#17 0x00005ae840660c08 mlir::BytecodeReader::Impl::parseRegions(std::vector<mlir::BytecodeReader::Impl::RegionReadState, std::allocator<mlir::BytecodeReader::Impl::RegionReadState>>&, mlir::BytecodeReader::Impl::RegionReadState&) (./mlir-opt+0x638bc08)
#18 0x00005ae84065c61b mlir::BytecodeReader::Impl::parseIRSection(llvm::ArrayRef<unsigned char>, mlir::Block*) (./mlir-opt+0x638761b)
#19 0x00005ae840659a7d mlir::BytecodeReader::Impl::read(mlir::Block*, llvm::function_ref<bool (mlir::Operation*)>) (./mlir-opt+0x6384a7d)
#20 0x00005ae8406623fe readBytecodeFileImpl(llvm::MemoryBufferRef, mlir::Block*, mlir::ParserConfig const&, std::shared_ptr<llvm::SourceMgr> const&) BytecodeReader.cpp:0:0
#21 0x00005ae84066228e mlir::readBytecodeFile(llvm::MemoryBufferRef, mlir::Block*, mlir::ParserConfig const&) (./mlir-opt+0x638d28e)
#22 0x00005ae83e5c060f mlir::parseSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) (./mlir-opt+0x42eb60f)
#23 0x00005ae83e5c0ca8 mlir::parseSourceString(llvm::StringRef, mlir::Block*, mlir::ParserConfig const&, llvm::StringRef, mlir::LocationAttr*) (./mlir-opt+0x42ebca8)
#24 0x00005ae83e492c14 (anonymous namespace)::TestBytecodeRoundtripPass::doRoundtripWithConfigs(mlir::Operation*, mlir::BytecodeWriterConfig const&, mlir::ParserConfig const&) TestBytecodeRoundtrip.cpp:0:0
#25 0x00005ae83e4907a0 (anonymous namespace)::TestBytecodeRoundtripPass::runOnOperation() TestBytecodeRoundtrip.cpp:0:0
#26 0x00005ae83e5c36df mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x42ee6df)
#27 0x00005ae83e5c3ec2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x42eeec2)
#28 0x00005ae83e5c666e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x42f166e)
#29 0x00005ae83e5bf192 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#30 0x00005ae83e5bedfb 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&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#31 0x00005ae83e668ae5 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) (./mlir-opt+0x4393ae5)
#32 0x00005ae83e5b9ff2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x42e4ff2)
#33 0x00005ae83e5ba2a3 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x42e52a3)
#34 0x00005ae83e5ba4b2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x42e54b2)
#35 0x00005ae83b3265d7 main (./mlir-opt+0x10515d7)
#36 0x000075e4f9957d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#37 0x000075e4f9957e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#38 0x00005ae83b326145 _start (./mlir-opt+0x1051145)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW19P47gW_zThxQI5juMkDzx0mKku0owGwUj7WDn2SfEljXttZxa-_ZXzpyShpZSBnYFltUzTJD7-nX8-x_6p3Fq1rABOg_hTEH8-4rW71ub0VlleLfFRruXd6Q-wDukKCb1aKRdEM3Tt3NoG0Swg84DMl8pd1_mJ0KuAzMvyZ_9xvDb6vyBcQObdUDJnMU1zFsVUhjLLMIQiS5OIFTEkIpKQJiwHKVII8OcAz6yDtUVOIwNro2UtwE_aPAoY7v5vvq5KZY712iEH1p34b-j42F8f53cOhJZwbHRdSWfUeqsA_y4S3O6eQcu6BBQkn9rvqKgrceL_QQHFK66qgKQBydBxEH1B3fX92wghA642Vf89SD5382wuxhMKw-01cobv19r7JCDza72CgMz_1uZGKjPxwnGYBWTuRwRk7rX1z1UekPn5ZUDm3smfOlNd9pY6Eet1EM3CBPsZeO20V4xXurpb6dqiiq_Arj1AknmM0WyrmAtubfvY1JV_Awck_b4Gw53SFQrIbDN-JF6UfmD_SDcDtGlNG5D0s-IliPvpgEswKCAsIGfoyhlVLS-h8F9-3K2hfZAhoSvbGGxmLZgWAMO2FgJAggxI-hOMVbr6bhoP-lEMBYTA7RqEA4lMO5HTKAfE8xL8JRcCrPXv-T93DagTgwptmqhEssUbEBKQBBVclSBPWkdefP0yu_qCbJ2vlEMc5fXSx7w2zss-ON2UtTXYgMwRryRSlShrCciDaoMq5-KmCaxu-ivHxQ2S9Wq9iTR8gpr_LoxeGr5C3CzrFVTO40AnXSQ1Gbct8IZZuFzXx9zeVeLYwNIbZE9iooBEGOFbjDFmYZFQLilEeYoaXZtQsHddPF0YVbkG_Y8mT0h6_5Lhfy-0dQb4qosJVbnWpelQgYB8wrchTkiUN4G1ARFOQOQgYRuIy7q6UsuKl__hlSzB2D75t87DCpAwmodMlZUiRSOJAUk77O1t2yUmbv42gqJOUAJxBhGkNCa4XYm6TL9N2YLR41JV9e3xsqrbB-LE6hPWwKMkJngEjo5lyjQrBFq7a58EixtVlodNkLGsEKMJ4ilomjC0tI2eh4KnCRvJZmPZjCdFhHju0-ogySRNimgkOXkgOcwPlhnmI5npWGaSQ8YOkxllkI0tkA1jS0LGQ0G3BiYNcwgF3Qz28T_MwhhjlrM03FcAZs4Zv9y2q3GXiWB1-RP87YCkddW0HBKVulr6mB4v4A9D20MJJ1B4FCf7oHT1YYyEyw5GUwnbmtXcYE-FMkpXwCCBF_ugfKpV6VQ1qVjnlQNTdPW9BefNp_LajRFurXTDeoa2T7BdgWhqy4LQX3DrEPKzfEuneEj-XN9uN9_g7pO9HA-9nIdSxnk4WPy_6qUSvLwEW5cO7fPUFnzR2TgA_ZMg-vIgMJv7Leyt9STGYZyHo7RlI-iRzEORDCD6lrW9mteV-L6-R3dhfI_llG8dnhR9ZwOxm37uyvGNpbdCZkURimQEOZmEQCJwOpC9zZznq3XZXq25sXDZ9BYeuHWyvf8ThG8Xh5Z-XFArwz_rdDhDG2G8LLXgvyYv-tJ4eGK4AzHttCuL0lzgdGTXdGLXiIX5YXY9v7wC4d066q1mxvA731xHZ5uUF9e8jeCRcqUWN22Dvwt0wgZ10IPOJqAxT-STQfs4HkXvPYKzQf76JPBaLUyjRK5102xsCed-d_LlERUoT-RQBTKtnFlUQLNv6MHPVQkN6KFVv8FKm7tPdVGA6XYu2_W4v3vhfWTOdFWoZbe1aeNrE7j2mhuQi7VfXs7u57rStRHwbeldNhj4pMWRTKtxRlIYgJoq-kpK7nSHJCmM3DEq2bIQCcPFQH4T6K1BHsDd2Glk3We75f6Vr345UbpqF_idCUIJ5AwXI3WiqTqCp9vVaXfBY4WGG-Nn67FX3gHqCT5atAid9KyZCPf2J3vOHaTe3PxLuetWIftIwm9boP8yyu1x6s5Ifex4ZZJc8UT9JOH4149dvlcDBdMDIbFJwHEmh_kjwXFV9mb8ob83U88kXzf1skMwsnaDbWro3S6YVby8s8p-4xVf-ubjDPkl239u6s8ju3tKAJgcJ1Ey1QkEOVinC7WGUlUwiST_6gbqrj7p-UqOI87a88o605zOaLMlhYcvtDO3DzrsF9xA5c6rQvcR-1i2AggysmM6saNkDCbT9wptjYRJod0xbxEyNl7Ts8m8LMwIWoMptFnNmtpu9xwHPbNEDo377ev55ZmuHNy6B4b_Virzfe2-cVVtWRAGT7fm3PgITBYilkW-cwOys7HZNWDYJ9eV-l8ND9QfFuqRuSQUvC7dQkIJzU5mx5iu3R0Wi6kTmr6qeSJ4WeZc3CyKatRhD-z0VHe-uj4Ptka-SbfO3D2Mj8dioD_xpgvc7vzaTfM_qckjntkfoeH4IIQVHOKB7nZdKjer_K5SgLU93N8Sd28wKx59Y2cDtvX2jkU1yiIO8XBRjaaNMi4Ksj2c31sy7qp3tChG9S6aNt8h4dFOE3Xlutka-_owO9R1-_TbiTsmPBrhplPcNN_t2kNwPxcgzceGjcc0CJGxTNCKq2oHkRKHsRydIj047s9ldiD_QTKZ4ZHM6UF_DhSjxcIPW1jHjVv0EA-ZBeh4lnSqe0hj1MrfqX1I73N3lmvjQPp3hTbQUHkwPJJIc259_4SM1i6gmEqRSgoJZaQ5fX4SeZzXqpT-08dI9Los4Ae1_UFtv2tqO-aQRnlEk99Jbfcg6CtT2xtlf5najoEWWZbgl6S2W5mCvhq13YN-DWq7lR2zl6e2N5JfkNpuZbLkBantJraAZtFzqG0_mGLG6O-ntnso0e-ntluTMmBvldre2PIPobY3eP4kartdlBPJ3h613ULPJH071HYfAviD2n5RaruzayzeErXdg87eLrXdxzN5n9T2Rr03Qm23JTsW-H1Q2xt13ie13fes5N9Jbffq4z-H2u4DLnpH1PZGpw9q-5eo7d6O7B-mtrt58-KdUtu9fvBBbb8zNq0_8X7r1HZ3EMLSD2r7vVDb_aKTfVDbu6jt3kT8jVHbG9x_KrXd0SCEPZ_a7g7lk5ektnuZr0ptb3R_YWq7_0X0kTyNZBZl_AhOwyQKGQvThBxdn4YijqMwzgiJcUYjHgGmBS1ymmIJaUyO1CnBhIZhGOMsDENyEuO8KHgh0jCEAgsIKIYVV-WJD5MTbZZHDQt5GoYsipOjkudQ2uYX9IS0LDQJ4s9H5rThLvN6aQOKS2WdvZfglCubX937PiuIPwcM7yYPGUbOqOUSjB1wu3OuytrAb-F4j2pTnj6fvO0s9_OU_D8AAP__g0Gc7w">