<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58869>58869</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
use def analysis crashed with "Cannot destroy a value that still has uses!"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Colloportus0
</td>
</tr>
</table>
<pre>
mlir-opt built at commit https://github.com/llvm/llvm-project/commit/d35fcf0e
Reproduced with:
` mlir-opt --linalg-detensorize temp.mlir`
temp.mlir:
```console
module {
func.func @main() {
%88 = linalg.generic {indexing_maps = [affine_map<(d0, d1) -> (d0, d1)>, affine_map<(d0, d1) -> (d0, d1)>], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor<4x4xi32>) outs(%69 : tensor<4x4xi32>) {
%684 = arith.andi %683, %out : i32
linalg.yield %684 : i32
} -> tensor<4x4xi32>
return
}
}
```
crash trace:
```
temp.mlir:14:7: error: definition of SSA value '%683#0' has type 'i1'
%683 = arith.cmpi sge, %out, %out : i32
^
temp.mlir:4:25: note: previously used here with type 'i32'
%684 = arith.andi %683, %out : i32
^
Assertion failed: (use_empty() && "Cannot destroy a value that still has uses!"), function ~IRObjectWithUseList, file UseDefLists.h, line 175.
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 --linalg-detensorize temp.mlir
1. MLIR Parser: custom op parser 'builtin.module'
2. MLIR Parser: custom op parser 'func.func'
3. MLIR Parser: custom op parser 'linalg.generic'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 mlir-opt 0x000000010324c47c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1 mlir-opt 0x000000010324c998 PrintStackTraceSignalHandler(void*) + 28
2 mlir-opt 0x000000010324aaa8 llvm::sys::RunSignalHandlers() + 148
3 mlir-opt 0x000000010324e268 SignalHandler(int) + 252
4 libsystem_platform.dylib 0x0000000189f354c4 _sigtramp + 56
5 libsystem_pthread.dylib 0x0000000189f1dee0 pthread_kill + 288
6 libsystem_c.dylib 0x0000000189e58340 abort + 168
7 libsystem_c.dylib 0x0000000189e57754 err + 0
8 mlir-opt 0x0000000106fd62c4 mlir::IRObjectWithUseList<mlir::OpOperand>::~IRObjectWithUseList() + 100
9 mlir-opt 0x0000000106fd6250 mlir::detail::ValueImpl::~ValueImpl() + 28
10 mlir-opt 0x0000000106fd6224 mlir::detail::BlockArgumentImpl::~BlockArgumentImpl() + 28
11 mlir-opt 0x0000000106fd61f8 mlir::detail::BlockArgumentImpl::~BlockArgumentImpl() + 28
12 mlir-opt 0x0000000106fd35d8 mlir::BlockArgument::destroy() + 44
13 mlir-opt 0x0000000106fd32d8 mlir::Block::~Block() + 200
14 mlir-opt 0x0000000106fd36fc mlir::Block::~Block() + 28
15 mlir-opt 0x0000000107c367fc std::__1::default_delete<mlir::Block>::operator()(mlir::Block*) const + 44
16 mlir-opt 0x0000000107c36354 std::__1::unique_ptr<mlir::Block, std::__1::default_delete<mlir::Block>>::reset(mlir::Block*) + 96
17 mlir-opt 0x0000000107c3856c std::__1::unique_ptr<mlir::Block, std::__1::default_delete<mlir::Block>>::~unique_ptr() + 32
18 mlir-opt 0x0000000107c3539c std::__1::unique_ptr<mlir::Block, std::__1::default_delete<mlir::Block>>::~unique_ptr() + 28
19 mlir-opt 0x0000000107c34950 (anonymous namespace)::OperationParser::parseRegionBody(mlir::Region&, llvm::SMLoc, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 1712
20 mlir-opt 0x0000000107c2f988 (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 328
21 mlir-opt 0x0000000107c2c5a0 (anonymous namespace)::CustomOpAsmParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 184
22 mlir-opt 0x0000000103bcd33c mlir::linalg::GenericOp::parse(mlir::OpAsmParser&, mlir::OperationState&) + 756
23 mlir-opt 0x00000001048b25a0 mlir::ParseResult llvm::detail::UniqueFunctionBase<mlir::ParseResult, mlir::OpAsmParser&, mlir::OperationState&>::CallImpl<mlir::ParseResult (* const)(mlir::OpAsmParser&, mlir::OperationState&)>(void*, mlir::OpAsmParser&, mlir::OperationState&) + 80
24 mlir-opt 0x00000001071b0bd4 llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 68
25 mlir-opt 0x0000000107c284dc mlir::ParseResult llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::callback_fn<llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const> const>(long, mlir::OpAsmParser&, mlir::OperationState&) + 68
26 mlir-opt 0x00000001071d8b00 llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 84
27 mlir-opt 0x0000000107c27a34 (anonymous namespace)::CustomOpAsmParser::parseOperation(mlir::OperationState&) + 60
28 mlir-opt 0x0000000107c25cf0 (anonymous namespace)::OperationParser::parseCustomOperation(llvm::ArrayRef<std::__1::tuple<llvm::StringRef, unsigned int, llvm::SMLoc>>) + 1140
29 mlir-opt 0x0000000107c2026c (anonymous namespace)::OperationParser::parseOperation() + 460
30 mlir-opt 0x0000000107c36188 (anonymous namespace)::OperationParser::parseBlockBody(mlir::Block*) + 80
31 mlir-opt 0x0000000107c34c74 (anonymous namespace)::OperationParser::parseBlock(mlir::Block*&) + 116
32 mlir-opt 0x0000000107c3472c (anonymous namespace)::OperationParser::parseRegionBody(mlir::Region&, llvm::SMLoc, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 1164
33 mlir-opt 0x0000000107c2f988 (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 328
34 mlir-opt 0x0000000107c2c5a0 (anonymous namespace)::CustomOpAsmParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 184
35 mlir-opt 0x0000000107c2c694 (anonymous namespace)::CustomOpAsmParser::parseOptionalRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 132
36 mlir-opt 0x0000000107190e34 mlir::function_interface_impl::parseFunctionOp(mlir::OpAsmParser&, mlir::OperationState&, bool, llvm::function_ref<mlir::Type (mlir::Builder&, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>, mlir::function_interface_impl::VariadicFlag, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>) + 1808
37 mlir-opt 0x00000001039f3544 mlir::func::FuncOp::parse(mlir::OpAsmParser&, mlir::OperationState&) + 84
38 mlir-opt 0x00000001048b25a0 mlir::ParseResult llvm::detail::UniqueFunctionBase<mlir::ParseResult, mlir::OpAsmParser&, mlir::OperationState&>::CallImpl<mlir::ParseResult (* const)(mlir::OpAsmParser&, mlir::OperationState&)>(void*, mlir::OpAsmParser&, mlir::OperationState&) + 80
39 mlir-opt 0x00000001071b0bd4 llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 68
40 mlir-opt 0x0000000107c284dc mlir::ParseResult llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::callback_fn<llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const> const>(long, mlir::OpAsmParser&, mlir::OperationState&) + 68
41 mlir-opt 0x00000001071d8b00 llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 84
42 mlir-opt 0x0000000107c27a34 (anonymous namespace)::CustomOpAsmParser::parseOperation(mlir::OperationState&) + 60
43 mlir-opt 0x0000000107c25cf0 (anonymous namespace)::OperationParser::parseCustomOperation(llvm::ArrayRef<std::__1::tuple<llvm::StringRef, unsigned int, llvm::SMLoc>>) + 1140
44 mlir-opt 0x0000000107c2026c (anonymous namespace)::OperationParser::parseOperation() + 460
45 mlir-opt 0x0000000107c36188 (anonymous namespace)::OperationParser::parseBlockBody(mlir::Block*) + 80
46 mlir-opt 0x0000000107c34c74 (anonymous namespace)::OperationParser::parseBlock(mlir::Block*&) + 116
47 mlir-opt 0x0000000107c3472c (anonymous namespace)::OperationParser::parseRegionBody(mlir::Region&, llvm::SMLoc, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 1164
48 mlir-opt 0x0000000107c2f988 (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 328
49 mlir-opt 0x0000000107c2c5a0 (anonymous namespace)::CustomOpAsmParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) + 184
50 mlir-opt 0x00000001070cdc7c mlir::ModuleOp::parse(mlir::OpAsmParser&, mlir::OperationState&) + 284
51 mlir-opt 0x00000001048b25a0 mlir::ParseResult llvm::detail::UniqueFunctionBase<mlir::ParseResult, mlir::OpAsmParser&, mlir::OperationState&>::CallImpl<mlir::ParseResult (* const)(mlir::OpAsmParser&, mlir::OperationState&)>(void*, mlir::OpAsmParser&, mlir::OperationState&) + 80
52 mlir-opt 0x00000001071b0bd4 llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 68
53 mlir-opt 0x0000000107c284dc mlir::ParseResult llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::callback_fn<llvm::unique_function<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&) const> const>(long, mlir::OpAsmParser&, mlir::OperationState&) + 68
54 mlir-opt 0x00000001071d8b00 llvm::function_ref<mlir::ParseResult (mlir::OpAsmParser&, mlir::OperationState&)>::operator()(mlir::OpAsmParser&, mlir::OperationState&) const + 84
55 mlir-opt 0x0000000107c27a34 (anonymous namespace)::CustomOpAsmParser::parseOperation(mlir::OperationState&) + 60
56 mlir-opt 0x0000000107c25cf0 (anonymous namespace)::OperationParser::parseCustomOperation(llvm::ArrayRef<std::__1::tuple<llvm::StringRef, unsigned int, llvm::SMLoc>>) + 1140
57 mlir-opt 0x0000000107c2026c (anonymous namespace)::OperationParser::parseOperation() + 460
58 mlir-opt 0x0000000107c1e800 (anonymous namespace)::TopLevelOperationParser::parse(mlir::Block*, mlir::Location) + 220
59 mlir-opt 0x0000000107c1e694 mlir::parseAsmSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::AsmParserState*, mlir::AsmParserCodeCompleteContext*) + 256
60 mlir-opt 0x0000000106d6e51c mlir::parseSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) + 252
61 mlir-opt 0x0000000106d65270 mlir::OwningOpRef<mlir::ModuleOp> mlir::detail::parseSourceFile<mlir::ModuleOp, llvm::SourceMgr const&>(mlir::ParserConfig const&, llvm::SourceMgr const&) + 76
62 mlir-opt 0x0000000106d65170 mlir::OwningOpRef<mlir::ModuleOp> mlir::parseSourceFile<mlir::ModuleOp>(llvm::SourceMgr const&, mlir::ParserConfig const&) + 40
63 mlir-opt 0x0000000106d63f98 mlir::parseSourceFileForTool(llvm::SourceMgr&, mlir::ParserConfig const&, bool) + 72
64 mlir-opt 0x0000000106d60b10 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 260
65 mlir-opt 0x0000000106d607d0 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
66 mlir-opt 0x0000000106d60598 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
67 mlir-opt 0x0000000106d604ac mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 80
68 mlir-opt 0x0000000106f5e05c llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
69 mlir-opt 0x0000000106f5db40 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 128
70 mlir-opt 0x0000000106d5df04 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 320
71 mlir-opt 0x0000000106d5e10c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
72 mlir-opt 0x0000000106d5ecb8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2888
73 mlir-opt 0x0000000102a85020 main + 148
74 dyld 0x0000000120139088 start + 516
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztXFlT4zoW_jXhRdWULa954CEEem5XQUFB356aeUkpthw017E8sk135tfP0eItC6ihoWluU6mQ2NLR2c93ZMdLnm5O1jkTH3hZo2XD8hqRGiV8vWY1uqvrspp4swn-CK8Vq--a5TGcgy95ft_--1AK_h-a1PBVz4MPqRdkSebQiXM2cWb6_YbCwLRJaIq-AilJV58NHdSx8OFDzgqSrz6ktKZFxQX7H0U1XZfHcogcOiTZn_BmqKOmXwmH6bnhYA0L5xRNolP9HaGsKZJj-YYmvrMmrJjgeIKnwyEITXAQx2jinSHN1fGKFlSwRI5iRUq_sWK1WJOyUmMmwSnJMlZQeWjizYFi6kzwHKWupPxh4p2j8TE4Ij8_YVZwJr-ymgpSc7GoNyXtmJhgXBJB8pzm8FGO2zoCk6MzxIpKyRy4IDXoT-sbOPC_-d-YhxVzU8Sb2owLHxw3UpxSXRj7iiUiwNzHpEiZPupplgKgrAhKGoOZRtUbRvO0J7M1TAqgVLOPm26UoHUjiu47TDJO0n1ovWXoVYkg1R2qBUno0EmHA4eO5_rwFkkOqRBcuWJKwaCsZrxAPEO3tzN0T_IG_A9HrQY8sGeE7kiFpO3kGebK09sq9AYqTNYlQ9WK9vp7WJOT4HyXXcktDuTogtdSQFQKes94U-Ub1FQQnXdUUBWiPWtAdw9vTzLv7l_H5qyqqFBaywjLaaqiGsfA1AIEqDdtiOIQXtKp56QAIUDdVS34BhGj5voOclhVszxXCob54MGuioWpZE6GvVpmEp1_urlayuz1TxDiz4pesEopNYP1EXw_o5k8VB3fyaPgmhS5UXCs-b2-OJ_dnqOqWcpsSSB_rsDlSi5qVPPvz56sqhrJ6UcEyoTwTPImlcJQpD1ySZK_lFea5W9rOIDSZl12burAqem14CtB1mCYVbOmRS2ZsM6wiowryVxefLpB10SATSSBpKlqvka8RKU6Jv1CFQxWHOv02rkItpze5eBupmc5c5yOu-m9RpT_Sg-sNuslz1FB1jJB4hhEbsC9N7wB37inSNlADwJFCFC7PCfQ9ezzH4gLVNFamYAW90zwQuoTvAyYCJ2Liy-Xi9t_XZ5eXXz69_nNQk6RFQpsX3JWKCeQ1XDamwf1dtj-c745-s91POwnfpQo3uRcb1ZtKv3hWgBhJeZnlZ9w3A8S5OuCQyRQslYhAvWhqHXAnKLIBKFrz8J0GqOt9W7ZChT_B_hnDsbB8T1n6QTP2kUgPrUDWC9CCIn3yXnTFKO1qi72T5Hrm2U862UoDmO0zfxAOzgw6vFl_VkCGxARizIndcbF-jjdwMEByXiaeQHYCC0qtoKQBH-TVIJQEwlGROo7sEhqaIyJuCmlDjIjFn_JhKXVaAQMh4SSlsS2gPGUBrHnO4gsZepRKgoNhciaQhQFvqxgar4pc7GdgsMsDTFow1QYeO3Lqt68P39VXpUAXYpUlmt15FAq7q3uGKam38FU4AyYgoQHZUV__iILxad1mXer90f6NVt_dh37JbF_YMnTnCd_zUxOHi29e2YPC641C24WvwwL2JYFL0iHLIyIt1ypkj1YxffNKp71Knh3lbFAQyFa93F9a_phltjTb5UUWJGPEi-MgHxVp5rkYuG2mslIk9eLlOZU4rP5DgcmYnipwb9mAt63B-q8LPugeqzh0JpFyHJ7WGwK9t-GQmYTe9iDsvNEoYxcgkLNPSiOFGRq8qwb2QoSB-E-Xb-sIOAlgwV6V2nxsBvbsh9407fDfufpU1v2_SnkYaBACl5s1tBpaDhWKgAzbSuC9GYA5R3wg5cCfDd0BYdPeboZOYU-bIBOjyBuLy94Mj40E4Jsbmi2VYFm1Xq4Vp-fVE--5DzvSk_kGpNhu0IQJTibyp2D58lsI--zhfM60GZXYUC2JCCP2nOuUPsOI68tnRubpIftipe3TFLPG6Z93Wroz__Q_cZVORBmJMaQNS3L8JyxNsBpiD152kDzFjdiu9Lnx0ssLdCTvtZarSC0B8obVv4_VSR_NI3vKanGwT8gsM309wjUpo45yXMNL_avgVQ6menatF28vleHyup9J_J07o05YgMUsB1QiNyls0z9gd5N1mx3GR5SwjNY1bqzAANPo6xU0XYR2BbU4NhPk0cds9XMQmxF9g_TTqeXBDxR7pssMmmHn2Wj3ljQr_Ni9QO8tDONJZhz03jpOD_HCC_jnF1mt0WBOCKe_5y61TG0JcIhE7WJxBbn4SDJngGUWtZ7JvcW0l1UWDdlTkfhcVsLVqzkeLBIU1RsVdBUbyftgi2NGduC6_qt2Lb4EDsY0PmTxR4K3DWTre49W8Dmhe5zAJtCzzsYdbtxaUuLZwu1PD-JHnXZR7g6wFHYW8zAD88OIkmuIvwMg70BQO-GJnl4dpDrlwT0niWA-TUBvWeNSZJw-sy0L01K8teUst0j8GzL-9Sh3nDnsSvvkLSpyEDWBes2_JRYbTMA3cwzKnLL99wGWnzW1xOH-ahhedqt9IgG5XSjLPuRlir5QgQjKUs-5mS1f-9kSSqWLCpVGWGx5I6I_QPlmUUtCJNX3vQ4zcruUECnPFHQqB8ox3Z9Tev0ThvTdmDHUxcotv1Bf5J2_8EdbBeTdkjndwP7Kg2sZwnA_gYNrG-9b_e7gX3lBta3xMLvt4H1bXH3z2pgfWuQ_K4aWN8aP79gA-vbX098xQbWt76E-JoNrG99PfD9NLC-9ebSr9fA-tY7SL9iAxtYYhInSZNoiEku1d12PxjC444tu3r8G8O_CoYPLLHB3wDDB9Yo5DeGf2UMH9heKn23GD6w3o38SRg-sEVs7wvDB9YXB18Qwwe2GM2lsfOo7j_z8oLe0_wwMwcA89CtL-S2o2LXlH_c8mqLuVwqt9V7implcNhb3oiEfmT5-OZ0ffhyJdp6uxVn-9nUos15kbHVgYldjBjPnx04PecpnXPAA7SG_0VNv9XDO9fbe3BCy1t905AGbrIt_2sL35pxVstb9AbSmMsHoeVdw2kY4GgI5q6-FhB7V-U20u2x5_mBe4y39bB39jiAd7WjipSFJh5Wsbm9qrWs5e3LoAv3Gbqwkl8XYWv_OCC_STMmckPLG6fT0INW8DDHH7n4rPqVfQzasjbuedofn4SW916nobN0HQQJTv78YqYgQvXIb13ay1C7l6MOMy9_aTTMBVYXsS74iiXyauAuOLkmVXVJCrIyQGI66v_GOsFtdQjtoINUSpSCUgRPaFWdNlmmfsXykE4euWW4n3pJ11xsWppWdw4fmGzq8K49Hvv_MprvR5wxktOklm096Gizk0A-qx_hXCtuukTqt7eah3bwSRopGAXXJXy6KutL_Qvjt2qsn6P873UREz6a5AT7C2eyH9q_DVVum3jYN2DHNA6hHUCVjuWTBB2yx1MM-Ea1dKBt_h1SrxVSww2Ct6HB3Uga7pGFdu1VmAXUCZJ3GSq_YAbsKqtdwwnWS5f-EJZXZc7qWZFebwGityH6u_CtB0fsh7Vue_Emsm2kgzRz_N-I6SXTu7msZvJlZLspEFDXSX45y4y1fM1KKh_bMb_QneqBDvtHqnurz2sTXWS7_xDQZHm4hTD7n_r2w9lO2zraNLWTr70A2D51ILLbSMAkDhz5g0jgC42eyxD5KN3k6c7kMQHsuN7UiWOwOTGPLQjaK_nd43aO6IkbhlEMA8PwKD3x0qk3JUc1q3N60lRUPmoHQSDlm4pV-jkp5vlS6AnPhzlqRH7y9Oe2BHEcTo_uTjzsZ-CTWew6lMY-xVkcxdSPHZ-62IvJUU6WNK9O9LOaCvoVKRL60UxH7AQ7GLuuEzuR9IfjlFCCs9CLAxynJIsnvkNB6fmx5OOYi9WROFEsLZtVBSdz9cCa7iQEgdw5p2o5oE-a-o6LkznPcy6fVdNUzpFa_0Tx_3-BVGQD">