<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/107473>107473</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testing using 0c1500ef05e0a5b25cae79d2bd361dbc6e14e726
C testcase:
```
int a;
extern int b[][3][3][3][3][3];
_Bool c;
unsigned char d[1][13][13];
unsigned e[1][13][13][13];
int f[6];
unsigned short g[1][13][13][13];
unsigned h[1][13][13], i[1][13][13];
short j[1][13][13];
unsigned k[3][13][13];
unsigned short l[1][13];
short m[1][13];
unsigned short n[1][13][13];
unsigned o[1][13];
void p(char q, int r, char s, unsigned char z[][13][13],
unsigned aa[][13][13][13], int ab[], unsigned short ac[][13][13][13],
unsigned ad[][13][13], short ae[][13][13], unsigned af[][13][13],
unsigned short ag[][13], short ah[][13], unsigned short ai[][13][13],
unsigned aj[][13][13], unsigned ak[][13]) {
for (unsigned t = 0; t < q; t += 50)
for (unsigned u = 0; u < 2; u = 6)
for (short w = 0; w < 2; w += 42155)
for (signed x = -15; x < r; x += s) {
b[x][x][u][2][x][2] = ab[5] ? ~af[2][1][x] : 0;
a = x ? c ? aj[2][u][x] : 0 : ae[2][w][4];
}
}
int main() {
f[5] = 8;
for (long t = 0; t < 3; ++t)
for (long v = 0; v < 3; ++v)
for (long y = 0; y < 3; ++y)
k[t][v][y] = 3004284279;
p(8, 322, 9, d, e, f, g, h, j, k, l, m, n, i, o);
}
```
LLVM IR:
```llvm ir
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"
define i32 @main(i64 %indvars.iv) #0 {
entry:
br label %for.body17.us77.us.us.i
for.body17.us77.us.us.i: ; preds = %cond.end.us84.us.us.i, %entry
%indvars.iv1 = phi i64 [ %indvars.iv.next, %cond.end.us84.us.us.i ], [ 0, %entry ]
br i1 false, label %cond.end.us84.us.us.i, label %cond.true.us80.us.us.i
cond.true.us80.us.us.i: ; preds = %for.body17.us77.us.us.i
%not.us83.us.us.i = xor i32 0, 0
br label %cond.end.us84.us.us.i
cond.end.us84.us.us.i: ; preds = %cond.true.us80.us.us.i, %for.body17.us77.us.us.i
%cond.us85.us.us.i = phi i32 [ %not.us83.us.us.i, %cond.true.us80.us.us.i ], [ 0, %for.body17.us77.us.us.i ]
%arrayidx30.us87.us.us.i = getelementptr [0 x [3 x [3 x [3 x [3 x [3 x i32]]]]]], ptr null, i64 0, i64 %indvars.iv1, i64 %indvars.iv, i64 0, i64 2, i64 %indvars.iv, i64 2
store i32 %cond.us85.us.us.i, ptr %arrayidx30.us87.us.us.i, align 4
%indvars.iv.next = add i64 %indvars.iv1, 9
%cmp14.us95.us.us.i = icmp slt i64 %indvars.iv1, 322
br i1 %cmp14.us95.us.us.i, label %for.body17.us77.us.us.i, label %for.body17.us77.us.us.1.i.preheader
for.body17.us77.us.us.1.i.preheader: ; preds = %cond.end.us84.us.us.i
ret i32 0
}
attributes #0 = { "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b,-b,-e,-experimental-smctr,-experimental-smmpm,-experimental-smnpm,-experimental-ssctr,-experimental-ssnpm,-experimental-sspm,-experimental-supm,-experimental-zacas,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smepmp,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zca,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl4096b,-zvl512b,-zvl65536b,-zvl8192b" }
```
Command/backtrace:
```
> /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt -passes=loop-vectorize reduced.ll -S
opt: /scratch/tc-testing/tc-compiler-fuzz-trunk/llvm/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7400: llvm::VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt -passes=loop-vectorize reduced.ll -S
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
#0 0x000059162be7f6e0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x30136e0)
#1 0x000059162be7caef llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x3010aef)
#2 0x000059162be7cc45 SignalHandler(int) Signals.cpp:0:0
#3 0x00007152dd642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007152dd6969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007152dd6969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007152dd6969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007152dd642476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007152dd6287f3 abort ./stdlib/abort.c:81:7
#9 0x00007152dd62871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007152dd639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x000059162ae52310 llvm::LoopVectorizationPlanner::computeBestVF() (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1fe6310)
#12 0x000059162ae6910b llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x1ffd10b)
#13 0x000059162ae6c121 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2000121)
#14 0x000059162ae6c797 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2000797)
#15 0x0000591629cc8756 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe5c756)
#16 0x000059162bc8b67f llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e1f67f)
#17 0x0000591629ccb8e6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe5f8e6)
#18 0x000059162bc89a1b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e1da1b)
#19 0x0000591629cc7b36 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0xe5bb36)
#20 0x000059162bc8a57d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x2e1e57d)
#21 0x00005916294f41b6 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x6881b6)
#22 0x00005916294e5f11 optMain (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x679f11)
#23 0x00007152dd629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#24 0x00007152dd629e40 call_init ./csu/../csu/libc-start.c:128:20
#25 0x00007152dd629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#26 0x00005916294dc2c5 _start (/scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt+0x6702c5)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/build-llvm-linux/bin/opt
```
https://godbolt.org/z/qEEqe1exM
Found via fuzzer
Related/prior issue: https://github.com/llvm/llvm-project/issues/107171
cc @fhahn
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzke1tv2zi39q9RbggbEnWyL3JhJzW-4msxRVt0XwYURdmcUKRCUorji_3bN3iQLDlyk868U-DFDDLkIrnWw3UiRVEuUoruOSG3QboN0vsb1OqDkLcN0pLix4WknVA3hShfbr8TpSnfg1aZMsRRGoakClMSorSAKUYkX5ewKOMsKguckSghOcyC8D4IN668A5oojZEiQey7giz0f7ZJuQYoiLeuRY6aSA5MZ-HUC9Jt_FbVSz9shWAAD-2WW0tLgA9IgjJIt5GTiuJx_YqdXOO8lDB6VkG6zWZh1EFIDfbvBRvkDtck4B2gbxnhJv3z3bY-nn35BqdDZpfI04nra8MXMPzdCopriJ2gJWgCuLLRfbLe4RpIQ9guZahpDpyGpLr0rMME7r9BCKErAuOQmAzus3U8o7MU4Tch_NznWcuravag5DrHGaZ6y9pLVfcXAuf5Dq9HLoXpu2dDf75H-8fLKdcgyLd9nCohQQBXA7sGQXwPwiDeWvIOPHkSbs1AGgZwfY7xpXR7lm6tNOzJe5BNJAdZZ_XzWfD5LPjcT5vAKE0v5M8Ibu6jhVhEqZE8WhDpSQeipqabVDs6x_iqdRWcdJqWRba5mbrWDvyvzQrPGp0lQBBvrB1TVQFAFuRohbEtbfjgZOozgi1tenqOZ1cl46XbYwf5vX8o9IRZTDWiPICry4CfrbgHqxGU9yYTfP86C2JDGj_CrZ7LACvVnaW6S6luPvpW7uUs93Ip9_Iq6iaftXNG56qX3pw4DBO4SmC-HtlltraVWRIxhKZam6I0BTFFZYq9KQ6m-NMUj6ZgpqhNwd0TA94BYbTpoc9enz6KXfnp04_P4OPX189rxroaUOl74y34LMqWkY_OhADmkpQtJuWywAHMHZtGck80KJFGDL2IVnteSBZ1EG_IogniTZbYYkEHIoKrIN5EcLXgMXR930wfhBNYLWnDSA8pqcJdlixa_sjFM18wytvjYs_bQcyVJakoJ4DGEARJ6JONZgkIYEp52SGplrSz2Qfj8JyChGv5MrgFgEIChgrCjFwl5NIcmaJ82arcFOaPjqe9xhJvgHFmI0mpvCkpFrxcEl4uW7VKBk54Z8acGl6HicqRFW8OFFhr0u10eMnJUXuQ2QmA34KNZDiezQ6craYRqBBTNgsHD1xVecqhZUsMSzjnoisccx76qcOtX7jQBiY-W2e2MSFt4K154Vwk5-24VPIVw9UovjbHOfZtA6x4q1bpxAIbXpO6LryXVo7j-2rquQBf0WMc8gCmSEr0QstjbLBW-USjPdGEkZpw3WhpsEPztEi38RsVjd0TYvoH74CB4S2z-5jJ5LAnptk-2_tKBv6UDfY2Ki2k3xNmPN9rdd0ThgMxuucgmV2bdvG5x3FZXjFmPQ5-3UQmu9bT6FNcN0AxfQUh7nc6v0xngSaL8loavs0TLemykeRAUEnk2xvdlP39m553iSTaL9yLR5gtkdaSFq0myu_ZBjE3CwS6R8WiIki3kijzLIjvTQm3WVJQsyEGcItchV1VuqpyVe0qSRg6OrJz1YliJXuyIhwT6lt13TJPdiSG1Yg-DnSWlCO6GtEDD4vgqhgaMTzTWWLohS2ILY4NkdSsQsQWqsZazvTWTT3Ty-d61SyCmued62xnOk8IIzXTy5B6PdmJ4oqyZr5fzcB0BY7ha2ecuse95TbnpIU6YNFyTSThz669R7pBjtQdYp7s1Lm7U5MB3RFc2kaNqOutcUkY2XtaSco9A2nqxlFKI00Itw3VyymMq31PNc7jSmFRNXXV0xNt1QhcPQlFPTlBV1pSrB2tsa8HC0b6qzZLjsySHSpJT7SOKJD0XZR3yLNx1AgH3TVFbakj7hBrPVXQgdA14rTxTcKePVUj3FOk9pSitdXoqCpMkD1aGLrDTU9VXGJGm2P1VA1dzzXC-Onpqe94Mu1SlJP2k_DjtKLGcKowkmXJBCfj_oq16nDu1WajKtCILka0OtO4FqOG4GUtunNHVZOalsdzR2-8a1wOkrpBVJ471AsfsXel8_yxM4nNkZlNNE6XZ3ywnCcUwZVUjsySnkJOyxMqDsgRTCovUKMoKxz57Pmd4Sdn86lwjMWjbz727aOrnQx2MtgxuQQ7YeKqylW1aDzR19agU0m5w6ocSFVUNeWOPPhq6Oh5D2OiH6XY74wnigtRD1QzUCdPYVQL1NO06immeiEsXR6eKOZuZZ6ocbmjDpRrrtm50aC25z80HqO399GV3Felr4mvnYmPbo5H5Svi2ZQfdq7SykWy88HpfHS6kc8M_VwjTx_6ehj2gewe977u-znuCT9598gHHp85hurlVV_3cmqQU72cV7_z-ncsCqEPUceiLF4NDRgmq4FOs56MYZ4N_Um4HgbSCPZklqbx0L-K1mYAgp-_6N6JukYmFrsC4UctEb56SR3EH0AAdwpLpPEhgDuNF9pdjrsGFnVDGZGLqj2dFlq2_NHgtpSViz3uBtq8Q7sXU9Nl4rETjQaLBilFVBDfMyGaRUewFpKeCOhfqRkDi29OF9Foe3z6dXXM5KOKFgHcfZeIq0rIWgVw96OfN4C7T0I0Q3uJG_OinidhaOa2CPEmiDc9B9JU8B0yjdHoGMNyfGGIc3v8C-KNUbLVZEuU_rFz9z0GfKMUkYYZGPfDlRl3yMv_oaU-mMOdOd99InuEX37s-t78LsjvQMMQvxNcI8rVpiypAULsG60bRiuKrRYqgKs90UaZnZAzUxhN4B24E0rfabPHgD8k3Rtr7MgaBDALYGaOl-CHgQFYKA1qURIGEC8Bs7qNe0uq0F4SszxgAHNQIcpIuXQh_fLpw-bbB6DaoqYaIFC0eyBJI6QGWoCD1o0yLoO7AO72VB_aYolFPY3oopHiT2Ke-juqVGtOujurC-WYtSUB-kAAlkgdwJDufvpvGuFHULZ1M-R_uHR3Vl-k2EtUAyT3rTlOqb-Yev_ISoi8kl9bzinfAyNqYlK1HJs422u6MUgQ33GxoOY8xQjqyKISEpNyITh7CeItF2fWi6Eg_mBDD4HgJqItI_bKaVBquGOCV5T6j2pi1ejNNOjuFqt_-bPvQOExDMMwXUcZLEheZSQcrUz1ohzxRVKubQJ8txsgXJ2ZJHp-EEpLgmqb8PZTh0v_1T-YAwHchsc4jOKMjC7tAxhHFzZhRKo5m762_Bvdc8T-H-IlI-ZMs_p9aoeIVBO14aXaOEnBRMEArrxnXbfy-21o_x-AYg-URyksyyyBKQy9UW4zP66yhywZX3yaAbxUYplZ9azIRLlkirnO1hUGDw-NPkiCyodHytiD2Tzt_Y7dPcEygDvemKPPbsy2xEG8SRLzmMjO-Ol78M0y4Ij9FDm3N8Ijb2RzyGOxn8Kt1hdw-aVzkzwDe2XjYZEcGcDd0rZeVEnM2XvXCEVNIkhEFbHYMA_izcgHqyk0XOVVDFBhtncLpUsXPtvltIuMxWeE9SuEqAAPnD0wgcqHUpjlb7GoPZLuTHet9hg5uCjKjUo-7GYlhVPAeE3W2a-lkhUZUslgTpYnIqmd5m8cBn7Heo0qksVROLEDTu3I1lFYXLGDfEHKbzqNFJgo5Q4Jqyl7ADe_zZ6qjMJiYk98YQ-OYPS2PbLlH-uGTWzZDQ_W7DfZA8MwjGA0sSe5tCdf5--y57otdyP5DUfsRVH1GXG0N-l5NyNkHsK_0wf5Op_4IB37YI3xKk-zkQ0l0Ygy_4RHSn02Z9B5Sya2v_bdX3KN-fvv9jlJcZ5Ot7ds8hjHqyLLx6cP6-afqf8v9SQkUZXl1cSV-UX2Fivyn8jefywE_9LQkbRakekiWF0sgjWKxs9G94uA76JX10RkU6JGCznvDCfwS67wIr85h0sUTZ-q64sczov413K4N_3unf77Cw66loL_HV4naVHEk_SD4UX6oTQv37EBzLn63-BBSCKS5uXEhZNT-jqpkqgY561sbdJ9oQ1hlE_vA75pSfn-K6nmkvaVL77bD6-fET5YnM3c6CdaSCRfPvJKuMPmJZcQ7I9WN63eUTYD8reGr5izkRK9mN5x8KxPWLun_PXz4MyvdOn6hhuo-M7-SnXiRoO1NaEzL_42v2eeMqLRD1oIv4M4K_6_-_B3lesHkbSiRPZ8hRn55fq3ZGa2WkXFdG3DaWKStIoiIBr92bzb_g6V8nUVTd404MWFC1yX6xA8PJgX4QelkdQPGDH2MLx9Y9W-vh_wNxBzQstDEG9Se7GRnWdNLmclSQisDOVUX07kSIO-sOjuhd_-fg6GZ9B0DnRiypwVs-BxvjZqn7GzaeRKDHEKHOrvCVwI8flHtidlvAo-_vEdUK60bPtL0hUWkthrblK6NP_n9Jr7iHRxjy_KQjC9FNLMeArg7unDhycSkePn8UeqnWh5CTqKgFFk-kObr4QhbWzZNZIKCey9v7H9r38xiMI8yqPJz90wCJKwOqADvylv43Idr9ENuY1ymKZ5HEXRzeEWhyTDq5KQdB1XFcxRmpRJBCOUkmSNSXxDb2EIk3AdpjBKozRaFhXK1ijEqErTLEvKIAlJjShbGsWMT26sSrdRmCd5fGN_iqTsP1iBkJNnbyqEQXp_I2-tNUW7V0ESMqq0OsNoqpn9ly72O02Q3o-_L_3tzzc3rWS3f8vbxrruFv5fAAAA__9D-ZKP">