From d3b25480971aceaae9578fca5e7f24980dfdac4b Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Thu, 26 May 2022 15:40:45 +0800 Subject: [PATCH] `no-array-for-each`: Check reassign in `for..in` and `for..of` (#1824) --- rules/no-array-for-each.js | 2 + test/no-array-for-each.mjs | 21 +++++ test/snapshots/no-array-for-each.mjs.md | 91 ++++++++++++++++++++++ test/snapshots/no-array-for-each.mjs.snap | Bin 12331 -> 12563 bytes 4 files changed, 114 insertions(+) diff --git a/rules/no-array-for-each.js b/rules/no-array-for-each.js index 15103e021c..0363d75dbd 100644 --- a/rules/no-array-for-each.js +++ b/rules/no-array-for-each.js @@ -314,6 +314,8 @@ function isAssignmentLeftHandSide(node) { switch (parent.type) { case 'AssignmentExpression': + case 'ForInStatement': + case 'ForOfStatement': return parent.left === node; case 'UpdateExpression': return parent.argument === node; diff --git a/test/no-array-for-each.mjs b/test/no-array-for-each.mjs index 2e0db378f8..400965b490 100644 --- a/test/no-array-for-each.mjs +++ b/test/no-array-for-each.mjs @@ -502,6 +502,27 @@ test.snapshot({ ] = baz; }); `, + outdent` + foo.forEach(element => { + for (element in bar); + }); + `, + outdent` + foo.forEach(element => { + for ([{element}] of bar); + }); + `, + outdent` + foo.forEach(element => { + for (key in element); + for (item of element); + }); + `, + outdent` + foo.forEach((element, index) => { + for (index of bar); + }); + `, ], }); diff --git a/test/snapshots/no-array-for-each.mjs.md b/test/snapshots/no-array-for-each.mjs.md index cefabd97c5..cb052a94d8 100644 --- a/test/snapshots/no-array-for-each.mjs.md +++ b/test/snapshots/no-array-for-each.mjs.md @@ -4875,3 +4875,94 @@ Generated by [AVA](https://avajs.dev). 4 | ] = baz;␊ 5 | });␊ ` + +## Invalid #264 + 1 | foo.forEach(element => { + 2 | for (element in bar); + 3 | }); + +> Output + + `␊ + 1 | for (let element of foo) {␊ + 2 | for (element in bar);␊ + 3 | }␊ + ` + +> Error 1/1 + + `␊ + > 1 | foo.forEach(element => {␊ + | ^^^^^^^ Use \`for…of\` instead of \`.forEach(…)\`.␊ + 2 | for (element in bar);␊ + 3 | });␊ + ` + +## Invalid #265 + 1 | foo.forEach(element => { + 2 | for ([{element}] of bar); + 3 | }); + +> Output + + `␊ + 1 | for (let element of foo) {␊ + 2 | for ([{element}] of bar);␊ + 3 | }␊ + ` + +> Error 1/1 + + `␊ + > 1 | foo.forEach(element => {␊ + | ^^^^^^^ Use \`for…of\` instead of \`.forEach(…)\`.␊ + 2 | for ([{element}] of bar);␊ + 3 | });␊ + ` + +## Invalid #266 + 1 | foo.forEach(element => { + 2 | for (key in element); + 3 | for (item of element); + 4 | }); + +> Output + + `␊ + 1 | for (const element of foo) {␊ + 2 | for (key in element);␊ + 3 | for (item of element);␊ + 4 | }␊ + ` + +> Error 1/1 + + `␊ + > 1 | foo.forEach(element => {␊ + | ^^^^^^^ Use \`for…of\` instead of \`.forEach(…)\`.␊ + 2 | for (key in element);␊ + 3 | for (item of element);␊ + 4 | });␊ + ` + +## Invalid #267 + 1 | foo.forEach((element, index) => { + 2 | for (index of bar); + 3 | }); + +> Output + + `␊ + 1 | for (let [index, element] of foo.entries()) {␊ + 2 | for (index of bar);␊ + 3 | }␊ + ` + +> Error 1/1 + + `␊ + > 1 | foo.forEach((element, index) => {␊ + | ^^^^^^^ Use \`for…of\` instead of \`.forEach(…)\`.␊ + 2 | for (index of bar);␊ + 3 | });␊ + ` diff --git a/test/snapshots/no-array-for-each.mjs.snap b/test/snapshots/no-array-for-each.mjs.snap index 41cec331d4347a3ee69338c66363251aff402ebe..9d44859e01ad0f70ce64261cf374b316be817051 100644 GIT binary patch literal 12563 zcmV+uG3?GkRzV3xWkvFW7)ZQ9%&}R1j1I1Ph3wSXaaa7DZ`NM5Ud#vuEH#6FM^eR6R2(sQ?#)N1R~ z`)F2(F9ul)jKEods;56ad#D%4t2Hs+)bl4l4~1;cDhN^|?{d}YNS6b3vV@*>)($>^ zLUs#)uHNu}8o!Qpsk-EHvU_4g0R~xKRRU)KbomMOV~uy1SBortaI^OaBMh>p)d*|{ z&|TNBt^S}(I}bIuveGBC*((&XEvqAlUcXW6*WCGXVA1orS3CV22%e6!<4F|ZDJH$I z(XGLqGmqZQV8tgKQRwmbwU1_sh}6 zQwF>#nQB;C{7<)|B^YFPkr=CoAO_3U};JgN23R~e*5;o zT%8mYvQKLxNCQ{*sKM)X))wt7dA40}ZwCfhi#i0>0W=uV(#xZ`@u<<#@`UvvZkgB#1ZdiuS%=~($3!dH<@e%qxhP~;0GNa{?KJpQjpmDQ^6MTn_^|?mtezo(bpR$09>4WI zu-dVE#EKC^9Y2i5Ap0+g*+!uKjmf{VG}Qd=3g;W0LeBZ^^8b4H}2q-Fch-Urr>*3>0+DG zdv5<}gJZquwCC}hj9aECGz!^xGjQds>8FM^6Oz8Je>ujZ%_nONva#j_!dfASrOlYyWiBm_ua7Tkm@zN* zBnH`2B>Gz*Nb7{aNhW>FdGkK4Z#}Qao}VaW-&i6@80XjiZGOvQ)BB_S-;~V2AX~Eyfg1pATZDuUsU5I-W-aRuTLv5oMPKX)T^{fz9r)$*^QkUfWAS@ju zwSQGHD4&!35QD6aHG%m6?HcPI3S5!-W`LVVhlYK!_F<5%){ekIfOd-~-!Mon3mP`u zV6++9e-8%PhV2RL2C(gG+19eb>*r%f?0DO@)_BmbaJIS)fm8sypdC-#YX7+0z_N5{ z=_`|u7-a8|2(|?&?)^KV)O5aMe*dvEJuP1h#~{0(L{~cm=@2;jX}$Jl_BHENe_Nxl zts4s2a{wJ(2c`b~xLWNVM~$aDTQ6FOLbhKAaHZJf&?obaX}kS5-YTw0nvOv>hlE2% z1hEfXZPUZ%;qylmYL?WnJJuV6>|7Ftoj|IMhu#0P-nB&d==t6Ky?pv%kR3_l8J=RF zvwzk*yBa02FFK{~8V2egXP4N6D@Xe*_?U6kB!%Z||2%8mzZhgoNhCP{*=Dq^)2)fk z57sufo_1kpyXz=q+jd3}$7`2pKF@%P65)57#^v%#H9z<7qU7ES~X0Cb5OwyuBcn5ctwU#9SV z!ob(X*+yLm6aaMDyU1!$yKR?~4PJMNZE&Is23eD?1o8m7HazjN_U+_pra4Q7_pprW zj6v428-XVP-HP~gPu6X>r)OLf`xBp|f-%UtIup1G;M{ic#mJVnr9n~0mIn=+&=iGi zm+s)oU}VG9O{4Cu!z_9mmTUr7aP|m*>(u!{!C|=;j=jrfy{NBSj6qh%g}{7(9@`w7 zWKC^W-}^~^_PJxn$5nx>jw^vY67g;b;(jxv_0qN#HEKnyZ0%u}q=Q1Xb`MaO%?F)- z!N(Swo_p}MwOuvPLU4962@7|SV#6ShXN!!yZrv>Gc;Unde+;szBrH6DPSdSh;c%}j zOEaIgHjH$83&sYVol3&6CrII(5mDWIalx~!{@F|CR)38_Hj+e*ULeJ?wZ|tG>0XL@ z_R}Z!a1|j2*-j*K0D3jOR@3Tc0}ub2 z6tYddz?Hop&ZpmcetAxO;;@?UI*!L6JDS8>fPSCb@C)m%(a+ju^ZxzfuP6%H(S5;{ zUmi~`T}`^%)wtQ(=Qq=8V~{;eVw5+Kxz;!OM*7V8WH9Z3`Nft712D+ul4#Zsq$tbv zu5mGBY5Thuerz&`17jr4P9TByM-ZQdt$PNcJ^v9#r`~T~KQsY_Y#P8oL4isAmt7Zp zacv|5^25&G9+x=F(=1-j7ezI^mB__ zIv8X#_yp#R1SvkcE$_R@xz@zdgV*&m+?|X<_Fn)$+c=AUQ_4+)9>(k3%ki0jL3V^c zfzJRVy=xm3I~+RrPRG{Nz4eno46@#%2;2b}S%ByXt54|FyzJf}ew>RQ2H6e*0`~y? zGcMO3etltbg2k8liP($AC}dLuz?Cc2w??D{pQ@b_ZBVh&cL)aAA`-EIpdD3zS?Bz$ z^j3}evyYerlpMn#`-((H5J-{IbA6}nu~>1Li@`qrwK*7M8wd%U0SIi9U8mk%$B4zJ z+#lC<@fm|cHa-|!X?Op8?)aDpUE?LK3fDLQ-56(!NW_f>DSDoM>h}6;FaL0}wEl*< zZ&1koz^}YL|0yeAzs=qa4_bZ9$@_&tw(A%IhXH~@st?<9R^Y#UOTYFJ=6Odk$kq%Y zuoOU8aB|Kt-A^y#vOh&!TjHIGLAJ_R0xJQ6`|tYH*QRmtgaBI?U&Fe$QOGtN2d*Rx zzn*=EmuNfsV`!r)Z*F0boj^h_6r`A)Y5ptk=h9Paj?8S6b*&}_*(?&n!$3biSM67q z8l%S*ls}EKXgKu(3R#nI1PL(<$Q@Dd-x_ynJ!m)AFcpl9IJ**H+%%_vZsE@(b;j2b znB;r~{SIe!A_!yyj9c(>#qjR>bzWQf&S)_t&mMzpjYtCP0mfbS=(YRn#b)L9t}{*< zR+OWV?KB=}a;ANZuDKKscgQZ^bLd1Z&?9lSki^a?km8<;(dV%ZuljU$h;RzzAHX16 zLLxXCLBeYtcF7ER^so6V(_h9nHfNxa{TIJ-ZEc%`>c(4K1HIRIl}9?EkewI`Kfq$ZjOzHW{S2mT+RmwCM03O~?DR|JoLO8Jt~9!Z{waojz3#Bsktb(6s3BwyZfj z5e%{o5(wM|h>NY58qg*E%H3^lX`}1Z0=5v&E=>gW_)m^)S?=pQfv)}y-Z(XVj6$|y z5-43nSWbtO^dl3h#Adc^>@^pIY+n+G0pe$U+?RUU(|{y@E!@~= z18Nz*`&Ow_!vnq;WHU&#NJfwubK@SL7-Ta@xJ(Br%4$FS>i_7> zddz!ARAM@?&T;k&!0e;Ktfrm*xov$eAsKBj2(%2G^`AlDJ-{5#iRbUPvo?LuZormF z89gE}$j+Wgz;hPRS+6d#TOToPTQ#?pyskSg)j=V90bpK-%L4*noWvVYBt*bT;Yc1*?~Yd42L^SMBis=hD8{9MuSn2F_K8@D+aqL96X zU(vncGqE^4?-!D8x6{n{3kKQd^9bw!n7?37+c&0Tn{VJ3CVl=n@;U}t!xREX0T!m) zmpORf+4jZRJh|PRid+n`y!iz70i+H5s=H|__HJ{X+5@kZ838K>XZ05l*Z`1r*sA`q zX%64oHuIa*-S_Q06teA8!IhWaY}?zm)=PDN{i4kl0ch_yyN^WhLIg>_mREY}c%LoH zbG!eV{qoFM46+AE^hyKYu9jaPgYEg-PtI}mX!>>)(2a2RD~VU>AjNL|*y_=(|F%5a z>Env@Z(sz%S?de}rvWm)JLFIQaN+Eaw-vz=Ep{5Ckd0V`AdBj@d@#30s*R(crEhGn zHlV-b>^TxcGC>OaGGxSqy_-&MugHCp9r+xC>`oG%i$RL%zI{!;MJ(OWB7606lQFMQ z$o`98Inm)#but8=Im_(^m&}MSxR6JK<3%Dx1ICWbe_0uvlq|z*jfy-EtV0u53s!Hi}A5* z%+3phCsRGQ4C;eIHfcGyGCg>k<$!6^zI8C@u{CH^GYqnyNo1`6DQ-S12{oOPJ9F-_ ziCEa%z8GZ7NlecIsSGwB+`s*C+Me$4rbAW6; z?2wfNJ_4*V92x7_)MfF3(ffx^%>ERPL3Z>i0!>!~U23#bn`x^S>z#66awIybKIp|b zn@FN@Hb`-LN_IcpJBj?T!iIj&ET>|S9Z#Zq4j93ftxM~Ds^NcEkFDIkM(;VWXK{8o zi86qkrf+m>Jz3MkFa4_yX7VN*gKR)9f%&rjf zGMhX?$7KxP%0297A_m!J>j_*1*kDut>({(t^*X1;nLgc{I0A+2qzzysaCw{+F)Q=t zbocX(Zm(-K2Zii6{7UrXTN@%ioVWUpUYeXz*d2rHkc|Z10c>`C^w{2d%@Fr}h2O__ zI|`nPvjLmHmG_zZH$M1spxTyiVZr`(M^MN<1=w;u|E+25ig}i3;Ps9kC3yP0{(Z84@upyq9lC{p@m2)cHtMgMtDgAlFE$F@j!hh3jzac6enn86 z@%eN2vqO(p+g&%L9Up~k$~FYqek&}oUwNOEPiIeAeP`Iw7!0!CNi5C-Deih6^3JUG z%X?u(zt_Xf!I*@zI)4+`0M_X} zgDkR>zrS8h(2jXiY|mTsHx85uGVg{;qhVELPVSsveV!`&g<&yC1@y+a>` z?1lqiG;!l$J+>4Uoev3EKBVwH&`WUk1BvK^KnrWqX-l6Gt$V8pp!>wkJ7g9H*+(R19tA0` z4h&9uR#B~V@Ku51jdNhk!`V|Lx*bE1g6p1NQb#>cZ8X#e`&eZ)kT5vAkwmZK2y)iv zc=Y0zrCV-oZRY-?g`E(C>}nEjCqN4RMYHa@^W#^PO&+=Fm7W0x*%>5sPJ$F$iv0Jz zzL>wt_C|f{ugNbk$POb>0&uQp-7q)n>W`B$9-e)@=0FezS-VpN4g#F7FrJa7J9)Eh zTC;90CvzTQkTp0>U<1Gfg9XjqrfvRv)}wZ*NevqTse!YfNhF^^kV{RREGFKLy1(e= zxzgOu!QdG<`;^3-0tC6d?n&)6i+_x}?mOp^7Z#U-Lbm2vaHVM0lC)d(V{fJwPhaif4c4edEJ&g46-&C2wVcV zX_}X$-y*Gg{Ugm+S;r0uL?P>Z5nO5I?iJ&qU+4a~df6k}SX@LQTMlq*WRvCn{pJ*y zhj(Z*aN&i6C}hW80$2P~3Vj~78(`3Gz@Xiyc)=)S^)G`ftJj~=y<%VT-to({_mO_3 zC}h(BZrkPG>l-=m-O8Q)N{_nb1z?aZB{Ay?g4}gp)u8p;L#?iQ7(EL4uk2zK$i5?y zd6mGZYe1Ghbk%Db=o5ay@=o~nE z2)}a9_EFoDX1!(&+h+c_p+_qWve*p*vjCoyeS9&!RwvytF~_d->3F9#23hnbfsFu9 z+x30Z+vB;jpw)^m{$}%%Fv#lMBCr`E76|sDfwNA91o8o%pQ#tKeP7&6;VZ$JM!ooM7-X0KL%{zog1q3D->-WmuK%9U zip(_`fq5uo@8VYux7~X5?x}{g!h+XWjGFowgKXb>1bzU#96vFC)$OYF1!cV*d~17- z!XUfwJ^{}MAjKZ^+pwpBi?YxOW77@m_eUZ7A3#a+fwAUCu3SvMk!RfZ;1f{)IP3F} zz-xdqJHh6s)q3Ql=0@v0ycw&5LDuyVfjaD3>DELKclH9$qw>j4ex)IaKGU*+8LkNcaVko^Vl)qRz2 zoSD&;#|djYA4)+sV36%!LZBGn>#iHqV@@{-tPz|)`F47vHz;IBy$1TrmV#rk4f?z< zk3UhGad|h;d2seQz|WA*XHN0vxO+x6IXbOXKy?hVT}lbu1NeEDA0ATwp-Hb3Zily3 z@!x?$HlqyW>S{B?FB@EzV|QHYz1(>#3xjMSiBWGrTk}dvTd=sUPtfM_=4=0M0`wM~ zT}qH!NO+KNq7^T2Oh{-@ zlrY>6e+oZd^j}AwjTH|j0e>a>SqsBsqC$kx7M7NHX#$1O(H5elWI9WUS7KWcvhcE> zDXt9qlkggm^%m*Mq5p8LtRS+oLV|e~!4VObM6HDiE9*=cDhvY^0;>$9pjJ*ixY-um ztV`6gfY()&8vJGB1g_eFtBI0zl_shy@GwdnA#bGCN<6jnDilg5N3eg)eTxIk@Dfr8Lb3xO3cz>+Syh!WUPsuL!|>$37DO71yk9@~LXa?cmb zmry};G|vOH=XkQO=;}hT0ICiU9dH8wqa*mkk5*(slofs_F&=?5ounUVPk*3;=z*Q_ z2Qm#-9(YfILPH|^>qOaCGV9%ltW&C4`~vFWB_`EZT5Gt z2b412K@lfo5SAkWRLF;3TQ&da4U8Q~3 z$QUo4X8|k}Cw!cV2?>uCI`KrBE3N2rnTqbOzCz2$AkhbaJ}v47i8Qh5tytr?Xb%l; z2{n(QMM;)&;#-OV=N!tgk$5l}PpO`7cUsoI`zQl_5|VagkAx`%U}2e8z+CVE;5 zV~tC7wcpU!T$B*23Jm*<(p1ic?(U@VV@F)LGUz}|Kkl7b0Zxkr- zO3B*E`Hek7k=)WMs25d6;R`V=ieKe|hTsoT{Md3tAN)L(kjDIYzDO-_1dsM3o~?j6 zrn$n($r8P^0n(-Ai z9q2c~eCiUKBkitE;=AnWcR9$ui^zIxc$5%)6+u9#&;qtiTXDv1=^3{rGETRZ@GIhs z+tM>`+fn9C;(XiE^KI)Ox(N=o0{WeuMR(e@r`>61L*B_3_%YmRXDhzbj(#W1xh`l& z_(rvoFY&An;;QaoBQ2*&Fwha@OeYhakW(*| z)mS+nH+Wug}Q_2 z`9z;ktRs;3ki9{LE+Be++rmPug5nZD?A<47;nd}B*!_vFI@yVN#^Hc=>`!$U zg8q?nnLPGvL=Jo6S&rE7kidwja5xu4IPK{Qpg5B=qo>Q^%QMY8qaEe70B36`Bv}@x zCs6fzkWSeJYIQW^@njynBVq=C(KW`}jWjD|E)b|w?xHr*wTOQ{vB(g~3TDZG#z{zR zabg7~chy*iaeB&`Lvp7zNh2~^-dy8)?HY!vWtleW`zRqeMHahgo)4e+k~5VsU#n9I ztQn)XRd<$V5)Va~(hCBUnHL1;57YFL0P4v4Q7H-@=!GmQVWl6J^9sLIlHPl6ZPhpw&XWeI@a)V;Y41*j}X`yujQ=ybxXXR>FSy=EC@=^c~P`~jMCN0z9d~ok@7yK8L>BRgnTt%Q< zl2vZWG_rLQY^hk<<4GwC01^)Xl|Uur*Ah+sb5-S!X(gA6{%|eLbV<`zyxC5EhGk`! zyYx^j1_!?JRJ`w$*mkP?K31{IGt<-5Zj^DYnxS-yOqp#D@Frrl4Wwc*(NfsF|72}? z;Aj{z=S$YsCUt9Av;TxWcv9N6@-BL!8Ekp;>e_YDlbtJiiFph&K9orw+PuyP#(AAY z4Y-@iT^*Fa12&G5S(sRrX>hK>-c{rmVIkl-1HIOf7YK5#vYW>LsN(~r=(5&0sA<@~ zYA<;WgX%ay+1SYLgFan5J^(EFp?AzMGDA?oc2-Km=GynVDl7#>7uvL8u2-rDu;!|j zAs4hpGfp}i&en>kSzN19G@(mh#o#HkGD0(2u*I_0Mo240B_l@7ZOBd$`OVhPqa~%c z@&c1<2|Sntn0)c2SZJHd<8`FK*U6fgihA*UmmF z_8id#dv7IlOuoR+QNdUN+Sx@VCrk9QvU&DsbURfh>jbVk_ETwgZ#}*)>c}JhCFABL zCbAoy43mtsN?9OhZ$0BnE0<~M4_9k#D8BM(5id}*PiSZ5lQl#19x+-8^%bTWC!9oG zy%cYuCv5l_VHkcN^(w;_|25iMZdEP248d?zn0AOJ%n+v7Hh}_A92-Z`s)4R6?NMjhDwn+_OGa<25zHot?9dnL)K8v?cge~5 z^#8Xx?*BH&{r|8z?iF=&oC15}RFWnCw>9qnw#NNYTjTtgW|TD(tD7lqoksL*IjcDw z)NHO*z!0cTEq-8=6Q{9Y?hH~63T zd#$YcwrxeJe(Rh*Ylf7Frlgs0dMnwNSrv+*siok0F$}UPfF5yO`4H|(L|k9PE#i7* z&r&qtI@hkw5C@0a)&I~qIKwHufDCjg*E>&@aGK)DU(wxMo%GaD_Be?FDp-7~2C)r0 zSUYj`>{!H5Jbns;6)(_=7bM#aU_7f(0jve}G4w+zIOkuzaUmHaTgi0wRf{Z?Ed)n0 zej2LZk=V6^b%YSrN6VI7dA2gfhIumL=8ImSfncl5*-|LxxFC8`cp#6#?^wNUtG~<- zpbnK}rj}+4l~78sWJJ0SxtB@} z$JAF*2RCD=J z6!roYZ@!}5psG_X*D`7CKorK{ESeM6%FNz$RYEWZ&;z8(_ZiiYJ;oBIRjET=_!38` z{1HBBtU028J%1)4DQo_LYj<%~c(RuoAx&n5GDgr)e|;+GwyowfD;6*{7MatxT0Of0 z9iT)}#j&HQ9`JI!w;0Q=0q-qEaz@uo3mDH9RmnJJocxq9ygM;H+n)K^@{b#pZFuie zkKs+Rqm;9}IjiTp6*9dwX?b&%jnQo8C}@=AUMqNBE~8SzH3O~WcWT^)LGmU6dq>4@ zP^S(_^~_grj!twz=0=rx?M%!uo z(o85ye8V~CWezb5?^E30K(@-YS3#AF_07L`!9%7}1Z3^UlA~;3P(GF% zwpFFA4a}w@@h)-O2#*LC4iJV4VuV2+BDqOC1J1oNo&4L0mUp(f<)^Ce`L-!%*q6NlWj_mVr--;6hSKalBkSY%x7bRkK$8W}>eihvh+q z7Di`lcdA*zWl>Lhx!L#5@g<#QSj>z$+8adJG9?{flkrFgV)0XZF21$RHKmR7vn zDn5c6kM0Cd-)8<^P^3t2rx%X~QqLh`i8I$@qGopu;Lh#L-n8-!aQU9Lx~hMF2D{r+ zPer9)BI4<9k5nt28`?~;m&6yLo&%u#_8S?Ssu&IgP(5;@I-22ft%zhMNuZp05Tk@A z40M=RyF1J%k=KUwhhz9cT;JARvd_smdqiG5qFBjzM5=`C;aZ?T**1`bss$A^XR&(Z zY%Lx6TQPM@yuU=&6E(7u#jd^Wyh`(qbC z+KJC5Crk9QdMIAjO2IAoBSNXNgN+CP0|*nSfKRsQ;8l zCG$$N)UveFyMm~35X51ih>Y=Q6BM#$Aw(XIQr-fJg_Yy30r!(_MT;X%$n$yes66vZ z#(qM{M~E#g56Q!_7@nt@Eh<6@TSFmJgX=5Dv&^$A;K|DM^`1(|2@6RT@ec{K%a$d2 zuZmZqw9+ThQwB@r&!LyBoqgKT{?uCpx<0U7rXM-%qZ;-i=Q{r-u}E5(e@&gR!?~vh z=qcors5Tj$!YHGixeIB{hJ@D0jzZ=**;2>w{LZ*g41!!e2l$DD@xwdWCPU?h2IBhR zsf!DeC+aDx6>-jjC<+esH~{7~4*65%T=O!Br62f94``K((!6+j+*#;fz#jCcvWorH zIrA;fltiFVrY#>UIIUwVu#BxzDHv9<)2oH~+-wh&qE7G<63EI@{iL`5 z&FYjWybNSof!M!UKx|#tlh&{u{wpo%WwB%|l5v~!ZR?loXXL-(ED z;V$?uIN?FK^Dq~lnwU)zS2jX;2c`K-JOGrPO31AnHAj~}qK!-{_@h0;k}r02`y(PB z$jpuO+4gLnGp(uf%IaN5P?K^pfl)b8YL1k1QNmb?qG26;DdPyP!L5)gY2m8GSeA(V z{YUM}V9y!7>`}BsXeeJvkyB{Y>nN_+R!M=v8zmXlX$@Aq65Ax1!|QU3>CYHmS5r|c z*rNJ(WSBlvavqS;v0d?XWUgAmH6=oiD-y7hQ~Yt}7jOwezF&f&$-GthNE>-qEtCA`JAN(AMh#N-hJ+TVy{knbC4cQrC0x{x{Q%T z2enFG`)%^kR_WHnE+Hi6k4Ws*WgtNgr_Tpuq pRy~r@L?UCQsJVNzSE74JpZOOk#{q_Z=$|Ut{eNk>Gf7Sl0RYU5g8Tpg literal 12331 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 R2%b9G{Xb__Z0*Pj0RRTf5h4Hp