<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112495>112495</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Func like macro cause crash in AST
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zkw13
</td>
</tr>
</table>
<pre>
code is like below:
```cpp
typedef enum
{
SOME_ENUM_NAME = 0,
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(0),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(1),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(2),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(3),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(4),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(5),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(6),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(7),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(8),
SOME_ENUM_NAME = A_FUNC_LIKE_MACRO(9),
} SOME_ENUM;
```
The header file isn't self contained, and A_FUNC_LIKE_MACRO couldn't be found.
I didn't reproduce it with a single header file. it has to be in a large project.
```bash
Stack dump:
0. ASTMatcher: Processing 'bugprone-I/home/xx/somepath against:
ImplicitCastExpr : <xx.h:5211:28, col:34>
--- Bound Nodes Begin ---
x - { ImplicitCastExpr : <xx.h:5211:28, col:34> }
--- Bound Nodes End ---
I[16:01:54.836] <-- textDocument/foldingRange(4)
I[16:01:54.927] <-- textDocument/documentSymbol(5)
I[16:01:54.970] --> reply:textDocument/foldingRange(4) 134 ms
#0 0x00007f92425a93bf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda63bf)
#1 0x00007f92425a74f9 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda44f9)
#2 0x00007f92425a9b00 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda6b00)
#3 0x00007f92412d0320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
#4 0x000055fa6580ce05 getTypeInfo build-llvm/tools/clang/stage2-bins/clang/lib/AST/ASTContext.cpp:0:0
#5 0x000055fa6580ce05 clang::ASTContext::getTypeInfoImpl(clang::Type const*) const build-llvm/tools/clang/stage2-bins/clang/lib/AST/ASTContext.cpp:0:0
#6 0x000055fa6582dbb3 getTypeInfo build-llvm/tools/clang/stage2-bins/clang/lib/AST/ASTContext.cpp:1870:17
#7 0x000055fa6582dbb3 getTypeInfo build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/ASTContext.h:2301:51
#8 0x000055fa6582dbb3 getTypeSize build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/ASTContext.h:2307:51
#9 0x000055fa6582dbb3 clang::ASTContext::getIntWidth(clang::QualType) const build-llvm/tools/clang/stage2-bins/clang/lib/AST/ASTContext.cpp:11016:20
#10 0x000055fa655467ea handleImplicitCastExpr build-llvm/tools/clang/stage2-bins/clang-tools-extra/clang-tidy/bugprone/ImplicitWideningOfMultiplicationResultCheck.cpp:82:32
#11 0x000055fa657be355 _M_mbegin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:737:64
#12 0x000055fa657be355 _M_begin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:741:16
#13 0x000055fa657be355 ~_Rb_tree /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:986:18
#14 0x000055fa657be355 ~map /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_map.h:314:22
#15 0x000055fa657be355 ~BoundNodesMap build-llvm/tools/clang/stage2-bins/clang/include/clang/ASTMatchers/ASTMatchersInternal.h:215:7
#16 0x000055fa657be355 ~BoundNodes build-llvm/tools/clang/stage2-bins/clang/include/clang/ASTMatchers/ASTMatchers.h:109:7
#17 0x000055fa657be355 ~MatchResult build-llvm/tools/clang/stage2-bins/clang/include/clang/ASTMatchers/ASTMatchFinder.h:75:10
#18 0x000055fa657be355 visitMatch build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1271:7
#19 0x000055fa657f13ac _M_mbegin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:737:64
#20 0x000055fa657f13ac _M_begin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:741:16
#21 0x000055fa657f13ac ~_Rb_tree /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:986:18
#22 0x000055fa657f13ac ~map /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_map.h:314:22
#23 0x000055fa657f13ac ~BoundNodesMap build-llvm/tools/clang/stage2-bins/clang/include/clang/ASTMatchers/ASTMatchersInternal.h:215:7
#24 0x000055fa657f13ac ~BoundNodes build-llvm/tools/clang/stage2-bins/clang/include/clang/ASTMatchers/ASTMatchers.h:109:7
#25 0x000055fa657f13ac clang::ast_matchers::internal::BoundNodesTreeBuilder::visitMatches(clang::ast_matchers::internal::BoundNodesTreeBuilder::Visitor*) build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchersInternal.cpp:105:5
#26 0x000055fa657bda9f memcpy /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:10
#27 0x000055fa657bda9f operator= build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/PointerIntPair.h:48:5
#28 0x000055fa657bda9f setPointerAndInt build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/PointerIntPair.h:111:11
#29 0x000055fa657bda9f reset build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:835:16
#30 0x000055fa657bda9f ~CurMatchRAII build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:869:40
#31 0x000055fa657bda9f matchWithFilter build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1068:5
#32 0x000055fa657c37c8 matchDispatch build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:0:12
#33 0x000055fa657c37c8 match<clang::Stmt> build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:730:5
#34 0x000055fa657c37c8 TraverseStmt build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1482:3
#35 0x000055fa657c37c8 TraverseEnumConstantDecl build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/RecursiveASTVisitor.h:2058:1
#36 0x000055fa657c0b77 TraverseDecl build-llvm/tools/clang/stage2-bins/build-llvm/tools/clang/stage2-bins/tools/clang/include/clang/AST/DeclNodes.inc:228:1
#37 0x000055fa657c0b77 TraverseDecl build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1471:48
#38 0x000055fa657c613b TraverseDeclContextHelper build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/RecursiveASTVisitor.h:1480:7
#39 0x000055fa657c613b TraverseEnumDecl build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/RecursiveASTVisitor.h:1952:1
#40 0x000055fa657c0c4f TraverseDecl build-llvm/tools/clang/stage2-bins/build-llvm/tools/clang/stage2-bins/tools/clang/include/clang/AST/DeclNodes.inc:440:1
#41 0x000055fa657c0c4f TraverseDecl build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1471:48
#42 0x000055fa657c0e58 TraverseTranslationUnitDecl build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/RecursiveASTVisitor.h:1580:1
#43 0x000055fa657c05b3 TraverseDecl build-llvm/tools/clang/stage2-bins/build-llvm/tools/clang/stage2-bins/tools/clang/include/clang/AST/DeclNodes.inc:24:1
#44 0x000055fa657c05b3 TraverseDecl build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1471:48
#45 0x000055fa65792c65 onEndOfTranslationUnit build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:446:30
#46 0x000055fa65792c65 clang::ast_matchers::MatchFinder::matchAST(clang::ASTContext&) build-llvm/tools/clang/stage2-bins/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1700:11
#47 0x000055fa6525dfea build build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/ParsedAST.cpp:717:3
#48 0x000055fa652f7c12 ~__shared_count /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:1070:6
#49 0x000055fa652f7c12 ~__shared_ptr /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:1524:31
#50 0x000055fa652f7c12 generateDiagnostics build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/TUScheduler.cpp:1210:39
#51 0x000055fa652f7692 __destroy<clang::clangd::Diag *> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:162:19
#52 0x000055fa652f7692 _Destroy<clang::clangd::Diag *> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:195:7
#53 0x000055fa652f7692 _Destroy<clang::clangd::Diag *, clang::clangd::Diag> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/alloc_traits.h:948:7
#54 0x000055fa652f7692 ~vector /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_vector.h:735:2
#55 0x000055fa652f7692 operator() build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/TUScheduler.cpp:1144:5
#56 0x000055fa652f407e operator() build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#57 0x000055fa652f407e runTask build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/TUScheduler.cpp:1324:3
#58 0x000055fa652f3b64 run build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/TUScheduler.cpp:1459:5
#59 0x000055fa652f3b64 operator() build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/TUScheduler.cpp:822:42
#60 0x000055fa652f3b64 CallImpl<(lambda at clang-tools-extra/clangd/TUScheduler.cpp:822:21)> build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/FunctionExtras.h:221:12
#61 0x000055fa65452011 memcpy /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:10
#62 0x000055fa65452011 operator= build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/PointerIntPair.h:48:5
#63 0x000055fa65452011 PunnedPointer build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/PointerIntPair.h:37:60
#64 0x000055fa65452011 PointerIntPair build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/PointerIntPair.h:86:13
#65 0x000055fa65452011 UniqueFunctionBase build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/FunctionExtras.h:341:3
#66 0x000055fa65452011 unique_function build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/FunctionExtras.h:370:3
#67 0x000055fa65452011 operator() build-llvm/tools/clang/stage2-bins/clang-tools-extra/clangd/support/Threading.cpp:103:14
#68 0x000055fa65452011 operator()<(lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15) &> build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/thread.h:43:11
#69 0x000055fa65452011 __invoke_impl<void, (lambda at llvm/include/llvm/Support/thread.h:42:9), (lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15) &> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
#70 0x000055fa65452011 __invoke<(lambda at llvm/include/llvm/Support/thread.h:42:9), (lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15) &> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14
#71 0x000055fa65452011 __apply_impl<(lambda at llvm/include/llvm/Support/thread.h:42:9), std::tuple<(lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15)> &, 0UL> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/tuple:2302:14
#72 0x000055fa65452011 apply<(lambda at llvm/include/llvm/Support/thread.h:42:9), std::tuple<(lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15)> &> /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/tuple:2313:14
#73 0x000055fa65452011 GenericThreadProxy<std::tuple<(lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15)> > build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/thread.h:41:5
#74 0x000055fa65452011 ThreadProxy<std::tuple<(lambda at clang-tools-extra/clangd/support/Threading.cpp:98:15)> > build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/thread.h:55:5
#75 0x00007f9241327a94 start_thread ./nptl/pthread_create.c:447:8
#76 0x00007f92413b4c3c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0
Signalled during AST worker action: Build AST
Filename: xx.h
Directory: .
Command Line: /usr/lib/llvm-18/bin/clang++ --driver-mode=g++ -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -I/home/xx/somepath -Wall -O2 -Os -fno-builtin-printf -x c++-header -xc++ -Wall -Wextra -Wno-unused-function -Wno-unused-parameter -resource-dir=/usr/lib/llvm-18/lib/clang/18 -- xx.h
Version: 1
```
clangd is from ubuntu 24.04 apt pkt manager.
Ubuntu clangd version 18.1.3 (1ubuntu1)
Features: linux+grpc
Platform: x86_64-pc-linux-gnu
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11zm7yX_zTkRoNHL7yYi1w4drxPZpu2W6dPLz0ChK0NCFYSqfNc9LPvSGBjKEnHaZxm9_-fSV1bIOl3XvQ7RwdEleIbwdil4185_uKC1npbyst_7r8jchGX6eNlUqYMcAVyfs9AzPLyu0NmDlw4cAacADZ_SVU1TQ6M9GPFUpYBJuri0OiEV913GK0-3V6vrz9-vV1_nN1eA-CQBYAOnj9zj7lltl5-_Thff7j5z-v17Wz-5ZODp9DB0ct6ohf3xC_uSV7c03txT__FPYNf9nyya_jiSacv7hkNe4YLcOjqkKuh1-5_2__utgxsGU2ZBBnPjcsLB4caKJZnICmFplyw1MFzAKhIf54fJGWdp02fmIGsrEU62UMxnzcg5e11ySpZpnXCANfgO9dbQIHiYpP3IEzM1S1VQJdmRC4ABTmVGwYqWf43S3Rv-INUMVXbpmmlaXIP0rqoDksWThwYzVZ3t1QnWyYdMgOfZZkwZaYHDg7jelPJUjD3xsHLbVkwBy93OwcvVVmwihqoG8qF0ochHRjdFFXOE67nVOnrXSWBGdch891usnXIzMcIOWSGp0Z7SZk7ZEY8h1w3_V3XBVdGW-BjmTIFrtiGC-C6bmseAMAOuMAJr8AL5wFOuBif61qk3Uw3jn-FAofMoBnF9yZTEjj-wkzgukCznV6USV0woR28zMo85WLzhYoN26_O8VEiHD45Stp-XT0WcZnv1-oT44TQjOO6RiLJqvzRIbNfowKIeKBQe1_HBAK4gxDCMIuwh30akTgDef5QGIuSmXpUzZfPkgttXehO0sQM190k6fd1qbRktHBwYNTNzfwRcIzyl7WSDl7mPDaf-UPhItMac-Hg5WTSXeLxhw9_305UOUHTCXLwFdylNCBxdtCCAYwGgEMvi8YAf6nFim8Ezf-iIs2ZVBbMq2DyvCzqYcJDJcYQvorwMYS9icjxRAinkOD9RM04u2mwDjw356LeuRtRNxcSM25gB_V8gvtjeu2Yvp_RwJ_ChEEfbJi-e6zYjchKENc8T12rYrzUZZkrBy-TnIqNIQJNNwy7MRfHrQ2Y2equ-ZyXwrjmxCQGZAbtv8P8_tj8zUDWkF3_5vcRNMMADp4e3WyuGH5W2sEzY277_dwiBH0RcBrH5KwqRNPQQEBhhyE8AwYukrxO2VHLT3gM02LSsBLq0EyfQbPi_7DzogkHaKIxNM-72I3Q33iqt333-q-a5kaE83kWQtDyPG7dyzAe7MH3vSBkFGwtrf0UA0_F49p7XLbTknZtPH00LNVGfwcv9_N84ykTXGw-Zbd1rrlppJqX4gtTda7nW5bct4JMsQm4uJMC9aQIY0Z8H6xv10VsQ_yAKzdJMk5niOyZc_Bx5B4OvrJ_zc0x18oKn6-1ZMw6SUiMjwReBw8_Ae-PoPPMekJBh46Mofux_hLbTm8ML5oGloM6eN4ovIJWb4OsoJUFRpBnls6R0_mjwGzSZ3O-W1q9GhW1WbTq_7oRmklB84abkG_M2-ELfoHvzOAsKASjPqhwFJTt06zzc6JacpEy2SwD36LrgE3HgD1wxbXt-ltk_DSUlphxiPpq6keVMEOEJu-H0DB8At67IDSMxtC9G0LDeBTenyc0TEaBvRtCw94v8P0JQsP-GKijtI4qvS7249kW3grZ_Org30nGrowEtlrikFnHPkz1c8XfGPRvM2gp2y3MK7PasQlbaoPGiH6nr2FUSmmUgYIVSfXY-X9nlRHvP_iy5GKzzkqpecZZ2vhM1Kd1PIw3drqyYpIaJZDFKRpob-rAtQ2zhUm3P5fWBjdCf6a8CTLetC_7MMZYMIrptutMpDfipAB4MiJk61YIdZiiMUySKfZ7-49fhbwp8fusTeAYkB_zWjbJwezm5ryAAuM6Xuc6ZLipaDzVdPzG9XbJc81O3xOdlBbAoO9AZBA6EhIm0wbSgqvq7HmKrQt0AYOQJ-E4ZH5EVytdaIdcnxVbSGBfV94YuDtJH5hUzCA6r-28ZpPa4fGfw3Mt6mJuNv1U6AVL8tesYXxhSS0Vf2Cz1V3L_g1XQt-4V8cFg1pTmMA4DA8QT4V1wq3Dq09JYiDYqDbhIrHJy0CA8DUFeIHNbRrvdbneoFYVJgEicQ9QW6H5i-XVy9jkVKsjbwp7GcyggjXAaBzzrRwSRT7u2dODQ3smXvaeHdLzYF8A9JoCvIJDesMIApnfsdCdpELltuj2VfA3IyLkTwdqGwYW6MfkPdsde338w9jzW_hfw-yD4BPhJPBBKa5F-ikbWP2s0DzP7IZJl2V5wRiyZ7c6R6M2DfayNcx0vPCOgzPsdfoqDyHsJ9ZePxZhP80YbTC8SiE9NQk-lYqls9XdPgdCYS_n8PrhB2dhgjD4sV6rLZUsXSdlLfQbVB2a2Sot1zFVrN1H26dMXf7vRc9jrbT8Q0h9u7pJZ1ofjkHdMGF2lWzB6UaUSvPk9ILEU4a--7pKtiyt86OSITL6I1GHCg1RBREG63XKlJblYz8jb0e23w1g4OCZfX_hLSpQ9umWrJPmmRoKbNA_EgSPCrJ473JE_XKVT35TDDwHz9zyJlLSPC-TtZaU66b8FdmSxpGQ3piQPx5Yosu3WK86XzdztYVqY4Jug-r7Y-gO1Z_mpY0zrlHkeb09qR8M8HgwZL-B5_nyz-ruw7IWiYnrNL82cBsbDnbxfjgGStbijqr7c2qHNLzaARlGKxIHngFyThCeH_VNNAxDFsSbucwUGzL0OusEw1hj8cxpntsXVMjcwdOcFnFKAdXgRbNh-3rqaeWZ5z1v73ZHTocx6rtd0A9Xno8hQucrBAd4bLo_VAgOyBiYz7UQLG17nxVO8zzvSDneKJ5ex7MCap6RdVQQ-GOAvgr-PzXbO9cVVSe96nOyyxL7YPEIVDAGqrag1lnb_7yIbM58hCh81qlfl6xUXVWl1IZItpLRlIvNoU5NLJV2uKa_xnUSdT09d2QrgH7z9mXwSiy2Okyn7XTNGib9DV4QjQm5XnPxUN6zNW_o-aHk9lXunqynzWs4un3hHJxHZWfP0xqdWHEC1PeVED6nxqGX_CtrLgoGmhuNoOs1rar8ce9_r6Q9pduth66r_Cer_LY6G1Xa17vh1w_nVWwrwQwTiAcKHc0RrDr_z2nyjVSIBswfjmY2_8EEkzxpUH-W5c7o8y0Ucc5wgHopXTiaQv2_ktjvv8kR-r0DAwSHNPKA0lTqddMLGCcSlc4dvKyapnUiGdVs0jwsMWloV6QOg_6AsZeQBCR5KRixQxVcJXvfVI8qZZWRoRZ81zQ8WF8X9e7g51Zw03-yMlMdvVrfnN_IWQrS2mwfwGx1B76X8p5JQG3e5ZAZsG_OmEv7E0JLnjNBC-P8wJ4FatsXXNoyxKO50J6WAvOyKKhIwQcubIdfHNloTWQWGnDdVPIHJt2iTJlDFof2Jw9L_fvKu7jyjeY5cD9h4H5SwM1E6ZrlqLlwK8mFzgBwd6ClU7c9gufukr15m-7f7PoH7jdRurWoFUvdw_7iuLGikhbM7BZdyVRZy4S5KTe72Sddrfm9ZwM0Ba7bc-S_mVSt86PBcb_jM4ANMQGuQCbLAtRxLXQNsDeBHqCVBtW9BgUVdMNkuxq-Nre0HR-aaQCaTtCEmOQMNWOgw_mhJaO6lkwZKO2qvtrIKmmufs6pzkpZ2IXYxLQq6cLaRXpJ0ohE9IJdohBHMAi8Kb7YXsI0oBGlQTZFLCOQoCDESRShaRrgIGHsgl9iiD0EUQCnyPPwJIA4SzKWRCgMEhxix4OsoDyfGKVOSrm54ErV7BIh7EX-RU5jlit7yhljwb4De9XB2PEXF_LSWiKuN8rxYM6VVt0wmuucXZptX3MEuqCJLEFCa8VAIqnaAi4MF13UMr_cal3Z52F4aWI719s6niRl0XG4nak9v2k43sAwfNnifLjE_xsAAP__Nmh9PQ">